Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

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

  • psilo
    antwortet
    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.

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    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


    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    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

    Einen Kommentar schreiben:


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

    Ansonsten bitte bspw. mal in der methode _update_fritz_device_info response.content rausloggen. Die Zeile wäre unten ergänzt:

    Code:
            if "dev_info_" + action not in self._response_cache:
                try:
                    response = self._session.post(url, data=soap_data, timeout=self._timeout, headers=headers,
                                                  auth=HTTPDigestAuth(self._fritz_device.get_user(),
                                                                      self._fritz_device.get_password()),
                                                  verify=self._verify)
                    self.logger.debug(response.content)
                except Exception as e:
                    self.logger.error("Exception when sending POST request: %s" % str(e))
                    return
                self._response_cache["dev_info_" + action] = response.content
            else:
                self.logger.debug("Accessing DeviceInfo reponse cache for action %s!" % action)
    Zuletzt geändert von psilo; 17.10.2017, 19:59.

    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    Hier meine Config

    Code:
    fb1:
        class_name: AVM
        class_path: plugins.avm
    #    username: ...    # optional
        password: 'xxx'
        host: '192.168.1.2'
        port: 49443
        cycle: 300
        ssl: True    # use https or not
        verify: False    # verify ssl certificate
        call_monitor: 'True'
    #    call_monitor_incoming_filter: "...    ## optional, don't set if you don't want to watch only one specific number with your call monitor"
        instance: fritzbox_6360
    HTML-Code:
    %YAML 1.1
    ---
    avm:
    
        firmware:
            type: str
            visu_acl: ro
            avm_data_type@fritzbox_6360: software_version
    
        uptime:
            type: num
            visu_acl: ro
            avm_data_type@fritzbox_6360: uptime
    
        myfritz:
            type: bool
            avm_data_type@fritzbox_6360: myfritz_status
    
        incoming:
    
            is_call_incoming:
                type: bool
                avm_data_type@fritzbox_6360: is_call_incoming
    
            duration:
                type: num
                avm_data_type@fritzbox_6360: call_duration_incoming
    
            last_caller:
                type: str
                avm_data_type@fritzbox_6360: last_caller_incoming
    Zuletzt geändert von Hochpass; 17.10.2017, 20:02.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Hochpass ok, daran liegt es also nicht. Ist das Plugin richtig eingerichtet? Authentifizierung usw passt? Sind die Items richtig auf das Plugin gemapped?

    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    Ich glaub ich komm nicht mit. Aber hier der output

    Code:
     [smarthome@SmartHomeNG ~]$ curl --anyauth -u user:password "https://192.168.1.2:49443/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetStatusInfo" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:GetStatusInfo xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /></s:Body></s:Envelope>"-s -k
    <?xml version="1.0" encoding="utf-8"?>
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
    <u:GetStatusInfoResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
    <NewConnectionStatus>Connected</NewConnectionStatus>
    <NewLastConnectionError>ERROR_NONE</NewLastConnectionError>
    <NewUptime>4749408</NewUptime>
    </u:GetStatusInfoResponse>
    </s:Body>

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Hochpass mit 3.5.5 sollte die neuste Requests funktionieren, macht sie mind. bei mir mit 3 wifi extendern und 1 fritzbox.

    es hilft sicher, mal einen der curls (siehe README) in der shell aufzurufen und zu schauen, was als meldung zurückkommt

    Testweise bspw.
    Code:
    curl --anyauth -u user:password "https://192.168.178.1:49443/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetStatusInfo" -d "<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><u:GetStatusInfo xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /></s:Body></s:Envelope>"-s -k
    Zuletzt geändert von psilo; 17.10.2017, 04:31.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Code:
    ist nicht 2.18.4 neuer als bzw. größer 2.9.1.
    Ja

    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    So:

    [smarthome@SmartHomeNG ~]$ python --version
    Python 2.7.13
    [smarthome@SmartHomeNG ~]$ python3 --version
    Python 3.5.5

    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    Zitat von psilo Beitrag anzeigen
    shng neu gestartet?
    Ja.
    Vorsichtshalber den ganzen PI

    Einen Kommentar schreiben:


  • psilo
    antwortet
    ausser er hat python 3.2... dann braucht er das alte paket

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,
    ist nicht 2.18.4 neuer als bzw. größer 2.9.1.
    Wenn die Pakete im Backend grün sind, sind sie aktuell. Sollte also alles passen.
    Michael

    Einen Kommentar schreiben:


  • psilo
    antwortet
    shng neu gestartet?

    Einen Kommentar schreiben:


  • Hochpass
    antwortet
    So ich habe folgendes ausgeführt:
    sudo python3 -m pip install "requests[security]"

    im Backend wird noch die gleiche Version angezeigt wie im Post oben drüber.
    -> noch ein bock drin?

    Einen Kommentar schreiben:

Lädt...
X