Wie am besten mit einem HTTP Callback umgehen?

Begonnen von CoolTux, 10 Oktober 2016, 14:15:56

Vorheriges Thema - Nächstes Thema

CoolTux

Hallo,

Mit der neuen Firmwareversion 1.0.3 der Nuki Bridge ist es möglich eine Callback URL mit an zugeben

Zitat
/callback
The following endpoints provides methods to register up to 3 url callbacks, which will be triggered
once the lock state of one of the known Smart Locks changes.
The new lock state will be sent to the callback url by executing a POST request and posting a JSON
list in the following format:
{"nukiId": 11, "state": 1, "stateName": "locked", "batteryCritical": false}

Example-Call
http://192.168.1.50:8080/callback/add?url=http%3A%2F%2F192.168.
0.20%3A8000%2Fnuki&token=123456

Meine Frage ist nun, wie kann ich das in FHEM einarbeiten, außer mit einem eigenen Server Socket. Gibt es da eine andere Lösung, will nicht ständig irgendwelche Ports belegen.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

#1
Habe ich bereits als FHEMWEB CGI Erweiterung in mehreren meiner Module eingebaut (z.B. GEOFANCY, HP1000 Wettermodul oder Pushover).

Gerade jüngst erst wieder im gestern veröffentlichten THINKINGCLEANER Modul zur Nutzung der dortigen Webhook Funktion. Dort dürfte es auch recht überschaubar zu begutachten sein. Die Frage über die FHEMWEB Instanzen bezog sich auch darauf :-)



Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Supi, vielen Dank Dir. Schaue ich mir gleich mal an.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

Du musst allerdings schauen, ob du für jedes definierte Device später einen eigenen Webhook brauchst (oder willst), oder ob es möglich ist das jeweilige Fhem Gerät anhand einer übermittelten UUID o.ä. klar zu identifizieren und somit zu suchen. Das ThinkingCleaner Modul sendet eine solche UUID, weshalb ich bei einer bereits vorhandenen Registrierung eines CGIs die Registrierung eines weiteren nicht mehr zulasse. Beim HP1000 ist das genauso, da die URL wiederum von der Wetterstation ansich schon so vorgegeben ist, dass man eh nicht mehr als eine in FHEM benutzen kann.


In den Modulen Pushover und GEOFANCY ist diese Restriktion nicht drin, dort registriert jedes Device einen eigenen Infix für sich.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Ich bekomme eine eindeutige ID mit übermittelt wo ich dann entsprechend die korrekte Deviceinstanz ansprechen kann.

Habe mal eben überflogen. Kann es sein das der webhook zwar getriggert wird aber Du daraufhin beim entsprechenden Device ein statusRequest machst? Bei mir wäre es so das mit dem Trigger auch der komplette Datenstrom mit kommt den ich dann gleich verarbeiten kann.

Ich schaue nachher noch mal in Ruhe, mein Akku vom Lapi war gerade zu Ende  ;D



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

#5
Ja, leider liefert der ThinkingCleaner unsinniger Weise keine Werte mit und will nur bescheid geben, dass man sich die Werte jetzt gefälligst abholen kann...  ::)


Wenn ich die Werte bekommen hätte, dann hätte ich die einfach in die von HttpUtils zur Antwortverarbeitung angesteuerte THINKINGCLEANER_ReceiveCommand() Funktion weitergereicht, um dann die Auswertung dort möglichst zentral zu machen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Macht Sinn. Genau so will ich es ja auch machen.
Letzte Frage habe ich, wie gesagt bin nur kurz zum schauen gekommen. Kann nachher auch selber schauen. Machst Du einen extra Webhook auf oder benutzt Du schon eine vorhandene Webinstanz.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

#7
Ich lasse den User eine vorhandene FHEM Instanz per Dropdown in den Attributen auswählen, damit die Selbstregistrierung des Moduls am ThinkingCleaner Gerät dann klappt. Grundsätzlich ist der Webhook aber über alle FHEMWEB Instanzen gleich erreichbar. Es geht dann also nur darum dem ThinkingCleaner die nach außen hin korrekte URL inkl. Port mitteilen zu können.


Nur beim HP1000 Modul ist der webname durch die Wetterstation fest vorgegeben, weshalb der User hier noch händisch eine geeignete FHEMWEB Instanz anlegen muss. Aus Modulsicht reagiere ich hier aber auch einfach auf alle FHEMWEB Instanzen gleich und habe einfach nur verhindert, dass mehrere HP1000 Devices überhaupt angelegt werden können.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Ich danke Dir sehr für Deine ausführliche Beschreibung. Werde mich dann die Tage damit mal auseinander setzen. Noch ist API Version ja Beta  ;D


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net