Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von psilo Beitrag anzeigen
    Deine Fritzbox hat ganz sicher keinen USER den Du benötigst? Bei mir nutze ich das ohne User nur mit den abgespeckten Wifi Repeatern...

    Aaaah du hast Recht. Beim Einloggen auf der Web Oberfläche muss man keine eingeben. Aber mit neuem Fritz Box Benutzer und dem neu konfigurierten Passwort gehts.
    Danke dir. Jetzt kanns losgehen
    Zapft ihr Narren der König hat Durst

    Kommentar


      Hallo,

      gibt es auch eine Möglichkeit die Nummer des aktuellen Anrufers über der Callmonitor abzufragen?

      habe leider nichts gefunden, ausser ich würde die Logik über die Anruftrigger auslösen.

      In sh.avm.monitor.incoming.last_caller steht leider nicht die aktuelle Nummer, sonder....wie wohl der Name auch sagt....die des letzten Anrufers. Leider ist das ja nicht der aktuelle Anrufer.

      Gibt es eine Variable oder bin ich nur etwas blind......gedankenschuppser gerne erwünscht.

      Danke

      gruss

      Axl


      Kommentar


        in dem last_caller sollte schon der aktuelle stehen, ich parse die Datensätze wie folgt:

        Eingehende Anrufe lösen ein RING Event aus. Du siehst das auch, wenn Du mit Telnet auf den Callmonitor gehst und einen Anruf kriegst..
        (Details: http://www.wehavemorefun.de/fritzbox/Callmonitor)

        Code:
            def _parse_line(self, line):
                """
                Parses a data set in the form of a line.
        
                Data Format:
                Ausgehende Anrufe: datum;CALL;ConnectionID;Nebenstelle;GenutzteNummer;AngerufeneNummer;SIP+Nummer
                Eingehende Anrufe: datum;RING;ConnectionID;Anrufer-Nr;Angerufene-Nummer;SIP+Nummer
                Zustandegekommene Verbindung: datum;CONNECT;ConnectionID;Nebenstelle;Nummer;
                Ende der Verbindung: datum;DISCONNECT;ConnectionID;dauerInSekunden;
        
                :param line: data line which is parsed
                """
                self.logger.debug(line)
                line = line.split(";")
        
                if (line[1] == "RING"):
                    call_from = line[3]
                    call_to = line[4]
                    self._trigger(call_from, call_to, line[0], line[2], line[1], '')
                elif (line[1] == "CALL"):
                    call_from = line[4]
                    call_to = line[5]
                    self._trigger(call_from, call_to, line[0], line[2], line[1], line[3])
                elif (line[1] == "CONNECT"):
                    self._trigger('', '', line[0], line[2], line[1], line[3])
                elif (line[1] == "DISCONNECT"):
                    self._trigger('', '', '', line[2], line[1], '')
        Im RING Event handle ich das dann das call_from auch dementsprechend ab:
        Code:
                # call is incoming
                if event == 'RING':
                    [...]
                        # process items specific to incoming calls
                        for item in self._items_incoming:  # update items for incoming calls
                            if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_incoming']:
                                item(1)
                            elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_incoming']:
                                if call_from != '' and call_from is not None:
                                    name = self._callback(call_from)
                                    if name != '' and not name is None:
                                        item(name)
                                    else:
                                        item(call_from)
                                else:
                                    item("Unbekannt")
                            elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
                                'last_call_date_incoming']:
                                item(time)
                            elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']:
                                item(event.lower())
                            elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_incoming']:
                                item(call_from)
                            elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
                                'last_called_number_incoming']:
                                item(call_to)
        Hast Du in der plugin.yaml keinen call_monitor_incoming_filter, geht er da auch IMMER rein. Das geht bei mir auch ziemlich sicher bereits produktiv...

        Im Wert steht aber der aufgelöste Name (wenn er im Telefonbuch gefunden wird) und nur wenn nicht, die Nummer. Letztere wird aber ein ein eigenes Item mit avm_data_type last_number_incoming geschrieben.
        Zuletzt geändert von psilo; 29.10.2017, 19:29.

        Kommentar


          Hallo,sh.avm.monitor.incoming.last_caller

          hehe dickes Danke für die turboschnelle Antwort.

          Habe es nochmals getestet, im last_caller ist immer die Nummer des letzten Anrufers drin.
          Ich frage auch auch das „ring“ event ab, das klappt alles nur die Nummer des aktuellen Anrufers kann ich nicht über sh.avm.monitor.incoming.last_caller abfragen. Erst beim nächsten Aufruf ist diese dann verfügbar.

          if tuerrufnummer == sh.avm.monitor.incoming.last_caller():
          logger.info("ANRUFINFO:" + sh.avm.monitor.incoming.last_caller())


          ....benutze das zum Auswerten der Türsprechstelle.
          bin von dem alten 2er fritzbox plugin nun auf das avm plugin umgestiegen, daher bin ich das am anpassen und komme nun irgendwie nicht weiter.

          Zur Not nehme ich den Trigger....

          gruss

          axl

          Kommentar


            Kriegst Du andere Events???? Evtl ist schlichtweg der Callmonitor nicht angeschaltet auf Deiner Fritzbox... Die Felder befüllt er mind. beim Restart auch via normaler Webservices.

            Kommentar


              Ich kann das jetzt nicht testen weil die Kinder schlafen, aber ich visualisiere bei mir im entsprechende SV-Widget ganz ganz sicher den eingehenden Anrufer... Wenn ich die Nummer nicht kriegen würde, würde das Trigger-Item ja auch nicht gehen.. Und nochmal, die NUMMER steht in einem anderen Feld, nicht in last_caller..

              ACHJA WICHTIG: Der Callmonitor reagiert NICHT auf Interne Nummern.. Teste mal mit Telefon.. Nur weil ich "Türsprechanlage" lese... das ist ein fehlendes Feature in der Fritzbox.. Siehe bspw. hier: https://forum.fhem.de/index.php?topic=29595.0
              Zuletzt geändert von psilo; 29.10.2017, 19:35.

              Kommentar


                Ja, klappt alles..... z.bsp. ring, connect, disconnect....

                auch klappts ja mit der rufnummer, eben nur immer der letzte Anrufer.
                Habe es von verschiedenen Nummern getestet....daher ist da immer der Versatz drin.


                ja, mit der Türrufnummer ist klar, habe das über extern realisiert.
                Hat ja immer geklappt...und klappt ja jetzt auch, aber leider erst beim 2. Ruf.
                Zuletzt geändert von blutwurst; 29.10.2017, 19:38.

                Kommentar


                  Ich teste das morgen mal.. Wenn ich jetzt alle 3 Geräte antelefoniere ist mir der Hass des Rests der Familie sicher..

                  Wenn dann ists ein Bug, aber denm Code nach zu gehen, muss das eigentlich gehen, wenn das Trigger-Item auch geht.. der Codeblock kommt nur wenige Zeilen später und verwendet die gleichen Variablen call_from und call_to.

                  Ich tippe aber eher darauf, dass irgendwas an der Konfiguration der Items falsch ist?!

                  Hier nochmal im gesamten:

                  Code:
                          if event == 'RING':
                              # process "trigger items"
                              for trigger_item in self._trigger_items:
                                  if self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') == 'monitor_trigger':
                                      trigger_item(0)
                                      # self.logger.debug(self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') + " " +trigger_item.conf['avm_incoming_allowed']+" "+trigger_item.conf['avm_target_number'])
                                      if 'avm_incoming_allowed' not in trigger_item.conf or 'avm_target_number' not in trigger_item.conf:
                                          self.logger.error(
                                              "both 'avm_incoming_allowed' and 'avm_target_number' must be specified as attributes in a trigger item.")
                                      elif trigger_item.conf['avm_incoming_allowed'] == call_from and trigger_item.conf[
                                          'avm_target_number'] == call_to:
                                          trigger_item(1)
                  
                              if self._call_monitor_incoming_filter in call_to:
                                  # set call id for incoming call
                                  self._call_incoming_cid = callid
                  
                                  # reset duration for incoming calls
                                  self._duration_item['call_duration_incoming'](0)
                  
                                  # process items specific to incoming calls
                                  for item in self._items_incoming:  # update items for incoming calls
                                      if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_incoming']:
                                          item(1)
                                      elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_incoming']:
                                          if call_from != '' and call_from is not None:
                                              name = self._callback(call_from)
                                              if name != '' and not name is None:
                                                  item(name)
                                              else:
                                                  item(call_from)
                                          else:
                                              item("Unbekannt")
                                      elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
                                          'last_call_date_incoming']:
                                          item(time)
                                      elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']:
                                          item(event.lower())
                                      elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_incoming']:
                                          item(call_from)
                                      elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
                                          'last_called_number_incoming']:
                                          item(call_to)
                  Poste doch am besten mal deine plugin.conf/yaml und die entsprechenden Items.. oh und vielleicht das Modell der FB.. Hast Du die Telnet-Analyse mal gemacht? Kommt da die Nummer bei RING?
                  Zuletzt geändert von psilo; 29.10.2017, 19:42.

                  Kommentar


                    Das TriggerItem habe ich noch nicht getestet.....wäre sozusagen mein Notnagel....falls das überhaupt geht.

                    Danke für Deine Hilfe.....

                    hoffe das klappt mit dem code so, bin grade auf dem Tablet unterwegs
                    PHP-Code:
                      incoming:              is_call_incoming:                 typebool                 avm_data_type@fritzbox_7490is_call_incoming              duration:                 typenum                 avm_data_type@fritzbox_7490call_duration_incoming              last_caller:                 typestr                 avm_data_type@fritzbox_7490last_caller_incoming              last_calling_number:                 typestr                 avm_data_type@fritzbox_7490last_number_incoming              last_called_number:                 typestr                 avm_data_type@fritzbox_7490last_called_number_incoming              last_call_date:                 typestr                 avm_data_type@fritzbox_7490last_call_date_incoming              event:                 typestr                 avm_data_type@fritzbox_7490call_event_incoming         outgoing
                    Zuletzt geändert von blutwurst; 29.10.2017, 19:50.

                    Kommentar


                      Poste mal die Informationen die ich im oberen Thread angefragt habe Fehler loggt Dir das Plugin keine raus?

                      Kommentar


                        Bekomme das mit dem Tablet nicht so hin, verbiege mir garade die Finger....
                        ich versuchs, andernfalls morgen vom pc.


                        nein, es sind keine Fehlermeldungen vorhanden, aber es läuft ja auch sauber durch, nur eben immer mit der vorigen Nummer des Anrufers.

                        Ich versuche hier mal die yaml einzustellen, sieht aber nicht sonderlich optisch gut aus.
                        Ist aber fast genauso, wie aus der Beschreibung....
                        Code:
                         avm:     uptime_7490:         type: num         visu_acl: ro         avm_data_type@fritzbox_7490: uptime      serial_number_7490:         type: str         visu_acl: ro         avm_data_type@fritzbox_7490: serial_number      firmware_7490:         type: str         visu_acl: ro         avm_data_type@fritzbox_7490: software_version      hardware_version_7490:         type: str         visu_acl: ro         avm_data_type@fritzbox_7490: hardware_version      myfritz:         type: bool         avm_data_type@fritzbox_7490: myfritz_status      monitor:          trigger:             type: bool             avm_data_type@fritzbox_7490: monitor_trigger             avm_incoming_allowed: xxxxxxxx             avm_target_number: xxxxxxxx             enforce_updates: 'yes'          trigger2:             type: bool             avm_data_type@fritzbox_7490: monitor_trigger             avm_incoming_allowed: xxxxxxxx             avm_target_number: xxxxxxxx             enforce_updates: 'yes'          trigger3:             type: bool             avm_data_type@fritzbox_7490: monitor_trigger             avm_incoming_allowed: xxxxxxxx             avm_target_number: xxxxxxxx             enforce_updates: 'yes'          trigger4:             type: bool             avm_data_type@fritzbox_7490: monitor_trigger             avm_incoming_allowed: xxxxxxxx             avm_target_number: xxxxxxxx             enforce_updates: 'yes'          incoming:              is_call_incoming:                 type: bool                 avm_data_type@fritzbox_7490: is_call_incoming              duration:                 type: num                 avm_data_type@fritzbox_7490: call_duration_incoming              last_caller:                 type: str                 avm_data_type@fritzbox_7490: last_caller_incoming              last_calling_number:                 type: str                 avm_data_type@fritzbox_7490: last_number_incoming              last_called_number:                 type: str                 avm_data_type@fritzbox_7490: last_called_number_incoming              last_call_date:                 type: str                 avm_data_type@fritzbox_7490: last_call_date_incoming              event:                 type: str                 avm_data_type@fritzbox_7490: call_event_incoming         outgoing:              is_call_outgoing:                 type: bool                 avm_data_type@fritzbox_7490: is_call_outgoing              duration:                 type: num                 avm_data_type@fritzbox_7490: call_duration_outgoing              last_caller:                 type: str                 avm_data_type@fritzbox_7490: last_caller_outgoing              last_calling_number:                 type: str                 avm_data_type@fritzbox_7490: last_number_outgoing              last_called_number:                 type: str                 avm_data_type@fritzbox_7490: last_called_number_outgoing              last_call_date:                 type: str                 avm_data_type@fritzbox_7490: last_call_date_outgoing              event:                 type: str                 avm_data_type@fritzbox_7490: call_event_outgoing          newest:              direction:                 type: str                 avm_data_type@fritzbox_7490: call_direction                 cache: 'yes'              event:                 type: str                 avm_data_type@fritzbox_7490: call_event                 cache: 'yes'

                        Fritzbox ist eine 7490 mit aktueller Firmware.

                        Telnet anlayse? Sagt mir jetzt so nix. Muss ich mal nachschauen, aber meine Dreambox zeigt zumindest due richtige Nummer an, daher müsste es eigentlich passen.

                        Zuletzt geändert von blutwurst; 29.10.2017, 20:06.

                        Kommentar


                          blutwurst Ich habe gerade getestet. Bei mir updated der Anrufer SOFORT sobald es das erste Mal klingelt. Anruf vom Handy auf die Festnetznummer. Telefonnummer ebenfalls..
                          Bei Dir ist also was anderes faul. Mach mal den Telnet-Test vom Callmonitor...

                          Kommentar


                            Hi,

                            hab mal grade über den Telnet den eingehenden Ruf auf der Fritzbox mitgeloggt:

                            30-10-2017 08-45-29.jpg
                            Ergebnis vom Plugin:
                            1.) 732
                            2.) 732
                            3.) 734

                            beim nächsten Ruf wird jetzt wohl wieder die 732 angezeigt.
                            Wunderlich ist, der erste Anruf heute war die richtige Nummer.

                            Ich habe aber auch nichts am Plugin oder der yaml verändert, daher ist es für mich etwas rätselhaft....

                            aber nochmals Danke....
                            Zuletzt geändert von blutwurst; 30.10.2017, 08:52.

                            Kommentar


                              blutwurst welchen stand des plugins verwendest du denn? am 8.6.2016 hatte ich nochmal dran gedreht: https://github.com/smarthomeNG/plugi...45815ce5c9a07b

                              Kommentar


                                ...auf die Schnelle:

                                im Backend unter Plugins steht Version 1.2.3

                                Kommentar

                                Lädt...
                                X