peter-pan hat geschrieben: ↑21. Jan 2022 15:17
Wie sieht denn deine Regel aus ?
Code: Alles auswählen
rule "Rollo 2 WZ @ TV an"
when
Item SonyBraviaKD55X8005C_PowerStatus changed from OFF to ON
then
logInfo("Rollo 2 WZ @ TV an", "TV {} Rollo2-Level = {}% Helligkeit = {} isNight = {}", SonyBraviaKD55X8005C_PowerStatus.state, Wohnzimmer_Rollo2_Level.state , Hueoutdoorlightsensor2_Illuminance.state, isNight.state)
if(SonyBraviaKD55X8005C_PowerStatus.state == ON && Wohnzimmer_Rollo2_Level.state <= 75 && Hueoutdoorlightsensor2_Illuminance.state as Number >= 4500) {
//if(SonyBraviaKD55X8005C_PowerStatus.state == ON && Wohnzimmer_Rollo2_Level.state <= 75 && Hueoutdoorlightsensor2_Illuminance.state >= 4500|lx)
Wohnzimmer_Rollo2_LastLevel.sendCommand(Wohnzimmer_Rollo2_Level.state)
Wohnzimmer_Rollo2_Level.sendCommand(tPosALL)
logInfo("Rollo 2 WZ @ TV an", "TV {} Rollo2 Wohnzimmer auf Beschattung ({}%)", SonyBraviaKD55X8005C_PowerStatus.state, tPosALL)
}
if(SonyBraviaKD55X8005C_PowerStatus.state == ON && Wohnzimmer_Rollo2_Level.state <= 75 && isNight.state == OFF ) {
Wohnzimmer_Rollo2_LastLevel.sendCommand(Wohnzimmer_Rollo2_Level.state)
Wohnzimmer_Rollo2_Level.sendCommand(tPosALL)
logInfo("Rollo 2 WZ @ TV an", "TV {} Rollo2 Wohnzimmer auf Beschattung ({}%)", SonyBraviaKD55X8005C_PowerStatus.state, tPosALL)
logInfo("Rollo 2 WZ @ TV an", "Wohnzimmer_Rollo2_Level letzter Status: {}", Wohnzimmer_Rollo2_Level.previousState.state)
}
end
rule "Rollo 2 WZ @ TV aus"
when
Item SonyBraviaKD55X8005C_PowerStatus changed from ON to OFF
then
logInfo("Rollo 2 WZ @ TV aus", "TV {} Rollo2-Level = {}% Rollo2-LastLevel = {}% Rollo2-previousState = {}%", SonyBraviaKD55X8005C_PowerStatus.state, Wohnzimmer_Rollo2_Level.state , Wohnzimmer_Rollo2_LastLevel.state, Wohnzimmer_Rollo2_Level.previousState.state)
logInfo("Rollo 2 WZ @ TV aus", "TV {} Rollo2 Wohnzimmer zurück auf {}%", SonyBraviaKD55X8005C_PowerStatus.state, Wohnzimmer_Rollo2_LastLevel.state)
Wohnzimmer_Rollo2_Level.sendCommand(Wohnzimmer_Rollo2_LastLevel.state)
//Wohnzimmer_Rollo2_Level.sendCommand(Wohnzimmer_Rollo2_Level.previousState.state)
end
Das ist die komplette Rule die das Fenster beschattet, sobald der Fernseher an geht und wieder auf den letzten Stand bringt, wenn der TV wieder OFF geht.
Zur Zeit noch mit einem LastLevel HilfsItem, viel Loggin und Prüfung auf isNight = OFF ( wird dann später ON )
Code: Alles auswählen
2022-01-22 12:37:33.898 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - TV ON Rollo2-Level = 50% Helligkeit = 1759.9486638014696 lx isNight = OFF
2022-01-22 12:37:33.904 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - TV ON Rollo2 Wohnzimmer auf Beschattung (82%)
2022-01-22 12:37:33.910 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - Wohnzimmer_Rollo2_Level letzter Status: 50
2022-01-22 12:38:03.842 [INFO ] [ore.model.script.Rollo 2 WZ @ TV aus] - TV OFF Rollo2-Level = 82% Rollo2-LastLevel = 50% Rollo2-previousState = 82%
2022-01-22 12:38:03.844 [INFO ] [ore.model.script.Rollo 2 WZ @ TV aus] - TV OFF Rollo2 Wohnzimmer zurück auf 50%
2022-01-22 12:39:03.821 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - TV ON Rollo2-Level = 0% Helligkeit = 1588.1810142998268 lx isNight = OFF
2022-01-22 12:39:03.827 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - TV ON Rollo2 Wohnzimmer auf Beschattung (82%)
2022-01-22 12:39:03.829 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - Wohnzimmer_Rollo2_Level letzter Status: 0
2022-01-22 12:39:33.832 [INFO ] [ore.model.script.Rollo 2 WZ @ TV aus] - TV OFF Rollo2-Level = 82% Rollo2-LastLevel = 0% Rollo2-previousState = 82%
2022-01-22 12:39:33.834 [INFO ] [ore.model.script.Rollo 2 WZ @ TV aus] - TV OFF Rollo2 Wohnzimmer zurück auf 0%
Man sieht hier schön, dass previousState immer den Status vom letzten Change annimmt.
Code: Alles auswählen
2022-01-22 12:37:33.910 [INFO ] [core.model.script.Rollo 2 WZ @ TV an] - Wohnzimmer_Rollo2_Level letzter Status: 50 <-- das ist previoiusState
2022-01-22 12:38:03.842 [INFO ] [ore.model.script.Rollo 2 WZ @ TV aus] - TV OFF Rollo2-Level = 82% Rollo2-LastLevel = 50% Rollo2-previousState = 82%
Das Script funktioniert jetzt so wie gewünscht. Ich würde es aber toll finden, wenn ich auf mein LastLevel Item verzichten könnte und gegebene Mechanismen nutzen könnte. Ausserdem lerne ich wieder was dazu

EveryMinute habe ich eingebaut.
Übrigens, kann ich die beiden IF´s in der ON-Rule nicht irgendwie OR verknüpfen??