Netatmo hat im August 2022 seine Nutzer informiert, dass sie die API updaten werden. Konkret möchte der Konzern die Sicherheit erhöhen und seit Oktober 2022 nur noch eine Verbindung über die OAuth2 Authorisierung ermöglichen.
Da ich (und vermutlich auch viele andere) die Homematic CCU oder ihre Rasperrymatic über die Anleitung im homematic-forum mittels CUxD durch die Methode der Client Credentials verbunden haben, wird dies nun zeitnah nicht mehr funktionieren.
Anleitung Netatmo mit Homematic verbinden
Ich habe in meinem Netzwerk einen ioBroker laufen und werde nun die Werte über diesen in die Variablen der Homematic schreiben.
Variablen für Netatmo in Homematic anlegen
Falls noch nicht geschehen musst du dir zunächst die Netatmo Variablen in deinem Homematic Admin anlegen. Hier bieten sich konkret an:
- Für die Netatmo Indoor Station (*):
- Netatmo_Wohnen_Temperatur als “Zahl” von 0 bis 100 in °C
- Netatmo_Wohnen_Sonometer als “Zahl” von 0 bis 200 in dB
- Netatmo_Wohnen_Luftdruck als “Zahl” von 0 bis 2000 in mb
- Netatmo_Wohnen_CO2 als “Zahl” von 0 bis 10000 in ppm
- Für den Netatmo Windmesser (*):
- Netatmo_Wind_Staerke als “Zahl” von 0 bis 1000 in km/h
- Netatmo_Wind_Richtung als “Zahl” von 0 bis 1000 in °
- Netatmo_Wind_Boehen_Staerke als “Zahl” von 0 bis 1000 in km/h
- Netatmo_Wind_Boehen_Richtung als “Zahl” von 0 bis 1000 in °
- Für den Netatmo Regenmesser (*):
- Netatmo_Regenmenge_30min als “Zahl” von 0 bis 1000 in mm
- Netatmo_Regenmenge_1d als “Zahl” von 0 bis 1000 in mm
- Netatmo_Regen_aktuell als “Zahl” von 0 bis 1000 in mm
- Für eine Netatmo Außenstation:
- Netatmo_Outdoor_Temperatur als “Zahl” von -100 bis 100 in °C
- Für eine weitere Netatmo Innenstation (*):
- Netatmo_Schlafzimmer_Temperatur als “Zahl” von 0 bis 100 in °C
- Netatmo_Wohnen_CO2 als “Zahl” von 0 bis 10000 in ppm
Es könnte am Ende somit wie folgt angelegt sein:
Homematic Adapter installieren und Instanzen konfigurieren
Nach dem Einloggen in die ioBroker Admin Oberfläche muss man sich die beiden Homematic Adapter ReGaHSS und RPC installieren. Diese findet man im ioBroker Repository unter IoT Systeme:
Die Konfiguration der Homematic Rega Instanz hm-rega sieht bei mir wie folgt aus:
Die hm-rpc.0 Instanz holt bei mir die Homematic IP Werte:
Die hm-rpc.1 Instanz holt bei mir CUxD Werte:
Und die hm-rpc.2 Instanz ist zuständig für Virtual Devices:
sowie die hm-rpc.3 Instanz für rfd:
Mein zyklisches Abfragen ist auf 30 Sekunden hinterlegt.
Netatmo Adapter installieren/updaten und Instanz konfigurieren
Wer bereits eine Netatmo Instanz mit einer Version 1.x.x installiert hatte, der sollte den kompletten Objektbaum in ioBroker löschen, denn dieser wird neu strukturiert angelegt.
Den Adapter von Netatmo findet ihr im normalen ioBroker Repository in der Kategorie Wetter.
Diesen einfach installieren und eine Instanz anlegen. Das neue an der Netatmo Version ab 2.x.x ist, dass diese authentifiziert werden muss. Dazu klickt man in der Konfiguration zunächst auf “Authenticate with Netatmo”:
Daraufhin muss man sich mit seinen Netatmo Login Daten einloggen und die Applikation Dritter, sprich dem “Netatmo Adapter for ioBroker” seine smarte Wetterstation freigeben indem man “Ja, ich akzeptiere klickt:
Nachfolgend kommt an auf eine etwas unseriös aussehende Seite, die jedoch den Zweck hat die Verbindung zu bestätigen:
Anschließend wechselt man wieder auf die Administrationsoberfläche seines ioBrokers. Dort sollten die Instanzeinstellungen von Netatmo noch geöffnet sein.
Als nächstes gilt es für die API Schnittstelle im DEV Account bei Netatmo Connect eine App zu erstellen. Mit der Erstellung erhält man eine client ID und ein client secret:
Diese beiden Werte sind ebenso in den Instanzeinstellungen von Netatmo im ioBroker unter dem Punkt Netatmo-App einzutragen. Mein Datenaktualisierungsintervall habe ich auf 5 Minuten gelegt.
Mittels Blockly Script die Werte von Netatmo in die Homematic übertragen
Die Grundvoraussetzung dafür ist, dass ihr den Adapter Scriptausführung installiert habt und natürlich ebenso eine Instanz daraus erstellt habt. Die Scriptausführung ist notwendig um über Java Script bzw. Blocky die Werte zu übertragen:
Um ein Script zu erstellen wählt ihr im ioBroker Menü zunächst den Punkt “Skripte” aus. Anschließend könnt ihr mit dem “+” ein neues Script anlegen:
Ich verwende als Trigger, also als Auslöser einen Datenpunkt meiner Netatmo Objekte. Dabei habe ich mich für die Aktualisierung “LastUpdate” meiner Basisstation entschieden.
Das liegt einfach daran, dass diese ja über einen Netzanschluss und die Einbindung ins WLAN verfügt. Sollte bei einem anderen Modul die Batterie leer sein, dann würde beispielsweise der Wert “CO2” aufgrund fehlender Verbindung ja nicht aktualisiert werden.
Anschließend müssen wir über das System die Werte der Variablen in der CCU aktualisieren.
Dazu nehmen wir jeweils den passenden Wert aus den Objekten der Netamo als Grundlage und steuern dann damit den Wert der Homematic IP Variable:
In der Konsequenz sieht das Blockly Script zur Übertragung von Netatmo zu Homematic wie folgt aus:
Du musst die Objekte selbstverständlich noch an deine individuellen Variablen und Datenpunkte anpassen!
Prüfung ob die Werte übertragen werden
Zunächst muss einmal das Script vom Pause-Modus aufgeweckt werden und gestartet werden. Anschließend sollte es problemlos durchlaufen, sobald der Zeitstempel aktualisiert wurde und somit der Trigger ausgeführt wird:
In diesem Fall sieht man sowohl an der Aktualisierungszeit der Variable als auch an den Werten, dass alles passt.
Entfernen der ursprünglichen Netatmo Verbindung in Homematic
Für diejenigen, die vorher in ihrer Homematic mittels Script und CUXD die Daten von Netatmo abgerufen haben gilt es noch dort etwas aufzuräumen.
Als erstes lösche ich das ursprünglich in die Homematic Zentrale eingefügte Programm welches für die Datenabholung zuständig war:
Des Weitern sollte man auch das Script, welches man damals per FTP/Putty auf die CCU hochgeladen hat löschen. Dies befindet sich unter:
/usr/local/addons/netatmo/netatmo.tcl
Damit läuft wieder alles 🙂
Hallo, hab deine Anleitung getestet und hänge an “State value to set for “hm-rpc.0.002E9F299931B0.0.CODE_ID” has value “32” greater than max “8”
Bei Falls Objekt. Objekt ID gebe ich das Netatmo Modul an und speichere das ganze. Da bekomme ich oben die Meldung. Ich sehe auch in der Liste unter “hm-rega” keine Netatmo Nr. zum auswählen. Firewall ist bei der CCU3 offen.
Eine Idee?
Gruß Peter
Hallo Peter,
ich nehme an, sowohl die Instanz für Netatmo als auch für HM-REGA sind im ioBroker “grün” und du siehst im Objektbaum bei Netatmo die ganzen Werte der Komponenten und unter HM-REGA deine erstellten Variablen.
Dann deutet die Fehlermeldung darauf hin, dass er den Status aufgrund einer Einschränkung nicht in die Variable von Homematic schreiben kann.
Bitte logge dich in deine Administrator Oberfläche der Homematic ein und prüfe bei den Einstellungen -> Systemvariablen, ob diese als “Variablentyp: Zahl” klassifiziert sind und der “Wertebereich von 0 bis 100” liegt.
Viele Grüße,
Tobias
Hallo Tobias, es läuft jetzt alles. Ich hatte vergessen in Einstellungen die Systemvariablen zu setzen. Ich hatte gedacht, die werden mit dem Falls Objekt (ObjektID Update) Automatisch gesetzt.
Für einen Anfänger wie mich, wäre ein Hinweis an dieser stelle noch super, dass man die Variablen noch setzen muss. Jetzt weiß ich es, vielen dank für deine tolle Anleitung!
Gruß Peter
Hallo Peter,
prima, das freut mich!
Danke auch für deinen Hinweis – ich werd’s im Beitrag ergänzen.
Viele Grüße,
Tobias