WICHTIGER HINWEIS 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)
VERSION 2.0
Wichtiger Hinweis
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
Downlods für schnell entschlossene
- Eclipse Java Projekt Netatmo4Loxone.zip
- Beispiel Confíg für Minserver Netatmo Demo.Loxone
Diskussion und Fragen bitte im Forum.
Anleitung
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
Miniserver Beispiel Config Datei für obige Auswertung
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
Unterstützung mehrerer Stationen
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.
Übermittelte Werte
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.
Netatmo Developer Account anlegen und Netatmo App erstellen
Zuerst muss man sich bei https://dev.netatmo.com registrieren und dort eine App erstellen.
- Einen neuen Account bei https://dev.netatmo.com anlegen, nicht die bestehenden Administrator Account Daten von https://my.netatmo.com für die Netatmo Wetterstation verwenden (also einen andere E-Mail Adresse verwenden). Warum ein neuer Account und nicht die bestehenden Account Daten verwenden? Dies hat zumindest die zwei folgenden Gründe:
- es muss das Passwort für diesen neuen Developer Account in dem Programm, das wir bauen, gespeichert werden
- bei mir hat schlicht und einfach der Zugriff auf den Admin Account - trotz richtiger Account Daten im Programm - nicht funktioniert, erst eine komplett neuer Account hat funktioniert
- Eine neue App unter https://dev.netatmo.com/dev/createapp anlegen, z.B. mit dem Namen Miniserver.MeinName - der Name darf noch nicht existieren (Achtung: Fehlermeldungen sind kaum zu erkennen!)
- Vom Admin Account (der mit der Wetterstation) eine Einladung an den soeben neu erstellten Developer Account schicken (Station-Gäste > Per E-Mail teilen) und die Einladung annehmen. Nun hat der Developer Account und damit die App zugriff auf die Wetterstation.
(Wenn jemand weiß wie man im Nachhinein, also nach der Einladung, noch Apps hinzufügen kann, die auch funktionieren, wäre ich dankbar für einen Tipp)
JAVA und Eclipse installieren
- Von http://www.oracle.com/technetwork/java/javase/downloads/index.html die aktuelle Java JDK 8 Version herunterladen und installieren (JDK - also Java Development Kit, nicht JRE - das ist nur die Runtime)
- Als IDE wird Eclipse verwendet, deshalb von https://eclipse.org/downloads/ die Eclipse IDE for Java Developers herunterladen und in einen eigenen Ordner mit Namen eclipse extrahieren.
- eclipse.exe starten, den vorgeschlagenen Workspace akzeptieren und dann, wenn das Eclipse Fenster erscheint, auf das Icon Workbench (rechts oben) klicken. Später importieren wir dann das Netatmo Projekt in Eclipse.
Eclipse Projekt importieren, anpassen und laufen lassen
Projekt Importieren
- Die Datei Netatmo4Loxone.zip herunterladen
- Die Datei in Eclipse importieren, dazu wie folgt vorgehen:
- File > Import... > General > Existing Projects into Workspace > Next >
- Select archive file auswählen mit Browse die heruntergeladene zip Datei suchen und auswählen
- es wird das Project angezeigt und ausgewählt, Finish klicken
- das Projekt wird nach ein paar Sekunden links im Package Explorer angezeigt
Projekt anpassen und laufen lassen
- Die Datei Configuration.properties muss angepasst werden, hier sind die Miniserver Adresse und Port (für UDP Datenkommuikation) sowie die Netatmo Developer Account-Daten und App-Daten einzutragen. Außerdem können noch weitere Dinge wie mehr Stationen Support und Debug Ausgaben eingestellt werden.
- die Datei öffnen, sie ist im src Verzeichnis
- die Miniserver Adressdaten und Netatmo Zugangsdaten mit deneigenen Werte ersetzen - den Rest bei bedarf anpassen
- die Änderungen nochmals kontrollieren und speichern
- Die Einstellungen für die Zertifikatsdatei anpassen NICHT mehr erforderlich ab V 2.0 wenn keine Zertifikate verwendet werden!
- Menü Run > Run Configurations... und dort den Tab Arguments öffnen
- hier muss der Pfad zu den Zertifikaten eingetragen werden, die je nach System unterschiedlich sind. In das Feld VM Arguments ist einzutragen:
Für Windows: -Djavax.net.ssl.trustStore="C:///Program Files/Java/jre1.8.0_65/lib/security/cacerts"
Für OS X: -Djavax.net.ssl.trustStore=/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts - die Änderungen speichern (Apply) und das Configuration Fenster schließen
- Nun über das Menü Run > Run as > Java Application das Programm starten (der Projektname, also Netatmo4Loxone, muss selektiert sein)
- wenn alles gut geht, dann wird im Console Fenster der Output des Programms angezeigt, es werden die Namen der Wetterstation sowie die vorhandene Module und die Werte ausgegeben.
- wenn nicht alles gut geht, dann werden die aufgetretenen Fehler angezeigt und man muss rausfinden, was nicht passt.
UDP Daten in Loxone empfangen und anzeigen
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
Java Programm Standalone laufen lassen
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
- File > Export... > Java > Runnable JAR file > Next >
- als Launch configuration Netatmo4Loxone verwenden
- mit den Standardeinstellungen exportieren, als Dateiname z.B. netatmo.jar verwenden
- Eine Command Shell dort öffnen, wohin man die netatmo.jar Datei exportiert hat
- Das Programm mit dem folgendem Befehl aufrufen:
- für OS X: java -Djavax.net.ssl.trustStore=/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts -jar netatmo.jar
- für Windows: java -Djavax.net.ssl.trustStore="C:///Program Files/Java/jre1.8.0_6 5/lib/security/cacerts" -jar netatmo.jar
Next Steps
Das ganze läuft bei mir und wohl auch bei einigen anderen seit einiger Zeit stabil, folgendes steht noch auf meiner Liste
- Besser dokumentieren und das ganze in einem Source Code Repository ablegen.
- Dem Miniserver die Möglichkeit bieten, den Status abzufragen, um sicherstellen zu können, dass die Werte aktuell sind (lebt das Programm noch?)
- Version erstellen, die kein Zertifikat braucht (schon mal getestet, muss ich mal sauber machen...)
- Thema Rain Gauge - Werte kleiner 1mm/h werden derzeit als 0mm/h angezeigt (aus 0,8mm/h in der Netatmo-App wird in Loxone 0mm/h). Ein Netatmo API Problem? Eher vermute ich ein abschneiden der Daten beim Umwandeln / Übertragen nach Loxone ...
Folgende Punkte wurden bereits erledigt
- Erledigt - Besseres Fehlerhandling im Programm selbst - die ganzen Klassen gehören in Wirklichkeit Refaktorisiert, da es (hoffentlich) nur Beispiele sind und nicht wirklich sauber programmiert ist.
- Erledigt - Logger statt syso und syserr verwenden.
- Erledigt - Weitere Daten von den Modulen an den MS senden, vor allem Batteriezustand und auch Funksignalstärke.
- Erledigt - NaN Werte gar nicht übertragen.
- Erledigt - Zeit Wert so übertragen, das er nutzbar ist.
- Erledigt - Mehrere Stationen unterstützen, derzeit wird nur eine (die erste) unterstützt.
- Erledigt - Regen, Wind und Thermostat Daten einbinden
- Erledigt - Das ganze mal auf einem Raspberry Pi ausprobieren, müsste da auch problemlos laufen - hat ein User aus dem Forum schon gemacht und läuft bei mir seit Monaten problemlos
34 Comments
Dietmar Wimmer
Habe bei mir ein PHP Script auf einem Raspberry laufen der die Anmeldung bei Netatmo erledigt.
Bei Aufruf des Script werden folgende Daten zurückgegeben die dann mittels virtuellen http Eingangsverbindern von der Loxone abgerufen werden können.
Werde in den nächsten Tagen ein HOWTO dafür schreiben.
Maximilian Weißböck
Ja genau, diese Daten (JSON Objekt) werden dann bei mir extrahiert und als UDP Key=Value String an Loxone gesendet. Mit ein paar zusätzlichen Dingen, z.B. wird ein online_status errechnet für jedes Modul, abhängig davon wann es sich zuletzt gemeldet hat. Aber diese Version muss ich erst finalisieren und hochladen.
Florian Rottensteiner
Was ich noch nicht ganz verstanden habe: Dieses Java Programm muss ich jetzt in bestimmten Abständen ausführen damit ich aktuelle Daten bekomme, korrekt?
Maximilian Weißböck
Nein, du startest das Programm ein Mal und lässt es laufen. Dann werden alle 4 Minuten die Werte abgefragt und an den MS gesendet. Netatmo überträgt aber nur alle 10 Minuten, damit die Daten aber nicht zu alt sind, bis sie am MS landen werden sie alle 4 Minuten abgefragt - auch wenn immer 2 mal die selben Werte kommen werden. Kürzer als 4 Minuten macht aber keinen Sinn.
Maximilian Weißböck
Die neue Version 0.7 verwendet das Access Token richtig, bitte jedenfalls ein Update machen!
Christian
...wie kann ich mit den Daten meines Regen- und Windmessers weiterhelfen?
Maximilian Weißböck
Im Wesentlichen musst du mir wahrscheinlich einfach eine Einladung über die Netatmo Admin App für deine Wetterstation senden.
Meine Netatmo Adresse ist: office AT weissboeck PUNKT info
Marc Bosshard
Hallo
Ich schaffe es nicht, das Zertifikat in "cacerts" einzufügen. Die Datei kann nicht gefunden werden. Wo muss ich das Zertifikat vorgängig abspeichern?
Bin nicht der Programmierprofi...
Danke für die kurze Antwort
Maximilian Weißböck
Unter Windows liegt die Datei im Verzeichnis, wo Java installiert wurde, z.B. unter "C:\Program Files\Java\jre1.8.0_65\lib\security\cacerts"
Wenn du den Pfad angibst, darauf achten dass da leider Leerzeichen drinnen sind, also das Hochkomma " .... " rundherum nicht vergessen! Einfach mal mit dem Explorer suchen und dann den Pfad kopieren.
Marc Bosshard
super danke. das habe ich nun geschafft. Dafür ein anderes Problem:
Nun zeigt es in der Visualisierung immer "0" an. Kann das damit zusammenhängen, dass ich nicht im selben Netzwerk programmiere wie der Miniserver ist?
Zudem kann ich Java nicht Standalone laufen lassen: "unable to access jarfile netatmo.jar" Was kann da das Problem sein?
Wo muss Java selbständig laufen? Muss der PC oder Server immer laufen?
Sorry für die vielen Fragen...
Maximilian Weißböck
Ja, du musst im selben Netz sein. Und schau zuerst in der Miniserver Konsole ob du die Daten überhaupt bekommst, bevor du in der GUI schaust - du musst ja auch die Befehlserkennung auf deine Namen anpassen.
"unable to access ..." - Problem wie vorher, du musst den Pfad zum jar File richtig setzen oder halt in dem Verzeichnis starten, wo sich das jar File befindet. Und ja, natürlich muss der Rechner und das Programm immer laufen.
Marc Bosshard
besten Dank nochmals, Dann kann ich es leider eigentlich vergessen, da ich keinen Server betreibe und den PC nicht extra für das immer laufen lassen möchte.
Schade...
Maximilian Weißböck
Nimmst du dir einen Raspberry Pi, der kostet fast nix, ist winzig klein und braucht ganz wenig Strom. Jemand aus dem Forum hat es schon am Raspberry Pi laufen und kann dir sicher helfen.
Marc Bosshard
schaue ich mir gerne mal an
Besten Dank nochmals für die super unterstützung
Martin Steiner
Hallo zusammen,
in Kürze erhalte ich auch meine Netatmo und wollte schonmal alles vorbereiten und die tollen Tips hier umsetzen. An der Stelle wo das Zertifikat heruntergeladen werden soll und abgespeichert werden soll scheitere ich momentan. Ich starte wie beschrieben unter Windows 10 x64 den Internet Explorer als Admin und lade die Seite: https://api.netatmo.net/
Es kommt wie beschrieben die Fehlermeldung: "Die Webseite wurde nicht gefunden". Habe jetzt alles mögliche versucht, um an das Zertifikat zu kommen... rechte Maustate, Quellcode anzeigen oder über Einstellungen, Internetoptionen, Inhalte, Zertifikate... komme aber nicht zum Ziel. Bin ich einfach zu früh dran, weil ich noch keine Netatmo Software installiert habe?
Folgende Browser habe ich ausprobiert: Mozilla Firefox (v. 43.0.4), Internet Explorer 11, Microsoft Edge.
Oder gibt es noch einen anderen Workaround? Kann die Zertifikatedatei ggf. hier auch von jmd. hochgeladen werden? Oder ist es möglich an dieser Stelle eine noch detailliertere Beschreibung zu erhalten, für die gängigsten Browser?
Danke für Eure Unterstützung...
Maximilian Weißböck
Also mit Firefox geht das so:
Martin Steiner
Max - Super! Das hat geholfen... konnte nun via Firefox mit dieser Beschreibung das Zertifikat abspeichern...
Herzlichen Dank!!!
Marc Bosshard
Bei mir hats mit Google Chrom funktioniert. Ähnlich wie Max es mit Firefox erklärt hat...
Martin Steiner
Danke Marc... konnte nun erfolgreich das Zertifikat speichern...
Günther Wieser
Hallo!
Zuerst mal Danke dafür, dass es dieses Programm gibt! Läuft seit Monaten verlässlich bei uns, hervorragend!
Eine Frage habe ich allerdings zum Thema Rain Gauge - seh ich das richtig dass die Netatmo API hier nur ganze Millimeter liefert, und daher 0,8mm/h (wie es z.Bsp. in der Netatmo-App angezeigt wird) als 0mm/h übertragen werden?
Maximilian Weißböck
Muss ich mir bei Gelegenheit mal ansehen...
Reto
Hallo Netatmo und Loxone Spezialsiten
Ich wollte heute mal die Netatmo Wetterstation per Beschreibung oben integrieren. Das schien auch zu klappen. Aber ich bekomme sehr viele rote Zeilen in der Ausgabe mit falschen werten Das sind alles Warnungen.
Nach dem Start sieht es so aus:
Hello Miniserver, this is Netatmo4Loxone version 1.0 calling you at address 192.168.1.250:7474
Aug 31, 2016 4:17:44 PM n4l.netatmo.NetatmoDataExtractor setStringValue
WARNUNG: No value found for Winkel.Indoor.pressure_trend in jsonObject:{"date_min_temp":1472637611,"time_utc":1472652897,"date_max_temp":1472636223,"Temperature":24.8,"Noise":39,"min_temp":23.1,"temp_trend":"down","Humidity":70,"CO2":387,"AbsolutePressure":954.2,"max_temp":27.4,"Pressure":1018.3}
Will set value 'pressure_trend' instead - this will trigger another warning if this value is read
Aug 31, 2016 4:17:44 PM n4l.netatmo.NetatmoDataExtractor setStringValue
WARNUNG: No value found for Winkel.Außenmodul.temp_trend in jsonObject:{"date_min_temp":1472641360,"time_utc":1472646460,"date_max_temp":1472634317,"Temperature":25.2,"min_temp":23.7,"Humidity":60,"max_temp":27.6}
Will set value 'temp_trend' instead - this will trigger another warning if this value is read
This are your Stations and their Modules
Aug 31, 2016 4:17:44 PM n4l.model.Module getValueForName
WARNUNG: No mapping found for Winkel.Indoor.pressure_trend, will return -999 instead - this shall be interpreted as an illegal value
Aug 31, 2016 4:17:44 PM n4l.model.Module getValueForName
WARNUNG: No mapping found for Winkel.Außenmodul.temp_trend, will return -999 instead - this shall be interpreted as an illegal value
Station [name=Winkel, id=70:ee:50:1d:f4:5c]
Module [station=Winkel, name=Indoor, id=70:ee:50:1d:f4:5c, type=NAMain]
Indoor.AbsolutePressure=954
Indoor.CO2=387
Indoor.Humidity=70
Indoor.Noise=39
Indoor.Pressure=1018
Indoor.Temperature=24.8
Indoor.date_max_temp=241875423
Indoor.date_max_temp_tod=41823
Indoor.date_max_temp_tod_nmbr=11.37
Indoor.date_min_temp=241876811
Indoor.date_min_temp_tod=43211
Indoor.date_min_temp_tod_nmbr=12.0
Indoor.max_temp=27.4
Indoor.min_temp=23.1
Indoor.pressure_trend=-999
Indoor.temp_trend=0
Indoor.time_utc=241892097
Indoor.time_utc_tod=58497
Indoor.time_utc_tod_nmbr=16.14
Indoor.wifi_status=3
Indoor.data_up_to_date=1
Module [station=Winkel, name=Außenmodul, id=02:00:00:1e:2c:c0, type=NAModule1]
Außenmodul.Humidity=60
Außenmodul.Temperature=25.2
Außenmodul.battery_percent=100
Außenmodul.battery_vp=4
Außenmodul.date_max_temp=241873517
Außenmodul.date_max_temp_tod=39917
Außenmodul.date_max_temp_tod_nmbr=11.05
Außenmodul.date_min_temp=241880560
Außenmodul.date_min_temp_tod=46960
Außenmodul.date_min_temp_tod_nmbr=13.02
Außenmodul.last_message=241885718
Außenmodul.last_message_tod=52118
Außenmodul.last_message_tod_nmbr=14.28
Außenmodul.last_seen=241885660
Außenmodul.last_seen_tod=52063
Außenmodul.last_seen_tod_nmbr=14.27
Außenmodul.max_temp=27.6
Außenmodul.min_temp=23.7
Außenmodul.rf_status=0
Außenmodul.temp_trend=-999
Außenmodul.time_utc=241885660
Außenmodul.time_utc_tod=52060
Außenmodul.time_utc_tod_nmbr=14.27
Außenmodul.data_up_to_date=0
Module [station=Winkel, name=Windmesser, id=06:00:00:01:10:6e, type=NAModule2]
Windmesser.GustAngle=90
Windmesser.GustStrength=1
Windmesser.WindAngle=-1
Windmesser.WindStrength=0
Windmesser.battery_percent=100
Windmesser.battery_vp=4
Windmesser.date_max_wind_str=241875941
Windmesser.date_max_wind_str_tod=42341
Windmesser.date_max_wind_str_tod_nmbr=11.45
Windmesser.last_message=241892109
Windmesser.last_message_tod=58509
Windmesser.last_message_tod_nmbr=16.15
Windmesser.last_seen=241892109
Windmesser.last_seen_tod=58509
Windmesser.last_seen_tod_nmbr=16.15
Windmesser.max_wind_angle=63
Windmesser.max_wind_str=6
Windmesser.rf_status=2
Windmesser.time_utc=241892096
Windmesser.time_utc_tod=58496
Windmesser.time_utc_tod_nmbr=16.14
Windmesser.data_up_to_date=1
Module [station=Winkel, name=Regenmesser, id=05:00:00:02:85:50, type=NAModule3]
Regenmesser.Rain=0.0
Regenmesser.battery_percent=100
Regenmesser.battery_vp=4
Regenmesser.last_message=241892109
Regenmesser.last_message_tod=58509
Regenmesser.last_message_tod_nmbr=16.15
Regenmesser.last_seen=241892109
Regenmesser.last_seen_tod=58509
Regenmesser.last_seen_tod_nmbr=16.15
Regenmesser.rf_status=2
Regenmesser.sum_rain_1=0.0
Regenmesser.sum_rain_24=0.202
Regenmesser.time_utc=241892096
Regenmesser.time_utc_tod=58496
Regenmesser.time_utc_tod_nmbr=16.14
Regenmesser.data_up_to_date=1
UDP Data sent to Miniserver 192.168.1.250:7474 at 2016.08.31 16:17:44
Aug 31, 2016 4:17:44 PM n4l.model.Module getValueForName
WARNUNG: No mapping found for Winkel.Indoor.pressure_trend, will return -999 instead - this shall be interpreted as an illegal value
Indoor.AbsolutePressure=954 Indoor.CO2=387 Indoor.Humidity=70 Indoor.Noise=39 Indoor.Pressure=1018 Indoor.Temperature=24.8 Indoor.date_max_temp=241875423 Indoor.date_max_temp_tod=41823 Indoor.date_max_temp_tod_nmbr=11.37 Indoor.date_min_temp=241876811 Indoor.date_min_temp_tod=43211 Indoor.date_min_temp_tod_nmbr=12.0 Indoor.max_temp=27.4 Indoor.min_temp=23.1 Indoor.pressure_trend=-999 Indoor.temp_trend=0 Indoor.time_utc=241892097 Indoor.time_utc_tod=58497 Indoor.time_utc_tod_nmbr=16.14 Indoor.wifi_status=3 Indoor.data_up_to_date=1
Aug 31, 2016 4:17:44 PM n4l.model.Module getValueForName
WARNUNG: No mapping found for Winkel.Außenmodul.temp_trend, will return -999 instead - this shall be interpreted as an illegal value
Außenmodul.Humidity=60 Außenmodul.Temperature=25.2 Außenmodul.battery_percent=100 Außenmodul.battery_vp=4 Außenmodul.date_max_temp=241873517 Außenmodul.date_max_temp_tod=39917 Außenmodul.date_max_temp_tod_nmbr=11.05 Außenmodul.date_min_temp=241880560 Außenmodul.date_min_temp_tod=46960 Außenmodul.date_min_temp_tod_nmbr=13.02 Außenmodul.last_message=241885718 Außenmodul.last_message_tod=52118 Außenmodul.last_message_tod_nmbr=14.28 Außenmodul.last_seen=241885660 Außenmodul.last_seen_tod=52060 Außenmodul.last_seen_tod_nmbr=14.27 Außenmodul.max_temp=27.6 Außenmodul.min_temp=23.7 Außenmodul.rf_status=0 Außenmodul.temp_trend=-999 Außenmodul.time_utc=241885660 Außenmodul.time_utc_tod=52060 Außenmodul.time_utc_tod_nmbr=14.27 Außenmodul.data_up_to_date=0
Windmesser.GustAngle=90 Windmesser.GustStrength=1 Windmesser.WindAngle=-1 Windmesser.WindStrength=0 Windmesser.battery_percent=100 Windmesser.battery_vp=4 Windmesser.date_max_wind_str=241875941 Windmesser.date_max_wind_str_tod=42341 Windmesser.date_max_wind_str_tod_nmbr=11.45 Windmesser.last_message=241892109 Windmesser.last_message_tod=58509 Windmesser.last_message_tod_nmbr=16.15 Windmesser.last_seen=241892109 Windmesser.last_seen_tod=58509 Windmesser.last_seen_tod_nmbr=16.15 Windmesser.max_wind_angle=63 Windmesser.max_wind_str=6 Windmesser.rf_status=2 Windmesser.time_utc=241892096 Windmesser.time_utc_tod=58496 Windmesser.time_utc_tod_nmbr=16.14 Windmesser.data_up_to_date=1
Regenmesser.Rain=0.0 Regenmesser.battery_percent=100 Regenmesser.battery_vp=4 Regenmesser.last_message=241892109 Regenmesser.last_message_tod=58509 Regenmesser.last_message_tod_nmbr=16.15 Regenmesser.last_seen=241892109 Regenmesser.last_seen_tod=58509 Regenmesser.last_seen_tod_nmbr=16.15 Regenmesser.rf_status=2 Regenmesser.sum_rain_1=0.0 Regenmesser.sum_rain_24=0.202 Regenmesser.time_utc=241892096 Regenmesser.time_utc_tod=58496 Regenmesser.time_utc_tod_nmbr=16.14 Regenmesser.data_up_to_date=1
Ich sehe hier einige sehr plausible Daten von Sensoren. Also glaube ich eigentlich, dass es funktioniert.
Später dann, also während ich das geschrieben habe, bekomme ich nur noch Warnungen. Die sehen dann in etwa so aus:
WARNUNG: No value found for Winkel.Indoor.pressure_trend in jsonObject:{"date_min_temp":1472637611,"time_utc":1472653197,"date_max_temp":1472636223,"Temperature":25.4,"Noise":36,"min_temp":23.1,"temp_trend":"down","Humidity":69,"CO2":396,"AbsolutePressure":954.2,"max_temp":27.4,"Pressure":1018.3}
Will set value 'pressure_trend' instead - this will trigger another warning if this value is read
Aug 31, 2016 4:21:48 PM n4l.netatmo.NetatmoDataExtractor setStringValue
Sehe hier nicht so wirklich durch.
Gruss
Reto
Maximilian Weißböck
Kann ich momentan nicht sagen, muss ich mir mal ansehen, wird aber etwas dauern...
Reto
Hallo Max,
War gerade noch am Loxone integrieren. Fast alles drin. Ich bin mir nicht sicher. Es könnte sein, dass der Sensor der da ROT kam, nicht online war, oder ausser Reichweite. Im Moment scheinen alle Werte anzukommen. Aber vielleicht wäre Deine Analyse wertvoll. Denn der Rest hier, also die Anleitung ist perfekt. Es klappte bestens. Bis auf die Unsicherheit mit den Fehlern.
Gruss
Reto
Reto
Ach, ich wollte Dir noch danken für die tolle Arbeit... ging im Trubel mit Daten hin und her ganz unten. Super Sache diese Anleitung hier. !!!!
Maximilian Weißböck
Danke, das freut mich
Zu deinem Problem, ich bin mir auch ziemlich sicher, dass die Messwerte nicht verfügbar waren - genau deshalb habe ich das mit den -999 Werten nämlich eingebaut, damit klar ist, dass die aktuell nicht da sind.
Reto
Hallo Max,
Ja, das wird so sein, denn es tritt nicht oft auf, aber man sieht dann halt nur noch die roten, die "schwarzen" sind nicht im Konsolen Fenster ersichtlich, wenn das Das File läuft. Ansonsten scheinen die Werte korrekt zu sein. UNd es scheint zu funktionieren. Die Netatmo Funkverbindung ist etwas wackelig. WIr haben hier einen Neubau, nach neustenm STand der Technik
sprich Minergie und Erdbebensicher...und Funk durch die Wände schier unmöglich. Ich musste 9 Ubiquiti Unifi Zellen setzen, damit wir überall WLAN zur Verfügung haben. Und die sind ja auch nicht von schlechten Eltern...
DECT das gleiche. 6 Zellen damit DECT überall funktioniert. (Ist eben eine Wohn und Geschäftshaus, da muss das Telefon schon funnktionieen).
Das platzieren der Sensoren wird mich also noch eine Weile beschäftigen. Die Station kam heute morgen an. Und inzwischen ist sie, dank Deiner Anleitung im Loxone drin. Ein paar Sensoren muss ich noch fertig machen. aber das meiste ist drin.
Gruss
Reto
Reto
Das Programm läuft nun im Standalone Mode auf einem virtuellen Rechner, der für solche Aufgaben konfiguriert ist, darauf laufen noch andere Programme (auslesen der Daten aus der "kleinen" Solaranlage 12V mit Batterie für ein Amateurfunk Relais), Unifi Controller für das Wlan etc...
Alle 2 MInuten werden die Werte an die Loxone geschickt. das funktioniert bestens. Bei Temperatur Minmum habe ich seltsame werte. meistens stimmen sie, aber plötzlich ist da wieder ein Wert drin der völlig falsch ist, beispielsweise 0°+ oder 7,2°....aber die tiefste Temperatur effektiv war um die 13°
Die Fehler bei der Übertragung sind weg. Muss in der Tat mit der Erreichbarkeit der Sensoren zusammenhängen. Alles in allem eine Super Sache und das gibt mir neue Sensoren, welche ich zum Schalten und programmieren verwenden kann, nebst der Wetterstation im Loxone App. Super Sache! Danke nochmals für die ausführliche Anleitung. Hat bestens funtkioniert.
Gruss
Reto
Reto
Falls jemand noch Interesse hat den Taupunkt/Frostpunkt zu berechnen kann zwei Module "Formel" mit 2 Eingängen (Ai1=Temperatur, Ai2= Luftfeuchtigkeit) einbauen. Am Ausgeang steht dann der Taupunkt/Frostpunkt an. Die Formel lautet dann:
Taupunkt:
237.3*LOG(I2/100*(6.1078*10^(7.5*I1/(237.3+I1)))/6.1078)/(7.5-LOG(I2/100*(6.1078*10^(7.5*I1/(237.3+I1))))/6.1078)
Frostpunkt:
265.5*LOG(I2/100*(6.1078*10^(9.5*I1/(265.5+I1)))/6.1078)/(9.5-LOG(I2/100*(6.1078*10^(9.5*I1/(265.5+I1))))/6.1078)
Danach mit dem Modul "Status" mit 2 Eingängen (Ai1=Taupunkt, Ai2= Frostpunkt) auswerten. Bild angefügt.
Reto
Und hier die Formel für den Windchill:
13.12+0.6215*I1-11.37*(I2^0.16)+0.3965*I1*(I2^0.16)
Gleich integrieren wie oben.(Formel Modul: Ai1=Temperatur, Ai2=Windgeschwindigkeit)
Und wer möchte noch den Hitzeindex:
Formel:
-8.784695+1.61139411*I1+2.338549*I2+(-0.14611605)*I1*I2+(-1.2308094*10^-2)*I1^2+(-1.6424828*10^-2)*I2^2+2.211732*10^-3*I1^2*I2+7.2546*10^-4*I1*I2^2+(-3.582*10^-6)*I1^2*I2^2+0.5
Chris
Ich hab keine Ahnung ob du es schon rausgefunden hast Maximilian Weißböck, aber wenn du dich in netatmo einloggst und auf "Meine Produkte" gehst siehst du rechts oben das Einstellungen Symbol. Da drauf geklickt und ein Stück nach unten gescrollt kommen die Einlademöglichkeiten (E-Mail, facebook, .....).
Thomas Marck
Kann es sein, dass es Befehle wie
nicht mehr gibt / nicht mehr übermittelt werden?
KubaBuba
hello,
has anyone tried NodeRed integration? It should be way more easier to send the data from any netatmo device in the map over UDP towards Loxone?
thx
Chris Topf
Hallo, auf die Gefahr hin, dass ich es in der Anleitung oder in den Kommentaren überlesen habe... Kann man die Netatmo Wetterstation so ins Loxone einbinden, dass man diese im lokalen Netzwerk ohne Internet und ohne "Netatmo Cloud" betreiben kann?
KubaBuba Sounds great to use Node-Red. In case I decide to take Netatmo I will consider to use and check this...