Ich nutze Comet Dect Heizkörperthermostate zur Steuerung des Heizverhaltens und zum senken der Energiekosten.
In Verbindung von ioBroker und Shelly WindowDoor lassen sich erweiterte Funktionalitäten schaffen.
Das Heizen bei geöffneten Fenster zu Beenden kann man bereits im Comet Dect einrichten. Allerdings muss dazu das Thermostat den Temperaturabsturz erkennen und dann schaltet sich die Heizung nur für eine fest hinterlegte Zeit ab. Möchte man in der Nacht mal bei abgeklappten Fenster schlafen, so würde dieser Status vom Thermostat nicht erkannt werden und somit die Heizung fleißig heizen, wenn das Thermostat auf Absenken oder Komfort programmiert wurde.
Abhilfe schafft hier ein Erkennen, dass das Fenster geöffnet wurde. Geräte hierfür gibt es viele. Ich habe hier mal Shelly dw v2 probiert, da Shelly sich sehr einfach in ioBroker integrieren lässt.
Über ioBroker (Hausautomat) kann das Erkennen eines geöffneten Fensters an ioBroker übergeben werden und dieser schaltet dann die ebenfalls über ioBroker laufenden Comet Dect.
Der Comet Dect hat vier Schaltzustände, welche unter fritzdect.0.DECT_xxxx.operationmode
hinterlegt werden.
Zustand |
ioBroker |
Aus (Frostschutz 8 C°) |
Off |
Absenkung (16 C° editierbar) |
Night |
Komfort (21 C° editirbar) |
Comfort |
MAX (>28 C°) |
On |
Verzeichnet ioBrocker über den Shelly dw ein geöffnetes Fenster z.B. im Schlafzimmer, so wird der Befehl zum Ausschalten der Heizung im Schlafzimmer übergeben.
on({id: 'shelly.0.SHDW-2#xxxx#1.sensor.door', change: 'any'}, function (obj) {
var dw01 = getState('shelly.0.SHDW-2#xxxx#1.sensor.door').val;
if (dw01){
setState("fritzdect.0.DECT_xxxx.operationmode","Off",false /*ACK*/);
} else {
setState("fritzdect.0.DECT_xxxx.operationmode","Night",false /*ACK*/);
}
});
Damit wird sichergestellt, dass die Heizung nicht die Nacht durchheizt.
So dachte ich mir es 😉
Leider lässt sich der Operationmode nicht schreibend an die FritzBox bzw. Comet Dect zurücksenden. Damit es nun dennoch geht, muss man die Parameter der Temperatur steuern. Hierfür muss der Wert für fritzdect.0.DECT_xxxx.tsoll
gesetzt werden.
Ich schalte nun tsoll
auf 0, wenn das Fenster auf geht und merke mir den Wert von fritzdect.0.DECT_xxxx.lasttarget
. Geht das Fenster wieder zu, so wird die tsoll
auf den Wert von lasttarget
gesetzt.
var lastTarget;
on({id: 'shelly.0.SHDW-2#xxxx#1.sensor.door', change: 'any'}, function (obj) {
var dw01 = getState('shelly.0.SHDW-2#xxxx#1.sensor.door').val;
log("Fensterstatus: " + dw01 + " | LastTemp: " + lastTarget + " °C");
if (dw01){
setState("fritzdect.0.DECT_xxxx.tsoll","0",false /*ACK*/);
lastTarget = getState("fritzdect.0.DECT_xxxx.lasttarget").val;
log("Schalte Heizung aus");
} else {
setState("fritzdect.0.DECT_xxxx.tsoll",lastTarget,false /*ACK*/);
lastTarget = undefined;
log("Schalte Heizung ein");
}
});
Und zu guter Letzt fehlt noch eine automatischer Erkennung, wenn man zwischenzeitlich die Temperatur anderweitig verändert, aber immer noch das Fenster offen ist. Dafür muss ein Script auf Änderungen von tsoll
reagieren und bei geöffnetem Fenster die tsoll
wieder auf 0 setzen.
on({id: 'fritzdect.0.DECT_xxxx.tsoll', change: 'any'}, function (obj) {
var dw01 = getState('shelly.0.SHDW-2#xxxx#1.sensor.door').val;
if (dw01){
setState("fritzdect.0.DECT_xxxx.tsoll","0",false /*ACK*/);
lastTarget = getState("fritzdect.0.DECT_xxxx.lasttarget").val;
if (logging){log("Schalte Heizung wieder aus");}
}
});