Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

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

  • psilo
    antwortet
    Mein User hat auf der FB folgende Rechte:
    rechte.PNG

    PS: Wenn im backend mal Werte da sind und keine fehler geloggt werden, bitte die SmartVISU Fragen dort im Forum stellen

    Einen Kommentar schreiben:


  • Neuchr
    antwortet
    Meine Items habe ich aus der Beispiel Datei übernommen anbei ein Ausschnitt.

    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
    
    ....
    Doch ich habe das so Widget so auf meiner Raumseite eingefügt. Was ist daran falsch? Wie schon gesagt bin Anfänger was das angeht habe meine Lampen Rollläden etc. alles selber ans laufen bekommen. Bin über jede Hilfe und Erklärung dankbar.

    Gruß

    Christian

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Neuchr die items die an die falsche instanz gebunden waren, hast du rausgenommen, ja? nutzt du login mit user und passwort? sind die rechte für den user richtig auf der FB gesetzt? ich hatte neulich wen, wo nur mit passwort viele der requests von der box geblockt wurden...
    das geht wohl nur auf aelteren modellen, wo man noch keinen user konfigurieren kann (Bspw der 300er Wifi Repeater)

    im worst case kannste mal einen der CURLs aus dem readme testen.

    Bspw. den hier
    Code:
    curl --anyauth -u user:password "https://fritz.box:49443/upnp/control/x_voip" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialGetConfig" -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:X_AVM-DE_DialGetConfig xmlns:u='urn:dslforum-org:service:X_VoIP:1' /></s:Body></s:Envelope>" -s -k

    schuma ich glaube ich logge da im fehlerfall den wert des avm_data_type raus.. der heisst schon uptime soweit ich das auswendig weiss.. ich denke das ist ne rechtesache des users den er nutzt.. er muss das auf der fritzbox noch einstellen.
    Zuletzt geändert von psilo; 24.01.2018, 12:36.

    Einen Kommentar schreiben:


  • schuma
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Neuchr
    antwortet
    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 %}

    Einen Kommentar schreiben:


  • psilo
    antwortet
    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())

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • bruepe
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X