Die Serie geht weiter. Diesmal stellen wir euch ein kleines Skript vor, welches im Sturmfall den Status der Tür- und Fenstersensoren prüft und euch eine Nachricht auf euer Handy schickt, sofern diese noch offen sind.
Dieses Skript wird durch die Yahoo-Wettervorhersage, welches bereits im Fibaro HomeCenter 2 integriert ist, gestartet und prüft alle vorhandenen Tür- und Fenstersensoren, ob diese geschlossen oder geöffnet sind. Sollte einer oder mehrere Sensoren nicht geschlossen sein, dann erhaltet Ihr eine Push-Mitteilung, welche Sensoren in welchem Raum nicht geschlossen sind. So habt Ihr die Möglichkeit diese noch zu schließen, bevor der Sturm beginnt.
Dazu müsst Ihr in dem unten geposteten Skript folgende Änderungen in den Zeilen 6 und 7 vornehmen.
1 2 |
local sturm = 62 -- km/h nach dem Sturm erkannt werden soll local phoneID = {68, 113} -- Handy-IDs |
In diesen Zeilen werden zum Einen die IDs eurer Handys und zum Anderen die Windgeschwindigkeit, ab wann Ihr eine Push-Mitteilung über geöffnete Fenster, bzw. Türen erhalten wollt, eingestellt. Die lokale Variable "sturm" ist mit dem Wert 62 km/h vorbelegt. Dies ist der offizielle Wert, ab dem in Deutschland eine Sturmwarnung ausgesprochen wird. Hier könnt Ihr natürlich jeden anderen beliebigen Wert in km/h eintragen. Dies ist komplett euch überlassen. In das Array "phoneID" müssen die IDs eurer Handys, an die Ihr die Push-Nachrichten verschicken wollt, eingetragen werden.
Solltet Ihr die IDs eurer Handys nicht kennen, so könnt Ihr diese über die API des Fibaro HomeCenters 2 herausfinden. Ruft dazu die Webseite http://IP-HC2/api/devices auf und sucht zum Beispiel nach iPhone.
Hier könnt Ihr erkennen, welche ID euer Handy besitzt. In diesem Fall wäre dies die 68. Hier wäre die Installation einer JSON-Erweiterung für den Browser von Vorteil. In dem Artikel von AlphaX2 wurde darauf bereits eingegangen. Diesen findet Ihr hier.
Und hier findet Ihr die gesamte Szene:
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 |
--[[ %% properties 3 Wind %% globals --]] local sturm = 62 -- km/h nach dem Sturm erkannt werden soll local phoneID = {68, 113} -- Handy-IDs local maxID = 1000 Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end local startSource = fibaro:getSourceTrigger(); local wind = fibaro:getValue(3, 'Wind') if ((tonumber(fibaro:getValue(3, 'Wind')) > tonumber(sturm)) or startSource['type'] == 'other') then if (startSource['type'] == 'other') then Debug('white', "SZENE MANUELL GESTARTET") else Debug('green', "SZENE DURCH WIND-VORHERSAGE GESTARTET") end Debug('red', "ACHTUNG! Sturm erkannt. Geschwindikeit: " ..wind.. " km/h") Debug('white', "Prüfe offene Fenster") for id = 1, maxID do local deviceType = fibaro:getType(id) if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then if (tonumber(fibaro:getValue(id, 'value')) == 1) then local name = fibaro:getName(id) local room = fibaro:getRoomNameByDeviceID(id) Debug('red', "ACHTUNG! Sturm erkannt. " ..name.. " im Raum " ..room.. " ist offen!") for k=1, maxID do if phoneID[k] ~= nil then fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: Sturm erkannt! ' ..name.. ' im Raum ' ..room.. ' ist offen!') end end end end end end |
Das Skript ist so eingerichtet, dass es normalerweise über die Windgeschwindigkeitsvorhersage des HomeCenter 2 getriggert wird. Es gibt aber auch die Möglichkeit, dass Skript manuell auszuführen. Im Debug werdet Ihr bei der manuellen Ausführung in weiß die Zeile "SZENE MANUELL GESTARTET" erhalten. Damit habt Ihr die Möglichkeit die Push-Mitteilungen auf eure Handys und die Erkennung der Sensoren zu testen. Sollte die Szene durch die Windgeschwindigkeitsvorhersage getriggert werden, dann steht in grün im Debug "SZENE DURCH WIND-VORHERSAGE GESTARTET". Die Push-Mitteilungen unterscheiden sich nicht.
Nach der vollständigen Einrichtung der Szene erhaltet Ihr dann bei vorhergesagtem Sturm folgende Push-Mitteilung:
An ein Icon für das HomeCenter haben wir natürlich auch noch gedacht:
Solltet Ihr noch weitere Ideen für unsere Serie besitzen, dann hinterlasst doch gerne einen Kommentar. Wir hören uns jede Idee gerne an und versuchen diese dann auch umzusetzen :)
Klasse Sache, werde ich gleich mal testen.
Das ganze könnte man auch noch abwandeln und für den Niederschlag verwenden.
Ihr seid klasse.
Danke für das Lob :)
Klar, mit Regen würde das natürlich auch gehen.
Gruß :)
Hier schmeißt mir das Script lauter Pushmeldungen raus, dass z.B. der Wallplug TV noch geöffnet ist und für alle anderen Wallplugs auch.... Ich habe bestimmt 25 Pushmeldungen bekommen, aber nur eine für die geöffnete Tür....
Hab es grad nochmal getestet. Funktioniert bei mir ohne Probleme. Hast du an dem Skript etwas geändert?
Moin Daniel!
Nein, habe ich nicht. Nur die IDs für den Windmesser und die Handys angepasst.
Gruß
Christian
P.S. Nach diversen Umbauten am Haus, werde ich mich demnächst mal hinsetzen und alle Aktoren bereinigen und mich auf Fehlersuche begeben... :-)
Hallo Zusammen,
funktioniert die Meldung auf dem Handy nur im Wlan oder auf im Handynetz?
MFG
Christian
Funktioniert bei beidem :) Internet natürlich vorrasgesetzt.
Ich bekomme keine Push-Benachrichtigung. Bei den bereits eingerichteten Block-Szenen läuft alles, nur bei den LUA-Szenen nicht.
Wodran könnte das liegen?
Hi,
hast du die IDs deiner Handys im Skript auch angepasst?
Gruß
IDs sind angepasst. Beim manuellen Starten der Szene bekomme ich jetzt auch die Push-Benachrichtigung.
Ich habe das ganze jetzt noch mit einer Tageszeit-Variablen angepasst und bin gespannt ob das gleich funktioniert.
so ich wünsche mir neben dem Yahoo Wetter, alternativ den netatmo Windsensor als Trigger ;-)
und oder open Weather Map. Hier zu finden. http://siio.de/fibaro-downloads-virtuelle-module-szenen/ (nach Open weather mal suchen)
HAHA :D netatmo ist gut ;)
Hallo und vielen Dank für das Tolle Skript.
Kann dieses noch um die Funktion "es Regnet, Fenster XY ist noch offen" erweiteret werden? Wenn ja wie muss ich dieses machen, bin kein LUA Experte.
Vielen Dank für die Anregungen
MfG Daniel
Hi,
kannst mal testen :) Weiß aber nicht, wie genau die Vorhersage ist.
--[[
%% properties
3 WeatherConditionConverted
%% globals
--]]
local phoneID = {68, 113} -- Handy-IDs
local maxID = 1000
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
local startSource = fibaro:getSourceTrigger();
if (fibaro:getValue(3, "WeatherConditionConverted") == "rain" or startSource['type'] == 'other') then
if (startSource['type'] == 'other') then
Debug('white', "SZENE MANUELL GESTARTET")
else
Debug('green', "SZENE DURCH REGEN-VORHERSAGE GESTARTET")
end
Debug('red', "ACHTUNG! Es könnte regnen")
Debug('white', "Prüfe offene Fenster")
for id = 1, maxID do
local deviceType = fibaro:getType(id)
if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
if (tonumber(fibaro:getValue(id, 'value')) == 1) then
local name = fibaro:getName(id)
local room = fibaro:getRoomNameByDeviceID(id)
Debug('red', "ACHTUNG! Regen vorhergesagt. " ..name.. " im Raum " ..room.. " ist offen!")
for k=1, maxID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: Regen vorhergesagt! ' ..name.. ' im Raum ' ..room.. ' ist offen!')
end
end
end
end
end
end
Gruß
Hallo Boomx,
vielen Dank für die schnelle Antwort. Der Skript hat super funktioniert.
Danke und Gruß Daniel
Da kommt
[DEBUG] 07:46:41: line 1: unexpected symbol near char(226)
Hast das Skript falsch kopiert. Scheint in der Zeile 1 ein nicht erkanntes Char zu stehen. Muss mit 2 Bindestrichen beginnen.
Gruß
Moin Daniel!
Deine Code scheint falsch formatiert zu sein - unabhängig von den beiden Bindestrichen..... Es zieht sich von Zeile zu Zeile! Könntest Du das nochmals im Forum posten?
Lieben Dank. :-)
Viele Grüße
Christian
--[[
%% properties
3 Wind
%% globals
--]]
local sturm = 62 -- km/h nach dem Sturm erkannt werden soll
local phoneID = {68, 113} -- Handy-IDs
local maxID = 1000
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
local startSource = fibaro:getSourceTrigger();
local wind = fibaro:getValue(3, 'Wind')
if ((tonumber(fibaro:getValue(3, 'Wind')) > tonumber(sturm)) or startSource['type'] == 'other') then
if (startSource['type'] == 'other') then
Debug('white', "SZENE MANUELL GESTARTET")
else
Debug('green', "SZENE DURCH WIND-VORHERSAGE GESTARTET")
end
Debug('red', "ACHTUNG! Sturm erkannt. Geschwindikeit: " ..wind.. " km/h")
Debug('white', "Prüfe offene Fenster")
for id = 1, maxID do
local deviceType = fibaro:getType(id)
if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
if (tonumber(fibaro:getValue(id, 'value')) == 1) then
local name = fibaro:getName(id)
local room = fibaro:getRoomNameByDeviceID(id)
Debug('red', "ACHTUNG! Sturm erkannt. " ..name.. " im Raum " ..room.. " ist offen!")
for k=1, maxID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: Sturm erkannt! ' ..name.. ' im Raum ' ..room.. ' ist offen!')
end
end
end
end
end
end
Hallo, Ihr leistet wirklich eine tolle Arbeit. Habe von LUA leider auch keine Ahnung, dafür aber das Problem, dass abends schon mal eine Tür oder ein Fenster offen bleibt. Wie kann ich das Script so ergänzen oder abändern, dass abends zu einer gewünschten Uhrzeit wie zum Beispiel 22:00 Uhr geprüft wird, ob sämtliche Fenster und Türen geschlossen sind? Schon mal herzlichen Dank für Eure Mühe :-)
Hi,
könnten wir auch mal proggen :) Sollte kein Problem sein, hab ich auf meiner Liste...
Gruß
Schon mal herzlichen Dank
Ich setze dazu eine Variable ein. Ist also mindestens 1 Fenster geöffnet, ist die Variable auf 1 und kann somit bequem zur gewünschetn Tageszeit abgefragt werden. So setze ich diese Variable bei mir: https://pastebin.com/rgUrN4Pu
Gruß
Hello. I have an error. How can I correct this error?
[ERROR] 01:33:50: line 15: attempt to call method 'getSourceTrigger' (a nil value)
Hi,
do you try to start the scene with the "Start"-Button? Can you test it plz? On wich Firmware-Version you are? Maybe Fibaro changes something.
Greetz
Hi. I run in the Main loop further debug mode and then start. I get this error . HC2 4.071.How to fix this error ? Thanks for help.
That is a normal scene, not a Virtual device ;)
Thanks, it works. :)
Klasse Script boomx,
aber da ja momentan das Yahoo Wetter nicht angezeigt wird (bzw. nicht richtig funktioniert),
wie sieht das Script dann für Netatmo bzw. die Openweathermap aus ?
Gruss
Carsten
Danke für das Lob. :)
Das Skript kann eigentlich genauso bleiben. Du musst nur anstatt dem Yahoo-Wetter die Variable nehmen, in welche die Windstärke geschrieben wird. Die Änderungen müssen dann in Zeile 3, 15 & 17 vorgenommen werden.
Gruß
Starkes Skript. Es funktioniert einwandfrei.
Wie genau funktioniert denn die Wettervorhersage? Ist es eine Vorhersage oder eine Momentbetrachtung?
Schön wäre es ja, wenn man bereits am Morgen eine Push-Nachricht bekäme ("Heute zieh ein Sturm auf."). Dann könnte man alle Fenster schließen, bevor man zur Arbeit fährt. Auch könnte ich mir eine Push-Nachricht vorstellen "Heute wird es regnen. Pack den Schirm ein."
Geht etwas in der Art?
Danke.
Hi,
das ist die Vorhersage der Wetteranbindung (rechts oben im HC2). Durch den Wind wird das Skript getriggert. Eine Vorhersage des Windes ist schwierig. So eine Push wäre morgens möglich :) Vielleicht setz ich es mal um, find die Idee ganz cool ;)
Gruß
Is es auch möglich anhand der Netatmo Daten bei Sturm zu warnen? Gibt es dazu auch einen Code. Vielen Dank
Hi,
meinst du mit dem NetAtmo Windmesser? Das geht, musst dann die erstellte Variable nutzen. Ansonsten nicht...
Gruß
Ich hatte mich mal dafür interessiert, nicht in Abhängigkeit vom Sturm, sondern in Abhängigkeit von einer Uhrzeit den Öffnungszustand von Türen und Fenstern zu prüfen. Danke an Hans-Ulrich Tag für den Vorschlag, dies mit Variablen zu realisieren. Das schöne an dem Sturmwarnungsscript ist aber, dass es automatisch nach Tür-/Fenstersensoren sucht. Füge ich also neue Tür-/Fenstersensoren hinzu, muss ich keine Scriptanpassung mehr vornehmen. Ich bekomme immer auch sofort angezeigt, welches Fenster/ welche Tür offen steht.
Habe mich jetzt mal selbst an dem Script versucht und habe ein bisschen Bastelarbeit aus diesem Script und einem Script, welches in Abhängigkeit von der Uhrzeit triggert, betrieben. Hat sogar funktioniert :-) . Ist wie gesagt durch "Copy-Paste" - Technik entstanden, kann daher überflüssige Angaben enthalten.
Es ist im Prinzip einzurichten wie das Sturmwarnungsscript. Die Uhrzeit ist hier auf 22:00 eingestellt, es prüft also abends um 22:00 Uhr, ob noch eine Tür oder ein Fenster offen ist. Wird eine andere Zeit gewünscht, einfach 22:00 gegen eine andere gewünschte Uhrzeit austauschen. Gruß, Norbert
Hi,
danke für deinen Beitrag. Hab das Thema mal ins Forum verschoben. Hier könnte es sonst untergehen. Findet Ihr hier:
https://www.siio.de/board/thema/pruefung-offene-fenster-nach-uhrzeit/
Gruß
Hallo, kann es sein das der Gen2 Fenstersensor von Fibaro eine andere Abfrage (oder) hat, denn alle Gen1 fenstersensoren funktionieren bei der Abfrage nur der Neue Fenstersensor wird nicht richtig abgefragt. ( wird nicht angezeigt wenn dieser offen ist.)
Hi,
es kann sein, dass der Sensor Gen.2 einen anderen devicetype besitzt. Dies müsstest du hier ergänzen:
deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor'
Gruß
Hallo ich kann machen was ich will aber ich bekomme keine push meldung....
Allein mit so einer Aussage kann dir leider hier keiner helfen... paar mehr Infos (Debug z.B.) wären schon angebracht.
Gruß
Guten morgen... bin auf dem Gebiet komplett neu. Habe den Script von oben kopiert und die ID vom Handy geändert aber nichts passiert wenn ich den Script starte. Im Fenster steht zwar was für Meldungen er schickt aber auf meinem Handy kommt nichts an. Oder liegt es daran das ich noch keine Fensterkontakte dran habe?
Gruß
Es werden nur Push-Nachrichten versendet, wenn offene Fenster erkannt werden.
Gruß
Hi und Moin zusammen!
Ich nutze dieses Skript nun schon länger und es ist mir ein große Hilfe!
Eine Kleinigkeit würde ich gerne erweitern: die Abfrage per Geschoss/Etage. Kann man dies nachträglich hinzufügen?
Danke für Eure Hilfe! Auch wenn hier über drei Jahre nicht mehr geschrieben wurde ;)