HomeConnect: Unterschied zwischen den Versionen
(Umstieg auf die Version 2) |
KKeine Bearbeitungszusammenfassung |
||
Zeile 39: | Zeile 39: | ||
===Basisdefinition=== | ===Basisdefinition=== | ||
Für das Weitere braucht man, egal ob für echte Hausgeräte oder eine Simulation, einen (kostenlosen) [https://developer.home-connect.com/ Entwickleraccount bei HomeConnect]. Dazu muss man sich zunächst registrieren und eine Verifikation der Mailadresse durchführen, ähnlich wie schon bei der primären Registrierung auf der HomeConnect-Plattform. | Für das Weitere braucht man, egal ob für echte Hausgeräte oder eine Simulation, einen (kostenlosen) [https://developer.home-connect.com/ Entwickleraccount bei HomeConnect]. Dazu muss man sich zunächst registrieren und eine Verifikation der Mailadresse durchführen, ähnlich wie schon bei der primären Registrierung auf der HomeConnect-Plattform. Wählt hier den Type "(Open Source) Community". | ||
Der ursprüngliche Modulentwickler bittet darum, als ''Company Nam'' im Home Connect Developer Portal den Wert “FHEM Betatester“ anzugeben. Dabei ist es nach derzeitigem Kenntnisstand egal, was man als ''Additional Information'' über sich selbst einträgt. | Der ursprüngliche Modulentwickler bittet darum, als ''Company Nam'' im Home Connect Developer Portal den Wert “FHEM Betatester“ anzugeben. Dabei ist es nach derzeitigem Kenntnisstand egal, was man als ''Additional Information'' über sich selbst einträgt. | ||
Nach diesem Vorgang sieht man auf der Seite https://developer.home-connect.com/applications zwei Reiter, ''Your Applications'' und ''Register Application''. Unter ''Your Applications'' sieht man zunächst nur den Schlüssel für den API Web Client | Nach diesem Vorgang sieht man auf der Seite https://developer.home-connect.com/applications zwei Reiter, ''Your Applications'' und ''Register Application''. Unter ''Your Applications'' sieht man zunächst nur den Schlüssel für den API Web Client. | ||
:<code> | |||
Hier eine neue Applikation (z.B. FHEM) registrieren. Als OAuth Flow "Authorization Code Grant Flow" verwenden. Die wichtigste Einstellung der Anwendung ist die ''Redirect URL''. Diese URL muss den Host enthalten, den man selbst im Browser für den Zugriff auf FHEM verwendet, also in der Regel die IP-Adresse des FHEM-Servers. Damit soll über das REST-API von FHEM ein Kommando in dem definierten HomeConnectConnection Device aufgerufen werden, | |||
:<code>https://<Kurzname FHEM-Servers>.local:8083/fhem?cmd.Test=set%20hcconn%20auth%20 </code> | |||
Es macht durchaus Sinn hier gleich mehrere Varianten (http, https, unterschiedliche Adressen) einzutragen, da es mit manchen Varianten immer wieder Probleme gibt. | |||
Dieser String muss '''identisch''' sowohl auf der Home Connect Seite in der zu erzeugenden Anwendung angegeben werden, als auch bei der Gerätedefinition in FHEM. | Dieser String muss '''identisch''' sowohl auf der Home Connect Seite in der zu erzeugenden Anwendung angegeben werden, als auch bei der Gerätedefinition in FHEM. | ||
Das Erzeugen der Anwendung im Home Connect Developer Portal liefert dann zwei längliche Strings, die ''Client ID'' und das ''Client Secret''. Diese müssen ebenfalls in die Gerätedefinition in FHEM aufgenommen werden, sie lautet also | Das Erzeugen der Anwendung im Home Connect Developer Portal liefert dann zwei längliche Strings, die ''Client ID'' und das ''Client Secret''. Diese müssen ebenfalls in die Gerätedefinition in FHEM aufgenommen werden, sie lautet also |
Version vom 6. Februar 2025, 17:40 Uhr
HomeConnect | |
---|---|
Zweck / Funktion | |
Anbindung von Hausgeräten mit Home Connect Schnittstelle | |
Allgemein | |
Typ | Inoffiziell |
Details | |
Dokumentation | Thema |
Support (Forum) | Home Connect |
Modulname | 48_HomeConnectConnection.pm 48_HomeConnect.pm |
Ersteller | Stefan (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Übersicht
Mit den beiden Modulen HomeConnectConnection und HomeConnect können in FHEM Devices für Home Connect Hausgeräte angelegt werden, die an einem Home Connect Account angemeldet sind. Mögliche Hausgeräte sind aktuell Backöfen, Spülmaschinen, Kühlschränke, Waschmaschinen, Wäschetrockner, Staubsaugeroboter, Abzugshauben, Herdplatten und Kaffeemaschinen der Marken Bosch, Siemens und Neff sowie weiterer Hersteller die Home Connect unterstützen.
Wann verwendet man HomeConnectConnection, wann HomeConnect?
Das Modul HomeConnectConnection verwaltet die Verbindung zwischen FHEM und einem Home Connect Account. Es legt die HomeConnect Devices für die einzelnen Hausgeräte an.
Aktueller Status des Moduls
Die beiden Module wurden Anfang 2025 basierend auf einer bereits im Forum geposteten Version von Peter Henning komplett neu überabeitet und im Februar als Version 2 via GitHub unter https://github.com/bublath/FHEM-HomeConnect veröffentlicht. Die ursprüngliche Version wird schon seit Jahren nicht mehr weiterentwickelt.
Nach wie vor, muss sich heder Anwender bei Home Connect als Entwickler anmelden und den Login-Namen seines Home Connect App Accounts hinterlegen. Dieser etwas umständliche Prozess lässt sich leider nicht umgehen und wird auch von anderen Heimautomatisierungsplatformen genutzt. Einen einfacheren Weg gäbe es nur für kommerzielle Anwendungen.
Update von der ursprünglichen Version von Stefan/swhome
Wer die ursprüngliche Version von Stefan/swhome nutzt editiert die Datei FHEM/controls_fhem.txt und ersetzt "sw-home" mit "bublath" und führt dann entsprechend in FHEM ein "update all" aus.
Unterschiede zur Urversion
Die neue Version ist nicht 100% kompatibel zur ursprünglichen Version, da diese Readingnamen und Werte durch Kürzungen lesbarer macht. Wenn also Notify, DOIF, DBlogs etc. bestehen, die Events vom Modul auswerten, müssen diese angepasst werden.
In der Regel fallen bei Readings die ersten beiden "Punkte" weg - also aus "BSH.Common.Setting.PowerState" wird einfach "Setting.PowerState". Die Readinginhalte werden üblicherweise auf den letzten Teil gekürzt, also aus "BSH.Common.EnumType.OperationState.Run" wird einfach "Run".
Weitere Unterscheide betreffen Verbesserungen und Erweiterungen die auf der GitHub Seite bzw. in der CommandRef des Moduls aufgelistet sind, aber keine Kompatibilitätsprobleme verursachen sollten.
Es gibt eine Möglichkeit die Kürzung der Namen zu deaktivieren indem die Attribute "namePrefix" und "valuePrefix" auf 1 gesetzt werden. Da einer der großen Vorteile der neuen Version die bessere Übersichtlichkeit mit den gekürzten Namen ist und diese Variante auch besser getestet ist, empfehle ich den neuen Default zu verwenden und lieber ein paar DOIFs etc. anzupassen.
Definition von FHEM Devices
Modul-Installation
Zur Installation (oder zum Update) der FHEM-spezifischen Software in der FHEM Kommandozeile eingeben:
update all https://raw.githubusercontent.com/bublath/FHEM-HomeConnect/master/controls_homeconnect.txt
Damit die Module auch bei einem normalen "update check" mit geprüft werden, muss ferner in die FHEM-Kommandozeile eingetragen werden:
update add https://raw.githubusercontent.com/bublath/FHEM-HomeConnect/master/controls_homeconnect.txt
Basisdefinition
Für das Weitere braucht man, egal ob für echte Hausgeräte oder eine Simulation, einen (kostenlosen) Entwickleraccount bei HomeConnect. Dazu muss man sich zunächst registrieren und eine Verifikation der Mailadresse durchführen, ähnlich wie schon bei der primären Registrierung auf der HomeConnect-Plattform. Wählt hier den Type "(Open Source) Community".
Der ursprüngliche Modulentwickler bittet darum, als Company Nam im Home Connect Developer Portal den Wert “FHEM Betatester“ anzugeben. Dabei ist es nach derzeitigem Kenntnisstand egal, was man als Additional Information über sich selbst einträgt.
Nach diesem Vorgang sieht man auf der Seite https://developer.home-connect.com/applications zwei Reiter, Your Applications und Register Application. Unter Your Applications sieht man zunächst nur den Schlüssel für den API Web Client.
Hier eine neue Applikation (z.B. FHEM) registrieren. Als OAuth Flow "Authorization Code Grant Flow" verwenden. Die wichtigste Einstellung der Anwendung ist die Redirect URL. Diese URL muss den Host enthalten, den man selbst im Browser für den Zugriff auf FHEM verwendet, also in der Regel die IP-Adresse des FHEM-Servers. Damit soll über das REST-API von FHEM ein Kommando in dem definierten HomeConnectConnection Device aufgerufen werden,
https://<Kurzname FHEM-Servers>.local:8083/fhem?cmd.Test=set%20hcconn%20auth%20
Es macht durchaus Sinn hier gleich mehrere Varianten (http, https, unterschiedliche Adressen) einzutragen, da es mit manchen Varianten immer wieder Probleme gibt.
Dieser String muss identisch sowohl auf der Home Connect Seite in der zu erzeugenden Anwendung angegeben werden, als auch bei der Gerätedefinition in FHEM. Das Erzeugen der Anwendung im Home Connect Developer Portal liefert dann zwei längliche Strings, die Client ID und das Client Secret. Diese müssen ebenfalls in die Gerätedefinition in FHEM aufgenommen werden, sie lautet also
define hcconn HomeConnectConnection <Client ID> <Redirect URL> <Client Secret>
also beispielsweise
define hcconn HomeConnectConnection D239EBCABC99994D239EBCABC999B3D2393204
https://fhem.local:8083/fhem?cmd.Test=set%20hcconn%20auth%20 994D239EBCABCBCABC999B3D
Der Name 'hcconn kann auch anders gewählt werden, er muss dann aber konsequenterweise auch in der Redirect URL anders lauten.
Danach findet man auf der Detailseite des neuen FHEM-Device hcconn über dem set-Button einen Link Home Connect Login. Wenn man diesen anklickt, wird ein Browserfenster zur einmaligen Anmeldung von FHEM beim Home Connect Portal geöffnet, in welches man seine Home Connect Credentials eintragen und die Steuerung zulassen muss. Bei erfolgter Anmeldung wechselt der STATE des FHEM-Devices hcconn auf 'Connected'. Anschließend sollte man (per set-Button) den Befehl scanDevices ausführen, das FHEM-Device hcconn (das ja nur das Interface zu Home Connect liefert) legt damit für jedes gefundene Hausgerät ein eigenes Geräte-Device vom Typ HomeConnect an.
Wenn man mit simulierten statt mit echten Geräten arbeiten will (z.B. für Testzwecke), muss vor das Client Secret bei der Definition des hcconn-Devices das Schlüsselwort 'simulator' eingetragen werden.
Troubleshooting
Die Verwendung des Hostnamens mit der Domain ".local" hat sich als die zuverlässigste Möglichkeit erwiesen um die Verbindung herzustellen. Die Verwendung der internen IP Adresse scheint nicht mehr zu funktionieren. Wichtig ist zu verstehen, dass der Name nicht von außen erreichbar sein muss, sondern von einem lokalen redirect im eigenen Browser verwendet wird. Eine Freigabe des FHEM Servers in Internet ist nicht erforderlich.
Sollte es einfach nicht klappen (aktuell funktioniert bei mir der Simulator zum Beispiel nie und es gibt nur einen "internal Error") gibt es einen Workaround:
Vereinfacht die URL in irgendwas wie https://fhem.local:8083/fhem.html - jetzt geht geht der Browser zumindest auf die FHEM Startseite (wobei wahrscheinlich nicht mal das erforderlich ist). Kopiert jetzt die aktuelle Adresszeile eures Browsers in eine Texteditor.
Die ziemliche lange URL enthält irgendwo einen String der mit "code=" anfängt und ähnlich lang ist wie Client ID und Client Secret. Der String endet mit einem "&". Manchmal gibt es hier noch URL Ersetzungen (oft ist am Ende zwei mal "%3D" was zwei "=" Zeichen entspricht). Diese Ersetzungen sind außerdem noch rückzuübersetzen. Jetzt in der HomeConnectConnection Device ein "set auth" und als Parameter diesen String inklusive "code=" - dann sollte die Verbindung hergestellt werden.
Diese Prozedur ist normalerweise nur einmal nötig. Das Token wird dann automatisch refreshed
Sicherheitsfunktion csrfToken in FHEM
Neueste Versionen von FHEM verwenden eine XSRF Schutzfunktion. Wer diese benutzen möchte, muss ein statisches Token definieren:
attr WEB csrfToken myToken123
und muss dann an seine redirectURL noch diesen Teil anhängen:
&fwcsrf=myToken123
Beispiel:
define hcconn HomeConnectConnection D239EBCABC99994D239EBCABC999B3D2393204 http://localhost:8083/fhem?cmd.Test=set%20hcconn%20auth%20&fwcsrf=myToken123 simulator
Wichtig wie immer: die Redirect URL muss sowohl im Home Connect Developer Program als auch in der Definition des FHEM HomeConnectConnection devices geändert werden.
Unterstützte Geräte
Grundsätzlich funktionieren alle Home Connect Geräte, d.h. sie werden zumindest in FHEM angelegt und ihr Status wird sichtbar.
Welche Informationen das Gerät liefert und welche Kommandos verstanden werden, hängt davon ab, was in der Developer Version der Home Connect API unterstützt wird. Das Modul holt sich hierzu die Infos über die API, so dass es kaum gerätspezifischen Code im Modul gibt.
Was das genau bedeutet kann man unter https://api-docs.home-connect.com/general/ nachlesen.
Nur weil die Smart Phone App eine Funktion unterstützt, heisst das noch lange nicht, dass es auch über die API geht.
Details zu den Funktionen bitte der CommandRef der HomeConnect Moduls entnehmen.
Wenn jemand der Meinung ist, dass etwas nicht unterstützt wird, das laut API Beschreibung eigentlich gehen sollte oder Verbesserungsvorschläge hat, bitte im Forum https://forum.fhem.de/index.php?board=97.0 posten.