netatmo Regen- & Windmesser-Daten im Fibaro HC2 - Neue netatmo API

Geschrieben von boomx

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.

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:

netatmo_secret

netatmo app Angaben

Damit das Skript odnungsgemäß funktioniert, muss hier der Wert von max_counter angepasst werden. Hier wird dem Skript die Info über die Anzahl der batteriebetriebenen Module, welche Ihr von netatmo im Einsatz habt, mitgegeben. Solltet Ihr zum Beispiel ein Außenmodul, ein Innenmodul, ein Windmesser und einen Regenmesser im Einsatz haben, dann muss hier der Wert 4 gesetzt sein. Falls das Skript mit einer Fehlermeldung abbricht, dann ist dieser Wert zu hoch angesetzt.

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.

netatmo_2-0_debug

netatmo API Debug im Fibaro HC2 (Englisch)

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.

Icon für die Szene

Icon für die Szene

Diesen Blogpost hat geschrieben ...

boomx

45 Kommentare

  • 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ß

  • 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 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

  • 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

  • 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?

      • 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ß

  • 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

  • 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 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

    • 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

  • 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 ?

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner