Fritzbox Anrufmonitor im Browser

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
bake
User
Beiträge: 29
Registriert: Dienstag 20. November 2007, 08:12
Wohnort: Hamburg

Fritzbox Anrufmonitor im Browser

Beitragvon bake » Dienstag 9. Dezember 2008, 14:39

Mal wieder eine Frage die in Richtung dynamische Anzeige von Ereignissen geht. Es geht um einen browserbasierten Anrufmonitor.

Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.
Dafür muss der Prozess ja am leben bleiben. Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.
Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.
Für Hinweise, Ratschläge und andere Lösungsansätze bin ich dankbar! :)
who we are is but a stepping stone to
what we can become...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Re: Fritzbox Anrufmonitor im Browser

Beitragvon Hyperion » Dienstag 9. Dezember 2008, 15:02

bake hat geschrieben:Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.

ok, ist also ein eigenes Protokoll?
Dafür muss der Prozess ja am leben bleiben.

Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?
Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.

Wann ist es also eines?
Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.

Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)

Du solltest das Problem noch mal klar spezifizieren, ansonsten kann man auch keine Lösungsansätze geben ;-)

Kann natürlich auch sein, dass ich das nur nicht raffe .... aber ein Satz a la: "Ich will das Problem XYZ lösen, welches daran besteht, dass ..." wäre schon sinnvoll :-)
Benutzeravatar
bake
User
Beiträge: 29
Registriert: Dienstag 20. November 2007, 08:12
Wohnort: Hamburg

Beitragvon bake » Dienstag 9. Dezember 2008, 16:53

Hier erstmal der Code mit dem man sich die Anrufaktivitäten auf der Console anzeigen lassen kann:

Code: Alles auswählen

def __init__(self):
    self.telnet = Telnet( )
    self.running = False
       
def run(self):
    while True:
   self.ping_ok = self.is_ping_ok_( )
   if self.ping_ok:
       if self.running == False:
      try:
          self.telnet.open( get_setting("ip"), int(get_setting("port")) )
          self.running = True
      except:
          self.running = False
   else:
       if self.running == True:
      try:
          self.telnet.close( )
          self.running = False
      except:
          self.running = False

   if self.running == True:
       try:
      self.incomming_data = self.telnet.read_very_eager( )
      self.data_array = string.split( self.incomming_data, ";" )
       except:
      print "ERROR"

       if ( len( self.data_array ) >= 5 ):
      print 'There is some activity:', self.data_array


Man kann eventuelle Anrufinformationen per read_very_eager( ) auslesen. Falls momentan kein Anruf aktiv ist bekommt man natürlich auch nichts zurück geliefert.

Hyperion hat geschrieben:Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?
das wollte ich damit ausdrücken, ja.

Hyperion hat geschrieben:Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)


Ich dachte an eine HTML Lösung. Mein Problem ist nun folgendes.
Es kommt mir irgendwie komisch vor, jede Sekunde per SetInterval und einem AjaxRequest ein PythonSkript auf zu rufen welches sich dann per Telnet verbindet, die Daten abfragt und das Ergebniss zurückgibt, so dass diese im Browser angezeigt werden können.

Ich habe mich vl. etwas unklar ausgedrückt, aber das Problem ist irgendwie schwer in Worte zu fassen. :? Ich hoffe jetzt wird es etwas klarer?


EDIT: Irgendwie wird der Code hier im Forum nicht richtig eingerückt... Merkwürdig. Alles unter der while True Schleife gehört natürlich eingerückt...
who we are is but a stepping stone to
what we can become...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Dienstag 9. Dezember 2008, 17:29

Also ehrlich gesagt wird es mir nicht wirklich viel klarer ...

Du willst also wissen, ob die Lösung nicht optimal ist? Kann ich schwer sagen, da die Anforderungen immer noch nicht klar sind! (Schreib doch einfach mal, was Du genau erreichen willst!)

Hast Du denn einen Webserver laufen? Oder wer oder was nimmt den Ajax-Request entgegen?

Wieso muss es eine Lösung per HTML sein? (s. Anforderungen)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder