Seite 1 von 1
Alarmmeldung nur einmal die Stunde
Verfasst: 27. Dez 2020 20:26
von linsenpago
Hallo!
Es wurde bestimmt schon oft gefragt, aber die Suche hier im Forum hat mir nichts passendes ausgespuckt. Wahrscheinlich habe ich falsch gesucht.
Aber ich habe eine Rule, welche mir bei zu starkem Wind die Beschattung hochfährt.
Da das ganze aber über RFXcom und Somfy läuft, kennt Openhab den Status der Beschattung nicht.
Wenn jetzt der Wind über den definierten Wert von 40km/h steigt dann wird der Alarm ausgelöst und an unsere Handys geschickt. Das ist bei böhigem Wind natürlich mit der Zeit sehr lästig.
Ob die Beschattung jetzt jedesmal einen Befehl bekommt ist mir nicht so wichtig. Hauptsache sie ist oben..
Wie müsste ich einen Timer einbauen, damit aber die Alarmmeldungen nur 1x in der Stunde geschickt werden und nicht jedesmal wenn die Windstärke 40 überschreitet?
Code: Alles auswählen
rule "Terrassenrollo 3 bei Wind hochfahren"
when
Item HMWetter_Windgeschwindigkeit received update
then
if (HMWetter_Windgeschwindigkeit.state as Number > 40) {
logInfo("RFXCOM - Windschutz Terrasse", "Windgeschwindigkeit höher als 40kmh! Fahre Rollo 3 hoch! aktuell: " + HMWetter_Windgeschwindigkeit.state)
sendBroadcastNotification("Windschutz aktiv! Fahre Terrasse 3 hoch! Windstärke: " + HMWetter_Windgeschwindigkeit.state )
Beschattung_3.sendCommand(UP)
}
end
Ich danke euch schon vorab für eure Hilfe und auch meine Frau wird es euch sehr danken...

Re: Alarmmeldung nur einmal die Stunde
Verfasst: 27. Dez 2020 21:04
von PeterA
Hi,
so habe ich es bei mir gelöst:
Code: Alles auswählen
// globale Variablen müssen zu Beginn der rules Datei deklariert werden!
var Timer tWind = null
rule "Windwarnung"
when
Item LocalWeatherAndForecast_Current_WindSpeed changed
then
if(tWind === null && (LocalWeatherAndForecast_Current_WindSpeed.state >25 | "km/h")) {
tWind = createTimer(now.plusHours(3), [ |
tWind = null
])
sendBroadcastNotification("WINDWARNUNG !! Gartensachen sichern!") //Allgemeine Warnung an alle
}
end
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 27. Dez 2020 23:06
von violine21
Hallo,
ich habe das für meine Dachfenster mit 2 Rules gelöst.
Rule 1 triggert auf den Windstärkemesser und Regensensor, setzt bei Überschreitung ein Proxy-Item (Item ohne Anbindung) und schliesst die Fenster.
Code: Alles auswählen
rule "Schlechtwetter Ein"
when
Item Wetterstation1RAINING changed or
Item Wetterstation1WINDSPEED changed
then
if (Wetterstation1RAINING.state == ON && virtual_schlechtwetter.state == OFF)
{virtual_schlechtwetter.sendCommand(ON)
virtual_wetterereignis.postUpdate(now.toString("HH:mm")+" Uhr: Regen = "+Wetterstation1RAINING.state)}
if ((Wetterstation1WINDSPEED.state as Number).floatValue >= 20 && virtual_schlechtwetter.state == OFF)
{virtual_schlechtwetter.sendCommand(ON)
virtual_wetterereignis.postUpdate(now.toString("HH:mm")+" Uhr: Windgeschwindigkeit = "+Wetterstation1WINDSPEED.state as Number+ " kmh")}
end
Rule 2 wird 2x täglich getriggert und öffnet bei entsprechender Bedingung die Fenster wieder.
Code: Alles auswählen
rule "Schlechtwetter Aus"
when
Time cron "0 0 0 * * ?" or
Time cron "0 0 12 * * ?"
then
if (Wetterstation1RAINING.state == OFF && ((Wetterstation1WINDSPEED.state as Number).floatValue < 20))
{virtual_schlechtwetter.sendCommand(OFF)}
end
Den cron-Trigger müsstest Du noch auf Deine Bedürfnisse anpassen.
Ich habe die Schaltaktion für die Aktoren weggelassen und nur das Proxy-Item und die Textmeldung für die Paper UI gelassen.
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 28. Dez 2020 22:47
von linsenpago
Hi!
Danke für die Hilfe!
Ich habe die Rule nun so umgebaut und sie funktioniert... Jetzt bekomme ich die Meldung nur noch 1x Pro Stunde und auch der "UP" Befehl an die Beschattung wird auch nur noch max. 1x die Stunde geschickt.
Wäre es auch irgendwie möglich den Start des Timers zu loggen und alle z.b 10 sekunden ins Logfile zu schreiben?
Die Rule sieht jetzt so aus:
Code: Alles auswählen
rule "Terrasseenrollo 3 bei Wind hochfahren"
when
Item HMWetter_Windgeschwindigkeit received update
then
if (tWind3 === null && (HMWetter_Windgeschwindigkeit.state as Number > 40)) {
tWind3 = createTimer(now.plusHours(1), [ |
tWind3 = null
])
logInfo("RFXCOM - Windschutz Terrasse", "Windgeschwindigkeit höher als 40kmh! Fahre Rollo 3 hoch! aktuell: " + HMWetter_Windgeschwindigkeit.state)
sendBroadcastNotification("Windschutz aktiv! Fahre Terrasse 3 hoch! Windstärke: " + HMWetter_Windgeschwindigkeit.state )
Beschattung_3.sendCommand(UP)
}
end
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 30. Dez 2020 14:47
von linsenpago
Hat jemand noch zu dem Thema "Timer ins Logfile Schreiben" einen Tipp?
linsenpago hat geschrieben: ↑28. Dez 2020 22:47
Wäre es auch irgendwie möglich den Start des Timers zu loggen und alle z.b 10 sekunden ins Logfile zu schreiben?
Danke schonmal im Voraus!
LG!
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 30. Dez 2020 15:07
von PeterA
Einen Logeintrag zu erzeugen ist kein Problem. Aber weshalb alle 10sek ? Das geht nicht weil ein Logeintrag auch immer durch ein Ereignis ausgelöst wird.
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 31. Dez 2020 14:33
von linsenpago
War einfach nur eine Idee von mir, damit ich sehe ob der Timer noch läuft... aber wenn nur geloggt wird, dass der Timer gestartet wurde wäre das auch schon mal genug information.

Re: Alarmmeldung nur einmal die Stunde
Verfasst: 31. Dez 2020 15:38
von PeterA
Soweit ich informiert bin ist es in OH nicht vorgesehen laufende Timer "nachsehen" zu können.
Du kannst aber an entsprechender Stelle in der Rule z.B. zum Start des Timers einen Log Eintrag erzeugen lassen oder auch eine Nachricht aufs Mobiltelefon pushen lassen.
Ich habe Beispiel Code dafür. Aber den suche ich erst nächstes Jahr raus [emoji23].
Re: Alarmmeldung nur einmal die Stunde
Verfasst: 31. Dez 2020 17:01
von linsenpago
Hi!
Danke für die Info!
Ich habe es nun selbst hineingebastelt.
Ich habe es in anderen hier geposteten Beispielen gefunden und für mich angepasst.
Code: Alles auswählen
rule "Terrasseenrollo 3 bei Wind hochfahren"
when
Item HMWetter_Windgeschwindigkeit received update
then
if (tWind3 === null && (HMWetter_Windgeschwindigkeit.state as Number > 40)) {
logInfo("STARTING TIMER :", triggeringItem.name.toString)
tWind3 = createTimer(now.plusHours(1), [ |
tWind3 = null
])
logInfo("RFXCOM - Windschutz Terrasse", "Windgeschwindigkeit höher als 40kmh! Fahre Rollo 3 hoch! aktuell: " + HMWetter_Windgeschwindigkeit.state)
sendBroadcastNotification("Windschutz aktiv! Fahre Terrasse 3 hoch! Windstärke: " + HMWetter_Windgeschwindigkeit.state )
Beschattung_3.sendCommand(UP)
}
end