HG-HM-CC-RT-DN Heizungsmodus schalten per Rule

Hallo zusammen,
wenn ich den Thermostaten per Regel in einen vordefinierten Modus schalten möchte z.B. Comfort-Modus wird das im Log ausgeführt aber die Änderung der Temperatur wird am Thermostat nicht ausgeführt.
Die Änderung der Temperatur funktioniert.

hier mal das Log:
2018-11-07 20:44:01.099 [ome.event.ItemCommandEvent] - Item ‘Arbeitszimmer_Heizung_Scene_Heating’ received command 3

2018-11-07 20:44:01.127 [vent.ItemStateChangedEvent] - Arbeitszimmer_Heizung_Scene_Heating changed from 0 to 3

2018-11-07 20:44:31.265 [ome.event.ItemCommandEvent] - Item ‘Arbeitszimmer_HZ_SET_TEMPERATURE’ received command 20

2018-11-07 20:44:31.291 [vent.ItemStateChangedEvent] - Arbeitszimmer_HZ_SET_TEMPERATURE changed from 20.50 to 20

2018-11-07 20:44:38.724 [ome.event.ItemCommandEvent] - Item ‘Arbeitszimmer_HZ_SET_TEMPERATURE’ received command 19.5

2018-11-07 20:44:38.742 [vent.ItemStateChangedEvent] - Arbeitszimmer_HZ_SET_TEMPERATURE changed from 20.00 to 19.5

und die Regel:
when
Item Arbeitszimmer_Heizung_Scene_Heating received command
then {
CTRL_Heating_Arbeitszimmer_HZ?.members.forEach(Channel|
{
logInfo("Heating rules - ", Channel.name)
Channel.postUpdate(OFF)
}
)
switch(receivedCommand) {
case 0 : {
logInfo(“Heating rules”, “Entering normal mode.”)
Arbeitszimmer_Heizung_STATE_AUTO.sendCommand(ON)
}
case 1 : {
logInfo(“Heating rules”, “Entering boost mode.”)
Arbeitszimmer_Heizung_STATE_BOOST.sendCommand(ON)
}
case 2 : {
logInfo(“Heating rules”, “Entering eco mode.”)
Arbeitszimmer_Heizung_STATE_ECO.sendCommand(ON)
}
case 3 : {
logInfo(“Heating rules”, “Entering comfort mode.”)
Arbeitszimmer_Heizung_STATE_COMFORT.sendCommand(ON)
}
}
}
end

hier der entsprechende Switch:
Switch Arbeitszimmer_Heizung_STATE_COMFORT (CTRL_Heating_Arbeitszimmer_HZ) { channel=“homematic:HG-HM-CC-RT-DN:ca2a80c3:MEQ1779386:4#COMFORT_MODE” }

Im Moment sehe ich nicht wo ich den Fehler habe
Hat jemand eine Idee woran das liegen kann.

Viele Grüße
Rocla

Nutz doch bitte die Formatierungsfunktionen des Forums, danke :slight_smile:
grafik

Also mir scheint es, als wenn die Regel fehlerhaft definiert ist. Zumindest ist mir die Syntax mit dem Fragezeichen unbekannt:

CTRL_Heating_Arbeitszimmer_HZ?.members...

Ich bin auch immer wieder erschrocken, dass anscheinend alle noch von dem uralten openHAB-Beispiel abschreiben. (Mit Ziffern als Modi, etc.)

Da unterstützt openHAB mittlerweile weit besseres (ab openHAB 2.3). Hier ist meine rule, die genau das macht (für alle Heizkörper):

import org.eclipse.smarthome.model.script.ScriptServiceUtil

rule "set modes"
when 
    Member of gSetModeString received command
then
    val setitem = triggeringItem     
    val switchitem = ScriptServiceUtil.getItemRegistry.getItem(setitem.name.split("_").get(0) + "_" + setitem.state.toString)   
    switchitem.sendCommand(ON)
end

Hier ist einer der Switches in der Sitemap, benötigt man pro Heizung:

Switch item=F2H_SET_MODE mappings=["AUTO_MODE"="Auto", "BOOST_MODE"="Boost", "LOWERING_MODE"="Eco", "COMFORT_MODE"="Comfort"]

Hier die entsprechenden Items zu dieser Heizung. Es muss das Wandthermostat inklusive des Heizkörpers geschaltet werden, da Kommandos nicht weitergegeben werden. Daher sind sowohl Wand als auch Heizkörperthermostat als Kanalinformation vorhanden. Wenn das Wandthermostat nicht vorhanden ist, dann muss man es halt weglassen. Wenn man zwei Heizkörper im Raum hat, dann sollte man beide angeben.

String F2H_SET_MODE "F2 [%s]" (gSetModeString)
Switch F2H_AUTO_MODE "Auto F2" { channel = "homematic:HG-HM-TC-IT-WM-W-EU:homegear:OEQ1668378:2#AUTO_MODE,homematic:HG-HM-CC-RT-DN:homegear:NEQ0875870:4#AUTO_MODE" }
Switch F2H_BOOST_MODE "Boost F2" { channel = "homematic:HG-HM-TC-IT-WM-W-EU:homegear:OEQ1668378:2#BOOST_MODE,homematic:HG-HM-CC-RT-DN:homegear:NEQ0875870:4#BOOST_MODE" }
Switch F2H_LOWERING_MODE "Eco F2" { channel = "homematic:HG-HM-TC-IT-WM-W-EU:homegear:OEQ1668378:2#LOWERING_MODE,homematic:HG-HM-CC-RT-DN:homegear:NEQ0875870:4#LOWERING_MODE" }
Switch F2H_COMFORT_MODE "Comfort F2" { channel = "homematic:HG-HM-TC-IT-WM-W-EU:homegear:OEQ1668378:2#COMFORT_MODE,homematic:HG-HM-CC-RT-DN:homegear:NEQ0875870:4#COMFORT_MODE" }

Man muss die Kommandos des Switches exakt wie den Namen des Items benennen, ansonsten funktioniert die Logik nicht.

Ich denke, ich muss meine Heizungssteuerung mal schön aufschreiben…

2 Likes

Ja, du hast Recht, bin mit der Konfiguration aus OH1.8 auf OH2 umgestiegen. In der alten Welt funktionieren die Modies einwandfrei :slightly_smiling_face: Ich werde am WE mal testen.
Ist auch erst nicht aufgefallen, da ich über eine Anwesenheits Rule die Etagen komplett geschaltet habe.
Vielen Dank,
VG Rocla

Sorry, war nicht böse gemeint. Ist natürlich klar dass man nicht unbedingt alles umstellt. Ich hatte deinen Post so verstanden, dass du das alles gerade neu gebaut hattest.

Hab ich so auch nicht aufgefasst, freu mich schon auf den Testlauf :grinning:

Hey Job,
sorry für die späte Rückmeldung, aber ich bin an einem kleinen Problem hängen geblieben.
Ich bekomme in der Rule die Fehlermeldung:The name 'ScriptServiceUtil' cannot be resolved
Hab bis jetzt noch keine Lösung gefunden.
Hast du eine Idee?
VG Rocla

Ja, klar. Da fehlt die Referenz. Die habe ich natürlich vergessen, die habe ich in jeder rule-Datei oben drin:

import org.eclipse.smarthome.model.script.ScriptServiceUtil

Ich habe die rule korrigiert, falls jemand das später findet

Danke, die Rule funktioniert jetzt.

21:37:49.307 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'AZ_SET_MODE' received command LOWERING_MODE
21:37:49.325 [INFO ] [smarthome.event.ItemStateChangedEvent] - AZ_SET_MODE changed from COMFORT_MODE to LOWERING_MODE
21:37:49.527 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'AZ_LOWERING_MODE' received command ON
21:37:49.537 [INFO ] [smarthome.event.ItemStateChangedEvent] - AZ_LOWERING_MODE changed from NULL to ON
21

Aber die Temperatur wird denoch nicht Absenktemperatur geändert.

Hier mal der Fehler:
{
“resource”: “/z:/rules/heizung.rules”,
“owner”: “generated_diagnostic_collection_name#0”,
“code”: “org.eclipse.xtext.diagnostics.Diagnostic.Linking”,
“severity”: 8,
“message”: “The method or field ScriptServiceUtil is undefined”,
“startLineNumber”: 6,
“startColumn”: 22,
“endLineNumber”: 6,
“endColumn”: 39
}
und die Rule:
import org.eclipse.smarthome.model.script.ScriptServiceUtil

rule “Arbeitszimmer Modus”
when
Member of gAZSetModeString received command
then
val setitem = triggeringItem
val switchitem = ScriptServiceUtil.getItemRegistry.getItem(setitem.name.split("").get(0) + "" + setitem.state.toString)
switchitem.sendCommand(ON)
end

Hast du noch eine Idee?

Was mich verwundert ist, das bei der Lösung mit den Ziffern für den Modus, sowie auch bei deiner Lösung immer das Item/Switch reagiert haben, aber an dem Thermostaten keine Temperaturänderung erfolgt ist.
Es gab auch keine Fehlermeldung.
Das ist das Merkwürdige.

Temperaturveränderung erfolgt bei mir auch nicht, wohl aber eine Änderung im Heizverhalten.

Beim Comfort Mode kann man das direkt gut sehen, beim Eco Mode eher nicht, da muss der Raum ja erstmal runterkühlen.

Eigentlich habe ich dann immer über #SET_TEMPERATURE die aktuell gewählte/geänderte Temperatur gesehen.

OK, das ist komisch. Ich habe das gestern mal bei mir ausprobiert und habe auch keine Änderung in der Set-Temperatur gehabt, dafür wurde aber das Ventil geöffnet, und weiter geheizt.

Bist du sicher, dass das über die Set-Temperatur ging?

Ja, du kannst ja über #SET_TEMPERATURE auch die Temperatur direkt vorwählen, das ist dann der eingestellte Wert.
Ich werde jetzt noch ein wenig testen und dir dann berichten.

Ja, du hast recht. Die Set-Temperatur wird umgesetzt. Habe das aber nicht gesehen, weil ich aufs Wandthermostat geschaut habe, das ist zur Zeit aber irgendwie asynchron. Muss ich neu pairen.

Der Heizkörper hat die Set-Temperatur angepasst und auch das Ventil geöffnet.

So, ich habe jetzt das Wandthermostat neu gepairt und sofort wird auch die entsprechende Temperatur umgesetzt. Funktioniert also exakt so wie erwartet.

Guten Morgen job
und… hast Du Deine Heizungssteuerung schon “mal schön aufgeschrieben”?
(Ich gehöre auch zu denen, die immer noch das “uralte openHAB-Beispiel abgeschrieben haben” und würde das gerne mit dem Umstieg auf einen Raspi4 ändern. Deine kurzen Auszüge vom November 2018 reichen mir als Laien leider nicht…
Gruß, Tom

Hi @tatom

leider noch nicht. Das ist aber auch gut so, da ich mittlerweile fast alles in node-blue mache. :wink:
openHAB ist nur noch bei der Bedienoberfläche und den Historische Daten in Benutzung.

Ich werde das aber mal in Angriff nehmen.

Hier mal ein grundsätzlicher Überblick:

  • Grundsteuerung über Heizprofile (Über Admin-UI oder php)
  • Anpassung über Timer in Node Blue (30 Minuten vorm Wecker etc., nachts Rücksetzen auf Auto)
  • Anpassung über Taster in Node Blue
  • Anpassung über Limiter in Node Blue
  • Anpassung über openHAB Bedienoberfläche (exakte Namensgebung der Items vorausgesetzt, eine Rule)

Die Anpassungen beschränken sich darauf, entweder Eco/Comfort/Boost einzuschalten oder aber die SetTemperature zu begrenzen.

Viele Grüße

1 Like