HM-CC-RT-DN in Verbindung mit einem Karmin

Moin Leute,
ich habe seit längeren ein recht lästiges Problem. Folgende Szenario:
Ich habe im Wohnzimmer 2x HM-CC-RT-DN (Thermostat), 1xHM-TC-IT-WM (Wandthermostat) welche an einer CCU2 angemeldet sind. Gesteuert wird alles über IPS. In der CCU habe ich alle ich eine Gruppe gepackt. Die Werte werden ausgelesen und MODE und Temperaturen können gesetzt werden.

Zusätzlich steht im Wohnzimmer ein Karmin.

Wenn der Karmin nun AN ist (wird durch eine Variable geregelt), soll IPS mit folgenden Befehlen die Heizung im Wohnzimmer komplett deaktivieren, also den Ventielöffnungsgrad auf 0 stellen:


HM_WriteValueFloat(51217,"MANU_MODE", 1);
HM_writeValueFloat(51217, "SET_TEMPERATURE", 0.0);

statt die Heizung auszumachen stellt er den Ventielöffnungsgrad aber auf 99% Der Karmin ist also an und zusätzlich laufen beide Heizkörper. Das ist natürlich nicht der Sinn der Sache… Auf den Displays der Thermostate steht „OFF“. Ich habe es auch schon mit einer Einstellung von 4,5°C versucht, klappt aber auch nicht.

Hat einer ne Idee?

Und was passiert, wenn Du nichts machst? Die Regelung erkennt, dass es wärmer ist als gefordert und schliesst die Ventile.

Ich logge die Ventilöffnung und die sind zu. Allerdings habe ich noch die CCU1, die alten Ventile und den alten Wandsensor.

So die Theorie… Wenn ich gar nichts mache verhält es sich genau so. Der Typ mit dem loggen war schonmal richtig gut. Ich hatte bis jetzt in IPS immer nur das Wandthermostat eingerichtet und dem die Werte gegeben. Da die in einer Gruppe sind gibt der die Werte dann ja weiter. Um zu loggen habe ich die beiden Thermostate nun aber mal angelegt und siehe da: Beide zeigen eine aktuelle Temperatur von nur 3,8°C an. Der Wandthermostat zeigt dagegen im Moment 29°C. Wenn die denken das hier nur 3,8°C sind, wundert es mich nicht dass sie so aufdrehen… merkwürdigerweise tritt dass Problem nur auf wenn der Karmin an ist. Ansonsten funktionieren die ganz normal…

Ich werde die Gruppe nochmal auflösen und neu anlegen. Vielleicht hilft das ja schon.

Hallo ssternheim,

da du deine Thermostate in einer Gruppe zusammengefasst hast, gehst du davon aus, dass das Senden von Daten an das Wandthermostat (WT) genügt. Davon war ich auch ausgegangen. Als ich das Script von swifty zur Steuerung der Heizung via WebFront für mich umgearbeitet habe https://www.symcon.de/forum/threads/21180-Heizkörperthermostat-Heizprogramme-per-WebFront-einstellen?highlight=heizung+webfront habe ich damals diverse Tests gemacht bzgl. der Gruppensteuerung.

Ich kopiere dir mal meine Notizen aus meiner Steuerung hier rein. Vielleicht hilft dir dies um zu erkennen, dass nicht alles was an das WT gesendet wird, auch bei den HT ankommt. Ich selbst steuere seit dem nur noch über die Gruppenfunktion via hmxml, um das mehrfache Senden an das WT und die HT zu vermeiden.

/*TEST 1.9.16 ====================================================================

Die Temperaturen Comfort, Eco sowie die Temperaturen + und - werden vom WT an
das HT übertragen, wenn nur die Daten in das WT geschrieben werden. Dies dauert
ca. 2 Minuten. Dabei ergibt sich das Problem, dass wenn zunächst Boost gestartet
war und man dann die Temperatur + oder - verändert, dass am HT weiterhin der
Boost Modus läuft. Aus diesem Grund müssen die Befehle sowohl an das WT als
auch an das HT gesendet werden, was den Duty Cycle erhöht.

Werden jedoch AUTO, MANU und BOOST an das WT übertragen, so erfolgen
keinerlei Weitergaben an das HT. Dabei hat AUTO den
CONTROL_MODE = Null, MANU = 1 und BOOST = 3. Den Boost Wert bekommt man aller-
dings in der Konsole nicht angezeigt, da das Profil nur 0 und 1 kennt.
Party nutze ich nicht.

Nach Ablauf der Boost Zeit wechselt der Modus des HT und WT wieder zurück in den
Modus, von welchem aus der Boost Modus gestartet wurde.

Dies gilt auch bei Eingabe über das WebGui, wo die 3 Modi nur funktionieren, wenn
diese über die Gruppe Heizung bedient werden. Dies soll wohl auch so ein siehe
http://homematic-forum.de/forum/viewtopic.php?f=19&t=32264&p=301864&hilit=boost+wandthermostat#p301864

Direkt am WT funktionieren alle Modi so wie sie es sollen und die Daten werden
an das HT übertragen.

Aus diesem Grund erfolgt die Modus-Übertragung per IPS immer an WT und HT.
Zwischen dem Senden könnte eine Pause erfolgen, um Kommunikationsstörungen zu
vermeiden.

Interessant wäre, wenn man die Gruppen direkt ansprechen könnte so wie beim
WebGui.

Stand Oktober 2016 =============================================================

Durch den Einsatz des Scriptes von Swifty und die vorgenommenen Anpassungen
ist es nun möglich, dass Gruppen direkt angesprochen werden. Dadurch wird
vermieden, dass die Übertragung von z. B. Temperaturen an das HT + WT erfolgen
muss. Es wird direkt die Gruppe angesprochen. Die Gruppen selbst werden in IPS
nicht gespeichert, da diese nicht von IPS - anders als die HT und WT -
automatisch aktualisiert werden. Swifty hat deshalb einen Timer installiert,
der diese Aktualisierung vornimmt. Da ich keinen Sinn für die Speicherung in
IPS sehe werden für IPSView die Werte direkt aus den WT bzw. HT angezeigt.*/

Die nicht relevanten Sachen bitte einfach ignorieren.

Gruß
Hans

Es gibt eine Datenpunktliste, runterladbar bei eq-3, da stehen die entsprechenden Parameter für jedes Teil drin. Wenn man diese Liste anschaut, wird z.B. klar, daß das

niemals funktionieren kann. Die 1 gibt es hier nicht. Da gehört eine Temperatur rein.

Diese Zeile

HM_writeValueFloat(51217, "SET_TEMPERATURE", 0.0);

bringt in Verbindung mit dem obigen auch nix. Ist schlicht überflüssig. 0.0 gibt es als Wert auch nicht.

In Verbindung mit einer Gruppe gilt sowieso ein anderes Vorgehen. NUR die Gruppe darf verändert werden. Alles andere wird automatisch korrigiert. Über Wandthermostat kann es gehen, muss aber nicht.

Ansonsten handhabe ich das so wie schon erwähnt, der Kamin wird beheizt und die Teile merken, daß es warm ist. Ventil geht zu.

PS: Programmcode bitte zukünftig in php-Tags setzen.

Gruß
Bruno

Danke für die Infos.
Ich habe nun mal etwas romprobiert und mir ist aufgefallen, dass diese merkwürdigen Temperaturmessungen nur entstehen wenn beide HT und das WT auf der CCU in einer Gruppe zusammengefasst sind. Lösche ich die Gruppe liefern alle Geräte gute Werte. Ich habe eben auch mal alle Geräte neu angelernt, gleicher Effekt.

Das übergeben von Werten aus IPS ist kein Problem, ich werde aber mal versuchen die Werte direkt an die Gruppen zu senden. Danke Bruno

schöne Grüße,
Stefan

Guten Abend,

dies kann ich zu 100 % bestätigen und ist in meinen eigenen Kommentaren auch so dokumentiert :slight_smile:

Stefan, wenn du das alles über eine direkte Ansteuerung der Gruppen erreichen willst, dann musst du dir hier aus dem Forum die hmxml.inc.php und die xmlrpc.inc.php besorgen. Diese Seite https://www.symcon.de/forum/threads/21180-Heizkörperthermostat-Heizprogramme-per-WebFront-einstellen/page40?highlight=heizung+webfront hilft dir dabei :wink:

Die Steuerung selbst habe ich dann so gelöst:

function SetzeModus($Modus, $IdGruppe, $IdControlMode, $IdSetTemp, $AlteTemp, $GesetzteTemp)
{
	 /*
   echo "Der gewählte Modus ist $Modus 
";
   echo "id der Heizungsgruppe ist $IdGruppe 
";
   echo "id der Control Mode Variablen $IdControlMode 
";
   echo "id der Set Temperature Variablen $IdSetTemp 
";
	*/
   switch ($Modus) {
	   case "AUTO_MODE":
         if (GetValueInteger($IdControlMode) > 0)
			{
            HMXML_setParamBolean_VALUES($IdGruppe, "AUTO_MODE", true, $channel=1);
         }
      break;
       
      case "BOOST_MODE":
         HMXML_setParamBolean_VALUES($IdGruppe, "BOOST_MODE", true, $channel=1);
      break;
       
		case "MANU_MODE":
         if (GetValueInteger($IdControlMode) != 1)
		   {
		      $Temp=HMXML_getParamSet($IdGruppe, -1, "TEMPERATURE_LOWERING");
            HMXML_setParamFloat_VALUES($IdGruppe, "MANU_MODE", $Temp, $channel=1);
         }
      break;
      
	   case "COMFORT_MODE":
			$Temp=HMXML_getParamSet($IdGruppe, -1, "TEMPERATURE_COMFORT");
			// Temperatur nur setzen bei Änderung oder wenn Boost Modus aktiv ist
			if ($Temp != GetValueFloat($IdSetTemp) or (GetValueInteger($IdControlMode) == 3))
			{
            HMXML_setParamFloat_VALUES($IdGruppe, "SET_TEMPERATURE", $Temp, $channel=1);
         }
      break;
      
      case "LOWERING_MODE":
			$Temp=HMXML_getParamSet($IdGruppe, -1, "TEMPERATURE_LOWERING");
			// Temperatur nur setzen bei Änderung oder wenn Boost Modus aktiv ist
			if ($Temp != GetValueFloat($IdSetTemp) or (GetValueInteger($IdControlMode) == 3))
			{
            HMXML_setParamFloat_VALUES($IdGruppe, "SET_TEMPERATURE", $Temp, $channel=1);
         }
      break;
      
	   case "minus":
	   case "plus":
         $Temp = BerechneTemp($Modus, GetValueFloat($IdSetTemp));
         HMXML_setParamFloat_VALUES($IdGruppe, "SET_TEMPERATURE", $Temp, $channel=1);
		break;

	   case "set":
			// Temperatur nur setzen bei Änderung oder wenn Boost Modus aktiv ist
			if (($AlteTemp != $GesetzteTemp) or (GetValueInteger($IdControlMode) == 3))
			{
            HMXML_setParamFloat_VALUES($IdGruppe, "SET_TEMPERATURE", $GesetzteTemp, $channel=1);
         }			
		break;
   }
}

Die Gruppen selbst musst du nicht unbedingt in IPS anlegen. Sie werden in IPS auch nicht automatisch aktualisiert. Wenn du in der Visualisierung auf Temperatur, Ventilstellung … zugreifen willst, kannst du ja die Instanzen der WT und HT benutzen. Bei der Soll Temperatur ist dann der Wert aus dem WT zu empfehlen, da die Übertragung an das HT einige Sekunden dauert und man den Effekt in der Visu nicht sofort sehen würde. Das könnte beim Bediener zu Iriitationen führen :smiley:

Vielleicht hilft dir das ja weiter. Bei mir läuft die Gruppenansteuerung seit Monaten ohne Probleme.

Insgesamt verstehe ich allerdings nicht, warum dies überhaupt erforderlich ist. Wenn deine Thermostate alle auf Auto stehen und es warm im Zimmer wird, schließen die Ventile doch ohnehin oder ?

Gruß
Hans