Zeitgesteuerte Heizung mit FHEM und Homematic

Zu FHEM und auch zu den HomeMatic Geräten finden sich schon ein paar Artikel hier auf dem Blog.

Als nächstes will ich euch zeigen, wie ihr ganz einfach das heizen der Räume automatisieren könnt.

Dafür werden wir einem HomeMatic Wandthermostat (Affiliate Link), welches sowohl mit einem Stellmotor (Affiliate Link) als auch mit FHEM verbunden ist, mit entsprechenden Zeit- und Heizinformationen in FHEM konfigurieren.

Ich möchte euch hier zwei Wege zeigen. Der erste ist, wie man die Konfigurationsdatei über das Frontend anlegt. Bei der zweiten Variante wird die Konfigurationsdatei direkt über das Terminal auf dem System angelegt.

Zeitsteuerung über das Frontend konfigurieren

Um eine Zeitsteuerung zu realisieren, brauchen wir in FHEM am besten ein eigene Konfigurationsdatei. Im Frontend wird dafür auf der linken Seite im Menü der Punkt Edit Files ausgewählt. Auf der Übersichtsseite die sich nun öffnet wählen wir die Datei myUtilsTemplate.pm aus. Diese werden wir als Vorlage für unsere eigene Konfigurationsdatei verwenden.

Nach dem öffnen der Datei ändern wir als erstes oben den Namen der Datei zu 99_myUtils.pm und speichern die Datei. So bleibt das Template für spätere Konfigurationsdateien erhalten.

In der Übersicht sieht man nun die Template Datei und unsere soeben neu angelegte Datei. Zum erneuten öffnen klicken wir jetzt auf unsere neue Datei

In die nun wieder geöffnete Datei muss unser eigener Code hinterlegt werden. Unser Abschnitt sieht wie folgt aus:

######## WT_ArbeitszimmerTemperatur setzen ########
sub
SetTempList_WT_Arbeitszimmer ()
{
{ fhem ("set WT_Arbeitszimmer.Climate tempListMon prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListTue prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListWed prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListThu prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListFri prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSat prep 09:00 18.0 15:00 21.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSun exec 09:00 18.0 15:00 21.0 24:00 22.0")};

So einen Abschnitt müssen wir für jedes Thermostat hinterlegen, welches die Temperatur zeitgesteuert regeln soll.

Am Anfang wird in Perl (die Programmiersprache von FHEM) eine Subroutine gestartet, die den Namen SetTempList_WT_Arbeitszimmer bekommt (Der Name wird später noch benötigt).

Anschließend wird für jeden Tag ein Temperaturprofil hinterlegt. Hierbei ist vor allem der letzte Abschnitt interessant:

prep 16:00 18.0 24:00 22.0

Diese Angabe ist etwas verwirrend und ist in Worte gefasst etwa so zu interpretieren. Zwischen 24:00 Uhr und 16:00 Uhr ist die Zieltemperatur 18 °C. Von 16:00 Uhr bis 24:00 Uhr ist die Zieltemperatur 22 °C

Die komplette Konfigurationsdatei sieht nun wie folgt aus:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
 
######## WT_ArbeitszimmerTemperatur setzen ########
sub
SetTempList_WT_Arbeitszimmer ()
{
{ fhem ("set WT_Arbeitszimmer.Climate tempListMon prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListTue prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListWed prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListThu prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListFri prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSat prep 09:00 18.0 15:00 21.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSun exec 09:00 18.0 15:00 21.0 24:00 22.0")};
}
1;

Die Datei kann nun gespeichert werden.

Um die Konfiguration abzuschließen, muss die Routine noch ausgeführt werden. Dies geht über das im Frontend integrierte Terminal mit dem Aufruf {SetTempList_WT_Arbeitszimmer}.

Zeitsteuerung über Terminal konfigurieren

Das was wir gerade über das Frontend gemacht haben, geht selbstverständlich auch über das Terminal. Dafür wechselt man als erstes in das Verzeichnis, in dem die Konfigurationen gespeichert werden.

Wenn ihr FHEM wie in einem anderen Artikel beschrieben installiert habt, dann findet man die Konfigurationsdateien unter /opt/fhem/FHEM. Dort legen wird dann die Datei 99_myUtils.pm angelgt.

cd /opt/fhem/FHEM
touch 99_myUtils.pm

Diese Datei öffnet ihr dann mit einem Editor und fügt den selben Code wie oben ein.

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
 
######## WT_ArbeitszimmerTemperatur setzen ########
sub
SetTempList_WT_Arbeitszimmer ()
{
{ fhem ("set WT_Arbeitszimmer.Climate tempListMon prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListTue prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListWed prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListThu prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListFri prep 16:00 18.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSat prep 09:00 18.0 15:00 21.0 24:00 22.0")};
{ fhem ("set WT_Arbeitszimmer.Climate tempListSun exec 09:00 18.0 15:00 21.0 24:00 22.0")};
}
1;

Anschließend muss FHEM einmal neugestartet werden.

systemctl stop fhem
systemctl start fhem

Jetzt wird das Webfrontend aufgerufen und der Zeitplan über den Frontend Aufruf {SetTempList_WT_Arbeitszimmer} an das Thermostat übertragen.

Fazit

Mit dieser einfachen Konfiguration heizt unsere Wohnung nun komplett eigenständig. Das hat gleich zwei Vorteile.

Wir haben es immer warm wenn wir es brauchen (z.B. Bad heizen vorm Aufstehen). Zum anderen sparen wir Energie da wir nicht vergessen können das die Heizung läuft bzw. die Heizung nicht unnötig läuft.

Habt ihr auch eure Heizung automatisiert? Wenn ja, welche Technologie habt ihr dafür verwendet? Ich freue mich auf eure Kommentare.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.