Netatmo in Loxone einbinden

obsolet - wird nicht mehr gewartet, es gibt ein Loxberry Plugin für Netatmo: https://wiki.loxberry.de/plugins/netatmo_weather/start?s%5B%5D=netatmo



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

Version 2.0

  • Die Verwendung des Netatmo Zertifikats ist nun optional (über Config Parameter steuerbar, default ist kein Zertifikat verwenden)

Version 1.0.1

  • Programm beendet sich nicht bei Fehlern (außer Authentifizierung), sonder macht retries alle 30 Sekunden.

Version 1.0

  • Unterstützung für Wind- und Regen Module - Danke an Christian der mir Zugang zu den Modulen gegeben hat.

  • Unterstützung beliebig vieler Stationen - also Stationen am Hauptwohnsitz, am Wochenendhaus usw.

  • Ausgelagerte Konfigurationsdatei - alle Config Daten sind nun in der Datei Configuration.properties

  • Stabilisierung der Netzwerk Verbindung, Programm macht retries wenn Netzwerk mal weg ist.

Version 0.7.1

  • Ausgabe der Versionsnummer beim Starten

Version 0.7

  • Ab nun wird dass mit dem Login erstellte Access Token so lange verwendet, bis es abgelaufen ist, erst dann wird ein neuer Login und damit ein neues Access Token gemacht. Dies ist das von Netatmo gewünschte Verhalten und spart jedenfalls Ressourcen ein - es werden nicht sinnlos Access Tokens erzeugt, die nicht verwendet werden. Könnte auch ein Netzwerkproblem eines Anwenders beheben, dessen Ursache aber nicht wirklich geklärt ist.

Version 0.6

  • weiteres Refactoring, besseres Werte Handling

  • Umrechnen der UTC Zeiten in Lokalzeit für Miniserver (MS Zeit beginnt ab 1.1.2009 und nicht 1.1.1970)

  • Workarounds für Miniserver Probleme

    • MS kann keine Texte über UDP empfangen

    • Status Baustein stellt Uhrzeit als Datum mit Millisekunde dar, deshalb wird die Uhrzeit als Zahl mit 2 Nachkommastellen gesendet - Darstellung: hh.mm

  • Außerdem mit dabei nun eine Demo Implementierung für den Miniserver

Version 0.5

  • Kompletter Re-Write mit neuer Struktur und neuer dynamischer Datenspeicherung über HashMaps

 Version 0.1



Downlods für schnell entschlossene

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

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.

  1. 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:

    1. es muss das Passwort für diesen neuen Developer Account in dem Programm, das wir bauen, gespeichert werden

    2. 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

  2. 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!) 

  3. 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

  1. 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)

  2. 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.

  3. 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.



Netatmo API Zertifikat in Keystore importieren

Ab 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.

  1. Das Zertifikat von der Seite https://api.netatmo.net laden und abspeichern (je nach Browser unterscheidet sich das Vorgehen etwas). 

    1. die Seite https://api.netatmo.net mit einem Browser öffnen - es wird ein Error Code angezeigt, das ist ok

    2. das Zertifikat im Browser anzeigen lassen und dann abspeichern, der Name der Zertifikats-Datei sollte api.netatmo.net.crt sein.

  2. mit dem Programm keytool das Zertifikat in den cacerts Keystore importieren. Das Programm keytool befindet sich im java/bin Verzeichnis, für Windows in C:\Program Files\Java\jdk1.8.0_65\bin und für OS X in /System/Library/Frameworks/JavaVM.framework/Home/bin/  

    1. die Keystore Datei ist die Datei "C:\Program Files\Java\jre1.8.0_65\lib\security\cacerts" (bzw. /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts unter OS X) und ist schreibgeschützt, deshalb zuerst die Eigenschaften/Sicherheit so ändern, das man darauf Schreibrechte hat

    2. dann für Windows folgendes Kommando ausführen:
      "C:\Program Files\Java\jre1.8.0_65\bin\keytool" -import -alias netatmo -file api.netatmo.net.crt -keystore "C:\Program Files\Java\jre1.8.0_65\lib\security\cacerts"
      für OS X ist es entsprechend: 
      sudo keytool -import -alias netatmo -file api.netatmo.net.crt -keystore /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts

    3. es wird nach dem Passwort gefragt, das Default Passwort des Keystore ist: changeit - dieses eingeben

    4. die Frage, ob das Zertifikat hinzugefügt werden soll, mit j beantworten

Damit ist das Zertifikat importiert. Das ist wichtig, da das Java Programm sonst einen Fehler wirft, dass der Verbindung nicht vertraut wird.

Eclipse Projekt importieren, anpassen und laufen lassen

Projekt Importieren

  1. Die Datei Netatmo4Loxone.zip herunterladen

  2. Die Datei in Eclipse importieren, dazu wie folgt vorgehen:

    1. File > Import... > General > Existing Projects into Workspace > Next >

    2. Select archive file auswählen mit Browse die heruntergeladene zip Datei suchen und auswählen

    3. es wird das Project angezeigt und ausgewählt, Finish klicken

    4. das Projekt wird nach ein paar Sekunden links im Package Explorer angezeigt

Projekt anpassen und laufen lassen

  1. 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.

    1. die Datei öffnen, sie ist im src Verzeichnis

    2. die Miniserver Adressdaten und Netatmo Zugangsdaten mit deneigenen Werte ersetzen - den Rest bei bedarf anpassen

    3. die Änderungen nochmals kontrollieren und speichern

  2. Die Einstellungen für die Zertifikatsdatei anpassen NICHT mehr erforderlich ab V 2.0 wenn keine Zertifikate verwendet werden!

    1. Menü Run > Run Configurations... und dort den Tab Arguments öffnen

    2. 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

    3. die Änderungen speichern (Apply) und das Configuration Fenster schließen

  3. Nun über das Menü Run > Run as > Java Application das Programm starten (der Projektname, also Netatmo4Loxone, muss selektiert sein)

    1. 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.

    2. 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

  1. File > Export... > Java > Runnable JAR file > Next > 

    1. als Launch configuration Netatmo4Loxone verwenden

    2. mit den Standardeinstellungen exportieren, als Dateiname z.B. netatmo.jar verwenden

  2. Eine Command Shell dort öffnen, wohin man die netatmo.jar Datei exportiert hat

  3. Das Programm mit dem folgendem Befehl aufrufen: 

    1. für OS X: java -Djavax.net.ssl.trustStore=/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts -jar netatmo.jar

    2. 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