Ankündigung

Einklappen
Keine Ankündigung bisher.

Nuki Smartlock Plugin - Support Thread

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

    #16
    Hallo zusammen.

    Ich habe mir nun auch ein NUKI inkl. Bridge zugelegt und versuche das Ganze nun mit SmarthomeNG zu "verheiraten".

    Folgendes zu meiner Konfiguartion:
    Raspberry Pi 3 und SmarthomeNG 1.7.1
    Nuki 2.0 inkl Bridge welches über die NUKI-App tadellos funktioniert


    Bei der Konfiguration habe ich mich an die Anleitung in der Anwender-Doku gehalten und auch die Item-Beispiele daraus verwendet. Jedoch scheint es, als ob ich die falsche Nuki_id verwende. Das Plugin läuft (laut Shngadmin auf Status "aktiv"), aber im Log habe ich eine Fehlermeldung drin und die Items werden auch nicht erzeugt beziehungsweise angezeigt. Soweit ich das interpretiere, erwartet das Plugin eine Zahl vom Typ Integer. Jedoch ist dies bei mir laut der Nuki-App ein String... Oder habe ich hier etwas missverstanden und verwende die falsche Kennung? Wenn ja, wie komme ich zu dieser? Aus der NUKI-App ist das die einzige Kennung (nennt sich dort "Smart Lock ID"), die ich rausbekomme.


    Folgende Fehlermeldungen habe ich im Log...
    Code:
    020-08-12 19:24:01 ERROR lib.item Item EG.MyNukiLock.MyLockState: problem creating: invalid literal for int() with base 10: '184BD805'
    > Traceback (most recent call last):
    > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
    > child = Item(smarthome, self, child_path, value)
    > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
    > update = plugin.parse_item(self)
    > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 165, in parse_item
    > nuki_event_items[item] = int(nuki_id)
    > ValueError: invalid literal for int() with base 10: '184BD805'
    2020-08-12 19:24:01 ERROR lib.item Item EG.MyNukiLock.MyLockBattery: problem creating: invalid literal for int() with base 10: '184BD805'
    > Traceback (most recent call last):
    > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
    > child = Item(smarthome, self, child_path, value)
    > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
    > update = plugin.parse_item(self)
    > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 169, in parse_item
    > nuki_battery_items[item] = int(nuki_id)
    > ValueError: invalid literal for int() with base 10: '184BD805'
    2020-08-12 19:24:01 ERROR lib.item Item EG.MyNukiLock.MyLockAction: problem creating: invalid literal for int() with base 10: '184BD805'
    > Traceback (most recent call last):
    > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
    > child = Item(smarthome, self, child_path, value)
    > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
    > update = plugin.parse_item(self)
    > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 167, in parse_item
    > nuki_action_items[item] = int(nuki_id)
    > ValueError: invalid literal for int() with base 10: '184BD805'
    Meine Items...
    Code:
    EG:
        MyNukiLock:
            MyLockState:
                type: num
                nuki_id: 184BD805
                nuki_trigger: state
            MyLockBattery:
                type: num
                nuki_id: 184BD805
                nuki_trigger: battery
            MyLockAction:
                type: num
                nuki_id: 184BD805
                nuki_trigger: action
                enforce_updates: 'true'
    Für zweckdienliche Hinweise und euren Support wäre ich sehr dankbar.

    Kommentar


      #17
      Nach den Meldungen sieht es so aus, als würde die nuki_id von yaml als int verarbeitet. Setze die Werte mal in Quotes um sicherzustellen dass sie als Strings verarbeitet werden.
      Beispiel:
      Code:
      MyLockState:
          type: num
          nuki_id: '184BD805'
          nuki_trigger: state
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #18
        Hallo.

        Vielen Dank für den Input. Leider jedoch hat es nichts gebracht.

        Immer noch folgende Fehlermeldungen im Log...

        Code:
        2020-08-13 15:41:26 ERROR lib.item Item EG.MyNukiLock.MyLockState: problem creating: invalid literal for int() with base 10: '184BD805'
        > Traceback (most recent call last):
        > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
        > child = Item(smarthome, self, child_path, value)
        > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
        > update = plugin.parse_item(self)
        > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 165, in parse_item
        > nuki_event_items[item] = int(nuki_id)
        > ValueError: invalid literal for int() with base 10: '184BD805'
        2020-08-13 15:41:26 ERROR lib.item Item EG.MyNukiLock.MyLockBattery: problem creating: invalid literal for int() with base 10: '184BD805'
        > Traceback (most recent call last):
        > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
        > child = Item(smarthome, self, child_path, value)
        > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
        > update = plugin.parse_item(self)
        > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 169, in parse_item
        > nuki_battery_items[item] = int(nuki_id)
        > ValueError: invalid literal for int() with base 10: '184BD805'
        2020-08-13 15:41:26 ERROR lib.item Item EG.MyNukiLock.MyLockAction: problem creating: invalid literal for int() with base 10: '184BD805'
        > Traceback (most recent call last):
        > File "/usr/local/smarthome/lib/item.py", line 785, in __init__
        > child = Item(smarthome, self, child_path, value)
        > File "/usr/local/smarthome/lib/item.py", line 841, in __init__
        > update = plugin.parse_item(self)
        > File "/usr/local/smarthome/plugins/nuki/__init__.py", line 167, in parse_item
        > nuki_action_items[item] = int(nuki_id)
        > ValueError: invalid literal for int() with base 10: '184BD805'

        Kommentar


          #19
          Ok, dann müssen fuppy oder pfischi als Maintainer des Plugins oder psilo als Tester was dazu sagen. Das Plugin erwartet augenscheinlich einen Integer Wert in der nuki_id.
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #20
            Boomer55 Poste bitte mal den Output dieser URL:
            http://<nuki_bridge_ip>:8080/info?token=<dein_token>

            Wenn da Deine ID wirklich Hex ist, müssen wir das Plugin anpassen. Bei meinem Nuki 2.0 ist sie aber ein Integer.

            Ich vermute, das was Du da hast, ist der Name:

            Code:
            {
            "bridgeType": 1,
            "ids": {
            "hardwareId": 484428402,
            "serverId": 1296243795
            },
            "versions": {
            "firmwareVersion": "2.6.0",
            "wifiFirmwareVersion": "2.1.17"
            },
            "uptime": 2688435,
            "currentTime": "2020-08-13T15:08:41+00:00",
            "wlanConnected": true,
            "serverConnected": true,
            "scanResults": [
            {
            "deviceType": 0,
            "nukiId": 355543273,
            "name": "Nuki_922EA413",
            "rssi": -65,
            "paired": true
            },
            {
            "deviceType": 0,
            "nukiId": 245334341,
            "name": "Nuki_138BDB8",
            "rssi": -71,
            "paired": true
            }
            ]
            }
            Der README nach gibt auch das Plugin die IDs des/der Nukis aus. Alternativ wird auf die API Doku verwiesen (Die Arbeit hab ich Dir oben abgenommen).

            Vielleicht testweise auch mal das Logging auf INFO setzen: "The nuki_id can be figured out via the REST API of the Nuki Bridge (see API documentation) or by just (re)starting SmarthomeNG with the configured Nuki plugin. " --> Codezeile: https://github.com/smarthomeNG/plugi...init__.py#L226
            Zuletzt geändert von psilo; 13.08.2020, 16:23.

            Kommentar


              #21
              Hallo zusammen.

              psilo, ja das war es. Nachdem ich die Nummer aus dem Output der URL genommen habe, hat es geklappt. Hab mir zwar die API-Doku vom Nuki (V1.11 vom 08.07.2020) ausgedruckt, aber wenn ich behaupten würde dass ich bei den ca. 30 Seiten durchgestiegen bin, würde ich wohl wegen vorspielen falscher Tatsachen verhaftet... 😁

              Vielen Dank an auch alle für euren schnellen und kompetenten Einsatz. Das zeigt mir wieder mal eindrücklich, dass ich mit SmarthomeNG für mein Heim aufs richtige Pferd gesetzt habe.

              Schöne Grüße aus Österreich,
              Markus

              Kommentar


                #22
                Könnte man die Abfrage oben nicht einfach ins Webinterface des Plugins übernehmen und das Ergebnis gleich mit anzeigen?

                Kommentar


                  #23
                  @bmxp
                  ich schaus mir mal an, das webif ist eh von mir ;-) hatte bisher die idee schlichtweg nicht.

                  Kommentar


                    #24
                    Die Änderungen sind im Develop in das WebInterface des Nuki Plugins eingepflegt. Ich sehe dort jetzt die IDs meiner 2 Nuki 2.0.

                    Kommentar


                      #25
                      Hallo,

                      besteht evtl. die Möglichkeit auch den Türstatus auszulesen? Man müsste ja vermutlich nur die Funktion "update_lock_state" erweitern und im JSON den Wert für
                      "doorsensorState" auslesen. Ausserdem müsste natürlich noch Attribut "doorState" eingeführt werden.

                      Ich hab versucht den Python Code zu verstehen. Leider komme ich da nicht richtig weiter, weil sich evtl. doch einiges seit Python 2.3 🙄 geändert hat. Insbesondere verstehe ich den Teil nicht:

                      Code:
                      for item, key in nuki_event_items.items():
                          if key == nuki_id:
                              item(nuki_state, 'NUKI')
                      Was macht bitte schön "item(...)"???

                      Beste Grüße
                      Christian

                      Kommentar


                        #26
                        Was macht bitte schön "item(...)"???
                        Dem item einen wert zuweisen, wie in shng üblich??

                        Du darfst gerne einen pr machen. Ich glaube die nuki 1.0 koennen den state nicht. Bitte daran denken falls du einen PR machst. Aus der zeit vom 1.0er ist das plugin. Die bridge hatte auch zum erscheinen des 2.0 die info noch nicht. Jetzt offenbar schon, falls du recht hast. Da ich den magneten nicht an die tuer kleben wollte, nutze ich selber das bisher nicht.
                        Zuletzt geändert von psilo; 24.08.2020, 12:20.

                        Kommentar


                          #27
                          Und ChristianMichels bei der Gelegenheit - wo Du es oben so schön gezeigt hast - aus der Doku für Plugin Development noch berücksichtigen:

                          Code:
                          # update the item by calling item(value, caller, source=None, dest=None)
                          # - value and caller must be specified, source and dest are optional
                          #    
                          # The simple case:
                          # [B]item(device_value, self.get_shortname())[/B]
                          #
                          #     # if the plugin is a gateway plugin which may receive updates from several external sources,
                          #     # the source should be included when updating the the value:
                          # item(device_value, self.get_shortname(), source=device_source_id)

                          Kommentar


                            #28
                            das mit dem self.get_shortname() pushe ich grade

                            volle fahrt zurück.. das ist ne statische methode, da komme ich nicht an die plugininstanz ran.. das plugin braucht echt ne grobüberarbeitung :-/
                            Zuletzt geändert von psilo; 24.08.2020, 14:08.

                            Kommentar


                              #29
                              Danke für den Hinweis auf . Soweit hatte ich noch nicht gelesen. Ich dachte bei der Funktionsaufruf sei aus dem Standard-Python. So wie es für mich beim ersten Überfliegen aussieht, ist das aber eine Methode aus dem SmarthomeNG Baukasten. (kaum hat man mal ein paar Jahre kein Python programmiert und schon alles verlernt 🤦‍♂️)

                              Ich lese mich mal etwas mehr ein und versuche mich mal an einem Vorschlag in einem PR.

                              Kommentar


                                #30
                                Ich hab den Code jetzt bei mir angepasst. War eigentlich ganz einfach und funktionierte auch sofort 😁

                                PR hab ich auch erstellt. Da das hier mein erster PR ist und ich mit github noch nicht so recht warm geworden bin, bitte ich schon mal vorab um Verzeihung für alle dämlichen Fehler. Gleichzeitig verspreche ich aus euren Kommentaren zu lernen.

                                Kommentar

                                Lädt...
                                X