Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

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

    Ok, dann kann ich das aus den Items wieder entfernen.
    Dann passt die Doku.

    Kommentar


      Servus zusammen,

      ich habe das Problem dass das Plugin mir für ein iPhone hervorragende Daten liefert, aber für ein anderes nicht. MAC-Adressen stimmen, items sind ansonsten identisch. In der fritz Oberfläche werden beide Handys korrekt als angemeldet angezeigt, nur eben in den items nicht. Hat irgendjemand noch eine Idee, was das sein könnte?

      Kommentar


        bruepe mach mal eine Logik und teste:
        logger.error(sh.fritzbox_7590.is_host_active('<MAC ADDRESS>')

        Alternativ in der Kommandozeile checken, was die Fritzbox roh zurückgibt - Daten natürlich anpassen:
        Code:
        curl --anyauth -u "<USER>":"<PASSWORD>" "https://fritz.box:49443/upnp/control/hosts" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry" -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:GetSpecificHostEntry xmlns:u='urn:dslforum-org:service:Hosts:1'><s:NewMACAddress>XX:XX:XX:XX:XX:XX</s:NewMACAddress></u:GetSpecificHostEntry></s:Body></s:Envelope>" -s -k
        Der CURL ist jetzt auch im README bei der Funktion ergänzt...
        Zuletzt geändert von psilo; 17.01.2018, 08:32.

        Kommentar


          Er gibt mir für das iPhone in der Log ein True zurück, aber das item steht auf false.
          Der connectionType steht auch falsch im item. Er sollte 802.11 sein, ist aber Ethernet. Komisch.

          Wo kann mein Fehler liegen?

          Kommentar


            bruepe ohne deine anpassung der logik (also die von dir, nicht meine testlogik) zu sehen wird das schwer hast du in der logik mal rausgeloggt?

            Kommentar


              Wieso in der Logik? Die items updatet doch das Plugin?
              In deiner devicelist-Logik passt alles. da wird es korrekt ausgegeben.
              Nur in den items passt es nicht.

              Kommentar


                dann poste mal die items. evtl hast du die nicht so in der hierarchie angelegt, wie im beispiel in der README??? das ist zwingend notwendig, sonst funktioniert es nicht. wie sieht das bei dir denn aus? anders kann man wieder mal nur oraceln..
                Code:
                        [[[fritzbox_7490]]]
                            [[[[iPad]]]]
                                mac = xx:xx:xx:xx:xx:xx
                                avm_data_type@fritzbox_7490 = network_device
                                type = bool
                                visu_acl = ro
                                [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set
                                    type = str
                                    avm_data_type = device_ip
                                    visu_acl = ro
                                [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set
                                    type = str
                                    avm_data_type = device_connection_type
                                    visu_acl = ro
                                [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set
                                    type = str
                                    avm_data_type = device_hostname
                                    visu_acl = ro
                modifiziere zudem folgende methode und checke, was er rausloggt:
                Code:
                    def _update_host(self, item):
                        """
                        Retrieves information related to a network_device represented by its MAC address, e.g. the status of the network_device can be used for simple presence detection
                
                        | Uses: http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/hostsSCPD.pdf
                        | Also reference: https://blog.pregos.info/2015/11/07/anwesenheitserkennung-fuer-smarthome-mit-der-fritzbox-via-tr-064/
                
                        :param item: item to be updated (Supported item avm_data_types: network_device, child item avm_data_types: device_ip, device_connection_type, device_hostname)
                        """
                        url = self._build_url("/upnp/control/hosts")
                        headers = self._header.copy()
                
                        if self.get_iattr_value(item.conf, 'avm_data_type') == 'network_device':
                            if 'mac' not in item.conf:
                                self.logger.error("No mac attribute provided in network_device item")
                                return
                            action = 'GetSpecificHostEntry'
                            headers['SOAPACTION'] = "%s#%s" % (self._urn_map['Hosts'], action)
                            soap_data = self._assemble_soap_data(action, self._urn_map['Hosts'], {'NewMACAddress': item.conf['mac']})
                        else:
                            self.logger.error(
                                "Attribute %s not supported by plugin method" % self.get_iattr_value(item.conf, 'avm_data_type'))
                            return
                
                        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.error(response.content)
                            xml = minidom.parseString(response.content)
                        except Exception as e:
                            self.logger.error("Exception when sending POST request: %s" % str(e))
                            return
                
                        tag_content = xml.getElementsByTagName('NewActive')
                        if len(tag_content) > 0:
                            item(tag_content[0].firstChild.data)
                            for child in item.return_children():
                                if 'avm_data_type' in child.conf:
                                    if child.conf['avm_data_type'] == 'device_ip':
                                        device_ip = xml.getElementsByTagName('NewIPAddress')
                                        if len(device_ip) > 0:
                                            if not device_ip[0].firstChild is None:
                                                child(device_ip[0].firstChild.data)
                                            else:
                                                child('')
                                        else:
                                            self.logger.error(
                                                "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf,
                                                                                                                       'avm_data_type'))
                                    elif child.conf['avm_data_type'] == 'device_connection_type':
                                        device_connection_type = xml.getElementsByTagName('NewInterfaceType')
                                        if len(device_connection_type) > 0:
                                            if not device_connection_type[0].firstChild is None:
                                                child(device_connection_type[0].firstChild.data)
                                            else:
                                                child('')
                                        else:
                                            self.logger.error(
                                                "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf,
                                                                                                                       'avm_data_type'))
                                    elif child.conf['avm_data_type'] == 'device_hostname':
                                        data = self._get_value_from_xml_node(xml, 'NewHostName')
                                        if not data is None:
                                            child(data)
                                        else:
                                            self.logger.error(
                                                "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf,
                                                                                                                       'avm_data_type'))
                        else:
                            item(0)
                            self.logger.debug(
                                "MAC Address not available on the FritzDevice - ID: %s" % self._fritz_device.get_identifier())

                Kommentar


                  Hallo zusammen,

                  ich versuche die Frizbox in meine SmartVISU einzubinden aber leider ohne Erfolg. Ich bin ziemlich neu in dem Thema. Kann mit einer sagen was ich falsch mache?
                  Ich nutze SmartVisu 2.8 und SmarthomeNG 1.4.2.

                  Ich habe das plugin in der plugin.yaml wie folgt eingebunden, und die Konfiguration an die smartvisu.yaml angehangen. Sowie die folgenden Einträge auf der SmartVISU seite eingetragen. Selbstverständlich habe ich auch einen User auf der FB eingerichtet und entsprechend in der plugin.yaml konfiguriert.

                  Danke für eure Hilfe
                  Gruss,

                  Christian

                  plugin.yaml
                  Code:
                  fb1:
                      class_name: AVM
                      class_path: plugins.avm
                      username: geheim    # optional
                      password: 'geheim'
                      host: fritz.box
                      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_7490
                  smartvisu.yaml
                  Code:
                  avm:
                  
                      uptime_7490:
                          type: num
                          visu_acl: ro
                          avm_data_type@fritzbox_7490: uptime
                  
                      uptime_1750:
                          type: num
                          visu_acl: ro
                          avm_data_type@wlan_repeater_1750: uptime
                  
                      serial_number_7490:
                          type: str
                          visu_acl: ro
                          avm_data_type@fritzbox_7490: serial_number
                  
                      serial_number_1750:
                          type: str
                          visu_acl: ro
                          avm_data_type@wlan_repeater_1750: serial_number
                  
                      firmware_7490:
                          type: str
                          visu_acl: ro
                          avm_data_type@fritzbox_7490: software_version
                  .....
                  HTML Seite
                  Code:
                  {% extends "rooms.html" %}
                  {% macro callmonitor_small(id, txt, gad_event, gad_last_caller, gad_last_call_date, gad_duration) %}
                  {% block content %}
                  
                  
                  
                  
                   <h1><img class="icon" src='{{ icon0 }}audio_audio.svg' />FritzBox</h1>
                  
                  
                   <div class="block">
                    <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                  
                     <div data-role="collapsible" data-collapsed="false">
                      <h3>FritzBox</h3>
                  
                          {{ basic.symbol(id~'ring', gad_event, '', icon1~'phone_ring.png', 'ring') }}
                          {{ basic.symbol(id~'call', gad_event, '', icon1~'phone_call_out.png', 'call') }}
                          {{ basic.symbol(id~'connect', gad_event, '', icon1~'phone_call.png', 'connect') }}            
                          {{ basic.symbol(id~'disconnect', gad_event, '', 'icons/ws/phone_call_end.svg', 'disconnect') }} 
                  
                  
                          {{ basic.value(id~'phone_status.fritz.last_caller', gad_last_caller)}},
                          {{ basic.value(id~'phone_status.fritz.last_call_date', gad_last_call_date)}}<br/>         
                          Dauer: {{ basic.value(id~'gad_duration', gad_duration)}} Sekunden
                  
                  
                     </div>
                    </div>
                   </div>
                  
                  
                  {% endblock %}
                  {% endmacro %}

                  Kommentar


                    sind in smarthomeng werte fuer die items da? bspw im backend plugin? was sagt das log?

                    hellsehen kann hier keiner

                    was ist die smartvisu.yaml???? das sind nur deine items, right? und sie liegt unter items? geht shng mit anderen plugins?
                    du hast dort schon mal items an eine nicht existente plugininstanz gebunden (wlan_repeater_1750)

                    dein sv html sieht eher wie eine widgetimplementierung aus. wie sieht deine seite dazu aus?

                    bist du sicher dass du die jew anleitungen kennst? erstmal shng hinkriegen. dann die visu..
                    zudem: bitte erstmal die grundlagen verstehen bevor du ein komplexes plugin einbindest
                    Zuletzt geändert von psilo; 23.01.2018, 20:50.

                    Kommentar


                      JA im smartvisu.yaml sind meine Items drin und ja sie liegt unter items sie enthält auch meine Lampen Rollläden etc. diese funktionieren auch. Das Sonos und das UZSU plugin laufen noch und funktioniert. Auf der Backend Seite sehe ich das AVM plugin nicht sollte das da nicht unter plugins zu sehen sein? Die Items sehe ich im Backend aber keine Werte.
                      Im Logfile finde ich nichts zu avm.

                      Danke Gruß

                      Christian
                      Zuletzt geändert von Neuchr; 23.01.2018, 21:21.

                      Kommentar


                        lass mal call_monitor_incoming_filter weg. es muss beim laden des plugins einen fehler im log geben. die items laedt er aber? schmeiss die mit der falschen instanz raus

                        Kommentar


                          Ich habe mal ein reboot durchgeführt und mir das log nochmal angesehen da kommt folgendes:

                          Code:
                          8183.2018-01-23  21:44:36 INFO     Main         Loading '/usr/local/smarthome/plugins/avm/plugin.yaml' to 'OrderedDict'
                          8184.2018-01-23  21:44:36 WARNING  Main         YAML-file not found: /usr/local/smarthome/plugins/avm/plugin.yaml
                          8185.2018-01-23  21:44:36 INFO     Main         plugin 'avm': No metadata found
                          8186.2018-01-23  21:44:36 ERROR    Main         Plugin 'avm' from section 'fb1' exception: invalid syntax (<string>, line 1)
                          8187.Traceback (most recent call last):
                          8188.  File "/usr/local/smarthome/lib/plugin.py", line 111, in __init__
                          Habe das eigentlich aus dem Beispiel übernommen, was ist da flasch in line 1?

                          Gruss,

                          Christian

                          Kommentar


                            ist das line 111? ich denke er meckert über die falschen punkte in
                            call_monitor_incoming_filter: "...

                            hast du das attribut mal rausgenommen wie ich geraten habe?
                            Zuletzt geändert von psilo; 24.01.2018, 06:07.

                            Kommentar


                              Du hast natürlich recht wenn das raus ist wird das plugin geladen. Es kamm noch eine Fehler-Meldung das er sich nicht verbinden kann die habe ich wegbekommen in dem ich FritzBox angeruffen habe #96*5*.
                              Die Werte bei den Items im Backend sind allerdings noch leer liegt wohl daran das im LogFile die folgenden Meldugen kommen.


                              Code:
                              5182.2018-01-24  11:34:50 ERROR    plugins.avm_fritzbox_7490 Attribute uptime not available on the FritzDevice
                              5183.2018-01-24  11:34:50 ERROR    plugins.avm_fritzbox_7490 Attribute serial_number not available on the FritzDevice
                              5184.2018-01-24  11:34:50 ERROR    plugins.avm_fritzbox_7490 Attribute software_version not available on the FritzDevice
                              5185.2018-01-24  11:34:50 ERROR    plugins.avm_fritzbox_7490 Attribute hardware_version not available on the FritzDevice
                              5186.2018-01-24  11:34:51 ERROR    plugins.avm_fritzbox_7490 Attribute wan_upstream not available on the FritzDevice
                              5187.2018-01-24  11:34:51 ERROR    plugins.avm_fritzbox_7490 Attribute wan_downstream not available on the FritzDevice
                              5188.2018-01-24  11:34:51 ERROR    plugins.avm_fritzbox_7490 Attribute wan_total_packets_sent not available on the FritzDevice
                              5189.2018-01-24  11:34:51 ERROR    plugins.avm_fritzbox_7490 Attribute wan_total_packets_received not available on the FritzDevice
                              5190.2018-01-24  11:34:52 ERROR    plugins.avm_fritzbox_7490 Attribute wan_total_bytes_sent not available on the FritzDevice
                              5191.2018-01-24  11:34:52 ERROR    plugins.avm_fritzbox_7490 Attribute wan_total_bytes_received not available on the FritzDevice
                              5192.2018-01-24  11:34:52 ERROR    plugins.avm_fritzbox_7490 Attribute wan_link not available on the FritzDevice
                              5193.2018-01-24  11:34:54 ERROR    plugins.avm_fritzbox_7490 Attribute wlan_guest_time_remaining not available on the FritzDevice
                              5194.2018-01-24  11:34:54 ERROR    plugins.avm_fritzbox_7490 Attribute aha_device not available on the FritzDevice
                              5195.2018-01-24  11:34:55 ERROR    plugins.avm_fritzbox_7490 Attribute aha_device not available on the FritzDevice
                              Gruß
                              Christian

                              Kommentar


                                Zitat von Neuchr Beitrag anzeigen
                                Die Werte bei den Items im Backend sind allerdings noch leer liegt wohl daran das im LogFile die folgenden Meldugen kommen.
                                Weiter oben hast Du ein ITEM das den Namen "Uptime_7490" hat. In der Fehlermeldung steht aber "uptime" bist Du Dir sicher, dass Du da die richtigen ITEMS abrfragst?

                                Und, Du hast nicht wirklich das Widget so wie oben beschrieben auf Deiner Raumseite eingefügt oder?

                                Kommentar

                                Lädt...
                                X