FRITZ!Box DECT Heizungsthermostate mit Domoticz steuern

Ich habe die Steuerung von FRITZ!Box DECT Heizungsthermostate mit Hilfe von fritzctl in das Hausautomatisierungssystem Domoticz integriert. Der Zeitplan erfolgt über die FRITZ!Box.

Statusanzeige und Schnellauswahl

Die Schaltfläche "Manual" dient dabei lediglich der Anzeige eines manuell eingestellten Temperaturwertes. Wurde die Schaltfläche ausgewählt, wird sie beim nächsten Zyklus korrigiert.

Temperaturanzeige des Heizkörpers

Manuelle Eingabe der Temperatur

Das Skript

Das Skript erfordert fritzctl. Die Steuerung des Skripts erfolgt mit einem eigenen systemd-Dienst und die Zykluszeit wird durch ein sleep-Befehl nach dem Abarbeiten der Räume bestimmt. Die Zeit kann am Anfang des Skripts unter Settings angepasst werden:

# --- Settings ---

SLEEP_TIME=60 # Time in seconds

Außerdem müssen die Thermostate, mit dem Name wie sie in der Fritzbox angelegt wurden, und die IDXs von Domoticz eingetragen werden. In Domoticz habe ich jeweils ein Dummy Hardware mit den Virtual Sensors: Thermostat Setpoint, Selector switch, Temperature angelegt.

# Name of thermostats in FRITZ!Box
ROOMS=("Heizung Wohnzimmer" "Heizung Kinderzimmer" "Heizung Badezimmer" "Heizung Schlafzimmer")

# IDX in domoticz
IDX_SETPOINT=("137" "140" "143" "146")
IDX_MEASURED=("138" "141" "144" "147")
IDX_SELECTOR=("139" "142" "145" "148")

Das Skript übernimmt die komplette Steuerung und in Domoticz müssen keine weiteren Einstellungen vorgenommen werden. Da die Werte zwischen FRITZ!Box und den Thermostaten nur alle 2 bzw. neue Einstellungen alle 15 Minuten übertragen werden, sollte die "Zykluszeit" von 60 Sekunden ausreichend sein. Wird die CPU durch das Skript zu sehr belastet, kann diese Zeit verlängert werden. Dabei kommt es darauf an, was auf dem System noch läuft. Ich bin noch dabei, die für mich passenden Einstellungen zu finden bzw. den Code vielleicht noch zu "optimieren".

Systemd Integration

Domoticz als auch das Skript laufen bei mir unter einem eigenen Benutzer (domoticz) in dessem Home-Verzeichniss.


/etc/systemd/system/thermostats.service

[Unit]
Description=Interpreter for domoticz <-> fritzctl

[Service]
User=domoticz
ExecStart=/home/domoticz/scripts/fritzctl/thermostats.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=thermostats
KillMode=process

[Install]
WantedBy=multi-user.target

Damit auch ein lesbares Logfile entsteht, wird mit rsyslog gefiltert und der Inhalt in eine eigene Datei geschrieben.

/etc/rsyslog.d/thermostats.conf

if $programname == 'thermostats' then /var/log/fritzctl/thermostats.log
& ~

Nun noch die Ordner erstellen und die richtigen Rechte vergeben

sudo mkdir /var/log/fritzctl
sudo touch /var/log/fritzctl/thermostats.log
sudo chown -R domoticz:domoticz /var/log/fritzctl

Zuletzt muss das System einmal neu gestartet werden

sudo reboot

Update: 07.03.2018 - Version 0.1: - Debug Informationen eingebaut - Fehlerbehebung

thermostats.sh

MD5: 080BAFFC2F6FCE5D89D6306D625CCAC8

SHA-1: AF2CB6D9805B9EA5407D9462C5441ACB6EB65F77

Update: 11.01.2018 - Version 0.1:

  • Skript komplett überarbeitet
  • Integration als systemd-Dienst