Fritz!Dect / Comet Dect

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");}
    }
});

 

ioBroker unter Windows Server 2019 as Docker

Docker in Windows Server 2019

Auf dem Windows Server 2019 habe ich bestimmte Features zu Linux etc. bereits installiert gehabt.

Nun installierte ich das Docker für Windows von Install Docker Desktop on Windows | Docker Documentation

Danach lief der Docker, aber bestimmte Sachen schienen nicht zu funktionieren. Auch das installieren eine Images von ioBrocker für Docker klappte nicht. Nach etwas Googlen bekam ich die Info, dass man den Deamon umswitchen muss. Das habe ich über CMD-Command erledigen können:

"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

Das nächste Problem ließ nicht länger auf sich warten …

Hier half es in den Docker-Settings in der Docker Engine den Experimental-Mode zu aktivieren:

{
"experimental": true
}

Docker wurde neu gestartet und der Pull-Befehl konnte nun erfolgreich ablaufen:

 

Randnotizen (für mich)

https://docs.microsoft.com/de-de/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server

https://docs.microsoft.com/de-de/virtualization/windowscontainers/manage-containers/container-base-images

PowerShell-Command: docker pull mcr.microsoft.com/windows/iotcore:1809

ca. 310MB werden heruntergeladen und als Basisimage für den Container herangezogen