Regelung Fussbodenheizung mit Raumregler

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Regelung Fussbodenheizung mit Raumregler

Beitrag von dirch » 30.04.2009, 21:32

Hallo allerseits,

ich habe ein kleines Skript geschrieben mit dem ich in Abhaengigkeit der vom Raumregler gemeldeten Raumtemperatur und der eingestellten Zieltemperatur die Fussbodenheizung hier im Haus steuern kann. Aber es sind genauso auch Regelungen von anderen Heizungstypen moeglich.

Dabei setze ich als Aktoren 4 Kanal Schalter ein, es funktioniert aber auch mit anderen Schaltaktoren. Wenn man mehrere Raumregler im Einsatz hat wird pro Raumregler ein separates Skript benoetigt.

Code: Alles auswählen

! Name des zu steuernden/ueberwachenden Raumreglers (Name des Geraets)
string Raumregler = "Raumregler Wohnzimmer";

! Array von einzuschaltenden kanaelen, durch tab (\t) getrennt (Namen der Kanaele)
string Aktoren = "HM-LC-Sw1-FM EEQ0001522:1-Ventil1\tHM-LC-Sw1-FM EEQ0001522:1-Ventil2";

! maximales alter des messwerts in sekunden.
integer MaximalesMesswertAlter = 360;

! Einschaltdauer des Aktors/der Aktoren in Sekunden
integer Einschaltdauer = (120 * 60);

!Name der Alarm-Systemvariablen (optional)
string Alarmvariable = "ReglerAlarm";


! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
! X                                                 X 
! X Ab hier nichts mehr aendern! 
! X                                                 X 
! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

!workaround, irgendwie mag die StrBalueByIndex kein \t
string tab = "\t";


! als erstes versuchen wir das raumregler object zu holen
object oRegler= dom.GetObject(Raumregler);

if(oRegler)
{
	! wir haben etwas dieses namens gefunden
	if( (OT_DEVICE == oRegler.Type()) && ("HM-CC-TC" == oRegler.HssType()) )
	{ 
		! offenbar existiert ein raumregler geraet mit diesem namen

		string sChans = oRegler.Channels().EnumUsedIDs();

		! nur die ersten beiden kanaele sind interessant, der erste kanal 
		! hat die DPs TEMPERATURE und HUMIDITY, der zweite 
		! kanal SETPOINT und ADJUSTING_COMMAND
		
		string sChan1 = sChans.StrValueByIndex(tab, 0);
		string sChan2 = sChans.StrValueByIndex(tab, 1);
		object oChan1 = dom.GetObject(sChan1);
		object oChan2 = dom.GetObject(sChan2);

		! TEMPERATURE enthaelt die aktuelle raumtemperatur
		object oTempDP = oChan1.DPByHssDP("TEMPERATURE");
		! SETPOINT die eingestellte zieltemperatur
		object oSetpointDP = oChan2.DPByHssDP("SETPOINT");

		if(oTempDP && oSetpointDP)	
		{
			! wenn beide datenpunkte existieren schauen wir
			! erstmal wie aktuell die daten sind

			integer iLetzteMeldung = oTempDP.Timestamp().ToInteger();
			integer iJetzt = system.Date('%F %T').ToTime().ToInteger();
			! wir vergleichen den timestamp von jetzt mit dem der letzten 
			! meldung plus + MaximalesMesswertAlter, somit stellen wir sicher
			! dass der wert auch noch aktuell ist.
			if(iJetzt < (iLetzteMeldung + MaximalesMesswertAlter))
			{
				! alles ok bis hier, nun mal die eigentlichen 
				! temperaturwerte auslesen
				integer iAktuellerWert = oTempDP.Value();
				integer iZielWert = oSetpointDP.Value();
		
				! ist der aktuelle wert kleiner als der eingestellte zielwert
				if( iAktuellerWert < iZielWert )
				{
					! dann versuchen wir nun alle kanaele fuer
					! die Einschaltdauer einzuschalten

					string sAktorChannel = "";
					foreach(sAktorChannel, Aktoren)
					{
						object oAktorChannel = dom.GetObject(sAktorChannel);
						if(oAktorChannel)
						{	! kanal existiert
							string sOTDP = oAktorChannel.DPByHssDP("ON_TIME");
							string sSDP = oAktorChannel.DPByHssDP("STATE");
							dom.GetObject(sOTDP).State(Einschaltdauer);
							dom.GetObject(sSDP).State(1);
						}
					}
				}
				else
				{
					! falls einer der aktoren manuell eingeschaltet wurde
					! wird dieser ausgeschaltet wenn die zieltemperatur ueberschritten ist
					string sAktorChannel = "";
					foreach(sAktorChannel, Aktoren)
					{
						object oAktorChannel = dom.GetObject(sAktorChannel);
						if(oAktorChannel)
						{	! kanal existiert
							string sSDP = oAktorChannel.DPByHssDP("STATE");
							if(dom.GetObject(sSDP).State() > 0)
							{
								!kanal ist aktuell eingeschaltet, also ausschalten
								dom.GetObject(sSDP).State(0);
							}
						}
					}
				}
			}
			else
			{
				! Whitney, wir haben ein problem
				system.Exec("logger -t Raumregler -p user.warning Raumregler " # Raumregler # " hat sich seit " # (iJetzt - iLetzteMeldung) # " Sekunden nicht gemeldet!");

				if(Alarmvariable.Length() > 0)
				{
					object oAlarmvar = dom.GetObject(Alarmvariable);
					if(! oAlarmvar.Value())
					{
						oAlarmvar.Variable(true);
						oAlarmvar.State(true);
					}
				}
				
			}
		}
	}	
	else
	{
		system.Exec("logger -t Raumregler -p user.warning Raumregler " # Raumregler # " ist kein Geraet oder nicht vom Typ Raumregler");
	}
}
else
{
	system.Exec("logger -t Raumregler -p user.warning Raumregler " # Raumregler # " nicht vorhanden, skript abgebrochen");
}
Zu den einzustellenden Variablen:

Code: Alles auswählen

string Raumregler = "Raumregler Wohnzimmer";
Hier muss der eindeutige Gerätename des Raumreglers drin stehen

Code: Alles auswählen

string Aktoren = "HM-LC-Sw1-FM EEQ0001522:1-Ventil1\tHM-LC-Sw1-FM EEQ0001522:1-Ventil2";
Hier kommen die (eindeutigen) Kanalnamen rein, es kann sich dabei auch um Kanäle verschiedener Geräte handeln. Bei den Geräten muss es sich um Schaltaktoren handeln.

Code: Alles auswählen

integer MaximalesMesswertAlter = 360;
Hier wird das maximale Alter (in Sekunden) des letzten Temperatur Messwerts festgelegt. (Fuer den Fall dass beim Regler die Batterien leer sind oder die Funkkommunikation laenger gestoert ist. Dieser Wert sollte unbedingt ueber 180 Sekunden liegen da die Regler im 2-3 Minuten Rhythmus neue Werte an die CCU senden. Ich schlage hier ein vielfaches von 180 vor da es durchaus ja mal passieren darf dass ein Funksignal verloren geht.

Code: Alles auswählen

integer Einschaltdauer = (120 * 60);
Legt die Einschaltdauer (in Sekunden) fuer alle unter "Aktoren" angegebenen Kanäle fest. Dieser Wert sollte je nach Heizungstyp angepasst werden. Der Wert sollte auch so gewaehlt werden dass er etwas geringer ist als die Zeit nach der das Skript erneut aufgerufen wird: z.B. Skript wird alle 2h gestartet, Einschaltdauer 1h55min (6900 sekunden)

Code: Alles auswählen

string Alarmvariable = "ReglerAlarm";
Wenn man hier den Namen einer Systemvariable vom Typ Alarm eintraegt wird die entsprechende Variable auf true gesetzt wenn das Skript aufgerufen wird und das MaximaleMesswertAlter (s.o.) ueberschritten ist. (Kann z.B. in einem Hotel auf den Diebstahl des Raumreglers hindeuten).
Reglerskript1.PNG
Reglerskript1.PNG (21.07 KiB) 12839 mal betrachtet
Reglerskript2.PNG
Reglerskript2.PNG (21.89 KiB) 12839 mal betrachtet
Wichtig ist dass die Namen der Raumregler sowie die Kanalnamen der Aktoren eindeutig sind.

Kommentare und Verbesserungsvorschlaege sind wie immer willkommen.

Gruss,

Dirch
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

Mr.Fusion
Beiträge: 154
Registriert: 24.12.2008, 15:55

Re: Regelung Fussbodenheizung mit Raumregler

Beitrag von Mr.Fusion » 15.06.2009, 22:01

Sehr interessant! Vielen Dank dafür!

Das bedeutet, dass Du mit den Schaltaktoren die normalen Stellantriebe Deiner Fußbodenheizung schaltest, richtig?

2. Frage: In Deinem Fall wird bei Unterschreiten der Temperatur der Stellantrieb für 2 Stunden geöffnet. Was passiert wenn nach 50 Minuten schon die SOLL-Temperatur erreicht ist? Würde er dann weiter heizen oder den Stellantrieb wieder schließen?

Grüße
Bitbuster

christian.rodesch
Beiträge: 1
Registriert: 27.11.2016, 22:31

Re: Regelung Fussbodenheizung mit Raumregler

Beitrag von christian.rodesch » 27.11.2016, 22:35

Hallo,
dieser Thread ist zwar schon alt aber ich möchte ebenfalls meine FBH per Homematic steuern. Ich besitze einen Hutschienen 4x Schaltaktor (HM-LC-Sw4-DR) und in jedem Raum ein Thermostat HM-TC-IT-WM-W-EU. Leider funktioniert dieser Skript nur für das "alte" Thermostat. Ich kriegs einfach nicht hin das Skript anzupassen, damit es mit meinem Thermostat funktioniert.

Weiss jemand was ich ändern muss, bzw. hat jemand ein funktionierendes Skript?

Vielen Dank,
Christian

Benutzeravatar
robbi77
Beiträge: 13847
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: Regelung Fussbodenheizung mit Raumregler

Beitrag von robbi77 » 27.11.2016, 22:36

Direktverknüpfung anlegen?


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Regelung Fussbodenheizung mit Raumregler

Beitrag von twoxx » 03.12.2016, 12:42

christian.rodesch hat geschrieben:Hallo,
dieser Thread ist zwar schon alt aber ich möchte ebenfalls meine FBH per Homematic steuern. Ich besitze einen Hutschienen 4x Schaltaktor (HM-LC-Sw4-DR) und in jedem Raum ein Thermostat HM-TC-IT-WM-W-EU. Leider funktioniert dieser Skript nur für das "alte" Thermostat. Ich kriegs einfach nicht hin das Skript anzupassen, damit es mit meinem Thermostat funktioniert.

Weiss jemand was ich ändern muss, bzw. hat jemand ein funktionierendes Skript?

Vielen Dank,
Christian

Hallo Christian,

damit Du das Rad nicht nochmal neu erfinden muß, hier meine Komplettlösung zu Deinem Thema.
Ich verwende die selben Komponenten wie Du und löse das ganze ebenfalls per Script.

http://homematic-forum.de/forum/viewtop ... 31&t=24890
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

lesnijan
Beiträge: 23
Registriert: 02.04.2014, 14:14

Re: Regelung Fussbodenheizung mit Raumregler

Beitrag von lesnijan » 05.04.2017, 19:04

This script does not work with the new thermostat (HM-TC-IT-WM-W-EU)
What do I have to change in it?
Thank you in advance for your help
Janusz L.

Antworten

Zurück zu „HomeMatic allgemein“