Hat da einer ne Ahnung was ich wie und wo an welcher stelle Ändern muss,Crazy-Tom hat geschrieben: ↑01.12.2013, 15:01Hallo Homematic Begeisterte,
mein Name ist Thomas und ich bin neu hier! Vor 2 Wochen habe ich mir eine Homematic CCU2 und diverse Komponenten zugelegt. In mehreren Stufen habe ich meine Heizungssteuerung umgesetzt und bin nun sehr glücklich mit der jetzigen Lösung.
- 1. Einbau der Heizungsthermostate und anbinden an die CCU - OK
- 2. Heizungsscript pro Raum und Anbindung der Fenster Sensoren – OK
- 3. Steuern der Heizungstherme über Homematic - OK
An dieser Stelle möchte ich mir erst einmal für die tollen Beiträge und den Einsatz der Forenmitglieder bedanken! Ohne dieses Forum und die Sammlung an geballten KnowHow wäre ich sicher noch nicht so weit gekommen! DANKE!
- 4. Einschalten der Therme bei Bedarf durch eine Anforderung eines Raumes – OK
Hier meine Lösung für die Steuerung der Therme.
Da ich zur Miete Wohne, konnte ich nicht ohne weiteres an der Therme Veränderungen vornehmen, daher wollte ich das Thermostat ersetzen – weit gefehlt. Das Raumthermostat wird mit 24V aus der Therme angesteuert und versorgt somit die Schaltuhr, die wiederum die Therme ein und aus schaltet. Was mir nicht klar war, dass über ein drittes Kabel von dem Thermostat weitere Infos an die Therme gesendet werden, die z.B. die Umwälzpumpe noch 3 min laufen lässt, wenn ich die Raumtemperatur erreicht wurde und die Gaszufuhr unterbrochen wird. Also bleib mir nur die Möglichkeit, das Schalten der Schaltuhr zu simulieren.
Hierzu habe ich einen Schließer HM-LC-Sw1-Ba-PCB parallel zum Schließer der Schaltuhr angebracht. Dies hat den Vorteil, dass die HM übersteuert werden kann, falls defekt oder ausgefallen. Zum anderen ändere ich nichts an der Thermen Steuerung. (Außer etwas Lötzinn an den Kontakten)
Die Spannungversorgung des Schliessers habe ich über einen Spannungswandler von 24V auf 12V realisiert.
Nun konnte ich die Therme über die HM ansteuern und ein/ausschalten. Nun wollte ich, dass wenn ich z.B. außerhalb der normalen Zeiten den Heizkörper manuell aufdrehe, dass die Therme anspringt. Nach viel experimentieren und holprigen Versuchen der Scriptsprache bin ich zu einer für mich zufriedenstellenden Lösung gekommen.
Sicherlich kann dies noch optimiert werden, aber es funktioniert so bisher recht gut!
Das Script läuft alle 5 Min und fragt die einzelnen Räume ab, ob evtl. ein Thermotat den Steller weit geöffnet hat und die IST-Temperatur unterhalb der Soll-Temperatur liegt.
(Die Werte können pro Raum unterschiedlich sein, weil verschiedene Ventile verbaut sind)
Um festzustellen, welcher Raum die Thermenanforderung initiiert hat, habe ich die Räume mit (1,2,4,8) nummeriert. Die Addition der Werte schreibe ich in die System-Variable HZ_Status und kann diese in Historian auswerten. (hellblaue Linie Therme eingeschaltet, Räume 2 und 4 haben außerhalb der Raumsteuerung angefordert)Code: Alles auswählen
! Thermostate abfragen ! ---------------------------------------------------- object ThermostatRaum1; string sRegler = "KEQ0512040"; integer HzRaum1=0; integer HzBad=0; integer HzWhz=0; integer HzRaum2=0; real toleanz_Temp = 1; integer HZ_Status=0; ! aktueller Istwert von HM-CC-TC ermitteln object ThermostatRaum1= dom.GetObject("BidCos-RF." # sRegler # ":4.ACTUAL_TEMPERATURE"); real akt_TempRaum1= ThermostatRaum1.Value(); ! Eingestellten Sollwert von HM-CC-TC ermitteln object ThermostatRaum1= dom.GetObject("BidCos-RF." # sRegler # ":4.SET_TEMPERATURE"); real soll_TempRaum1 = ThermostatRaum1.Value(); ! Aktuelle Ventiloeffnung (%) von HM-CC-TC ermitteln object ThermostatRaum1 = dom.GetObject("BidCos-RF." # sRegler # ":4.VALVE_STATE"); real akt_VentilRaum1 = ThermostatRaum1.Value(); ! ---------------------------------------------------- ! Kontrolle ob Heizung benötigt ! ---------------------------------------------------- if ((akt_TempRaum1 > soll_TempRaum1) && (akt_VentilRaum1<15)) {HzRaum1=0;} if ((akt_TempRaum1 < (soll_TempRaum1 - toleanz_Temp)) || (akt_VentilRaum1>95)) {HzRaum1=1;} ! ---------------------------------------------------- ! Thermostat Raum2 abfragen ! ---------------------------------------------------- object ThermostatRaum2; string sRaum2Regler = "KEQ0734490"; ! aktueller Istwert von HM-CC-TC ermitteln object ThermostatRaum2= dom.GetObject("BidCos-RF." # sRaum2Regler # ":4.ACTUAL_TEMPERATURE"); real akt_TempRaum2 = ThermostatRaum2.Value(); string strAkt_TempRaum2 = ThermostatRaum2.Value(); ! Eingestellten Sollwert von HM-CC-TC ermitteln object ThermostatRaum2= dom.GetObject("BidCos-RF." # sRaum2Regler # ":4.SET_TEMPERATURE"); real soll_TempRaum2 = ThermostatRaum2.Value(); ! Aktuelle Ventiloeffnung (%) von HM-CC-TC ermitteln object ThermostatRaum2 = dom.GetObject("BidCos-RF." # sRaum2Regler # ":4.VALVE_STATE"); real akt_VentilRaum2 = ThermostatRaum2.Value(); ! ---------------------------------------------------- ! Kontrolle ob Heizung benötigt ! ---------------------------------------------------- if ((akt_TempRaum2 > soll_TempRaum2) && (akt_VentilRaum2 <20)) {HzRaum2=0;} if ((akt_TempRaum2 < (soll_TempRaum2 - toleanz_Temp)) || (akt_VentilRaum2>95)) {HzRaum2=2;} ! ---------------------------------------------------- ! Thermostate Bad abfragen ! ---------------------------------------------------- object ThermostatBad; string sBadRegler = "KEQ0518109"; ! aktueller Istwert von HM-CC-TC ermitteln object ThermostatBad= dom.GetObject("BidCos-RF." # sBadRegler # ":4.ACTUAL_TEMPERATURE"); real akt_TempBad= ThermostatBad.Value(); string strAkt_TempBad= ThermostatBad.Value(); ! Eingestellten Sollwert von HM-CC-TC ermitteln object ThermostatBad= dom.GetObject("BidCos-RF." # sBadRegler # ":4.SET_TEMPERATURE"); real soll_TempBad = ThermostatBad.Value(); ! Aktuelle Ventiloeffnung (%) von HM-CC-TC ermitteln object ThermostatBad = dom.GetObject("BidCos-RF." # sBadRegler # ":4.VALVE_STATE"); real akt_VentilBad = ThermostatBad.Value(); ! ---------------------------------------------------- ! Kontrolle ob Heizung benötigt ! ---------------------------------------------------- if ((akt_TempBad > soll_TempBad) && (akt_VentilBad<20)) {HzBad=0;} if ((akt_TempBad < (soll_TempBad - toleanz_Temp)) || (akt_VentilBad>95)) {HzBad=4;} ! ---------------------------------------------------- ! Thermostate Whz abfragen ! ---------------------------------------------------- object ThermostatWhz; string sWhzRegler = "KEQ0079670"; string sWhzSteller = "KEQ0086561"; ! aktueller Istwert von HM-CC-TC ermitteln object ThermostatWhz= dom.GetObject("BidCos-RF." # sWhzRegler # ":1.TEMPERATURE"); real akt_TempWhz= ThermostatWhz.Value(); string strAkt_TempWhz= ThermostatWhz.Value(); ! Eingestellten Sollwert von HM-CC-TC ermitteln object ThermostatWhz= dom.GetObject("BidCos-RF." # sWhzRegler # ":2.SETPOINT"); real soll_TempWhz = ThermostatWhz.Value(); ! Aktuelle Ventiloeffnung (%) von HM-CC-TC ermitteln object StellerWhz= dom.GetObject("BidCos-RF." # sWhzSteller # ":1.VALVE_STATE"); real akt_VentilWhz = StellerWhz.Value(); ! ---------------------------------------------------- ! Kontrolle ob Heizung benötigt ! ---------------------------------------------------- if ((akt_TempWhz > soll_TempWhz) && (akt_VentilWhz<15)) {HzWhz=0;} if ((akt_TempWhz < (soll_TempWhz)) || (akt_VentilWhz>95)) {HzWhz=8;} ! ---------------------------------------------------- ! Kontrolle aller Heizungen und ob einschalten/ausschalten ! ---------------------------------------------------- if ((HzRaum1 + HzBad + HzWhz + HzRaum2)>0) { var switch=dom.GetObject("BidCos-RF.KEQ0237566:1.STATE"); switch.State(1); } else { var switch=dom.GetObject("BidCos-RF.KEQ0237566:1.STATE"); switch.State(0); } ! ---------------------------------------------------------------------------------- ! Variable HZ_Status setzen ! object sysHZ_Zustand=dom.GetObject('HZ_Status').State(); HZ_Status=(HzRaum1 + HzBad + HzWhz + HzRaum2); dom.GetObject('HZ_Status').State(HZ_Status);
Soweit die Infos zu meiner ersten Homematic Umsetzung.
Kritik oder Verbesserungen werden gerne angenommen!
Gruß
Thomas
ich habe einen Raspberry Pi 3+, 2 Homematic IP Heizungsthermostate, 1 Wandthermostat (IP) dann ein Dimmer mit bewegungsmelder (läuft so wie es soll) und für die Heizung habe ich ein HmIP-PCBS verbaut es läuft auch manuell, nur die Regelung will nicht wirklich ich weiß nicht wo der fehler liegt.
Ich will einfach das die Therme Junkers Creastar ZWR 18-5 (Stetigregelung) auf bedarf reagiert, bedarf soll vom heizungsthermostat bzw vom wandthermostat kommen und wenn soll erreicht soll HmIP-PCBS einfach abschalten.
Das einschalten klapp nur die deaktivierung nicht.
Würde mich freuen wenn einer da rat weiß.
LG
Björn