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
MD5: 080BAFFC2F6FCE5D89D6306D625CCAC8
SHA-1: AF2CB6D9805B9EA5407D9462C5441ACB6EB65F77
Update: 11.01.2018 - Version 0.1:
- Skript komplett überarbeitet
- Integration als systemd-Dienst