Regel die zwischen zwei Uhrzeiten nur greift

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Schlingelrino
Beiträge: 12
Registriert: 23. Jun 2019 09:20

Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von Schlingelrino »

Hallo zusammen,

ich habe folgende Regel:

rule "AGAMEN_ALL_WATTAGE"
when
Item AGAMEN_ALL_WATTAGE changed to 0.0
then var Number zeitraum = now.getHourOfDay
if ((zeitraum >= 9.30) && (zeitraum <= 22.30)) {
sendMail("MEINEADRESSE", "Bartagamen Beleuchtungsproblem", "")
}
end

Wenn jetzt aber testweise das Licht schon um 22.25 Uhr ausgemacht wird greift diese Regel nicht, mag mir da eventuell mal jemand helfen? :)
Außerdem würde ich gerne wissen, wie man folgendes machen kann:
Der Wert fällt auf 0 oder aber unter bspw 100 Watt.

Vielen Dank
Gruß Schlingel

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von udo1toni »

Es geht mal damit los, dass .getHourOfDay einen Integer Wert zurück liefert, eben die aktuell angezeigte Stunde (auf einer Digitaluhr).

Grundsätzlich ist Dein Ansatz aber korrekt. So sollte es aussehen:

Code: Alles auswählen

rule "AGAMEN_ALL_WATTAGE"
when
    Item AGAMEN_ALL_WATTAGE changed to 0.0
then
    if (now.getMinuteOfDay >= 9*60+30 && now.getMinuteOfDay <= 22*60+30) {
        sendMail("MEINEADRESSE", "Bartagamen Beleuchtungsproblem", "")
    }
end
Ein Problem könnte der Wert 0.0 sein. Günstiger wäre vermutlich, mit

Code: Alles auswählen

when
    Item AGAMEN_ALL_WATTAGE changed
then
    if((AGAMEN_ALL_WATTAGE.state as Number) < 1)
zu arbeiten (wobei 1 natürlich so hoch gewählt werden kann, wie klar ist, dass die Lampe ausgefallen ist).

Ein anderes Problem dabei ist dann natürlich, dass die Rule evtl. mehrfach triggert, so dass Du auch mehrfach eine Nachricht erhältst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Schlingelrino
Beiträge: 12
Registriert: 23. Jun 2019 09:20

Re: Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von Schlingelrino »

udo1toni hat geschrieben:Es geht mal damit los, dass .getHourOfDay einen Integer Wert zurück liefert, eben die aktuell angezeigte Stunde (auf einer Digitaluhr).

Grundsätzlich ist Dein Ansatz aber korrekt. So sollte es aussehen:

Code: Alles auswählen

rule "AGAMEN_ALL_WATTAGE"
when
    Item AGAMEN_ALL_WATTAGE changed to 0.0
then
    if (now.getMinuteOfDay >= 9*60+30 && now.getMinuteOfDay <= 22*60+30) {
        sendMail("MEINEADRESSE", "Bartagamen Beleuchtungsproblem", "")
    }
end
Ein Problem könnte der Wert 0.0 sein. Günstiger wäre vermutlich, mit

Code: Alles auswählen

when
    Item AGAMEN_ALL_WATTAGE changed
then
    if((AGAMEN_ALL_WATTAGE.state as Number) < 1)
zu arbeiten (wobei 1 natürlich so hoch gewählt werden kann, wie klar ist, dass die Lampe ausgefallen ist).

Ein anderes Problem dabei ist dann natürlich, dass die Rule evtl. mehrfach triggert, so dass Du auch mehrfach eine Nachricht erhältst.
Hallo,

vielen Dank für die Antwort und die dazugehörigen Informationen! Wenn ich darauf prüfen lasse, ob sich der Status verändert habe ich innerhalb weniger Minuten das Postfach voll. Du wählst Minutes of the Day rechnest die Minuten für die gewünschte Uhrzeit aus und legst so ein von bis fest, habe ich das richtig verstanden? Dadurch, dass das Terrarium natürlich nicht aus einer Lampe besteht sondern aus mehreren kleinen besteht müsste ich ja dann quasi die kleinste Wattzahl nehmen und vom Gesamtverbrauch abziehen und alles was dann darunter ist triggered?! Und dann die 1 mit diesem Wert zu ersetzen? Ich versuche das jetzt mal so ins openhab2 einzupflegen und melde mich dann ggf. nochmal! Vielen Dank nochmal und einen schönen Abend!

€: Wie würde man denn die Prüfung der Uhrzeit und die Überprüfung des States <X zusammenbringen können?


Gesendet von meinem CLT-L29 mit Tapatalk

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von udo1toni »

Einfach mit && verknüpfen.

Um zu verhindern, dass Du mit Meldungen zugemüllt wirst, bietet es sich an, dass die Rule sich merkt, ob sie schon eine Nachricht verschickt hat.

Code: Alles auswählen

var boolean bSent = false

rule "AGAMEN_ALL_WATTAGE"
when
    Item AGAMEN_ALL_WATTAGE changed
then
    if ((AGAMEN_ALL_WATTAGE.state as Number) < 1) && now.getMinuteOfDay >= 9*60+30 && now.getMinuteOfDay <= 22*60+30) {
        if(!bSent) {
            sendMail("MEINEADRESSE", "Bartagamen Beleuchtungsproblem", "")
            bSent = true
        }
    } else if((AGAMEN_ALL_WATTAGE.state as Number)>= 20) {  //
        bSent = false
    }
end
Du kannst sogar dafür sorgen, dass Du z.B. stündlich eine neue Warnmeldung bekommst, indem Du mit einem Timer die Variable wieder zurück setzt.
Der letzte Teil der Rule setzt schon mal die Variable zurück, sobald die Leistung über 20 (Watt?) steigt, also offensichtlich das Problem beseitigt wurde.
Welche Werte Du konkret setzen musst, musst Du natürlich selbst wissen ;) also wie gering darf die Leistung sein, ohne dass der Alarm los geht, wie hoch muss die Leistung sein, damit bei erneutem Einbruch (innerhalb des Zeitfensters) wieder Alarm gegeben wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Schlingelrino
Beiträge: 12
Registriert: 23. Jun 2019 09:20

Re: Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von Schlingelrino »

Erledigt :)
Zuletzt geändert von Schlingelrino am 26. Jun 2019 17:54, insgesamt 1-mal geändert.

Schlingelrino
Beiträge: 12
Registriert: 23. Jun 2019 09:20

Re: Regel die zwischen zwei Uhrzeiten nur greift

Beitrag von Schlingelrino »

Die Anfrage darüber hat sich erledigt da hat ein Komma gefehlt.

Bei Zeiten die von einem Tag auf den anderen gehen bspw von 23 Uhr auf 1 Uhr. Wie geht denn das weil:

(now.getMinuteOfDay >= 23*60 && now.getMinuteOfDay <= 1*60)

Bspw nicht greift

Antworten