Moin! Ich denke ich habe es gelöst. Bisherige Tests waren erfolgreich.
Meine Anforderungen
Der ECO-Switch soll die Heizungen wie folgt steuern:
-
ECO-Taster
a) Alle Thermostate sollen sofort auf ECO_TEMPERATURE geregelt werden.
b) Der Wochenplan soll auf unbestimmte Zeit ausgesetzt werden.
-
AUTO-Taster
c) Alle Thermostate sollen wieder nach dem Wochenplan gesteuert werden.
d) Die Thermostate sollen sofort auf die momentan gültige Temperatur des Wochenplans geregelt werden.
Ich hatte die meisten Probleme mit d). Wenn ich den CONTROL_MODE auf den Wert “AUTO-MODE” gesetzt habe, hat das Thermostat zwar in der Anzeige auf “Auto” gewechselt, die Temperatur blieb aber unverändert. Wechselt man per Taste am Thermostat selbst auf “Auto” ist das anders. Dann holt es sich den momentan gültigen Wert aus dem Wochenplan.
Nach etwas weiterer Recherche hier im Forum und genauerem Lesen der Doku des Thermostats, setze ich das jetzt über die Action AUTO_MODE um. Siehe da: Das Thermostat wechselt nicht nur in den Auto Modus, es wechselt auch auf die momentan gültige Temperatur des Wochenplans! Genau was ich wollte
Ebenfalls durch genaueres Lesen der Doku, fiel mir dann auch auf, dass der MANU_MODE gar keine Action ist, wie der Name eigentlich vermuten lässt (analog zu AUTO_MODE und BOOST_MODE), sondern eine Temperatur. Also schreibe ich die ECO_TEMPERATURE jetzt nicht mehr in SET_TEMPERATURE, sondern in den MANU_MODE.
So schaut meine OpenHAB Rule jetzt aus (beispielhaft für ein Thermostat):
rule "SwitchAllTo_AUTO_ECO"
when
Item MAX_ECO_Switch received update
then
val status = triggeringItem.state.toString
// AUTO-MODE
if(status.equals("ON")) {
logDebug("eq3max", "SwitchAllTo_AUTO (" + status + ")")
TH_Badezimmer_AUTO_MODE.sendCommand(ON)
}
// ECO-MODE
else if(status.equals("OFF")) {
logDebug("eq3max", "SwitchAllTo_ECO (" + status + ")")
TH_Badezimmer_MODE.sendCommand("MANU-MODE")
TH_Badezimmer_MANU_TEMP.sendCommand(TH_Badezimmer_ECO_TEMP.state.toString)
}
end
Hier die Item Definitionen:
// MAX! ECO Switch
Switch MAX_ECO_Switch_ECO { channel="homematic:HG-BC-PB-2-WM:ee596c4d:KEQ0373911:1#PRESS" }
Switch MAX_ECO_Switch_AUTO { channel="homematic:HG-BC-PB-2-WM:ee596c4d:KEQ0373911:2#PRESS" }
Switch MAX_ECO_Switch "MAX! ECO Switch"
// ECO_TEMPERATURE
Number TH_Badezimmer_ECO_TEMP "ECO Temperatur [%.1f °C]" <Temperature_cold> { channel="homematic:HG-BC-RT-TRX-CyG-3:ee596c4d:OEQ2122374:1#ECO_TEMPERATURE" }
// CONTROL_MODE
String TH_Badezimmer_MODE "Modus" <Heating> { channel="homematic:HG-BC-RT-TRX-CyG-3:ee596c4d:OEQ2122374:1#CONTROL_MODE" }
// AUTO_MODE
Switch TH_Badezimmer_AUTO_MODE { channel="homematic:HG-BC-RT-TRX-CyG-3:ee596c4d:OEQ2122374:1#AUTO_MODE" }
// MANU_MODE
Number TH_Badezimmer_MANU_TEMP "Manuell [%.1f °C]" <Temperature> { channel="homematic:HG-BC-RT-TRX-CyG-3:ee596c4d:OEQ2122374:1#MANU_MODE" }
Und hier die Rules, die die beiden Taster des ECO Switch auf ein Switch-Item umlegen:
rule "MAXECOSwitch_ECO_Pressed"
when
Item MAX_ECO_Switch_ECO received update
then
val status = triggeringItem.state.toString
MAX_ECO_Switch.sendCommand(OFF)
logDebug("eq3max", "MAX_ECO_Switch_ECO: " + status)
end
rule "MAXECOSwitch_AUTO_Pressed"
when
Item MAX_ECO_Switch_AUTO received update
then
val status = triggeringItem.state.toString
MAX_ECO_Switch.sendCommand(ON)
logDebug("eq3max", "MAX_ECO_Switch_AUTO: " + status)
end
@job @pmayer In Node-Blue habe ich jetzt mal reingeschaut. Sieht sehr interessant aus. Da werde ich mich definitiv genauer mit befassen.