Heizungssteuerung mit fhem und Raspberry Pi

Auf der Suche nach tollen Projekten für meinen Raspberry Pi bin ich auf FHEM gestoßen. FHEM ist ein Server, geschrieben in Perl und dient zur Automatisierung von Haustechnik wie Schalten von Steckdosen, Messen von Temperatur und Luftfeuchte oder die Regelung von Heizsystemen. Um meine Kosten für Heizung zu sparen, wollte ich mir eine einfache Regelung zusammen bauen. Und wirklich, mit FHEM, leistbarer Hardware und bedingten Kenntnissen von Perl war die möglich.

1.Hardware

Ich habe in meiner Wohnung Wandheizkörper, die mit direkt angeschlossenen Temperaturreglern versorgt sind (linkes Bild). Mit diesen kann man zwar die jeweilige Raumtemperatur einstellen, man kann dies jedoch nicht zeitlich steuern. Genau hier wollte ich aber ansetzen. Man braucht nicht den gesamten Tag über die selbe Temperatur haben, selbst wenn Flocke (meine Katze) zu Hause ist 🙂 Das linke Bild zeigt einen S300TH. Neugierig wie ich bin, musste ich das Teil zerlegen, daher der blaue Klebestreifen.

FHT8VS300TH

Ich wollte in drei Räumen (Wohnzimmer, Küche und Bad) die Temperatur getrennt und von der Tageszeit abhängig regeln. Ich kaufte mir bei ELV drei Bausätze für den Ventilantrieb (FHT8V-2) und drei Temperatur und Luftfeuchte Fühler (S300TH) und bei Busware den 868CUL. Zusätzlich benötigte ich für meine Heizkörper Adapter für die Regelventile (M30x1,5 auf M28x1,5 für Herz). Die blöden Dinger sind sehr schwer zu bekommen! Macht zusammen ca 250€ ohne Raspberry. Diese Kosten gilt es also erstmal einzusparen! Wenn nicht, zählt immer noch der technische Geilheitsfaktor 😉

Foto 1Installiert und betrieben wird fhem auf einem Raspberry. Dazu erstmal Debian runter laden und installieren. Im Internet gibt’s dazu genügend Seiten mit Beschreibungen. Desweiteren sollte man die Firmware des Raspberrys up2date halten, es werden dadurch zB Netzwerk Probleme verringert. Wie am Bild zu erkennen ist, betreibe ich meine Raspberrys ohne direktes Display. Ich loge mich nur per SSH ein, ein Monitor mit HDMI Anschluss und ein HDMI Kabel in greifbarer Nähe zu haben ist aber (speziell bei Error 40) von Vorteil 🙂 Es gibt für den Raspberry ein Konfig Skript, mit dem man am Rasp eine Basis Konfig einrichten kann (Zeitzone, Keybord Setting, Erweiterung der Root Partition an die maximale Größe, ssh und einiges mehr). Ich glaube, dass dies bereits in dem Standard Debian Image mit installiert ist, sonst aus obenstehender Quelle runterladen und installieren. Den 868CUL habe ich mit einer 15cm Antenne (+5dBI) im Einsatz. Die Firmware des CUL ist Open Source und wird auf SourceForge gehostet. Dort findet man zum Thema Frequenztest 3 interessante Dokumente. Lest euch die bitte unbedingt vor dem Kauf des CULs durch und entscheidet welche Antenne ihr benötigt.

2.Software

Die Installation von fhem ist denkbar einfach, runterladen, installieren und starten! Als Basis für den fhem Server dient das Konfig File fhem.cfg. Dies wird entweder im jeweiligen Homeverzeichniss oder statisch zB unter /opt/fhem/ hinterlegt und dem fhem.pl als Konfig mitgegeben. Mein Startskriptaliases in /root/.bashrc schauen so aus.

 

Um nun die eigentliche Regelung aufzubauen, gibt es einen super wiki Eintrag in der fhemwiki. Darin wird sehr ausführlich auf die einzelnen Schritte eingegangen. Ich möchte hier nur mehr Auszüge aus meiner Konfig beschreiben.

2.1 Auszüge aus der fhem.cfg

Im Wesentlichen benötigt man Definitionen für die Sensoren (…), die Stellantriebe (…) und die PID Regler (…).

Die Regelung übernimmt nun ein “AT” Befehl in fhem, der alle 15 Minuten die Funktion “sucheSchaltzeit” aufruft (siehe 2.3).

Meine gesamte fhem.cfg kann man hier downloaden. Natürlich lassen sich die gemessenen Temperaturen und Luftfeuchtewerte schön darstellen. Anbei ein solches Bild in dem man den Temperatur Anstieg in der Früh sieht und dass ich seit 20:00 vergessen habe, das Fenster nach dem Lüften wieder zu schließen 🙁

Heizungskurve_Bad

 

2.2 Der eigentliche Heizplan

Um die Räume nun sowohl von Temperatur als auch von der Zeit (Wochentag und Tageszeit) abhängig zu regeln, muss man sich eine Ascii Datei mit den Heizzeiten erstellen. Die Syntax wird hier beschrieben, ich habe mir meine Zeiten etwas abgeändert. Um sich nun Heizkosten zu ersparen, kann man die jeweiligen Absenkzeiten oder Temperaturen selber festlegen. Ich heize an Werktagen im Bad zB nur von 06:15 bis 07:00 auf 20 Grad auf, danach senke ich bis am Abend (18:0 bis 22:00) wieder auf 17 Grad ab.

2.3 Die Funktion “sucheSchaltzeit” für die eigentliche Steuerung

fhem bietet die Möglichkeit, eigene Funktionen mit einzubinden. Diese gehen bei einem Update von fhem nicht verloren. Dazu muss man eine Text Datei mit dem Namen 99_myUtils.pm in der Weboberfläche von fhem erstellen und in dieser dann seine Funktionen hinzufügen. Details zu 99_myUtils.pm – eh klar, in der Wiki. Die Funktion sucheSchaltzeit wird ja alle 15 Minuten aufgerufen und checkt ob sich an den Temperaturvorgaben etwas geändert hat. Die jeweilige PID Regelung ist natürlich schneller und braucht nicht 15 Minuten! Die Funktion kann man direkt aus dem Wikieintrag übernehmen.

Ich glaube mit der neuen Heizungsregelung einiges an Einsparungspotential zu finden, angefangen von den jeweiligen Temperaturen bis hin zu den Heizzeiten. Wann ich jedoch die Investitionskosten eingespart habe, wird sich erst zeigen.

Da dies nur ein sehr grober Einblick in das System ist empfehle ich untenstehende Links für weitere Infos. Im Grunde ist das Meiste von meiner Konfiguration aus dem Forum, der Wiki und der alten Mailingliste von fhem. Solltet ihr Fehler finden bitte um Info, man möchte die Leser ja nicht verwirren 🙂

Links: