raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials
Etwas Zeit zur die Optimierung der Heizkosten hat mich eine automatisierte Lösung für die Heizungssteuerung mit FHEM auf meinem Raspberry Pi, den Homematic Heizungsthermostaten und meinen selbstgebauten Temperatursensoren umsetzen lassen.
Ich sende alle paar Minuten die Werte meiner Selbstbau Temperatursensoren an die Homematic Thermostate da ich die Erfahrung gemacht habe das die integrierte Temperaturmessung der Thermostate nicht sehr gut funktioniert. Nebenbei sind die Homematic eigenen Temperatursensoren meines Erachtens mit 50€ überteuert, für den Preis sind 3-4 Sensoren selbst gebaut.
Die Programmierung der Temperaturprogramme habe ich einmalig direkt an den Thermostaten erledigt, über eine Automatisierung und dynamische Steuerung mache ich mir später Gedanken, hier geht es Primär erst einmal um die Grundkonfiguration und den Thermostaten die aktuelle Raumtemperatur der Sensoren zu übermitteln.
Material & Vorbereitung
- HomeMatic Funk Stellantrieb für meine Heizkörper
- Meine Selbstbau-Temperatursensoren in FHEM für die Messung der Raumtemperatur (Bau der Sensoren & FHEM Konfiguration)
- Basis FHEM Installation mit NanoCUL oder Kauf-CUL
Grundeinrichtung Thermostat HM-CC-RT-DN
Nachdem ihr die Termostaten nach Anleitung montiert habt versetzt den CUL an eurem FHEM in den Pairing-Modus (kontrollieren könnt ihr das auf dem Gerät, es meldet als Status im Pairing Modus immer “hmPair 1”).
set <CUL-Name> hmPairForSec 600
Dann könnt ihr durch drücken der Boost Taste (mittlere Taste) den Thermostat in den Pairing Modus versetzen, im Pairing Modus zählt ein 30 Sekunden Countdown auf dem Display herunter. Das Pairing mit FHEM sollte immer nur mit einem Gerät erfolgen, immer erst ein Gerät konfigurieren und dann den nächsten Thermostat pairen.
Wenn das Pairing geklappt hat wird automatisch ein Gerät im Raum CUL_HM angelegt. Die Geräte sind nach dem Pairing und der automatischen Analge in FHEM immer mit HM_<GeräteID> benannt.
Einrichtung
rename HM_51A3D9 Wohnzimmer_Heizung_Fenster
In den passenden Raum verschieben
attr Wohnzimmer_Heizung_Fenster room Wohnzimmer attr FileLog_Wohnzimmer_Heizung_Fenster room Logfiles
Gruppieren
attr Wohnzimmer_Heizung_Fenster group Heizung
Umbenennen der Channels
rename HM_51A3D9_Weather Wohnzimmer_Heizung_Fenster_Weather rename HM_51A3D9_Climate Wohnzimmer_Heizung_Fenster_Climate rename HM_51A3D9_WindowRec Wohnzimmer_Heizung_Fenster_WindowRec rename HM_51A3D9_Clima Wohnzimmer_Heizung_Fenster_Clima rename HM_51A3D9_ClimaTeam Wohnzimmer_Heizung_Fenster_ClimaTeam rename HM_51A3D9_remote Wohnzimmer_Heizung_Fenster_remote rename ActionDetector Wohnzimmer_Heizung_Fenster_ActionDetector
Meine FHEM.cfg des Homematic HM-CC-RT-DN Funk-Heizkörperthermostat
###### Heizung ### WZ define Wohnzimmer_Heizung_Fenster CUL_HM 51A3D9 attr Wohnzimmer_Heizung_Fenster IODev nanoCUL attr Wohnzimmer_Heizung_Fenster actCycle 000:10 attr Wohnzimmer_Heizung_Fenster actStatus alive attr Wohnzimmer_Heizung_Fenster autoReadReg 4_reqStatus attr Wohnzimmer_Heizung_Fenster expert 2_raw attr Wohnzimmer_Heizung_Fenster firmware 1.4 attr Wohnzimmer_Heizung_Fenster group Heizung attr Wohnzimmer_Heizung_Fenster model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster room Wohnzimmer attr Wohnzimmer_Heizung_Fenster serialNr NEQxxxxxx attr Wohnzimmer_Heizung_Fenster subType thermostat attr Wohnzimmer_Heizung_Fenster webCmd getConfig:clear msgEvents:burstXmit define Wohnzimmer_Heizung_Fenster_Weather CUL_HM 51A3D901 attr Wohnzimmer_Heizung_Fenster_Weather model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_Weather peerIDs 00000000, define Wohnzimmer_Heizung_Fenster_Climate CUL_HM 51A3D902 attr Wohnzimmer_Heizung_Fenster_Climate model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_Climate peerIDs 00000000, define Wohnzimmer_Heizung_Fenster_WindowRec CUL_HM 51A3D903 attr Wohnzimmer_Heizung_Fenster_WindowRec model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_WindowRec peerIDs 00000000, attr Wohnzimmer_Heizung_Fenster_WindowRec stateFormat last:trigLast define Wohnzimmer_Heizung_Fenster_Clima CUL_HM 51A3D904 attr Wohnzimmer_Heizung_Fenster_Clima model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_Clima peerIDs 00000000, define Wohnzimmer_Heizung_Fenster_ClimaTeam CUL_HM 51A3D905 attr Wohnzimmer_Heizung_Fenster_ClimaTeam model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_ClimaTeam peerIDs 00000000, define Wohnzimmer_Heizung_Fenster_remote CUL_HM 51A3D906 attr Wohnzimmer_Heizung_Fenster_remote model HM-CC-RT-DN attr Wohnzimmer_Heizung_Fenster_remote peerIDs 00000000, define Wohnzimmer_Heizung_Fenster_ActionDetector CUL_HM 000000 attr Wohnzimmer_Heizung_Fenster_ActionDetector event-on-change-reading .* attr Wohnzimmer_Heizung_Fenster_ActionDetector model ActionDetector define FileLog_Wohnzimmer_Heizung_Fenster FileLog ./log/Wohnzimmer_Heizung_Fenster-%Y.log Wohnzimmer_Heizung_Fenster attr FileLog_Wohnzimmer_Heizung_Fenster logtype text attr FileLog_Wohnzimmer_Heizung_Fenster room Logfiles
Anpassung der Ausgagen
Wir können nun noch die Ausgabe auf der Weboberfläche etwas anpassen da im Standard das Ganze nicht sehr hübsch aussieht
attr Wohnzimmer_Heizung_Fenster stateFormat Ventilposition: actuator <br>Soll-Temperatur: desired-temp <br>Ist-Temperatur: measured-temp
Weitere Anpassungen ergänze ich nich
Thermostat mit externen Temperaturdaten füttern
Nun möchte ich den Heizkörperthermostat natürlich immer mit einer passenden IST Temperatur (Raumtemperatur) füttern da die Messung am Thermostat logischerweise nicht sehr gut funktioniert.
Ich verwende hierzu meine Selbstbau Temperatursensoren deren Werte ich bereits von meinem EmonCMS in FHEM übertrage. Ihr könnt aber auch jegliche andere Temperaturquelle, welche bereits in FHEM eingebunden ist, benutzen.
Das Prinzip ist recht einfach, wir erstellen ein virtuelles Gerät welches wir an unseren Thermostaten “pairen”, dem virtuellen Gerät weißen wir via Aufgabenplaner alle paar minuten die aktuelle Raumtemperatur eines beliebigen Sensors zu.
Als erstes müssen wir ein virtuelles Gerät anlegen um die Daten ordentlich an den Thermostat übertragen zu können. Hierzu benötigen wir unsere HMID, diese findet Ihr in der FHEM.cfg unter Edit Files innerhalb der Definition eures CUL.
Dann erstellen wir das virtuelle Device, ändert ggf. eure HMid
define Wohnzimmer_virt_Temperatur CUL_HM A4E21F
Ich verschiebe das Gerät direkt in einen Raum (diesen könnt ihr später verstecken da für den alltagsgebrauch nicht notwendig)
attr Wohnzimmer_virt_Temperatur room Temperatur_Virtual
Ich weiße dem Gerät die Gruppe “Virtuelle-Sensoren-Heizungssteuerung” zu um das ganze später übersichtlich zu haben
attr Wohnzimmer_virt_Temperatur group Virutelle-Sensoren-Heizungssteuerung
Wir erstellen für das Gerät nun noch einen virtuellen Kanal, dieser wird für die Kommunikation benötigt
set Wohnzimmer_virt_Temperatur virtual 1
Da im Standard ein virtuelle Kanal vom Typ Button angelegt wird benennen wir diesen der Schönheit halber noch um
rename Wohnzimmer_virt_Temperatur_Btn1 Wohnzimmer_virt_Temperatur_Sensor1
Nun erfolgt das Pairing mit eurem Thermostat, ersetzt “Wohnzimmer_Heizung_Fenster” mit dem Namen eures Thermostats in FHEM, _Weather muss angehangen werden sodass an den richtigen Kanal gesendet wird.
set Wohnzimmer_virt_Temperatur_Sensor1 peerChan 0 Wohnzimmer_Heizung_Fenster_Weather single
Als letztes definieren wir noch den regelmäßigen Job der alle paar Minuten (bei mir 8) die Temperatur von einem in FHEM vorhandenen Gerät liest und an das virtuelle Gerät sendet sodass es vom Thermostat verarbeitet werden kann.
Wichtig! kopiert die Zeilen am Besten direkt in eure FHEM.cfg über “Edit files”
define at_Wohnzimmer_virt_Temperatur at +*00:08 {\ my $T=(ReadingsVal("Wohnzimmer_Temperatur","temperature",20.0));;\ fhem "set Wohnzimmer_virt_Temperatur_Sensor1 virtTemp $T";;\ }
In meinem Fall definieren wir einen Job “at_Wohnzimmer_virt_Temperatur” der alle 8 Minuten läuft, die Temperatur vom Gerät “Wohnzimmer_Temperatur” den Wert “temperature” an “Wohnzimmer_virt_Temperatur_Sensor1” übergibt. Wenn keine Temperatur gelesen werden kann werden 20C gesendet.
Das ist mein fertiges virtuelles Device
Kontrollieren könnt ihr das ganze natürlich entweder über die FHEM Logfile, darin müsstet ihr alle X Minuten folgenden Eintrag finden
2017.04.15 21:17:16 3: CUL_HM set Wohnzimmer_virt_Temperatur_Sensor1 virtTemp 21.4
FHEM Plot für den Thermostaten erstellen
Wir erstellen uns nun noch einige schöne Grafiken, auch Plotts genannt um auf einen Blick erkennen zu können wann unser Thermostat die Heizung anwirft und wann er abschaltet.
Hierzu öffnen wir das Logfile unseres Thermostaten, entweder ihr klickt auf euren Thermostat und findet ganz unten das Logfile oder ihr habt das Log File im Selben Raum hinterlegt und öffnet es direkt.
Innerhalb des Logfile Geräts eures Thermostaten klickt ihr auf “Create SVG Plot”
Wir speichern den Plot einfach ab ohne eine Änderung vorzunehmen, klickt hierzu im Webinterface einfach wie gewohnt auf “Save config” links oben. Dann Wechsel wir auf Edit Files und suchen unsere gerade erstellt .glot Datei, bei mir wurde Sie “SVG_<Gerät>_1.gplot” bekannt.
Öffnet die Datei und ersetzt den Inhalt mit folgendem:
set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title '<TL>' set ytics set y2tics set grid y2tics set ylabel "Ventilposition (%)" set y2label "Temperatur (°C)" set yrange [0:100] set y2range [15:26] #FileLog 4:measured-temp\x3a:: #FileLog 4:desired-temp\x3a:: #FileLog 4:actuator\x3a:: plot "<IN>" using 1:2 axes x1y2 title 'Gemessen' ls l0fill lw 2 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Gewünscht' ls l1fill lw 1 with lines,\ "<IN>" using 1:2 axes x1y1 title 'Ventilpos' ls l2 lw 1 with lines
Speichert die .glot Datei.
Wir können uns nun den Plott noch in einem gewünschten Raum ausgeben lassen, hierzu passen wir die Attribute unseres Plots wie folgt an.
Wir definieren die Ausgabegröße des Plots und fügen den Plot dem Raum Wohnzimmer hinzu
attr SVG_FileLog_Wohnzimmer_Heizung_Fenster_1 plotsize 840,240 attr SVG_FileLog_Wohnzimmer_Heizung_Fenster_1 room Wohnzimmer
Meiner sieht so aus
Viel Spaß!
Heizungssteuerung mit HomeMatic HM-CC-RT-DN und FHEM auf dem Raspberry Pi
raspberry.tips