…Von Herbert, einem aufmerksamen Leser meines Blogs, wurde ich auf folgende Situation angesprochen: Beim Öffnen eines Fensters wird die Temperaturabsenkung an einem Heizkörperthermostat (HM-CC-RT-DN) per optischem Fensterkontakt (HM-Sec-SCo) aktiviert. Erfolgt bei geöffnetem Fenster ein manueller Eingriff am Heizkörperthermostat, ist die Temperaturabsenkung hinfällig und bleibt im ungünstigsten Fall auch die Solltemperatur nach dem Schließen des Fensters. Handelt es sich bei den Räumen um nicht eigengenutzte Räume, kann die dauerhafte Bediensperre der Heizkörperthermostate nicht gesetzt werden. Die Lösung: Heizkörperthermostat – Bediensperre per Script setzen
Die nachfolgende Lösung funktioniert auch in Verbindung mit einem Wandthermostat (HM-TC-IT-WM-W-EU) und geht davon aus, dass der optische Fensterkontakt als Direktverknüpfung mit dem Heizungsthermostat bzw. Wandthermostat verbunden ist.
Durch ein kleines Script von Black, einem sehr aktiven User aus dem HomeMatic-Forum, wird beim Öffnen bzw. Schließen des Fensters die Bediensperre am Heizungsthermostat gesetzt bzw. aufgehoben.
Heizkörperthermostat – Bediensperre per Script setzen
! true= gesperrt, false= offen
boolean bLock= true;
object oDev= dom.GetObject (ID_DEVICES).Get ("Gerätename_Thermostat"); WriteLine (oDev.Address() ); if (oDev) { xmlrpc.PutParamset (oDev.Interface(), oDev.Address(), "MASTER", "BUTTON_LOCK", bLock); } WriteLine("Done");
Heizkörperthermostat – Bediensperre per Script setzen
- Gerätenamen des entsprechenden Thermostates ermitteln
Einstellungen/Geräte - Gerätenamen kopieren
- Programm „Bediensperre“ erstellen
– Programmnamen und -beschreibung eingeben- In Wenn-Bedingung über Geräteauswahl optischen Fensterkontakt auswählen
– Bei „Aktivität: Dann…“ und „Aktivität: Sonst…“ die drei Punkte anklicken und anschließend Script-Block1 und Script-Block2 eingeben
! Script-Block1
!
! true= gesperrt, false= entsperrt
boolean bLock= true;
object oDev= dom.GetObject (ID_DEVICES).Get ("Heizung_WC_EG");
WriteLine (oDev.Address() );
if (oDev) { xmlrpc.PutParamset (oDev.Interface(), oDev.Address(), "MASTER", "BUTTON_LOCK", bLock); }
WriteLine("Done");
! Script-Block2
!
! true= gesperrt, false= entsperrt
boolean bLock= false;
object oDev= dom.GetObject (ID_DEVICES).Get ("Heizung_WC_EG");
WriteLine (oDev.Address() );
if (oDev) { xmlrpc.PutParamset (oDev.Interface(), oDev.Address(), "MASTER", "BUTTON_LOCK", bLock); }
WriteLine("Done");
Script-Block1 in „Aktivität: Wenn…“ eingeben
Script-Block2 in „Aktivität: Sonst…“ eingeben
4. Programm speichern
Nach dem Speichern des Programms kann der Test erfolgen. Durch Öffnen des Fensters mit dem im Programm ausgewählten optischen Fensterkontakt sollte die Bediensperre am entsprechenden Heizkörperthermostat nach einigen Sekunden aktiviert werden. Nach dem Schließen des Fensters wird die Bediensperre nach einigen Sekunden wieder deaktiviert.
Erweiterung
Das Szenario kann auf mehrere Fensterkontakte für einen Heizkörperthermostat oder ein Fensterkontakt und mehrere Heizkörperthermostate beliebig erweitert werden.
Wurden mehrere Fensterkontakte mit einem Heizkörperthermostat direkt verknüpft, werden die optischen Fensterkontakte im Programm bei der Abfrage mit „oder“ verknüpft werden.
Steuert ein Fensterkontakt mehrere Heizkörperthermostate, müssen unter „Aktivität: Dann…“ und „Aktivität: Sonst…“ mehrere Scripte mit den jeweiligen Gerätenamen aufgerufen werden.
Bei Fragen zu diesem Blog-Beitrag bitte einfach per Kommentarfunktion melden.
Guten Tag Herr Simdorn,
mit Interesse habe ich Ihre Homematic- Dokumentationen Seite durchstöbert.
Ich hoffe Sie können/wollen mir bei einem Problem weiterhelfen.
Leider bin ich bei Programmierkenntnissen nicht sonderlich bewandert.
Ich habe folgendes Szenario:
Wir haben im Souterrain unseres EFH ein kleine Ferienwohnung.
Da kommt es öfters zu folgendem Problem:
Die Hausgäste lassen während Ihrer An- oder Abwesenheit die Fenster für oft viele Stunden auf Kippfunktion, aber die Heizkörperhermostate geöffnet, was natürlich einen unnötigen Energieverbrauch bzw. Kosten bedeutet.
Aus diesem Grund habe ich mir eine CCU2 zugelegt und habe in der FeWo 4 Stück Homematic Funk-Heizkörperthermostat HM-CC-RT-DN in Kombination mit
Homematic Funk-Fensterkontakten, optisch HM-Sec-SCO, eingebaut.
Die Verknüpfung der Fensterkontakte mit den Heizkörperthermostaten
habe ich auch noch gut gelöst bekommen und habe mich darüber auch sehr gefreut.
Bei der Überprüfung stellte ich dann folgendes fest:
Fenster Auf -> programmierte Absenktemperatur (15°C) wird am Heizkörperthermostat eingestellt.
Jetzt kommt mein Problem:
Wenn ich dann am Stellrad des Heizkörperthermostaten drehe
kann die Temperatur trotz geöffnetem Fenster problemlos wieder nach oben geregelt werden.
So macht die Homematic in dieser Konstellation für mich leider nur wenig Sinn.
Gibt es Möglichkeiten dieses Problem zu lösen, und wenn ja, würden Sie Sie mir Lösungsvorschläge aufzeigen.
Wie am Anfang schon einmal erwähnt, sind meine Programmierkenntnisse nicht besonders ausgeprägt.
Viele Grüße von der Ahr
Herbert
Guten Abend Herbert,
eine interessante Herausforderung, wollte ich schon immer mal lösen.
Die Lösung ist ein kleines Script, der neue Blog-Beitrag erklärt Schritt-für-Schritt die Erstellung des benötigten Programms.
Bei Fragen bitte einfach die Kommentarfunktion verwenden.
Liebe Grüße Erhard
Hallo Erhard,
leider hat es nicht funktioniert obwohl ich glaube da ich alles mit den richtigen Namen eingegeben habe.
Wenn ich die Scripts teste kommtals Antwort „Null“.
Ich habe ein paar Fotos gemacht, die werde ich Ihnen noch zusenden.
Viele Grüße
Herbert
Hallo Herbert,
„Null“ kommt beim Test als Antwort, wenn der Gerätename nicht existiert. Bitte schicke mir einen Screen-Shot von der Geräteübersicht, siehe Bild.
Liebe Grüße Erhard
Guten Abend Erhard,
es hat geklappt nachdem ich im Script den Unterstrich im Namen des Raumes durch ein Leerzeichen ersetzt habe.
In einem Raum, in dem ich 2 Fensterkontakte verbaut habe, zickt einer zeitweise noch rum.
Aber ansonsten funktioniert alles wie gewünscht.
Ich danke Ihnen vielmals für Ihre detallierte Hilfe und deine Geduld.
Ich werde selbstverständlich deinen Blog weiterhin mit viel Interesse verfolgen.
Viele Grüße von der Ahr
Herbert
Hallo Herbert,
es freut mich, dass es jetzt geklappt hat.
Grundsätzlich sollten Geräte-, Variablen-, Raum-, Programmnamen keine Leer- oder Sonderzeichen enthalten, deshalb verwende ich zur besseren Lesbarkeit den Unterstrich.
Ich wünsche dir weiterhin viel Erfolg mit deiner HomeMatic-Installation.
Gruß Erhard
Hallo und guten Abend Erhard,
mit grossen Interesse habe ich Deine zahlreichen Einträge in der Dokumentation gelesen. Vielen Dank für Deine Mühen und Veröffentlichungen.
Besonders interessiert mich das obige Programm mit den beiden Scripten. Ich habe den Anwendungsfall, dass ich über die Sommerzeit (Thermostate auf „OFF“) auch die Bediensperre an den Thermostaten aktiviert haben möchte. Zur Winterzeit sollen diese wieder bedienbar sein.
Dazu habe ich zwei virtuellen Schalter (VS1 und VS2) angelegt. Beim betätigen von VS1 soll die Bediensperre eingeschaltet werden und bei VS2 aus.
Die Scripte funktionieren perfekt, auch in Verbindung mit einem Fensterkontakt schaltet alles wie es sein soll. Nur wenn ich dann den Fensterkontakt durch die virtuellen Schalter ersetze und das Programm dahingehend anpassen, passiert nicht und ich bin mit meinem Wissen am Ende.
Hättest Du eventuell eine Idee warum es mit dem Fensterkontakt funktioniert und mit einem virtuellen Schalter nicht?
Besten Dank und bleib gesund
Stephan
Guten Abend Stephan,
ich war die letzten Wochen im Urlaub und kann deshalb erst heute auf deine Frage antworten.
Mein Tipp: Benutze keinen virtuellen Schalter sondern einen Systemzustand zur Auslösung der Scripte, den Systemzustand kannst du dann durch ein Programm automatisch bei Sommer- bzw. Winterzeit per Programm ändern lassen. Ich habe ein entsprechendes Programm in meiner HomeMatic-Installation, mit der ich den Systemzustand „Sommerzeit“ ermittle und setze.
Schau mal unter Sommerzeit ermitteln…
Liebe Grüße Erhard