Ab dem 01.12.2016 stellt netatmo serverseitig die API um und schaltet damit mehrere genutzte API-Calls, welche wir für die Integration in das Fibaro HomeCenter 2 genutzt haben, ab. Hier erfahrt Ihr wie es weitergeht...
...und wie Ihr die neuen API-Calls nutzen könnt. Und zwar haben wir für euch das bekannte Skript zur Integration des netatmo Regensensor, sowie des Windsensors angepasst, stellen es euch in diesem kleinen Artikel vor und bieten es euch zum Download an. Wir haben auch zwei, drei kleine Veränderungen vorgenommen.
[alert variation="alert-info" dismiss="dismiss"]ACHTUNG! Das alte Skript funktioniert ab dem 01.12.2016 nicht mehr.[/alert]Neue Funktionen
Im Zuge der Aktualisierung des Skriptes haben wir auch ein paar neue Funktionen implementiert:
- Anpassung an die neue netatmo API
- Benötigte Variablen werden durch das netatmo-Skript automatisch erstellt (sofern diese nicht bereits angelegt sind)
- Laufzeitfehler (Skript bricht nach einer undefinierten Zeit ab) sollten nicht mehr auftreten
- Skript in Deutsch & Englisch verfügbar
Vorzunehmende Anpassungen
Nachdem Ihr das gedownloadete Skript in eine neue LUA-Szene auf dem HomeCenter 2 hineinkopiert habt, müssen noch einige Anpassungen an dem netatmo Skript vorgenommen werden. Dies betrifft zum Einen die Angaben zu eurem netatmo-Login und zum anderen zu kleineren Angaben zur Refresh-Time, Anzahl batteriebetriebener Module und dem Debug.
1 2 3 4 |
local client_id = '541f54c01e77XXXXX' local client_secret = '0fzlY5iXXXXXX' local username = 'mail@mail.com' local password = 'siio.de/siio.com' |
Hier werden, wie bereits erwähnt, die Anmeldedaten für die netatmo-Seite (lokale Variable username und password), sowie die client id und die client secret von der erstellten App benötigt. Diese findet Ihr unter den erweiterten Einstellung und dort unter dem TECHNICAL PARAMETERS der App:
1 2 3 |
local max_counter = 6 local refresh = 300 local debug = 1 |
Leider gibt es derzeit noch nicht die Möglichkeit diesen Wert automatisch zu ermitteln.
Die anderen beiden lokalen Variablen können unverändert bleiben. Solltet Ihr den Debug ausschalten wollen, dann muss der Wert von der Variablen debug auf 0 gesetzt werden. Die Aktualisierungsintervalle sollten bei 300 Sekunden (5 min) belassen werden.
Download der netatmo Skripte
Die LUA-Skripte könnt Ihr euch nun hier herunterladen:
[icons icon="icon-folder-open" color="#dd3333" size="18"] netatmo v2.0 - Deutsch/Englisch - DOWNLOAD ZIP
In der ZIP-Datei sind Skripte in den beiden oben genannten Sprachen verfügbar. Nachdem Ihr die Zip-Datei entpackt habt, könnt Ihr die Datei in einem gewöhnlichen Texteditor öffnen und den Inhalt in eine neue Szene auf eurem Fibaro HomeCenter 2 kopieren.
@boomx: einfach mal danke!
Kein Problem, gerne doch :)
Just in Time!
Sehr schön!
Hi,
eher hab ich es nicht geschafft. Zwischenzeitlich hatte ich ein paar "persönliche" Probleme mit der neuen API ;)
Gruß
Hallo boomx,
Script ausgetauscht und es funktioniert.
Vielen Dank :)
Gruss
Carsten
Vielen Dank :-)
Hallo boomx,
danke erstmal auch von mir für deine Arbeit!
Kann es sein das die API nicht bei jedem geändert werden muss? Bei mir funktioniert die Temperaturabfrage immer noch!?
Und wie komme ich in der Netatmo App in die erweiterten Einstellungen? Ich komme nur in Einstellungen und das wars.
Danke schon mal.
Hi,
dann hat netatmo die API-Calls nicht deaktiviert, sondern supportet diese nicht mehr. Ergo kann das jederzeit nachgeholt werden und dann funktioniert es nicht mehr, wenn das Skript noch nicht umgestellt wurde.
Welche erweiterten Einstellungen meinst du?
Gruß
Danke für deine Antwort! Ich meinte die Erweiterten Einstellungen um die client id raus zu kriegen. habe es aber zwischenzeitlich hier gefunden. (https://dev.netatmo.com)
Also ich habe jetzt dein Skript kopiert eingefügt und die im Beitrag beschriebenen Änderungen vorgenommen.
Irgendwie erkennt das Skript scheinbar nicht mein Außenmodul? Ich habe nur das Hauptmodul Innen (mit Kabel) und ein Außenmodul. Die Werte vom Außenmodul werden nicht im HC2 angezeigt.
Hier der Debug:
[DEBUG] 19:48:14: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 19:48:14: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 19:48:14: oAuth 2.0 durchgeführt.
[DEBUG] 19:48:15: netatmo Sensoren werden gesucht...
[DEBUG] 19:48:15: Mainstation: 70:ee:50:1b:2a:10 erkannt.
[DEBUG] 19:48:31: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 19:48:31: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 19:53:14: oAuth 2.0 durchgeführt.
[DEBUG] 19:53:15: netatmo Sensoren werden gesucht...
[DEBUG] 19:53:15: Mainstation: 70:ee:50:1b:2a:10 erkannt.
[DEBUG] 19:58:14: oAuth 2.0 durchgeführt.
[DEBUG] 19:58:15: netatmo Sensoren werden gesucht...
[DEBUG] 19:58:15: Mainstation: 70:ee:50:1b:2a:10 erkannt.
Hi,
das hat einen ganz einfachen Grund:
Mit dem Skript frage ich die Außenmodule nicht ab... Wie im Seitentitel beschrieben, ist das Skript nur für den Wind- & Regenmesser von netatmo ;) Das Außenmodul wird ja normal über das Plugin abgefragt...
Gruß
A OK! aber es zeigt mir ja nicht mehr die Außentemperatur im Homescreen an!?
Das läuft dann also über das alte Skript?
Doch sollte das HC2 über das netatmo-Plugin machen (weshalb dies im Skript nicht berücksichtigt ist). Funktioniert schon seit circa 1 Jahr ohne Probleme :) Das alte Skript fragt auch nur Wind- & Regenmesser ab.
Super Danke! Da war ich wohl etwas aufm Schlauch...
Hi boomx,
danke für die Überarbeitung, jedoch kommt immer mal wieder, wie auch schon bei der alten Lösung folgender Fehler:
[DEBUG] 20:19:57: oAuth 2.0 durchgeführt.
[DEBUG] 20:19:57: netatmo Sensoren werden gesucht...
[DEBUG] 20:19:57: Mainstation: 70:ee:50:14:3b:76 erkannt.
[DEBUG] 20:20:00: Regensensor 05:00:00:01:81:12 erkannt.
[DEBUG] 20:20:03: Windmesser 06:00:00:00:41:52 erkannt.
[DEBUG] 20:20:08: Regenmenge: 0 mm2 (day)
[DEBUG] 20:20:08: Windgeschwindigkeit: 1 km/h
[DEBUG] 20:20:08: Regenmenge: 0 mm2 (hour)
[DEBUG] 20:20:08: Regenmenge: 0.303 mm2 (week)
[DEBUG] 20:20:08: Regenmenge: 35.754 mm2 (month)
[DEBUG] 20:24:57: oAuth 2.0 durchgeführt.
[DEBUG] 20:24:57: netatmo Sensoren werden gesucht...
[DEBUG] 20:24:57: Mainstation: 70:ee:50:14:3b:76 erkannt.
[DEBUG] 20:25:00: Regensensor 05:00:00:01:81:12 erkannt.
[DEBUG] 20:25:03: Windmesser 06:00:00:00:41:52 erkannt.
[DEBUG] 20:25:08: [1;31m2016-12-03 20:25:08.384797 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
[DEBUG] 20:25:08: <
Kannst du mir weiterhelfen?
Viele Grüße
Hi,
muss ich mir nochmal anschauen. Bei mir trat dieser Fehler im Test nicht auf.
Gruß
Wäre super
Danke schon mal!
LG
Habe das Skript jetzt seit 3 Tagen laufen und kann die Fehlermeldung nicht nachvollziehen.
Gruß
Danke fürs probieren, ich hab das Script eben auch nochmal neu gestartet, mal abwarten.
LG
Hi boomx,
leider habe ich nach wie vor Abstürze mit dem Script.
Der Debug-Bereich sieht folgendermaßen aus:
[DEBUG] 18:25:53: oAuth 2.0 durchgeführt.
[DEBUG] 18:25:53: netatmo Sensoren werden gesucht...
[DEBUG] 18:25:53: Mainstation: 70:ee:50:14:3b:76 erkannt.
[DEBUG] 18:25:56: Regensensor 05:00:00:01:81:12 erkannt.
[DEBUG] 18:25:59: Windmesser 06:00:00:00:41:52 erkannt.
[DEBUG] 18:26:04: [1;31m2017-01-02 18:26:04.481887 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
[DEBUG] 18:26:04: <
[DEBUG] 18:29:03: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 18:29:03: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 18:39:10: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 18:39:10: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 18:49:16: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 18:49:16: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 19:29:43: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 19:29:43: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 19:49:53: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 19:49:53: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 19:59:59: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 19:59:59: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 21:29:47: netatmo v.2.0 (NEW API) gestartet...
Muss ich denn außer den oben genannten Parametern noch etwas anpassen?
LG
hey gpascal!
hatte das gleiche problem!
einfach szene löschen und neu erstellen hat bei mir geholfen :)
Hallo Zusammen,
bei mir kommt leider auch diese Fehlermeldung:
[DEBUG] 19:30:15: [1;31m2017-06-05 19:30:15.455794 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
[DEBUG] 19:30:15: <
oder:
[DEBUG] 18:04:12: [1;31m2017-06-07 18:04:12.996631 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
[DEBUG] 18:04:13: <
Bei max_counter=4 erkennt er keinen Regensensor.
Bei max_counter=6 kommt sofort eine andere Fehlermeldung.
Bei max_counter=5 läuft die Szene etwa 1 Tag bis die Fehlermeldung kommt.
Ich habe keinen Netatmo Windmesser.
Die Szene habe ich auch schon gelöscht und neu erstellt. Gleiches Problem...
LG
Grüß euch.
Erstmal Danke für das API, wirklich super Sache. Perfektioniert meine Markisensteuerung für den Fall von aufkommenden Windböen und Regen.
Die unexpected character Meldung hatte ich noch nie, dafür aber diese hier:
[DEBUG] 09:22:16: [1;31m2017-06-07 09:22:16.392976 [ fatal] LUA error: /opt/fibaro/scenes/39.lua:201: bad argument #1 to 'pairs' (table expected, got nil)
--------------------------------------------------------
function getSumRain(dauer, variable)
...
for k, v in pairs(data.body) do
...
--------------------------------------------------------
Vermutlich liefert die Abfrage für den Regensensor beim netatmo Webservice kein Ergebnis, weswegen NULL anstatt der Wertetabelle zurückkommt und die pairs Funktion fehlschlägt. Wie kann ich diesen Fehler abfangen und hat jemand eine Idee, warum es überhaupt zu dem NULL Wert kommt?
LG,
Martin
Hallo,
jetzt habe ich auch die Fehlermeldung wie mkj9vx:
[DEBUG] 23:36:28: [1;31m2017-06-30 23:36:28.098929 [ fatal] LUA error: /opt/fibaro/scenes/675.lua:186: bad argument #1 to 'pairs' (table expected, got nil)
Der Code ab Zeile 186 ist:
for k, v in pairs(data.body) do
for l, w in pairs(v.value) do
sum_rain = sum_rain + w[1]
end
end
https://www.siio.de/board/thema/netatmo-abfrage/
Bei mir gibt es das gleiche Problem - bis vor wenigen Tagen / Wochen lief alles mit der neuen API und dem neuen Script perfekt..
aber seit einigen Tagen / Wochen kommt immer Morgens dann besagter Fehler:
[DEBUG] 09:14:59: [1;31m2017-08-08 09:14:59.499239 [ fatal] LUA error: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [<] line:
[DEBUG] 09:14:59: <
[DEBUG] 09:15:10: [1;31m201
Wenn man das Script danach wieder startet, läuft es aber wieder (zumindest für 1-2 Tage)
Jmd eine Idee? Oder wie kann man hier eine bessere Fehlermeldung bringen? Oder zumindest vermeiden, daß das Script und die Szene dann nicht komplett abbricht und stehen bleibt, sondern einfach nur einen kontrollierten Fehler ausgibt und danach in der Loop weiter läuft?
https://www.siio.de/board/thema/netatmo-abfrage/
ja ok - aber das muss doch ein behebbares Problem sein? So wie ich das sehe, scheint es doch am Folgenden zu liegen (oder lieg ich falsch?):
Beim Verbindungsaufbau zu Netamo kommt eine unvorhergesehene Antwort (z.B. weil der Netamo Service nicht erreichbar ist - ein 404 oder 500er Fehler - oder Netamo liefert eine Fehlermeldung zurück etc etc). Die Antwort kommt ggf dann dadurch nicht als JSON und mit Sonderzeichen etc..
Dadurch hat das Fibaro / LUA json-decode Modul ein Problem und bekommt einen Fehler -> die Szene bleibt stehen..
Man müßte also vorab ggf einfach nur zuerst abfragen, ob die Antwort von Netamo OK ist (Status 200) - und wenn ok, ob es eine valide JSON Antwort ist, bevor man sie decodieren will..
Und im Problemfall eine gescheite Fehlermeldung ausgeben - damit man dann auch weiß, wo eigentlich das Problem sitzt.. - die Szene aber weiter laufen lassen (ggf die Fehler mitzählen)..
Leider bin ich kein LUA Experte - aber wäre das nicht ein richtiger Ansatz?
Gruß
So einfach ist das leider nicht ;) Zumal der Fehler bei mir nie aufgetreten ist...
Gruß
Die Beiträge hier sind zwar schon etwas älter, aber das Script ist natürlich nach wie vor sehr interessant. Ich hole den Beitrag daher mal wieder aus der Versenkung. Bei mir läuft das Script, erstellt alle Variablen und befüllt diese korrekt. Mein Problem: es läuft nach jedem Anlegen genau einmal. Möchte man es dann periodisch starten, um ein Update der Werte durchzuführen, macht es nichts mehr.
Da kommt nur noch im Debugging der Hinweis, dass die API gestartet wurde und die Werte alle 5 Minuten aktualisiert werden.
Hat jemand einen Tipp, was ich falsch gemacht habe?
Hallo missenberger.
Hast du zu deinem Problem vielleicht schon eine Lösung bekommen oder gefunden.
Ich habe genau das selbe Problem wie du.
Wenn ja bitte schreibe die Lösung hier rein.
Ich weiß, es ist schon länger her, aber leider funktioniert das bei mir genau so nicht wie damals bei dir.
Schöne Feiertage aus Tirol
Zunächst ein Beitrag zur Fehlermeldung
[DEBUG] XXX [ fatal] LUA error: /opt/fibaro/scenes/XX.lua:201: bad argument #1 to ‚pairs‘ (table expected, got nil),
welche auch bei mir nahezu täglich auftrat.
Ich denke, dass dies dann der Fall ist, wenn ein Satz Batterien wenig Spannung hat (z.B. schwache Batterien eines Außenmodules bei niedrigen Temperaturen). Die schwache Verbindung scheint erwartete Werte nicht richtig oder vollständig zu übertragen, was im LUA-Skript zum Abbruch der Szene führt. Bei neu eingelegten Batterien tritt der Fehler bei mir seit mehreren Tagen nicht mehr auf. Es wäre natürlich toll, wenn dieser Umstand durch das LUA-Skript abgefangen werden könnte.
Ein größeres Problem scheint aber seit der Fibaro Version 4.520 (auch bereits bei der BETA 4.512) aufzutreten. Dort gibt es leider in jedem Fall einen misslungenen "handover" zum Netatmoserver, der jede weitere Abfrage von Werten unterbindet. Deshalb benutze ich wieder 4.510, hoffe aber natürlich dass sich der Autor des LUA-Skriptes (boomx) oder ein anderer LUA-Experte sich des Themas annehmen könnte.
Falls ich falsch liege und der Fehler nur bei mir auftritt, bitte ich um Mitteilung anderer Anwender, wenn deren Skript mit der neuen Version problemlos läuft.
In jedem dieser Fälle mit Dank im Voraus,
MMi
"Seppl" hat mein gepostetes Problem natürlich genauer beschrieben, es handelt sich bei mir nicht um einen Fehler des "Handover", sondern exact um den unten genannten "Handshake error". Damit wären wir mit Michael Kimpel schon mal drei.
Leider führt auch die heute probierte Beta-Version 4.521 zum selben Ergebnis. Lediglich durch Wiederverwendung der alten Version 4.5.10 hat dieses Problem nicht und liefert die erwarteten Ergebnisse.
Ich hoffe auf eine baldige Lösung,
MfG
MMi
"checkCertificate = false," hat bei mir geholfen.
Details siehe Post an "Seppl"
Hallo zusammen,
ich habe mir jetzt auch endlich eine Netatmo Wetterstation geleistet und möchte natürlich auch alle Sensoren nutzen.
Mit dieser ausfürlichen Anleitung habe ich auch schon alles so weit einrichten können.
Leider kommt bei mir jedoch folgende Fehlermeldung:
[DEBUG] 21:45:12: netatmo v.2.0 (NEW API) gestartet...
[DEBUG] 21:45:12: Daten werden alle 5 min aktualisiert. Bei debug = 0 wird nichts debuggt
[DEBUG] 21:47:35: 2018-12-02 21:47:35.903544 [ error] Handshake error: certificate verify failed
[DEBUG] 21:47:35: 2018-12-02 21:47:35.904094 [ error] Handshake error: bad message type
Ich vermute mal, dass das mit den Nutzerdaten zusammenhengt. Diese habe ich jedoch schon mehrfach überprüft.
Hat vielleicht noch jemand von euch eine Idee was hier das Problem ist?
Danke schonmal im Voraus.
Gruß Seppl
Hallo Seppl,
hast Du schon eine Antwort/Lösung auf Dein Problem bekommen? Wenn ja bitte poste es mal.
Ich habe nämlich das gleiche Problem.
Gruß
Michael
bei mir hat das Einfügen der Zeile "checkCertificate = false,"
in folgendem Passus endlich geholfen:
function getResponseData(url, body, func)
local http = net.HTTPClient()
http:request(url, {
options = {
checkCertificate = false,
method = 'POST',
Hoffe, es funktioniert auch bei Euch,
Gruß
MMi
Hallo,
bei mir hat das Einfügen der Zeile auch funktioniert, herzlichen Dank.
VG
Ernst
Hallo Zusammen,
ich hab leider auch dieses handshake-Problem, das Einfügen von checkCertificate = false,
hat nix gebracht. Gibt's hier vielleicht nochmal was neues was ich ausprobieren kann?
Besten Dank vorab für eure Rückmeldung
Nochmals Hallo,
mir scheint, dass sich wieder etwas grundlegendes in der Netatmo API oder in der FIBARO-Version (4.543) geändert hat. Während die Windwerte zuverlässig aktualisiert werden wird bei den Regenmengen entweder kein Wert, oder aber ein immer konstanter Wert (bei mir 185,1) sowohl für Stunde, Tag, Woche und Monat eingetragen. Die Werte in der Netatmo-StandardApp (nicht connect) zeigen die korrekten Werte an, weshalb ich einen Defekt bei meinen Geräten vor Ort ausschliesse.
Hat noch jemand das Problem?
Hat jemand das Wissen und die Motivation das LUA-Skript auf einen neuen Stand zu bringen? Ggf. unter Einbeziehung von Nookys Problem mit der hier als Link aufgezeigten Lösung und des CheckCertifikate-Problems? Mein Dank wäre gewiss und sicher auch der vieler anderen.
MfG
MMi
moin,
habe das gleiche Problem. Alle Regenwerte sind gleich (Std.,Woche usw.) auch mit 4.543.
mfg
Nachtrag: Das am 23.6.19 beschriebene Problem scheint grundsätzlicher Natur zu sein und wurde im Fibaro-Forum behandelt. Dort wurde (entsprechend) vorgeschlagen die Startzeit der Regenabfrage
von: &date_begin='..os.date('!%c', (now - dauer)),
in: &date_begin='..os.date(now - dauer),
zu ändern (ziemlich am Ende des LUA-Skriptes in der Zeile "getResponseData('https://api.netatmo.net...").
Seit der Änderung erhalte ich nach und nach wieder plausible Regenwerete.
MMi
moin,
habe das gleiche Problem. Alle Regenwerte sind gleich (Std.,Woche usw.) auch mit 4.543.
Guten Morgen ist das Skript nicht mehr zur Verfügung?
Der oben genannte Link funktioniert nicht mehr.
[icons icon=“icon-folder-open“ color=“#dd3333″ size=“18″] netatmo v2.0 – Deutsch/Englisch – DOWNLOAD ZIP
Ich habe jetzt auch einen Regensensor und würde auch gerne die Daten davon verwenden.
Bitte um Antwort, Gruß Jürgen
Hmmmmmmm, niemand mehr hier im Forum unterwegs??
Kann mir jemand sagen ob das Skript für Netatmo noch irgend wo zu haben ist und ob es überhaupt noch funktioniert!?
Der LINK wo man es herunterladen kann funktioniert leider nicht mehr :-(
BITTE um Antwort, Gruß Jürgen.
Hallo Zusammen, ich habe auch das Problem mit dem Handshake error. Woran liegt das? Kann mir einer sagen was ich tun muss ?