Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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


Status
colourYellow
titlewichtiger 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)

...

Erweitern
titleHier klicken um das Change Log anzusehen...

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

...

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 (Zwinkern) (Zwinkern)). 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-modulRegen-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><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

xx

<v> %

Batterieladung

 


<Modulname>.battery_vp=\v

3

 


x

x

xx

<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

xx

<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

xx

<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

xx

<v.2>

Uhrzeit letzte Nachricht als Zahl *)

nicht benutz in MS Demo Config

<Modulname>.last_seen=\v

219265538 


x

x

xx

<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

xx

<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

xx

<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

xx

<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

xx

<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

xx

<v.t>

Uhrzeit der letzten Messung

 


<Modulname>.time_utc_tod_nmbr=\v

13.07

x

x

x

xx

<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

xx

<v.x> für Status

Aktualität der Daten: 0=nicht aktuell (älter als 15 Minuten), 1=aktuell

 


<Modulname>.Rain=\v0.0    



x<v> mmaktuelle Regenmenge in mm 
<Modulname>.sum_rain_1=\v1.0    



x<v> mmRegenmenge der letzten Stunde 
<Modulname>.sum_rain_24=\v3.4    



x<v> mmRegenmenge der letzten 24 Stunden 
<Modulname>.GustAngle=\v95   


x 
<v> °Himmelsrichtung in Grad aus der die Böe kamZur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo
<Modulname>.GustStrength=\v12   


x 
<v> km/hStärke der Böe 
<Modulname>.WindAngle=\v106   


x 
<v> °Himmelsrichtung in Grad aus der der Wind kommtZur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo
<Modulname>.WindStrength=\v5   


x  

Windstärke 
<Modulname>.date_max_wind_str=\v221310738   


x 
<v.u>Datum und Uhrzeit der Tages-Windspitze 
<Modulname>.date_max_wind_str_tod=\v40338   


x 
<v.t>Uhrzeit der Tages-Windspitze 
<Modulname>.date_max_wind_str_tod_nmbr=\v11.12   


x 
<v.2>Uhrzeit der Tages-Windspitze als Zahl *) 
<Modulname>.max_wind_angle=\v111   


x 
<v> °Himmelsrichtung der Tages-WindspitzeZur Umrechnung in Himmelsrichtung siehe Statusbaustein in Demo
<Modulname>.max_wind_str=\v17   


x 
<v> km/hStärke der Tages-Windspitze 

*) Statusbaustein stellt Zeit falsch dar, deshalb wird eine Zahl verwendet

 


Schritt für Schritt Anleitung

...

  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.

 


Erweitern
titleNetatmo Zertifikate installieren - ab V 2.0 NICHT mehr erforderlich...

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.

...

  • 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

 

...