Hm-cc-rt-dn

Moin,

ich nutze aktuell openhab in verbindung mit Homegear und einem Homematic USB Stick um meine Geräte zu steuern. Die Lichtsteuerung & Co funktioniert alles einwandfrei. Nun versuche ich meine HM-CC-RT-DN Thermostate anzusteuern. Dies funktioniert zwar irgendwie aber auch irgendwie nicht.
Mal funktioniert ist das Thermostat umzustellen mal nicht. Etwa habe ich ein Denkfehler oder ich bin zu doof.

haus.items

Number H_Wohnzimmer_Temp "Mode" <temperature> () {homematic="address=MEQXXXXX, channel=4, parameter=ACTUAL_TEMPERATURE"} Number H_Wohnzimmer_Control "Mode" <temperature> () Switch H_Wohnzimmer_Mode_Auto {homematic="address=MEQXXXXX, channel=4, parameter=AUTO_MODE"} Switch H_Wohnzimmer_Mode_Boost {homematic="address=MEQXXXXX, channel=4, parameter=BOOST_MODE"} Switch H_Wohnzimmer_Mode_Comfort {homematic="address=MEQXXXXX, channel=4, parameter=COMFORT_MODE"} Switch H_Wohnzimmer_Mode_Lower {homematic="address=MEQXXXXX, channel=4, parameter=LOWERING_MODE"} Switch H_Wohnzimmer_Mode_Manu {homematic="address=MEQXXXXX, channel=4, parameter=MANU_MODE"} Number H_Wohnzimmer_Mode_Control {homematic="address=MEQXXXXX, channel=4, parameter=CONTROL_MODE"} Number H_Wohnzimmer_SET_TEMP {homematic="address=MEQXXXXX, channel=4, parameter=SET_TEMPERATURE"}

Temperatur setzen funktioniert eigentlich einwandfrei. Versuche ich aber in den Lower, Comfort oder Auto Modus zu wechseln, will dies nur manchmal gehen.

Wechseln tue ich mit folgenden Befehl
sendCommand(H_Wohnzimmer_Mode_Comfort, ON )

Hoffe ihr könnt mir helfen.

Gruß
Lazybone

Hi Lazybone,

ich versuche mich auch dabei, die Logik dieser Geräte zu verstehen, bisher mehr durch Lesen von Doku (u.a. der Datenpunktbeschreibung von eQ-3) und Beiträgen, eigene Tests kommen erst noch… Also ist das Folgende mit ganz viel Vorsicht zu genießen.
[ul][li]CONTROL_MODE ist ein Parameter, über den man den aktuellen Modus erfährt (durch Events).[/li]
[li]Es gibt 4 Betriebsmodi: Auto, Manu, Party (Urlaub…) und Boost.[/li]
[li]Für Party definiert man eine Zeitdauer (und eine Temperatur), nach deren Ablauf wieder auf Auto geschaltet wird. Der Party-Mode sieht ziemlich kompliziert aus, da gibt es noch einen String namens PARTY_MODE_SUBMIT, zu dem in der eQ-3-Doku keine weitere Erklärung steht…[/li]
[li]Boost gilt nur für die (definierbare) Boost-Zeit, danach geht es zurück auf Auto oder Manu (was halt vorher aktiv war).[/li]
[li]Die SET_TEMPERATURE kann man lesen und schreiben und “dreht das Einstellrad”, bzw. gibt die Veränderung beim Drehen am Einstellrad wieder.[/li]
[li]COMFORT_MODE und LOWERING_MODE sind eigentlich gar keine weiteren Modi, sondern “drehen das Einstellrad” auf genau die jeweils voreingestellten bzw. definierten Werte für Comfort- (Tag) und Spar- (Nacht) Betrieb. Es sind quasi zwei Werte zur Schnelleinstellung der (Soll-)Temperatur.[/li]
[li]Für die Temperaturveränderungen gilt immer: beim Manu-Mode bleibt die eingestellte Temperatur “auf ewig” (bzw. bis zur manuellen Änderung…), beim Auto-Mode wird zur nächsten Schaltzeit wieder auf das Tages-/Wochenprogramm geschaltet.[/li]
[li]Die Modi Auto und Boost schaltet man ein (Boolean), beim Modus Manu setzt man dabei auch eine Temperatur (Float).[/li][/ul]
Vielleicht gibt es ja jemanden, der das bestätigen kann bzw. eventuelle Fehler korrigieren kann…

Gruß,
HomeSweetHome

UPDATE: Im Wesentlichen habe ich das beschriebene Verhalten “experimentell” bestätigt. Dazu ein paar kleine Ergänzungen:
[ul][li]Wenn man den Boost-Mode einschaltet, dann wird in BOOST_STATE die Restzeit in Minuten heruntergezählt, aber der Update (also Events vom Heizkörperventil) scheint nicht jede Minute zu erfolgen, sondern eher alle 2 Minuten.[/li]
[li]Wenn der Boost-Mode abgelaufen ist, dann wird zwar auf den vorherigen Mode zurückgeschaltet, aber es wird kein Event für den CONTROL_MODE ausgelöst, das passiert offenbar erst, wenn sich andere Parameter ändern (oder vielleicht auch nach sehr langem Warten)[/li]
[li]Beim Manu-Mode gibt man ja eine Soll-Temperatur mit. Wenn man dann wieder auf den Auto-Mode schaltet, dann wird der Manu-Mode-Wert für diese Soll-Temperatur auf 0 gesetzt (und das wird auch per Event durchgereicht).[/li][/ul]

UPDATE 2: Weil ich es eben gefunden habe: in OpenHAB 1.x ist es nur möglich, auf die VALUES-Datenpunkte zuzugreifen (was man in “homegear -r” und dort dem Kommando “config print” sich ansehen kann). Auf die MASTER-Datenpunkte (also die Konfigurationsdaten z.B. des Wochenprogramms oder der Voreinstellungen für Eco- und Comfort-Temperatur) kann man NICHT zugreifen, das soll/wird erst in OpenHAB 2.x funktionieren.

1 Like

Hallo,

alles, was HomeSweetHome geschrieben hat, stimmt so - danke für die ausführliche Beschreibung! Hier als Ergänzung noch Info zu PARTY_MODE_SUBMIT: viewtopic.php?f=17&t=115&p=736&hilit=PARTY_MODE_SUBMIT#p736

Viele Grüße

Sathya

… und gleich noch eine Ergänzung (bei mir funktioniert seit “eben” die Heizkörper-Steuerung mit OpenHAB :slight_smile: , muss nur noch ein bisschen getestet werden):

Die OpenHAB-Items, die auf dem Heizkörper “schreibend” Aktionen auslösen sollen, habe ich mit diesem Binding anlegen:

Dies gilt für die Switche (AUTO_MODE, BOOST_MODE, LOWERING_MODE, COMFORT_MODE) und für das Number-Item (!!) MANU_MODE…

Gruß,
HomeSweetHome

…und weil’s so schön ist eine weitere Ergänzung:

Der BOOST_STATE zählt im BOOST_MODE ja die Restzeit des Boosts in Minuten herunter. Im PARTY_MODE wird offenbar auch so etwas wie eine Restzeit dieser Betriebsart angezeigt, der Wert verhält sich aber irgendwie “merkwürdig” erratisch – da scheint das Heizkörperventil nicht so ganz konsistent den Wert zu verändern (oder vielmehr gar nicht)…

Gruß,
HomeSweetHome

Moin SweetHome,

das hört sich für mich alles sehr bekannt an und in vielen Punkten kann ich deiner Beschreibung folgen, weil ich es auch so herausgefunden habe. Mit anderen Themen habe ich mich noch nicht beschäftigt (Partymode - Sollen die sich doch warm tanzen und trinken :slight_smile:).

Wärest Du so freundlich sowohl deine Icons, als auch deine Sitemap und ggf. Rules zu posten. Ich werde das natürlich im Gegenzug auch tun :slight_smile:. Dann haben wir vielleicht bald eine “große” Lösung.

Ich werde jetzt mal das Forceupdate einbauen, da bei mir das Umstellen nicht zuverlässig funktioniert.

Gruß
Thomas

Hallo Thomas,

bin (fast…) fertig mit einer (für uns…) recht brauchbar funktionierenden OpenHAB-Konfiguration und werde diese bald als Muster bereitstellen…

Gruß,
HomeSweetHome

Moin, anbei mal meine Konfiguration, die ich am Wochenende gemacht habe. Schön finde ich die Regeln noch nicht, hier fehlt mir aber gerade die Idee.

Sitemap:

Frame label="Heizung" { Text item=Ht_Br_Radiator_SetTemperature Text item=Ht_Br_Radiator_ActualTemperature Setpoint item=Ht_Br_Radiator_SetTemperature minValue=15.0 maxValue= 30.0 step=0.5 Switch item=Ht_Br_Radiator_Mode mappings=[0="Auto", 1="Manual", 2="Boost", 3="Tag", 4="Nacht"] }

Anzeige der Soll- und der Ist Temperatur, dann der Setpoint um die Solltemperatur zu ändern und am Schluss die buttons für die Funktionen Automode usw.

Items:

Group 	gHt_Br_Radiator 					"Heizungs Schlafzimmer"
Number 	Ht_Br_Radiator_SetTemperature 		"Temperatur (Soll) autom. [%.1f °C]" <sysHeating> (gHt_Br_Radiator) { homematic="address=LEQ..., channel=4, parameter=SET_TEMPERATURE" }
Number 	Ht_Br_Radiator_ActualTemperature 	"Temperatur (Ist) [%.1f °C]" <sysTemperature> (gHt_Br_Radiator) { homematic="address=LEQ..., channel=4, parameter=ACTUAL_TEMPERATURE" }
Switch	Ht_Br_Radiator_BoostMode			"Boost Mode"  <sysSwitch> (gHt_Br_Radiator) {homematic="address=LEQ..., channel=4, parameter=BOOST_MODE"}
Number	Ht_Br_Radiator_BoostState			"Boost State [%d min]"  <sysSwitch> (gHt_Br_Radiator) {homematic="address=LEQ..., channel=4, parameter=BOOST_STATE"}
Switch	Ht_Br_Radiator_AutoMode				"Auto Mode"  <sysSwitch> (gHt_Br_Radiator) {homematic="address=LEQ..., channel=4, parameter=AUTO_MODE"}
Number 	Ht_Br_Radiator_ManualMode	 		"Temperatur (Soll) man. [%.1f °C]" <sysSwitch> (gHt_Br_Radiator) { homematic="address=LEQ..., channel=4, parameter=MANU_MODE" }
Switch	Ht_Br_Radiator_ComfortMode			"Comfort Mode"  <sysSwitch> (gHt_Br_Radiator) {homematic="address=LEQ..., channel=4, parameter=COMFORT_MODE"}
Switch	Ht_Br_Radiator_LoweringMode			"Lowering Mode"  <sysSwitch> (gHt_Br_Radiator) {homematic="address=LEQ..., channel=4, parameter=LOWERING_MODE"}
Number 	Ht_Br_Radiator_ControlMode	 		"Control Mode [%d]" <sysSwitch> (gHt_Br_Radiator) { homematic="address=LEQ..., channel=4, parameter=CONTROL_MODE" }
Number	Ht_Br_Radiator_Mode					"Modus" <sysSwitch> (gHt_Br_Radiator)

Hier nur die Item, die gebraucht werden, Batteriestatus usw. sind natürlich auch definiert.

Rules:

rule "set_bedroom_radiator_mode"
when

	Item Ht_Br_Radiator_Mode changed
	
then
	switch (Ht_Br_Radiator_Mode.state) 
	{
		case 0: { // Auto Mode
			Ht_Br_Radiator_AutoMode.sendCommand(ON)
		}
		case 1: { // Manual Mode
			Ht_Br_Radiator_ManualMode.sendCommand(Ht_Of_Radiator_SetTemperature.state as DecimalType)
		}
		case 2: { // Boost Mode
			Ht_Br_Radiator_BoostMode.sendCommand(ON)
		}
		case 3: { // Tag / Comfort Modus
			Ht_Br_Radiator_ComfortMode.sendCommand(ON)
		}
		case 4: { // Nacht / Lowering Modus
			Ht_Br_Radiator_LoweringMode.sendCommand(ON)
		}
	}
end

rule "update_bedroom_radiator_mode"
when

	Item Ht_Br_Radiator_ControlMode changed
	
then
	switch (Ht_Br_Radiator_ControlMode.state) 
	{
		case 0: { // Auto Mode
			Ht_Br_Radiator_Mode.postUpdate(0)
		}
		case 1: { // Manual Mode
			Ht_Br_Radiator_Mode.postUpdate(1)
		}
		case 3: { // Boost Mode
			Ht_v_Radiator_Mode.postUpdate(2)
		}
	}
end

Die erste Regel löst quasi das passende Kommando bei entsprechendem Tastendruck aus und die zweite Regel passt den Tastenstatus an, wenn z.B. aus dem Boostmode zurückgeschaltet wird.

Wie oben schon angeführt muss ich im Augenblick für jeden Thermostat eigene Regeln anlegen, was nicht wirklich optimal ist. Vielleicht hat ja jemand eine Idee.

Bin gespannt auf weitere Lösungen.

Gruß
thoams

Hier ist nun meine aktuelle (etwas gekürzte) OpenHAB-Konfiguration (OH 1.7.1). Schwerpunkt ist die Heizkörper-Steuerung. Aber es wird auch eine Steckdose geschaltet und eine Fernbedienung wird benutzt. Dazu noch ein bisschen NetAtmo-Wetter und Astro-Daten. Wettervorhersage ist geplant, aber noch nicht fertig. OpenHAB läuft auf einem Raspi 2, derzeit läuft Homegear auf einem anderen Raspi 2, aber letztlich soll beides auf einer Kiste laufen.

Es werden insgesamt 7 Heizkörper gesteuert, die Konfiguration enthält nur zwei als Muster. Für die Persistence verwende ich rrd für die Grafiken und map für das Speichern des letzten (Einstellungs-)Wertes (s.u.).

[ul][li]Das Ganze ist ziemlich “Work in Progress” – funktioniert bei uns, ist aber noch nicht gut strukturiert.[/li]
[li]Für jeden Heizkörper gibt es eigenen Regeln und Einstellungsdaten, das kann man bestimmt noch wartungsfreundlicher und geschickter programmieren, aber für meine 7 Stück reicht das auch so. Cut-Copy-Paste halt, anstatt Funktionen :wink:.[/li][/ul]
Was bietet das Setup für Funktionen?

[ul][li]Eine Funksteckdose, die eine Lampe schaltet. Diese Lampe wird nach 30 Minuten wieder ausgeschaltet. Die Knöpfe 1 und 2 der Fernbedienung schalten ein bzw. aus. Ein bisschen Daten werden aufgezeichnet und eine Leistungsgrafik erzeugt.[/li]
[li]Jede Menge Heizkörper-Logik! Normalerweise laufen alle Heizkörper in einem automatischen Wochenprogramm, welches mit dem Homematik-Konfigurator (oder direkt am Heizkörper) eingestellt wird. Das Wochenprogramm bei uns ist ziemlich ähnlich dem Standard-Programm der Heizkörperventile, wie es Homematic ausliefert: eine Nacht- und eine Tagabsenkung.[/li]
[li]Jede Nacht um Mitternacht wird auf dieses Automatik-Programm geschaltet.[/li]
[li]Sodann: Jeder Heizkörper kann auf die Modi “Automatik” und “Manuell” geschaltet werden, außerdem kann der Boost-Mode eingeschaltet werden (Boost-Restzeit wird dann angezeigt). Der Urlaubs/Party-Modus wird nur angezeigt, hier fehlen noch weitere Funktionen.[/li]
[li]Soll-Temperatur: die kann in jedem Modus individuell eingestellt werden und nach kurzer Verzögerung wird der neue Wert an den Heizkörper gesendet. Die Ist-Temperatur wird angezeigt.[/li]
[li]Spezialität: es kann für jeden Heizkörper eine “Spar”- und eine “Komfort”-Temperatur definiert werden. Achtung: die haben NICHTS mit den entsprechenden Definitionen der Homematic-Ventile zu tun! Bei meinem Setup sind das “Schnellverstellungen”, die zum Umschalten in den manuellen Modus mit “Spar” bzw. “Komfort” als Soll-Temperatur führen.[/li]
[li]Zur Bequemlichkeit kann man alle Heizkörper zugleich pauschal auf Auto, Spar oder Komfort umschalten. Es wird angezeigt, wann der letzte dieser Schaltvorgänge gemacht wurde. Wozu? Wenn man weiß, dass man z.B. länger abwesend ist, dann klickt man “Spar” und die Wohnung geht insgesamt auf Niedrig-Temperatur (unabhängig vom Wochenprogramm, Rückschaltung um Mitternacht). Desgleichen bei “Komfort”: wenn man z.B. die Tagabsenkung abschalten will.[/li]
[li]Alles wird per Regeln gesteuert, weil man auch die Fernbedienung (Knöpfe 5, 6 und 8) verwenden kann, um diese Schnellverstellung für die ganze Wohnung durchzuführen. Ein Bequemlichkeitsfaktor…[/li][/ul]
Abgerundet wird die Konfiguration mit diversen Grafiken zur Heizkörper-Einstellung (Ist- und Soll-Temperaturen und Ventil-Öffnung), dazu ein paar Wartungsdaten (Empfangs-Feldstärke, Batterie-Status und Fehleranzeige).

Hinzu kommen ein paar Astro-Daten, dazu braucht es wohl kaum Erläuterungen.

Spannender ist noch das Auslesen von NetAtmo-Wetterstationen OHNE das Binding zu verwenden. Zweck ist die grafische Erfassung einer öffentlichen Station in der Umgebung (Druck, Temperatur, rel. Feuchte und Regen). Das Binding unterstützt das nicht, deswegen habe ich auf die Schnelle ein “sh”-Skript zusammengehackt, dass per “curl” die Daten abholt und per REST-API in OpenHAB hineinpumpt.

So, das war es, vielleicht hilft es dem einen oder anderen ja weiter…

Gruß,
HomeSweetHome
OpenHABconfig.zip (11.1 KB)

1 Like

Danke Dir. Werde ich mir am WE mal ansehen.

Thomas

A post was split to a new topic: HM-CC-RT-DN Wochenprogramm