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