Ihr wollt bei bestimmten Wetterbedingungen passende Aktionen durchführen? Sollen bei einem aufziehenden Gewitter eure RGBW-Module das „Sturm“-Programm starten? Oder sollen die Lichter bei klarem Himmel gelb leuchten? Dann müsst Ihr euch auf jeden Fall diesen Artikel anschauen.
Jetzt könntet Ihr natürlich behaupten: "Wie, das funktioniert doch bereits!". Ja, das funktioniert auch. Aber wir haben die Möglichkeiten ein wenig erweitert. Wie auf dem nächsten Bild zu erkennen ist, nutzt Fibaro die "Weather Conditions", um die Wetterbedingungen zu vergleichen und daraufhin eine Aktion auszuführen. Die API von yahoo, bzw. yr.to liefert aber so eine Angabe gar nicht zurück. Hier kommt lediglich eine Zahl zurück, welche dann von Fibaro "übersetzt" wird.
Und genau an diesem Punkt setzen wir an und machen es wie Fibaro auch: Wir übersetzen die Zahl in eine Wetterbedingung. Allerdings etwas detallierter. Mit dem Skript habt Ihr die Möglichkeit folgende Wetterbedingungen zu prüfen:
- Regen
- klarer Himmel
- leicht bewölkter Himmel
- bewölkter Himmel
- stark bewölkter Himmel
- Nebel
- Gewitter
- Möglicherweise Schneeregen/Schnee
- Schnee
- Hagel
- Überfrierende Nässe
- Sturm
Das unten gepostete Skript ist eine kleine Erweiterung des bereits vorgestellten OpenWeatherVDs, mit dem Ihr eure eigenen Wetterdaten in der Wetteranzeige des Fibaro HomeCenter 2 nutzen könnt. Das Skript kann aber auch ohne das virtuelle Devices genutzt werden.
Die Szene wird durch die Änderung des ConditionCode ausgeführt. Solltet Ihr das VD so wie im Artikel beschrieben, eingerichtet haben, dann wird die Szene alle 10 Minuten ausgeführt. Damit aber zum Beispiel eine eingerichtete Push-Mitteilung, welche bei einem bestimmten Wetter verschickt werden soll, nicht alle 10 Minuten versendet wird, prüft das Skript, welche Wetterbedingung vor dem neuen Wert gesetzt war. Sollte sich dieser nicht verändert haben, dann passiert nichts.
Und hier nun der "fertige" Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
--[[ %% properties 3 ConditionCode %% globals --]] local weather_code = fibaro:getValue(3, 'ConditionCode') local previous_weather_code = fibaro:getValue(3, 'PreviousConditionCode') if (weather_code == previous_weather_code) then --fibaro:debug('weather_code hat sich nicht geändert.') else fibaro:debug('Wettervorhersage v0.01 gestartet.') fibaro:debug('ConditionCode: ' ..weather_code.. ' / Prüfe Wetterbedingung') if (weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40') then fibaro:debug('Wettervorhersage: Regen') elseif (weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34') then fibaro:debug('Wettervorhersage: klar') elseif (weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44') then fibaro:debug('Wettervorhersage: leicht bewölkt') elseif (weather_code == '26' or weather_code == '35') then fibaro:debug('Wettervorhersage: bewölkt') elseif (weather_code == '27' or weather_code == '28') then fibaro:debug('Wettervorhersage: stark bewölkt') elseif (weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22') then fibaro:debug('Wettervorhersage: Nebel') elseif (weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46') then fibaro:debug('ACHTUNG: Gewitter') elseif (weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46') then fibaro:debug('Wettervorhersage: Möglicherweise Schnee/Schneeregen') elseif (weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43') then fibaro:debug('Wettervorhersage: Schnee') elseif (weather_code == '17' or weather_code == '35') then fibaro:debug('ACHTUNG: Hagel') elseif (weather_code == '8' or weather_code == '10') then fibaro:debug('Wettervorhersage: Überfrierende Nässe') elseif (weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23') then fibaro:debug('Wettervorhersage: Stürmisch') elseif (weather_code == '25') then fibaro:debug('Wettervorhersage: Kalt (Was immer das heißt...)') elseif (weather_code == '36') then fibaro:debug('Wettervorhersage: Heiß (Was immer das heißt...)') else fibaro:debug('Code 3200. Nicht bekannt.') end end |
In dem Code erkennt Ihr an den Debug-Ausgaben, welche Wetterbedingung vorherrscht. Hier könnt Ihr dann einzelne oder mehrere Aktionen hinzufügen.
Kurze Info am Ende: Leider können wir das Skript nicht mehr der Firmware 4.081 und der damit verbundenen Änderung auf den neuen Wetterdienst yr.to. Vielleicht könnte ein User dies für uns übernehmen und das Ergebnis in den Kommentaren hinterlassen. Vielen Dank für eure Hilfe und nun viel Spaß mit der kleinen Szene.