Regel wird nicht berücksichtigt, obwohl event eintrifft
Verfasst: 12. Mär 2018 09:41
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:
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:
Die events.log sieht folgendermaßen aus:
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
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)
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!")
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
Kann sich dieses Phänomen jemand erklären??? Vielleicht ein Tippfehler???
Vielen vielen Dank!
Andreas