- wird nicht mehr gewartet, es gibt ein Loxberry Plugin für Netatmo: https://wiki.loxberry.de/plugins/netatmo_weather/start?s%5B%5D=netatmo
Da das Problem immer wieder mal vorkommt
Wenn sich Werte in der Anzeige nicht ändern oder folgender Fehler (in der Konsole des Programms, nicht am Miniserver) gemeldet wird:
org.json.JSONException: JSONObject["dashboard_data"] not found
dann ist sehr wahrscheinlich die Batterie eines Netatmo Moduls leer oder keine Funkverbindung zum Modul, es sind dann keine Dashboard Daten verfügbar.
Doku von Netatmo:
dashboard_data
Last data measured per device (NB: this field is not returned when the device is unreachable)
Gegenüber der Version 1.0.x hat sich die Konfiguration geändert - es kann nun eingestellt werden, dass KEIN Netatmo Zertifikat verwendet wird. Details siehe im Artikel. |
Change Log
Version 2.0
Version 1.0.1
Version 1.0
Version 0.7.1
Version 0.7
Version 0.6
Version 0.5
Version 0.1
|
Diskussion und Fragen bitte im Forum.
Hier eine Anleitung, wie man seine Netatmo Daten relativ einfach in Loxone bekommt. Das ganze baut auf den Ideen von https://github.com/lost-carrier/netatmo-api auf (hat aber mittlerweile nichts mehr damit zu tun) und ist eine auf Java 8 basierende Lösung. Es werden beliebig viele Basisstationen mit zusätzlichen Außenmodulen, weiteren Innenmodulen sowie Wind- und Regenmodule unterstützt.
Unterstützung für das Thermostat einzubauen sollte nicht allzu schwierig sein. Troubleshooting Tipps zur Inbetriebnahme gibt es auch im loxforum.
Und so sieht das ganze dann in der mitgelieferten Loxone Demo App aus
Bilder: Netatmo4Loxone
Hier kann die Miniserver Beispiel Config Datei für obige Ausgaben heruntergeladen werden.
Angepasst werden müssen die Modulnamen in der Befehlserkennung, in der folgenden Tabelle in Spitzen Klammern <....> aufgeführt
Hat man mehr als eine Basisstation im Einsatz, z.B. eine am Hauptwohnsitz, eine im Wochenendhaus, so kann man in der Konfiguration (siehe weiter unten) einstellen, dass nicht nur die Modulnamen sonder auch die Stationsnamen für die Werte Übermittlung verwendet werden. In der folgenden Tabelle werden immer nur der <Modulname> angeführt, hat man Unterstützung für mehrere Stationen aktiviert, so wird immer <Stationsname>.<Modulname> übermittelt.
In der folgenden Tabelle sind alle Werte dokumentiert, die je nach Modul übertragen werden. Der Modulname ist mit den jeweils eigenen Werten zu ersetzten.
Alle Zeiten und das Datum werden vom Programm in Lokalzeit mit Basis 1.1.2009 umgerechnet (Zeitbasis für Miniserver statt wie üblich 1.1.1970 - es soll ja nicht zu einfach sein ). Wenn der Miniserver und der Rechner auf dem das Programm läuft, die selbe Zeitzone eingestellt haben, dann werden die Zeitangaben der Messung korrekt dargestellt.
Befehlserkennung | Beispielswert | Basis-modul | Außen-modul | Innen-modul | Wind-modul | Regen-modul | Anzeige Einheit | Erklärung | Anmerkung |
---|---|---|---|---|---|---|---|---|---|
<Modulname>.CO2=\v | 1026 | x | x | <v> ppm | CO2 | ||||
<Modulname>.Humidity=\v | 41 | x | x | x | <v> % | Luftfeuchtigkeit | |||
<Modulname>.Noise=\v | 42 | x | <v> db | Lärm | |||||
<Modulname>.Pressure=\v | 1022 | x | <v> mbar | Luftdruck | |||||
<Modulname>.Temperature=\v | 21.6. | x | x | x | <v.1> °C | Temperatur | |||
<Modulname>.battery_percent=\v | 74 | x | x | x | x | <v> % | Batterieladung | ||
<Modulname>.battery_vp=\v | 3 | x | x | x | x | <v> | Batteriestatus: 0=very low, 1=low, 2=medium, 3=high, 4=full | ||
<Modulname>.date_max_temp=\v | 219240152 | x | x | x | <v.u> | Datum & Uhrzeit Maximaltemperatur, Sekunden seit 2009.01.01 | nicht benutzt in MS Demo Config | ||
<Modulname>.date_max_temp_tod=\v | 43352 | x | x | x | <v.t> | Uhrzeit der Maximaltemperatur, Sekunden seit 00:00:00 | |||
<Modulname>.date_max_temp_tod_nmbr=\v | 8.12 | x | x | x | <v.2> | Uhrzeit der Maximaltemperatur als Zahl *) | |||
<Modulname>.date_min_temp=\v | 219230176 | x | x | x | <v.u> | Datum & Uhrzeit Minimaltemperatur, Sekunden seit 2009.01.01 | nicht benutz in MS Demo Config | ||
<Modulname>.date_min_temp_tod=\v | 33376 | x | x | x | <v.t> | Uhrzeit der Minimaltemperatur, Sekunden seit 00:00:00 | |||
<Modulname>.date_min_temp_tod_nmbr=\v | 11.18 | x | x | x | <v.2> | Uhrzeit der Minimaltemperatur als Zahl *) | |||
<Modulname>.last_message=\v | 219265551 | x | x | x | x | <v.u> | Datum & Uhrzeit letzte Nachricht, Sekunden seit 2009.01.01 | nicht benutz in MS Demo Config | |
<Modulname>.last_message_tod=\v | 68751 | x | x | x | x | <v.t> | Uhrzeit letzte Nachricht, Sekunden seit 00:00:00 | nicht benutz in MS Demo Config | |
<Modulname>.last_message_tod_nmbr=\v | 9.45 | x | x | x | x | <v.2> | Uhrzeit letzte Nachricht als Zahl *) | nicht benutz in MS Demo Config | |
<Modulname>.last_seen=\v | 219265538 | x | x | x | x | <v.u> | Datum & Uhrzeit wann sich das Modul zuletzt gemeldet hat | nicht benutz in MS Demo Config | |
<Modulname>.last_seen_tod=\v | 68738 | x | x | x | x | <v.t> | Uhrzeit wann sich das Modul zuletzt gemeldet hat | nicht benutz in MS Demo Config | |
<Modulname>.last_seen_tod_nmbr=\v | 9.45 | x | x | x | x | <v.2> | Uhrzeit wann sich das Modul zuletzt gemeldet hat als Zahl *) | nicht benutz in MS Demo Config | |
<Modulname>.max_temp=\v | 21.0 | x | x | x | <v.1> °C | Tages-Maximaltemperatur | |||
<Modulname>.min_temp=\v | 19.0 | x | x | x | <v.1> °C | Tages-Minimaltemperatur | |||
<Modulname>.pressure_trend=\v | 2 | x | <v> | Luftdruck Trend: 0=fallend, 1=gleichbleibend, 2=steigend | |||||
<Modulname>.rf_status=\v | 2 | x | x | x | x | <v> | Stärke Funksignal: 0=very low, 1=low, 2=medium, 3=high, 4=full | ||
<Modulname>.temp_trend=\v | 1 | x | x | x | <v> | Temperatur Trend: 0=fallend, 1=gleichbleibend, 2=steigend | |||
<Modulname>.time_utc=\v | 219265541 | x | x | x | x | x | <v.u> | Datum & Uhrzeit der letzten Messung - Lokalzeit NICHT UTC! | nicht benutz in MS Demo Config |
<Modulname>.time_utc_tod=\v | 68741 | x | x | x | x | x | <v.t> | Uhrzeit der letzten Messung | |
<Modulname>.time_utc_tod_nmbr=\v | 13.07 | x | x | x | x | x | <v.2> | Uhrzeit der letzten Messung als Zahl *) | |
<Modulname>.wifi_status=\v | 2 | x | <v> für Status | WIFI Signalqualität: 0=very bad, 1=bad, 2=medium, 3=good | |||||
<Modulname>.data_up_to_date=\v | 1 | x | x | x | x | x | <v.x> für Status | Aktualität der Daten: 0=nicht aktuell (älter als 15 Minuten), 1=aktuell | |
<Modulname>.Rain=\v | 0.0 | x | <v> mm | aktuelle Regenmenge in mm | |||||
<Modulname>.sum_rain_1=\v | 1.0 | x | <v> mm | Regenmenge der letzten Stunde | |||||
<Modulname>.sum_rain_24=\v | 3.4 | x | <v> mm | Regenmenge der letzten 24 Stunden | |||||
<Modulname>.GustAngle=\v | 95 | x | <v> ° | Himmelsrichtung in Grad aus der die Böe kam | Zur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo | ||||
<Modulname>.GustStrength=\v | 12 | x | <v> km/h | Stärke der Böe | |||||
<Modulname>.WindAngle=\v | 106 | x | <v> ° | Himmelsrichtung in Grad aus der der Wind kommt | Zur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo | ||||
<Modulname>.WindStrength=\v | 5 | x | Windstärke | ||||||
<Modulname>.date_max_wind_str=\v | 221310738 | x | <v.u> | Datum und Uhrzeit der Tages-Windspitze | |||||
<Modulname>.date_max_wind_str_tod=\v | 40338 | x | <v.t> | Uhrzeit der Tages-Windspitze | |||||
<Modulname>.date_max_wind_str_tod_nmbr=\v | 11.12 | x | <v.2> | Uhrzeit der Tages-Windspitze als Zahl *) | |||||
<Modulname>.max_wind_angle=\v | 111 | x | <v> ° | Himmelsrichtung der Tages-Windspitze | Zur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo | ||||
<Modulname>.max_wind_str=\v | 17 | x | <v> km/h | Stärke der Tages-Windspitze |
*) Statusbaustein stellt Zeit falsch dar, deshalb wird eine Zahl verwendet
Schritt für Schritt Anleitung
Hier eine Anleitung, wie man das ganze schnell zum Laufen bekommt, für ev. Probleme siehe auch das loxforum.
Zuerst muss man sich bei https://dev.netatmo.com registrieren und dort eine App erstellen.
Netatmo API Zertifikat in Keystore importierenAb Version 2.0 ist die Default Einstellung OHNE Zertifikate zu arbeiten. Wer weiß was ert tut kann das mit dem entsprechenden Config Parameter ändern und wieder MIT Zertifikaten arbeiten. HINWEIS: Ohne Zertifikate zu arbeiten birgt das minimale Sicherheitsrisiko, das jemand die Netatmo Domäne kapert und einem falsche Werte unterjubelt. Der Vorteil ist, man muss nicht alle paar Jahre, wenn Netatmo sein Zertifikat erneuern muss, ein neues Zertifikat laden. Ich persänli (Maximilian Weißböck) verwende keine Zertifikate mehr. Die folgenden Schritte als Administrator ausführen, da man sonst an mangelnden Schreibrechten scheitern könnte.
Damit ist das Zertifikat importiert. Das ist wichtig, da das Java Programm sonst einen Fehler wirft, dass der Verbindung nicht vertraut wird. |
Jetzt fehlt nur mehr der letzte Schritt, die Daten in Loxone emmpfangen und anzeigen. Die Daten werden über UDP an die konfigurierte Loxon Adresse gesendet. Wie man UDP Daten empfängt und auswertet, ist hier http://www.loxone.com/dede/service/dokumentation/loxone-config/peripherie/kommunikation-udp.html beschrieben. Oder die Anleitung hier UDP Eingang definieren verwenden.
Die Daten haben prinzipiell folgenden Aufbau:
Modulname.wertname=xxx
bzw.
Sationsname.Modulname.wertname=xxx
wenn Unterstützung für mehrere Stationen konfiguriert wurde
Bei mir sieht das z.B. so aus (ohne Multi-Station Support)
Esszimmer.CO2=831 Esszimmer.Humidity=39 Esszimmer.Noise=61 Esszimmer.Pressure=1021 Esszimmer.Temperature=21.0 Esszimmer.date_max_temp=220963619 Esszimmer.date_max_temp_tod=38819 Esszimmer.date_max_temp_tod_nmbr=10.46 Esszimmer.date_min_temp=220958481 Esszimmer.date_min_temp_tod=33681 Esszimmer.date_min_temp_tod_nmbr=9.21 Esszimmer.max_temp=21.6 Esszimmer.min_temp=18.6 Esszimmer.pressure_trend=1 Esszimmer.temp_trend=0 Esszimmer.time_utc=220968150 Esszimmer.time_utc_tod=43350 Esszimmer.time_utc_tod_nmbr=12.02 Esszimmer.wifi_status=3 Esszimmer.data_up_to_date=1 Außen.Humidity=85 Außen.Temperature=-1.1 Außen.battery_percent=74 Außen.battery_vp=3 Außen.date_max_temp=220932758 Außen.date_max_temp_tod=7958 Außen.date_max_temp_tod_nmbr=2.12 Außen.date_min_temp=220968102 Außen.date_min_temp_tod=43302 Außen.date_min_temp_tod_nmbr=12.01 Außen.last_message=220968160 Außen.last_message_tod=43360 Außen.last_message_tod_nmbr=12.02 Außen.last_seen=220968154 Außen.last_seen_tod=43354 Außen.last_seen_tod_nmbr=12.02 Außen.max_temp=2.1 Außen.min_temp=-1.1 Außen.rf_status=2 Außen.temp_trend=1 Außen.time_utc=220968102 Außen.time_utc_tod=43302 Außen.time_utc_tod_nmbr=12.01 Außen.data_up_to_date=1 Schlafzimmer.CO2=812 Schlafzimmer.Humidity=40 Schlafzimmer.Temperature=20.0 Schlafzimmer.battery_percent=68 Schlafzimmer.battery_vp=3 Schlafzimmer.date_max_temp=220925537 Schlafzimmer.date_max_temp_tod=737 Schlafzimmer.date_max_temp_tod_nmbr=0.12 Schlafzimmer.date_min_temp=220958446 Schlafzimmer.date_min_temp_tod=33646 Schlafzimmer.date_min_temp_tod_nmbr=9.2 Schlafzimmer.last_message=220968160 Schlafzimmer.last_message_tod=43360 Schlafzimmer.last_message_tod_nmbr=12.02 Schlafzimmer.last_seen=220968135 Schlafzimmer.last_seen_tod=43335 Schlafzimmer.last_seen_tod_nmbr=12.02 Schlafzimmer.max_temp=20.5 Schlafzimmer.min_temp=17.7 Schlafzimmer.rf_status=4 Schlafzimmer.temp_trend=1 Schlafzimmer.time_utc=220968135 Schlafzimmer.time_utc_tod=43335 Schlafzimmer.time_utc_tod_nmbr=12.02 Schlafzimmer.data_up_to_date=1 Kinderzimmer.CO2=880 Kinderzimmer.Humidity=39 Kinderzimmer.Temperature=20.2 Kinderzimmer.battery_percent=76 Kinderzimmer.battery_vp=3 Kinderzimmer.date_max_temp=220926113 Kinderzimmer.date_max_temp_tod=1313 Kinderzimmer.date_max_temp_tod_nmbr=0.21 Kinderzimmer.date_min_temp=220952410 Kinderzimmer.date_min_temp_tod=27610 Kinderzimmer.date_min_temp_tod_nmbr=7.4 Kinderzimmer.last_message=220968160 Kinderzimmer.last_message_tod=43360 Kinderzimmer.last_message_tod_nmbr=12.02 Kinderzimmer.last_seen=220968147 Kinderzimmer.last_seen_tod=43347 Kinderzimmer.last_seen_tod_nmbr=12.02 Kinderzimmer.max_temp=20.8 Kinderzimmer.min_temp=18.8 Kinderzimmer.rf_status=3 Kinderzimmer.temp_trend=1 Kinderzimmer.time_utc=220968147 Kinderzimmer.time_utc_tod=43347 Kinderzimmer.time_utc_tod_nmbr=12.02 Kinderzimmer.data_up_to_date=1 Regenmesser.Rain=0.0 Regenmesser.battery_percent=100 Regenmesser.battery_vp=4 Regenmesser.last_message=221332153 Regenmesser.last_message_tod=61753 Regenmesser.last_message_tod_nmbr=17.09 Regenmesser.last_seen=221332147 Regenmesser.last_seen_tod=61747 Regenmesser.last_seen_tod_nmbr=17.09 Regenmesser.rf_status=0 Regenmesser.sum_rain_1=0.0 Regenmesser.sum_rain_24=0.0 Regenmesser.time_utc=221332134 Regenmesser.time_utc_tod=61734 Regenmesser.time_utc_tod_nmbr=17.08 Regenmesser.data_up_to_date=1 Windmesser.GustAngle=95 Windmesser.GustStrength=12 Windmesser.WindAngle=106 Windmesser.WindStrength=5 Windmesser.battery_percent=100 Windmesser.battery_vp=4 Windmesser.date_max_wind_str=221310738 Windmesser.date_max_wind_str_tod=40338 Windmesser.date_max_wind_str_tod_nmbr=11.12 Windmesser.last_message=221331929 Windmesser.last_message_tod=61529 Windmesser.last_message_tod_nmbr=17.05 Windmesser.last_seen=221331929 Windmesser.last_seen_tod=61529 Windmesser.last_seen_tod_nmbr=17.05 Windmesser.max_wind_angle=111 Windmesser.max_wind_str=17 Windmesser.rf_status=0 Windmesser.time_utc=221331929 Windmesser.time_utc_tod=61529 Windmesser.time_utc_tod_nmbr=17.05 Windmesser.data_up_to_date=1 |
Funktioniert alles, so möchte man das Java Programm natürlich auch ohne Eclipse laufen lassen. Auch das geht ganz einfach über den Export als Runnable JAR file
Das ganze läuft bei mir und wohl auch bei einigen anderen seit einiger Zeit stabil, folgendes steht noch auf meiner Liste
Folgende Punkte wurden bereits erledigt