Benachrichtigungen
Alles löschen

Tools für die neue lokale REST API

9 Beiträge
4 Benutzer
5 Likes
2,442 Ansichten
(@guckykv)
Beiträge: 28
Eminent Member
Themenstarter
 

Hi!

Weihnachten war viel Zeit, ich wollte mal wieder selbst programmieren und die lokale API von der neuen 2.6 SysAP Version fand ich auch spannend. Daneben hatte ich früher schonmal ein Monitoring von diversen F@H Devices auf InfluxDB/Grafana basierend auf die inoffizielle API gebaut. Das wollte ich nun - in flexibler - auf die neue offizielle lokale API umsetzen.

Herausgekommen sind drei Bausteine:

https://github.com/guckykv/freeathome-go-fahapi

Eine Go Library um halbwegs bequem selbst Features basierend auf die SysAP Schnittstelle zu entwickeln. Das beinhaltet einmal einfache Wrapper für die REST Calls inkl. der WebSocket Schnittstelle um alle Updates im SysAP sofort mitzubekommen. Als auch ein eigenes internes Datenmodell, mit dem man einfacher arbeiten kann als die doch sehr generische JSON Struktur von ABB.

Basierend auf diese Library habe ich zwei Tools entwickelt, die man direkt verwenden kann. Also nicht selbst etwas programmieren muss.

https://github.com/guckykv/freeathome-go-tools

fahinflux - Lauscht über die WebSocket Schnittstelle auf alle Updates und protokoliert sie (für gewissen Datentypen) in eine InfluxDB (welche man dann mittels Grafana schön ausgeben kann). Man kann das Tool aber auch so starten, dass es keine InfluxDB benötigt, sondern statt dessen nur alle Updates auf der Console anzeigt. Das kann für Debugging sehr hilfreich sein. (Btw. Es sind noch nicht alle möglichen Device Typen implementiert.)

fahcli - Ein Console-Programm (im UNIX Style) um die REST Schnittstelle etwas komfortabler als mit CURL anzusprechen. Damit kann man sich z.B. ein Device anzeigen lassen, oder einzelne Datenpunkte lesen / verändern: Sprich z.B. den Zustand eines Lichtes auslesen bzw. das Licht ein oder auszuschalten.

Man kann aber auch virtuelle Devices damit anlegen und dann ebenfalls den Zustand des virtuellen Devices modifizieren. Den Erfolg kann man sich parallel von fahinflux im Debug Modus anzeigen lassen.

Um die Tools auszuprobieren müsst ihr das guckykv/freeathome-go-tools Repository mit git clonen und dann mittels "make" übersetzen. Dazu benötigt ihr eine aktuelle Go Version auf Eurem Rechner. Mittels "make all-pi" kann man sich die Tools auch für den raspberry pi übersetzen lassen. Dann braucht man nur das Programm (zB "fahinflux-pi") auf seinen raspi kopieren und kann es dort direkt starten.

Die Tools arbeiten für mich wunderbar (vor allem das fahinflux Programm habe ich schon länger im Einsatz), aber insgesamt sind es natürlich sehr frühe Versionen. Mag sein, dass manches nicht richtig funktioniert und an der einen oder anderen Stelle fehlen sicher auch noch wichtige Features. Vor allem fahcli kann noch viel Feinschliff vertragen.

Ich freue mich aber über Rückmeldungen, wo es Probleme gibt, oder aber auch was gut funktioniert. 😉

Georg

 

 

PS: Für die Authentifizierung an der SysAP API braucht man keinen Installer Account. Man muss nur den Usernamen aus der neuen Android/iOS App auslesen. Den Usernamen  findet man in der App unter dem "Donuts-Menu" (ganz rechts unten) und dort unten bei "free@home Einstellungen" / "Locale API" und Anmeldedaten. Das Password ist dann das, was ihr auch für die App verwendet habt.

 

 
Veröffentlicht : 05/01/2021 9:37 pm
MZ83, kleinerKobold, martini125 and 1 people reacted
Schlagwörter für Thema
(@babelbernd)
Beiträge: 122
Estimable Member
 

Hallo Georg, 

 

Klasse dass du das mit dem websocket hinbekommen hast und gleich deine Codes zur Verfügung stellst. 

Kannst du mir einen Tipp geben wie ich den websocket über Node-Red zum laufen bekomme? Ich habe bei der URL folgendes eingetragen: 

wss://192.168.178.38/fhapi/v1/api/ws

Jetzt wird aber eine Authentifizierung verlangt in Form eines Zertifikates. In der App kann man zwar ein solches erstellen und herunterladen aber ich glaube dass das noch nicht genug ist. Hast du evtl eine Idee dazu?

Gruß Michael 

 

 
Veröffentlicht : 06/01/2021 7:44 am
(@guckykv)
Beiträge: 28
Eminent Member
Themenstarter
 

@babelbernd

 

Hi!

Die zugehörige Codezeile bei mir: fahapi/Websocket.go#L20

Der Punkt ist, statt "wss" einfach nur "ws" zu verwenden. Der Unterschied ist letztlich wie "https" zu "http". Sprich einfach nur "ws" verschlüsselt nicht, braucht deswegen auch kein Zertifikat.

Sicher ist verschlüsselt eigentlich schöner, im Hausnetz aber nicht ganz so kritisch. Ich habe es auch noch nicht probiert, bei mir das Zertifikat zu installieren.

 

Georg.

 
Veröffentlicht : 06/01/2021 9:13 am
(@babelbernd)
Beiträge: 122
Estimable Member
 

@guckykv

Genauso habe ich es schon versucht aber ich bekomme einfach keine Verbindung zum AP. Habe auch schon mehrere Varianten versucht aber irgendwie schaffe ich es einfach nicht eine Verbindung herzustellen.

 

 
Veröffentlicht : 06/01/2021 10:31 am
(@guckykv)
Beiträge: 28
Eminent Member
Themenstarter
 

@babelbernd

Sorry, aber von JS und Node hab ich mich bislang fern gehalten. Da kann ich nichts zu sagen.
Mit Go hat es bei mir auf Anhieb funktioniert. Sprich an sich funktioniert die SysAP Websocket Schnittstelle einwandfrei.
Die sonstigen REST URLs kannst Du aufrufen?

Georg. 

 
Veröffentlicht : 06/01/2021 12:22 pm
(@babelbernd)
Beiträge: 122
Estimable Member
 

@guckykv

Ja ich kann zumindest per curl die Aktoren ansprechen und auch bei Node Red Befehle ans free@home SysAP senden. Nur schaffe ich es nicht, die websocket Verbindung aufzubauen. Hast du evtl Mal Zeit per Teamviewer? Vielleicht ist es ja wirklich nur ein Flüchtigkeitsfehler ?

 
Veröffentlicht : 06/01/2021 1:51 pm




(@jackyteam2302)
Beiträge: 3
New Member
 

@babelbernd

Hallo zusammen!

Wenn du eine Websocket Verbringung in Node Red aufbauen willst dann setzte vor deinen URL den Benutzer und das Passwort. Die Locale API verlangt ja eine Authentifizierung.

 

ws://installer:passwort@192.168.xxx.xxx/fhapi/v1/api/ws

 

So wie hier. trage dein Passwort ein und ersetze die xxx mit deiner IP. So funktioniert die Verbindung bei mir. 

 

Gruß Bernhard

 
Veröffentlicht : 20/01/2021 2:01 pm
Babelbernd reacted
(@martini125)
Beiträge: 1
New Member
 
Veröffentlicht von: @guckykv

Hi!

Weihnachten war viel Zeit, ich wollte mal wieder selbst programmieren und die lokale API von der neuen 2.6 SysAP Version fand ich auch spannend. Daneben hatte ich früher schonmal ein Monitoring von diversen F@H Devices auf InfluxDB/Grafana basierend auf die inoffizielle API gebaut. Das wollte ich nun - in flexibler - auf die neue offizielle lokale API umsetzen.

Herausgekommen sind drei Bausteine:

https://github.com/guckykv/freeathome-go-fahapi

Eine Go Library um halbwegs bequem selbst Features basierend auf die SysAP Schnittstelle zu entwickeln. Das beinhaltet einmal einfache Wrapper für die REST Calls inkl. der WebSocket Schnittstelle um alle Updates im SysAP sofort mitzubekommen. Als auch ein eigenes internes Datenmodell, mit dem man einfacher arbeiten kann als die doch sehr generische JSON Struktur von ABB.

Basierend auf diese Library habe ich zwei Tools entwickelt, die man direkt verwenden kann. Also nicht selbst etwas programmieren muss.

https://github.com/guckykv/freeathome-go-tools

fahinflux - Lauscht über die WebSocket Schnittstelle auf alle Updates und protokoliert sie (für gewissen Datentypen) in eine InfluxDB (welche man dann mittels Grafana schön ausgeben kann). Man kann das Tool aber auch so starten, dass es keine InfluxDB benötigt, sondern statt dessen nur alle Updates auf der Console anzeigt. Das kann für Debugging sehr hilfreich sein. (Btw. Es sind noch nicht alle möglichen Device Typen implementiert.)

fahcli - Ein Console-Programm (im UNIX Style) um die REST Schnittstelle etwas komfortabler als mit CURL anzusprechen. Damit kann man sich z.B. ein Device anzeigen lassen, oder einzelne Datenpunkte lesen / verändern: Sprich z.B. den Zustand eines Lichtes auslesen bzw. das Licht ein oder auszuschalten.

Man kann aber auch virtuelle Devices damit anlegen und dann ebenfalls den Zustand des virtuellen Devices modifizieren. Den Erfolg kann man sich parallel von fahinflux im Debug Modus anzeigen lassen.

Um die Tools auszuprobieren müsst ihr das guckykv/freeathome-go-tools Repository mit git clonen und dann mittels "make" übersetzen. Dazu benötigt ihr eine aktuelle Go Version auf Eurem Rechner. Mittels "make all-pi" kann man sich die Tools auch für den raspberry pi übersetzen lassen. Dann braucht man nur das Programm (zB "fahinflux-pi") auf seinen raspi kopieren und kann es dort direkt starten.

Die Tools arbeiten für mich wunderbar (vor allem das fahinflux Programm habe ich schon länger im Einsatz), aber insgesamt sind es natürlich sehr frühe Versionen. Mag sein, dass manches nicht richtig funktioniert und an der einen oder anderen Stelle fehlen sicher auch noch wichtige Features. Vor allem fahcli kann noch viel Feinschliff vertragen.

Ich freue mich aber über Rückmeldungen, wo es Probleme gibt, oder aber auch was gut funktioniert. 😉

Georg

 

 

PS: Für die Authentifizierung an der SysAP API braucht man keinen Installer Account. Man muss nur den Usernamen aus der neuen Android/iOS App auslesen. Den Usernamen  findet man in der App unter dem "Donuts-Menu" (ganz rechts unten) und dort unten bei "free@home Einstellungen" / "Locale API" und Anmeldedaten. Das Password ist dann das, was ihr auch für die App verwendet habt.

 

@guckykv 

Ich habe leider das Problem, dass ich noch einen alten SysAP habe. Auf diesem läuft leider die neue API nicht. 

Ich habe aber bei dir folgenden Satz gelesen: "basierend auf die inoffizielle API" 

Kannst du mir hierzu mehr Details geben? Die Adapter z.B. vom Broker laufen ja auch mit den alten SySAps also muss es ja irgendeine Lösung für die alten Dinger geben..

 

mfg martini125

 
Veröffentlicht : 19/09/2021 7:25 pm
(@guckykv)
Beiträge: 28
Eminent Member
Themenstarter
 

@martini125 https://github.com/henry-spanka/freeathome-api

Dies ist eine Implementierung, die mit dem alten AP funktioniert und eine eigene REST API bereitstellt.

 
Veröffentlicht : 21/09/2021 12:38 pm

Teilen: