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

 

Shelly 3EM – smarter Energiemesser

Der Shelly 3EM ist ein smarter WLAN-fähiger Energiemesser. Damit lässt sich Problemlos der gesamte Stromverbrauch, aber auch die gesamte Stromeinspeisemenge messen und bequem ansehen.

Die Bequemlichkeit hat den Nachteil, dass man die Hersteller-Cloud verwenden sollte. Aber man muss es nicht und muss auch nicht unnötig flashen.

Ich nutze als Home-Zentrale ioBroker auf einem Rasperri Pi4 und habe dort einen Shelly-Adapter installiert. Über diesen Adapter kann man wahlweise sich die Daten von der Cloud des Herstellers holen oder man stellt den Shelly auf MQTT und so sendet der Shelly direkt an den ioBroker. In diesem Fall verzichtet man jedoch auf die gute Darstellung und Statistiken der App.

Installation

Die Installation ist eigentlich Plug&Play, dennoch empfehle ich einen Elektriker dafür. Hier gebe ich nur ein paar Tipps, anhand dessen kann jeder für sich den Elektriker-Einsatz abwägen.

Für den Gesamtverbrauch muss man mit den Wandlern A-C um die drei Hauptleitungen, welche in der Regel vom Stromzähler aus dem Keller zum FI-Schalter im Wohnungssicherungskasten führen.

Üblicher Sicherungskasten, unten kommen schwarz, grau und braun und gehen zum FI-Schalter

Farben spielen hier eine untergeordnetere Rolle, wichtig ist zu erkennen, welche der Leitungen ist Phase 1, 2 oder 3

Vom FI-Schalten gehen drei Kabel zur Sammelschiene der einzelnen Leitungsschalter (Sicherungen). Man schaut nun in welche Sicherung die Kabel gehen.

Deutlich zu erkennen das erste Kabel von Links (Verlängerung von Schwarz) geht auf Sicherung F5.

Das zweite Kabel (Verlängerung von Grau) geht auf Sicherung F6.

Das dritte Kabel (Verlängerung von Braun) geht auf Sicherung F7.

Ich habe insgesamt 10 Sicherungen und bei mir gehen die drei Kabel auf die Sicherung 5, 6 und 7. Die Sammelschiene ist ebenso auf drei Phasen ausgelegt und so ist immer auf Sicherung 1 auch Phase 1, auf Sicherung 2 demnach Phase 2 und Sicherung 3 letztlich Phase 3. Diese Reihenfolge führt sich so fort, so dass Sicherung 4 auch Phase 1 nutzt. Die Sicherung 5 wäre sodann auf Phase 2 und Sicherung 6 auf Phase 3, die Sicherung 7 beginnt wieder auf Phase 1 ….

Nebenbei erwähnt, der Herdanschluss läuft in der Regel auf allen drei Phasen. Grund ist der hohe Stromverbrauch, der über ein normale Leitung nicht gehen sollte. Daher verteilt sich das auf die drei Phasen.

ACHTUNG
Sorgt dafür, dass kein Strom mehr über die Sicherungen gehen!
Am besten legt man den FI-Schalter um. So ist oberhalb alles tot.
Aber die Zuleitung bis zum FI-Schalter sind weiterhin unter Spannung!

Jetzt klippst man Wandler A am Shelly auf die Buchse A und legt den Wandler um die Phase 1, also das Kabel was in meinem Fall von Sicherung 7 zum FI-Schalter geht und an der Stelle am FI-Schalter wieder rauskommt. Der Wandler kommt um das Kabel vor dem FI-Schalter. Bei mir ist das das dickere braune Kabel.

Bei den Wandlern ist die Richtung wichtig, damit die Werte korrekt als positive Zahl / Verbrauch angezeigt werden kann. Hierzu schaut man auf den Wandler „K -> L“.
K ist der Kunde und L der Lieferant. K zeigt hierbei zum FI-Schalter, weil wir der Kunde sind. Der Pfeil ist dabei etwas verwirrend, weil er vom Kunde zum Lieferant zeigen muss.

Der Wandler B kommt auf die Buchse B und wird um das Kabel gelegt, welches Phase 2 ist. In meinem Fall ist das das dickere schwarze Kabel, welches zur Sicherung 5 gegangen ist.

Wandler C kommt auf die Buchse C am Shelly und muss um das Kabel für Phase 3. In meinem Fall ist es das dickere graue Kabel, dass letztlich zur Sicherung 6 geht.

Damit die Wandler korrekte Werte anzeigt, benötigt man zu jeder Phase bzw. Wandler die passenden Volt-Werte. Dazu verbindet man N vom Shelly an die N-Leiste vom Sicherungskasten. In der Regel nimmt man dafür ein blaues Kupferkabel.

Nun hat der Shelly auch drei Eingänge für die Volts der drei Phasen. AV kommt oben mit an die Sicherung, wo Phase 1 benutzt wird. In meinem Fall war es Sicherung 7. BV kommt oben mit an die Sicherung, welche über Phase 2 läuft. In meinem Fall ist es die Sicherung 5. Bleibt noch CV, welche für Phase 3 übrig bleibt. In meinem Fall oben mit an die Sicherung 6 angeschlossen.

Über die Volt-Anschlüsse und N bekommt der Shelly auch seinen Strom.

Jetzt aktiviert man den Strom wieder und der Shelly startet auch. Der Shelly ist kinderleicht über die App „Shelly“ einzurichten, so dass ich hier nicht weiter darauf eingehen möchte.

In der App sieht man nun seinen Shelly und den Gesamtverbrauch in Watt. Geht man weiter in die App rein, so sieht man genau was auf Phase A, B oder C verbraucht wird. Über die Zählweise der Sicherungen von vorne mit 123,123,123 … hat man ganz schnell raus, welches Zimmer oder Steckdose auf welche Phase läuft.

Sicherungskasten

Speist man z.B. über Solar ein, so wird auch dies vom Shelly erkannt und als Negativ-Wert angezeigt. Wenn man seinen Solar-Ertrag ebenfalls kennt, weil der Wechselrichter es ausgibt oder weil man das einspeisen mittels Messgerät (Fritz!Dect) misst, hat man sehr schnell raus, was genau an Strom erzeugt wurde und was man davon tatsächlich selbst nutzt oder eben dem Netzbetreiber einspeist / schenkt.

Beispielbild

Anhand dieses Beispielbildes würde man jetzt erkennen, dass man zum Zeitpunkt der Solarenergieerzeugung einen zu niedrigen Eigenverbrauch hatte und so knapp 1kWh verschenkte.

Durch Optimierung des eigenen Stromverbrauchs oder durch Verwendung einer Speicherlösung kann man den Stromüberschuss verringern oder auffangen und zu einem späteren Zeitpunkt verwenden. Es gilt je höher der Grundstrom ist, weil z.B. ein Aquarium betreibt oder eine Tiefkühltruhe im Keller um so wahrscheinlicher ist es, dass man keinen Überschuss hat. In diesem Fall würde sich ein Balkonkraftwerk auch deutlich schneller amortisieren.

Einspeisung als Insel-Lösung mit Blueetti AC200 Max (aber definitiv nichts für Sparfüchse)

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

 

Instanz per Blocky unter ioBroker neu starten

Instanzen per Blocky-Script neustarten, um unter VIS via Button das Script starten zu können.

Im „exec“-Bereich wird der Befehl abgesetzt. Der Instanz muss das Ausführen von Exec-Befehlen erlaubt worden sein!

Im „steuere“-Bereich setze ich das eigene Script auf „false“, so dass sich das Script von alleine Beendet.

<xml xmlns="http://www.w3.org/1999/xhtml">
<block id="@R7IB+X270TR*4*g),5s" type="exec" y="13" x="13">
<mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG">log</field>
<value name="COMMAND">
<shadow id="H53N4gs7:Ha|f}^lA,)Z" type="text">
<field name="TEXT">d:\apps\iobroker\iobroker.bat restart alexa2.0</field>
</shadow>
</value>
<next>
<block id="zkb]dlKymabjHap.+.#!" type="control">
<mutation delay_input="true"></mutation>
<field name="OID">javascript.0.scriptEnabled.Alexa.restart-Instanz</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">TRUE</field>
<value name="VALUE">
<block id="TUq9MCB@5WsX*=#h(Us{" type="logic_boolean">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</next>
</block>
</xml>

ioBroker – Automate your Life

Installation unter Windows:

ioBroker führt keine ordentlichen Befehle auf der Commando-Line aus, wenn man sich nicht im ioBorker-Verzeichnis befindet.

C:\Users\xxx>d:\apps\iobroker\iobroker restart alexa2.0

C:\Users\xxx>node node_modules/iobroker.js-controller/iobroker.js restart alexa2.0
internal/modules/cjs/loader.js:582
throw err;
^
Error: Cannot find module 'C:\Users\xxx\node_modules\iobroker.js-controller\iobroker.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:580:15)
at Function.Module._load (internal/modules/cjs/loader.js:506:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
at startup (internal/bootstrap/node.js:285:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)

Grund: In der iobroker.bat muss man den eigenen Pfad bekannt geben, danach funktioniert das ganze problemlos. Auch als Exec-Befehl z.B. in Blocky kann man nun so Instanzen per Script neu starten. Ändert das Script wie folgt ab:

SET SCRIPT_LOCATION=%~dp0
node %SCRIPT_LOCATION%/node_modules/iobroker.js-controller/iobroker.js %1 %2 %3 %4 %5