Hallo zusammen,
ich bin gerade dabei, mein Plugin für die das Nuki Smartlock bzw. Nuki Bridge zu optimieren, bevor ich es dann der Community zur Verfügung stelle :-)
Über die Bridge kann ich Befehle an das Smartlock über die Nuki Bridge API senden und Status Infos abfragen.
Aktuell bin ich an der Optimierung der Statusabfragen. Wird ein Befehl (z. b. Aufsperren) über sh.py getriggert, so kann ich den daraus folgenden Status über eine nachfolgende Abfrage leicht selber abholen.
Problem ist aber, wenn die Statusänderung "extern", spricht z. B. das Smartlock via Handy-App getriggert wird. Sh.py bekommt dann erstmal aktiv davon nichts mit. Meine aktuelle Lösung sieht vor, per cron jede Minute den Status abzufragen, was sehr unsmart ist.
Die Bridge API bietet allerdings die Möglichkeit, via Callback-Funktion einen POST-Request inkl. neuem Status (JSON-Objekt) an eine selbst festzulegende URL zu senden, sobald sich der Status des Smartlocks verändert hat.
Für diesen Zweck hab ich mithilfe von http.server schon einmal einen kleinen Webserver gebaut, welcher diesen POST-Request entgegennehmen und die Status auslesen kann.
Leider reichen meine sh.py und Python Kenntnisse nicht soweit um den nächsten Schritt zu gehen, diesen Webserver in das Plugin zu integrieren. Einfach ins Plugin-Script "reinkopieren" brachte nichts, da der Start des Server die weitere Ausführung des Scripts blockierte.
Mir schwebt vor, dass mit Start des Plugins ein Webserver mit gestartet wird, der die Callback POST-Requests entgegennimmt und dann entsprechend den Status des zugehörigen sh.py Items updated.
Das network Plugin habe ich mir auch schon angeschaut. Leider kann dies aktuell nur mit POST-Requests umgehen. Über lib.connection habe ich keinerlei Doku gefunden um bewerten zu können, ob man das Plugin auch so umbauen könnte, damit es auch POST-Requests verarbeiten kann.
Besten Dank bereits im Voraus für eure Hilfestellungen.
Gruß
Christian
ich bin gerade dabei, mein Plugin für die das Nuki Smartlock bzw. Nuki Bridge zu optimieren, bevor ich es dann der Community zur Verfügung stelle :-)
Über die Bridge kann ich Befehle an das Smartlock über die Nuki Bridge API senden und Status Infos abfragen.
Aktuell bin ich an der Optimierung der Statusabfragen. Wird ein Befehl (z. b. Aufsperren) über sh.py getriggert, so kann ich den daraus folgenden Status über eine nachfolgende Abfrage leicht selber abholen.
Problem ist aber, wenn die Statusänderung "extern", spricht z. B. das Smartlock via Handy-App getriggert wird. Sh.py bekommt dann erstmal aktiv davon nichts mit. Meine aktuelle Lösung sieht vor, per cron jede Minute den Status abzufragen, was sehr unsmart ist.
Die Bridge API bietet allerdings die Möglichkeit, via Callback-Funktion einen POST-Request inkl. neuem Status (JSON-Objekt) an eine selbst festzulegende URL zu senden, sobald sich der Status des Smartlocks verändert hat.
Für diesen Zweck hab ich mithilfe von http.server schon einmal einen kleinen Webserver gebaut, welcher diesen POST-Request entgegennehmen und die Status auslesen kann.
Leider reichen meine sh.py und Python Kenntnisse nicht soweit um den nächsten Schritt zu gehen, diesen Webserver in das Plugin zu integrieren. Einfach ins Plugin-Script "reinkopieren" brachte nichts, da der Start des Server die weitere Ausführung des Scripts blockierte.
Mir schwebt vor, dass mit Start des Plugins ein Webserver mit gestartet wird, der die Callback POST-Requests entgegennimmt und dann entsprechend den Status des zugehörigen sh.py Items updated.
Das network Plugin habe ich mir auch schon angeschaut. Leider kann dies aktuell nur mit POST-Requests umgehen. Über lib.connection habe ich keinerlei Doku gefunden um bewerten zu können, ob man das Plugin auch so umbauen könnte, damit es auch POST-Requests verarbeiten kann.
Besten Dank bereits im Voraus für eure Hilfestellungen.
Gruß
Christian
Kommentar