Wetteranzeige im HomeCenter 2 mit eigenen Werten füllen

Geschrieben von boomx

In diesem Artikel stellen wir euch ein Virtuelles Device vor, mit dem Ihr die Wetteranzeige auf eurem Fibaro HomeCenter 2 durch eigene Werte (Zum Beispiel durch die Werte eines netatmo-Außenmoduls oder den Daten des Z-Weather) verändern könnt. Mehr dazu erfahrt Ihr hier.

Beginnen wir mal von vorn: Die API von dem yahoo-Wetterdienst hat vor einiger Zeit Änderungen erfahren, wodurch keine Aktualisierung der Wetteranzeige mehr durchgeführt wurde. Die Anzeige und das Triggern von Szenen, welche auf Wetterdaten zugreifen (Kleine LUA Scripte Teil 2: Sturmwarnung), hat seit diesem Zeitpunkt nicht mehr funktioniert. Mit dem Update auf die Firmware-Version 4.082 Beta hat Fibaro den Dienst gewechselt und nutzt für die Wetterdaten den Dienst von yr.to.

wetteranzeige_hc2_2

Wetteranzeige im Webinterface

Alternative Wetteranzeige

Nun gibt es ja auch Fibaro-User ( Ja, ich gehöre auch dazu ;) ), welche nicht gleich den Update-Button betätigen, sobald ein neues Update von Fibaro veröffentlicht wurde. Damit diese auch in den "Genuss" aktualisierter Wetterdaten kommen, haben wir uns ein fertiges Virtuelles Device, welches die Wetterdaten von der OpenWeatherMap zieht und aufbereitet, aus dem offiziellen Fibaro-Forum (An dieser Stelle vielen Dank an Jakub & Damian, welche die Grundfunktion programmiert haben) und an diesem neben der deutschen Übersetzung noch ein wenig Fein-Tuning betrieben. Optional können die Daten von einem netatmo-Außenmodul/Windmesser oder von einem Z-Weathermodul eingebunden werden. Die dazu benötigten Skripte findet Ihr jeweils hier:

Einrichtung des VDs

In dem VD sind nach dem Importieren noch ein paar Anpassungen vorzunehmen. Hier müssen zum einen die Daten für die Anbindung an Openweather im Skript eingetragen werden. Den API-Key bekommt Ihr über die Webseite. In meinem Fall hat die Freischaltung des API-Keys ein paar Stunden gedauert. Also nicht wundern, wenn das Skript zuerst ein paar Fehlermeldungen auswirft. Diesen müsst Ihr dann in den folgenden Zeilen eintragen. Die restlichen Angaben sollten selbsterklärend sein:

Solltet Ihr desweiteren die Einbindung von netatmo-Werten, beziehungsweise des Z-Weather nutzen wollen, dann müssen noch weitere Änderungen an den folgenden Zeilen vorgenommen werden:

Nach dem Importieren sind die Optionen deaktiviert. Solltet Ihr die Einbindung nutzen wollen, dann müssen die jeweiligen Werte auf true gesetzt werden. Für die netatmo-Integration wird noch die ID des Thermometers benötigt. Diese findet Ihr, wenn Ihr den Einstellungen des Moduls nachschaut. Die ID des Luftfeuchtigkeitssensor wird automatisch ermittelt.

Wenn Ihr euch die Windgeschwindigkeit eines vorhandenen netatmo-Windsensor oder dem Z-Weather in der Wetteranzeige anzeigen lassen wollt, dann müsst Ihr wie oben beschrieben die lokale Variable "wind_war" auch auf true setzen. Die bereits geposteten Szenen schreiben die Windgeschwindigkeit ja bereits in eine globale Variable. Abhängig von dem eingesetzten Modul muss hier dann noch zusätzlich der Variablenname eingetragen werden. Im Falle des netatmo-Windsensors wäre dies windstaerke und im Fall Z-Weather wind_zweather. Solltet Ihr ein anderen Variablennamen nutzen, dann könnt Ihr diesen natürlich auch eintragen.

Sofern Ihr alles eingerichtet habt, könnt Ihr über den Debug-Modus des Buttons prüfen, ob alles funktioniert. So wie auf dem Bild sollte es aussehen:

wetteranzeige_hc2_vd

Debug des "Info"-Buttons.

Zusätzliche Szene

Damit sich die Wetteranzeige nun regelmäßig aktualisiert, muss eine weitere Szene eingerichtet werden, welche dann den Info-Button des VDs drückt. Dazu könnt Ihr euch folgende Szene erstellen:

Diese Szene drückt alle 10 Minuten virtuell den Button 7 des VDs mit der ID 283. Hier müsst Ihr natürlich die ID eures importierten VDs hinterlegen. Diesen findet Ihr in der Browser-URL-Leiste, wenn Ihr das VD bearbeitet:

url_browser

Die ID 283 ist die ID des VDs

Neben dem Download für das Virtuelle Device (DOWNLOAD) haben wir für euch auch wieder ein passendes Icon  für das VD auf der Weboberfläche des Fibaro HomeCenter 2 erstellt. Dieses findet Ihr hier: (Muss auch beim "Refresh"-Button im VD eingestellt werden):

Wetteranzeige Icon

Icon

Und nun viel Spass mit dem neuen und aktuellen Werten :) So sieht das VD übrigens dann am Ende aus:

vd_hc2

VD im Fibaro HomeCenter 2

Diesen Blogpost hat geschrieben ...

boomx

58 Kommentare

  • Vielen Dank für das Skript!
    Es funktioniert, aber mir ist schon häufiger aufgefallen, dass die Werte von openweathermap.org nicht wirklich stimmen können.

    Bei mir zeigt er jetzt gerade 14 Grad an. Im Nachbarort 15 Grad.
    Alle anderen Wetterdienste zeigen aber 19 Grad an. Mein eigenes Außenthermometer ebenfalls.
    Das kann also alles nicht stimmen, was openweathermap anzeigt...

    • Hi,

      Danke für das Lob :)

      Über die Qualität der Angaben kann ich leider keine Auskunft geben, da stecken wir leider nicht drin. Nutze auch die NetAtmo-Integration und Z-Weather.

      Vielleicht können wir uns demnächst auch mal andere Anbieter anschauen.

      Hast du dort eine Empfehlung?

      Gruß

  • Hallo,

    ich bekomm beim Debug folgenden Code
    [ERROR] 16:38:15: line 83: bad Argument #1 to 'floor'(number expected, got nil)

    was kann das sein, evlt der noch nicht freigeschaltete API Key von openwether??

    • Hi,

      das liegt an der API von Openweather. Sollte beim nächsten Durchlauf wieder funktionieren. Werd nochmal ein Update machen, wo dieser Fehler abgefangen wird.

      Gruß

      • ok es lief dann gestern abends wieder, jetzt hab ich aktuell keine aktuellen Werte und im debug kommt
        [Error] 08:01:53: line 57: attempt to concatenate global 'tempmin' (a nil value)

        Wo steckt hier der Fehler

          • warum nennt man es DIE API und DER PROGRAMMIERER :-)

            ich freue mich schon auf die Lösung des Problems

          • Hallo boomx,

            ich hab immer noch das Problem in der Zeile 57....
            Hast Du schon was neu programmiert??

            Grüße

          • habe alles nochmal raus geworfen und neu integriert, jetzt läuft es... mal schauen, ich hoffe dauerhaft :-)

          • Hi,

            es läuft derzeit, weil die API seit 6 Uhr vernünftige Werte zurückliefert ;) Ich kann auch nur eine zusätzliche Prüfung einbauen, dass keine Fehlermeldung erscheint. Die Werte wären dann trotzdem leer.

            Gruß

  • Hi,

    ich habe zwar eine Netatmo aber keinen Windsensor deshalb müsste man im Abschnitt für die Windstärke eigentlichen in folgendes korrigiert werden:

    --Windstärke
    if (wind_var == false) then
    fibaro:debug('Keine Variable für Wind gesetzt')

    Danke & Gruß

    • Hi,

      ne, ist alles richtig so ;) Die Daten des Windsensors fließen über die Variable mit rein und nicht über die Anbindung des Plugins (Die Daten des Windsensors werden da glaub ich noch nicht angezeigt). Dies haben wir mit den oben genannten Skripten umgesetzt.

      Gruß

      • Hi,
        original Abschnitt ist ja folgender:

        if (netatmo == false) then
        fibaro:debug('Keine Variable für Wind gesetzt')
        wind_speed=math.floor(ajson.wind.speed * 3.6)
        wind_speed = tonumber(wind_speed .. ".00")
        fibaro:debug('Windstärke: ' ..wind_speed.. ' km/h')
        else
        fibaro:debug('Variable für Wind gesetzt')
        wind_speed = fibaro:getGlobal('wind_zweather')
        fibaro:debug('Windstärke: ' ..wind_speed.. ' km/h')

        Da Netatmo bei mir aber true ist und wind_var false springt er in den unteren Teil und möchte die Variable abfragen die es bei mir garnicht gibt und bleibt hängen.

        Gutes VD, Danke dafür.

          • Hi,

            nutzt du die Variable des Z-Weather? Hatte noch einen "kleinen" Rundungsfehler in dem Skript für das Modul. Den Code habe ich im Artikel aktualisiert und es sollte jetzt richtig angezeigt werden.

            Gruß

  • Hallo boomx,
    genau die verwende ich. Vielleicht kannst du Zeile 9 noch richtig stellen, dort muss local var_name = 'wind_zweather' stehen (nicht 'wind_zweahter').
    Manchmal funktioniert die Wind-Anzeige, also 0 oder 1 km/h, manchmal steht dort 1990 km/h und der Rekord war 14137 km/h. Ohne das ich irgend etwas verändert habe.
    Ich glaube nicht das der Fehler in deinem Skript liegt.
    Gruß

    • Hi,

      hab das Skript von dem Z-Weather nochmal vor einiger Zeit aktualisiert. Es war noch ein kleiner Fehler drin. :( Das VD hab ich aktualisiert...

      Gruß

  • Bei mir läuft es stabil seit ein paar Tagen, nur die Windstärke in km/h wird nicht angezeigt, liegt es an einem Fehler in der
    Netatmo Integration??

    Ich habe folgendes zur Behebung im Script bei mir geändert, ist das richtig so??
    Die Werte werden zumindest jetzt richtig angezeigt:
    Ich hab die Netatmo Integration von Siio am laufen mit der Variable "windstaerke"
    Zeile 76 und 80 von "Windstärke" auf "windstaerke" geändert
    Zeile 79 von "wind_zweather" auf "windstaerke" geändert

    Grüße
    Poldy

    • Hi,

      in dem Code musst du gar nichts ändern. Du musst in Zeile 17 & 18 die Einstellungen für die Variable des Windmesser eingeben und auf true setzen. Da du den weiteren Code geändert hast, kann ich dir leider nicht mehr helfen, sofern Fehler auftreten.

      Gruß

  • Hi bomx,

    das VD wirft nach ein paar Stunden ein Fehler zu Zeile 83
    wind_deg=math.floor(ajson.wind.deg)
    aus:
    [ERROR] 16:05:45: line 83: bad argument #1 to 'floor' (number expected, got nil)

    Da Z-Weather die Windrichtung nicht kennt, muss er den Wert ja aus OpenWeather ziehen. Gestern lief das noch.
    Das VD liefert noch Werte...

    VG Hoggle

      • Es sieht für mich immer noch so aus, als ob dann die API einen weg hätte. Theoretisch kann ich eine Abfrage davor machen, aber ändern kann ich es leider nicht.

        Gruß

        • Erst dachte ich ach, dass ich ein Abruflimit überschritten hätte.
          Aber der Luftdruck wird im Debug angezeigt.
          Könnte es auch sein, dass OW keine Windrichtung meldet, weil es zB windstill ist?
          Eien Schleife darum, die das abfängt sollte das lösen.

  • Guten Morgen Daniel!

    Bei mir läuft es auf Anhieb perfekt (das erste Mal, dass ich hier etwas nach Anleitung mache und keine Schwierigkeiten habe)! :-D

    Vielen Dank für die tolle Arbeit!

    Grüße

    Christian

      • :-DDDD

        ...wobei ich doch ich eine kleine Frage hätte. Die Windgeschwindigkeit wird mir nicht mehr in der Wetteranzeige angezeigt. Die Szene und das VD funktionieren und der Wert wird auch in die globale Variable geschrieben und im Debug des Netatmo Windmessers angezeigt. Aber sie bleibt immer auf 9 km/h stehen, während sich das Icon, Temperatur und Luftfeuchtigkeit aktualisiert.....

        Hier der Debug des VD-Wetter:

        [DEBUG] 08:37:01: Verbindung zur API wird aufgebaut...
        [DEBUG] 08:37:01: Wetterdaten für Langwedel, DE abgefragt.
        [DEBUG] 08:37:01: Wetter: ein paar Wolken
        [DEBUG] 08:37:01: ConditionCode: 30
        [DEBUG] 08:37:01: netatmo-Integration aktiv
        [DEBUG] 08:37:01: Temperatur: 15.7 °
        [DEBUG] 08:37:01: netatmo-Integration aktiv
        [DEBUG] 08:37:01: Luftfeuchtigkeit: 85 %
        [DEBUG] 08:37:01: Luftdruck: 1002 hPa
        [DEBUG] 08:37:01: Variable für Wind gesetzt
        [DEBUG] 08:37:01: Windstärke: km/h
        [DEBUG] 08:37:01: Windrichtung: W
        [DEBUG] 08:37:01: Wetterdaten in der API aktualisiert.
        [DEBUG] 08:39:01: Verbindung zur API wird aufgebaut...
        [DEBUG] 08:39:04: Wetterdaten für Langwedel, DE abgefragt.
        [DEBUG] 08:39:04: Wetter: ein paar Wolken
        [DEBUG] 08:39:04: ConditionCode: 30

        Wind müßte laut glob. Var. bei 1 km/h sein....

        Hast Du eine Idee?

        • Habe den Fehler gefunden! Wenn man den Netatmo-Windmesser verwendet, muß man ja, laut Deiner Aussage den Begriff in Zeile 18 ändern - gemacht.
          Aber eben auch in Zeile 79! :-)

          Jetzt geht´s! *jippieyajeah! :-)

          • Hallo Daniel!

            Haste Du spontan eine Idee? Bei mir wird das Wetter nur nach dem Einloggen in der HC2 angezeigt und wenn ich das VD manuell aufrufe. Der Button, für den "Refresh" wird mir im Debug der Szene angezeigt und auch regelmäßig "gedrückt"!

            Gruß

            Christian

  • Hallo Daniel!

    Habe jetzt über Tage eine Fehlermeldung hinsichtlich der Windrichtung bekommen. Deshalb habe ich folgende Zeile abgeändert und hole die Werte aus der Netatmo Variablen:

    --Windrichtung
    --wind_deg=math.floor(ajson.wind.deg)
    wind_deg = fibaro:getGlobal('windrichtung')

    Nun läuft alles so wie es soll.

    Gruß
    Hübi

  • Hi,

    in dem Modul, das ich heute hier heruntergeladen habe steht in Zeile 18 immer noch
    local var_name = 'wind_zweahter' , also ht statt th (s.o)
    Nur so als Tipp... Ist der Link alt oder nutzen die anderen die Variable nicht?

    Noch ein Tipp: bei Z Weather steht das Modul für die Feuchtigkeit bei mir 2 Stellen hinter der Temperatur, habe also Zeile 65 wie folgt geändert:.... hum = tonumber(fibaro:getValue(netatmo_id + 2, "value"))
    Ist der Rest gleich für Z Weather und Netatmo?

    Auf jeden Fall: Script läuft super, vielen Dank! So ein Script würde ich nie selbst hinkriegen und das bisschen Gefummel macht ja auch viel Spaß!
    LG TT

    • Hi,

      hatte es eigentlich aktualisiert. Lade es gleich nochmal neu hoch. Komisch...
      Die Luftfeuchtigkeit lese ich nicht aus dem Z-Weather, sondern nur aus dem netatmo Außenmodul. Deshalb +1 ;)

      Wenn da natürlich die ID stimmt und netatmo bei dir aktiv ist, dann nimmt das Skript natürlich den Wert vom Z-Weather :)

      Gruß

  • Hallo boomx !

    Besteht auch die Möglichkeit alle Wetter Daten (Temp, Feuchtigkeit, Wind) aus ZWeather in die Anzeige auf dem HC2
    einfließen zu lassen ? Im Moment zieht sich das Script ja die Temp und Feuchtigkeit von Open Weather, wenn ich das
    richtig erkannt habe ? Nur der Wind kommt von Netatmo bzw. ZWeather, oder ?

    Grüße
    Michael

    • Hi,

      wenn beide Optionen auf false gesetzt sind, dann kommen alle Werte von der Openweather-API. Wenn netatmo auf true gesetzt ist, dann kommen die Luftfeuchtigkeit und Temperatur von dem netatmo Aussenmodul. Wenn für die Windgeschwindikeit ein Z-Weather oder ein netatmo Windmesser genutzt werden soll, dann muss wind_var auf true gesetzt werden und der Variablenname muss angegeben werden.

      Gruß

  • Hallo Ihr lieben,

    verstehe ich das jetzt richtig, dass ich mit dem VD und einer Netatmo Wetterstation meine eigenen Wetterdaten im Interface anzeigen kann? Also ich habe ein iPad an der Wand hängen und da zeigt es ja die nicht immer stimmigen Wetterdaten an.

    Ich meine die Figaro iPad App!?

    Gruß

  • Hi Leute,

    kann mir bitte jemand helfen? Bei mir zeigt es im Debüt folgendes an:

    [ERROR] 04:30:32: line 80: attempt to concatenate global 'wind_speed' (a nil value)
    [DEBUG] 04:40:32: Verbindung zur API wird aufgebaut...
    [DEBUG] 04:40:32: Wetterdaten für Schwaig, DE abgefragt.
    [DEBUG] 04:40:32: Wetter: trüb
    [DEBUG] 04:40:32: ConditionCode: 3200
    [DEBUG] 04:40:32: netatmo-Integration aktiv
    [DEBUG] 04:40:32: Temperatur: 24.8 °
    [DEBUG] 04:40:32: netatmo-Integration aktiv
    [DEBUG] 04:40:32: Luftfeuchtigkeit: 524 %
    [DEBUG] 04:40:32: Luftdruck: 1018 hPa
    [DEBUG] 04:40:32: Variable für Wind gesetzt
    [ERROR] 04:40:32: line 80: attempt to concatenate global 'wind_speed' (a nil value)

    Habe ich irgendetwas vergessen? Windmesser habe ich keinen.

    Danke im Voraus

      • Danke. Leider ist es noch das gleiche?!? folgende Änderung habe ich im Skript gemacht:
        -- DATEN ANPASSEN
        local city="Schwaig"
        local country="de" -- en, se, ....
        local api_key="c3da3ebe67eb0e185e112f7dXXXXXdf5" -- you can get your own API_KEY on this website: https://home.openweathermap.org/users/sign_up
        local lang = "de" -- en, se, ...

        -- NETATMO-INTEGRATION (Aussensensor) - Temperatur und Luftfeuchtigkeit

        local netatmo = true
        local netatmo_id = 172 -- ID des Thermometers

        -- VARIABLE für Wind (netatmo oder Z-Weather)

        local wind_var = false
        local var_name = false

        • Im Artikel steht alles doch alles ausführlich erklärt... :)

          Die Variable var_name darfst du nicht ändern. netatmo muss dann in deiner Konstellation auf false. Dann funktioniert es ;)

          Gruß.

    • Dann muss die Variable Netatmo natürlich auf true gesetzt werden. Die zweite Variable hättest du nicht ändern müssen, wenn die erste auf false steht ;) Leg mal bitte eine neue globale Variable wind_speed an und schau ob der Fehler im Debug verschwindet.

      Gruß

  • [DEBUG] 17:57:23: Verbindung zur API wird aufgebaut...
    [DEBUG] 17:57:23: Wetterdaten für Schwaig, DE abgefragt.
    [DEBUG] 17:57:23: Wetter: klarer Himmel
    [DEBUG] 17:57:23: ConditionCode: 32
    [DEBUG] 17:57:23: netatmo-Integration aktiv
    [DEBUG] 17:57:23: Temperatur: 27.2 °
    [DEBUG] 17:57:23: netatmo-Integration aktiv
    [DEBUG] 17:57:23: Luftfeuchtigkeit: 47 %
    [DEBUG] 17:57:23: Luftdruck: 1014 hPa
    [DEBUG] 17:57:23: Variable für Wind gesetzt
    [ERROR] 17:57:23: line 80: attempt to concatenate global 'wind_speed' (a nil value)

  • Hallo,

    ich erhalte immer den Fehler:

    [DEBUG] 08:24:23: Verbindung zur API wird aufgebaut...
    [DEBUG] 08:24:23: Wetterdaten für Brunstorf, DE abgefragt.
    [DEBUG] 08:24:23: Wetter: Klarer Himmel
    [DEBUG] 08:24:23: ConditionCode: 32
    [DEBUG] 08:24:23: netatmo-Integration aktiv
    [ERROR] 08:24:23: line 57: attempt to concatenate global 'tempmin' (a nil value)

    Läuft das VD noch?! Laut den Posts hier soll es an der API liegen?!

    Gruß

    • Hat mit der API nichts zu tun. Das VD läuft grundsätzlich noch, die Daten werden aber nicht mehr in der Wetteranzeige geändert, da Fibaro die Struktur mit einem Update verändert hat.

      Da du die netatmo-Integration aktiv hast, gehe ich davon aus, dass du die ID nicht korrekt angepasst hast.

      Gruß

  • Okay, aber für den Sonos Zugriff, kann ich die Date ja nutzen?!

    Es lag nicht an der ID, sonder an dem Code, da dort netatmo auf true gesetzt ist, obwohl im Text steht, das die eigentlich standardmäßig auf false gesetzt sind :)

    Gruß

  • Hallo zusammen,
    ja, Klasse. Sofort geklappt.
    Und auch gleich ohne die Kommentare zu lesen, entdeckt, das im Gegensatz zur Erläuterung Z-Weather und Netatmo, welche ich selber nicht besitze, auf True gesetzt sind.
    Also ausgeschaltet und nachdem die API aktiv wurde trudeln nun auch die Daten ein...
    Eine Frage aber noch, nur zum Verständnis...
    Ich habe bisher nur YR Weather genutzt und diese Einstellung auch in den Systemeinstellungen gesetzt, womit mir in der Web-GUI oben rechts auch die jeweiligen Daten angezeigt werden.
    Ich wollte nun nach einbringen des VD diese Einstellung auf die VD in den Systemeinstellungen ändern. Das geht aber gar nicht.
    Überschreibt das VD einfach die Daten von YR einfach? Bzw. was würde nun passieren wenn man YR entfernt?

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner