Regel wird nicht berücksichtigt, obwohl event eintrifft

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
lemon
Beiträge: 6
Registriert: 4. Mär 2018 22:32

Regel wird nicht berücksichtigt, obwohl event eintrifft

Beitrag von lemon »

Guten Morgen, Leute!

Hab mir da nach Durchlesen eines interessanten Beitrages (danke, Michael!) was zusammengebastelt, um meine Tiefkühltruhe zu überwachen. An dieser hängt ein Sonoff POW, der den aktuellen Stromverbrauch sowie die Wh misst, die in den letzten 5 Minuten verbraucht worden sind. Aufgrund dieser Werte kann man feststellen, ob das Gerät gerade aktiv kühlt oder nicht. Im Falle einer Status-Änderung würde ich gerne per Telegram darüber informiert werden (also Meldung, wenn Gerät beginnt, aktiv zu kühlen, und Meldung, wenn wieder passiv gekühlt wird).

Dazu habe ich folgende Items angelegt:

Code: Alles auswählen

Number Tiefkuehltruhe_Power "Tiefkuehltruhe Leistung [%.0f W]" <energy> (gPower,gCellar) {mqtt="<[mosquitto:sonoff_pow_tiefkuehltruhe/tele/SENSOR:state:JSONPATH($.ENERGY.Power)]"}
Number Tiefkuehltruhe_PowerAverage  "Tiefkuehltruhe 5-min Durchschnitt [%.0f Wh]" <energy> (gPower,gCellar) {mqtt="<[mosquitto:sonoff_pow_tiefkuehltruhe/tele/SENSOR:state:JSONPATH($.ENERGY.Period)]"}
Number Tiefkuehltruhe_OpState "Tiefkuehltruhe [MAP(tiefkuehltruhe_state.map):%s]" <tiefkuehltruhe_2> (Tiefkuehltruhe)
Tiefkuehltruhe_Power bezeichnet die aktuelle Leistung, Tiefkuehltruhe_Power den Verbrauch der letzten 5 Minuten, Tiefkuehltruhe_OpState den Zustand derTiefkühltruhe, der über die Regeln definiert wird.

In den Regeln steht folgendes:

Code: Alles auswählen

val String filename = "tiefkuehltruhe.rules"

val Number MODE_OFF = 0
val Number MODE_ACTIVE = 1

rule "Tiefkuehltruhe state: Power changed"
when
    Item Tiefkuehltruhe_Power changed or
    Item Tiefkuehltruhe_PowerAverage changed
then
    logInfo(filename, "Tiefkuehltruhe state: Power changed to " + Tiefkuehltruhe_Power.state)
    logInfo(filename, "Tiefkuehltruhe state: Average power (last 5 minutes) changed to " + Tiefkuehltruhe_PowerAverage.state)

    if (Tiefkuehltruhe_PowerAverage.state > 1) Tiefkuehltruhe_OpState.sendCommand(MODE_ACTIVE)
    else Tiefkuehltruhe_OpState.sendCommand(MODE_OFF)
end

// Tiefkühltruhe ein
rule "Tiefkuehltruhe ein"
when
    Item Tiefkuehltruhe_OpState changed from MODE_OFF to MODE_ACTIVE
then
    logInfo(filename, "Tiefkuehltruhe ein")
    sendTelegram("mytelegramchannel", "Tiefkühltruhe ein.")
end

// Tiefkühltruhe aus
rule "Tiefkuehltruhe aus"
when
    Item Tiefkuehltruhe_OpState changed from MODE_ACTIVE to MODE_OFF
then
    logInfo(filename, "Tiefkuehltruhe aus")
    sendTelegram("mytelegramchannel", "Tiefkühltruhe aus.")
end


// Telegram-Versand bei Status-Änderungen
rule "Status"
when
    Item Tiefkuehltruhe_OpState changed
then
logInfo(filename, "Änderung!")
    sendTelegram("mytelegramchannel","Änderung!")
Die events.log sieht folgendermaßen aus:

Code: Alles auswählen

2018-03-12 04:24:30.201 [vent.ItemStateChangedEvent] - Tiefkuehltruhe_OpState changed from 0 to 1
2018-03-12 05:04:30.399 [vent.ItemStateChangedEvent] - Tiefkuehltruhe_OpState changed from 1 to 0
2018-03-12 07:24:31.115 [vent.ItemStateChangedEvent] - Tiefkuehltruhe_OpState changed from 0 to 1
2018-03-12 08:09:31.311 [vent.ItemStateChangedEvent] - Tiefkuehltruhe_OpState changed from 1 to 0
Soweit so gut, allerdings erhalte ich per Telegram nur die "Status"-Regel-Mitteilung, nicht die anderen beiden, die eigentlich für mich relevant wären. Und das obwohl der Status "OpState" doch korrekt geändert wird (von 0 auf 1 und von 1 auf 0, wie in den Regeln "Tiefkuehltruhe ein" und "Tiefkuehltruhe aus" angegeben).

Kann sich dieses Phänomen jemand erklären??? Vielleicht ein Tippfehler???

Vielen vielen Dank!

Andreas

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41

Re: Regel wird nicht berücksichtigt, obwohl event eintrifft

Beitrag von hr3 »

Erste Vermutung, Tiefkuehltruhe_OpState ist vom Typ Number und kann damit nicht den Status MODE_ACTIVE bzw. MODE_OFF haben. MAP wirkt sich nur auf die Anzeige aus.

lemon
Beiträge: 6
Registriert: 4. Mär 2018 22:32

Re: Regel wird nicht berücksichtigt, obwohl event eintrifft

Beitrag von lemon »

Hi hr3,

Deine Vermutung war richtig, das wundert mich allerdings, da ich die Regeln fast 1:1 von einem funktionierenden Beispiel übernommen habe. :shock:

lemon
Beiträge: 6
Registriert: 4. Mär 2018 22:32

Re: Regel wird nicht berücksichtigt, obwohl event eintrifft

Beitrag von lemon »

Ok, nun hat sich alles geklärt, da war dem Autor des ursprünglichen Skripts beim Kopieren ein Fehler unterlaufen, deshalb hat das Ganze nicht funktioniert.

Antworten