Hallo Homematic-Gemeinde,
ich möchte euch in diesem kleinen Tutorial beschreiben, wie ihr euren Fröling-Heizkessel mit 3200-Steuerung (in meinem Fall einen Fröling P4 15 kW mit Touchdisplay, weiter erfolgreich getestet mit einem S1 Turbo) über die COM1-Schnittstelle in das Homematic-System einbindet. Meine ersten Versuche das ganze über Fröling Connect zu realsieren, schlugen leider fehl (herzlichen Dank an User 'Leinich', der mich bei diesem ersten Versuch unterstützt hat).
Ich bin dann im Holzheizer-Forum auf die Möglichkeit gestoßen per Raspberry Pi und der Software "p4d" die komplette Steuerung auszulesen und die Messwerte per Webserver im Netzwerk zur Verfügung zu stellen (vielen Dank an die User 'Horchi' und 'philipphunger').
Einen Vorgeschmack, welche Daten der p4d alles ausgibt, und welche Steuerungs- und Programmiermöglichkeiten per WebIF sich ergeben seht ihr hier http://80.153.190.207:61105/p4/main.php.
In diesem Tutorial möchte ich nun beschreiben, wie ihr das ganze System aufsetzt, wie die Messwerte aus dem Heizkessel mittels Skript auf dem Raspi nach HM gesendet werden und wie sich der Heizkessel bzw. die Heizungsanlage über die CCU2 steuern lässt, z.B. um die Heizkreispumpen aus-/anzuschalten oder die Vorlauftemperatur zu ändern.
Hinweis: Das Tutorial bezieht sich auf Version 0.1.37 des p4d in Verbindung mit Raspbian Jessie. Da der p4d aktuell noch weiterentwickelt wird, können sich im Installationsablauf vereinzelt Änderungen ergeben. Ich versuche jedoch, die Anleitung hier so gut wie möglich aktuell zu halten. Hinweise zum Updaten des p4d, siehe. 10.)
Für Fragen/Antworten/Hinweise zum p4d aus erster Hand empfehle ich das Holzheizer-Forum: https://www.holzheizer-forum.de/index.p ... -via-com1/
1) Für das ganze Projekt benötigt ihr folgende Hardware:
- Raspberry Pi mit installiertem Raspbian Jessie, z.B. Raspberry Pi Model B+, Raspberry Pi2 Model B oder Raspberry Pi3 Model B (2-A-Netzteil, SD-Karte mit mindestens 8 GB (besser 16GB), ggf. Adapterkabel von HDMI auf DVI oder VGA, optional: WLAN-Empfänger EDIMAX EW-7811UN - nur bei Raspberry 1 und 2)
- USB-Serial Converter mit FTDI Chip, z.B. DELOCK Adapter USB Seriell 1x9 Pin St Chip FTDI
- Null-Modem Kabel D-Sub9 Buche/Buchse:
Wichtig: Verbindungen zwischen USB-Serial Converter und COM1 Schnittstelle des Heizkessels sind stets mit einer gekreuzten Verbindung herzustellen, d.h. mit folgender PIN-Belegung (andernfalls kommt es zu Fehlern):
2<->3
3<->2
5<->5
2) Aufsetzen und Grundkonfiguration des Raspberry Pi:
- microSD-Karte mit "SDFormatter V4.0" formatieren, Download-Link: https://www.sdcard.org/downloads/formatter_4/
- Raspbian Jessie Image laden, Download-Link: https://www.raspberrypi.org/downloads/raspbian/
- Raspbian Jessie Image mit "Win32 Disk Imager" auf microSD-Karte schreiben, Download-Link: http://www.chip.de/downloads/Win32-Disk ... 21030.html
- microSD-Karte in den Raspi einlegen, Netzwerk (LAN oder WALN), Bildschirm, Maus, Tastatur und Strom anschließen
--> der Raspi bootet zum ersten Mal
Nach dem ersten Start mit dem Befehl
sudo dpkg-reconfigure locales (oder über den Raspbian Desktop: Preferences (Einstellungen) -> Raspberry Pi Configuration -> Localisation -> Set Keyboard)
in der Kommandozeile/LX Terminal das Sprachpaket "de_DE.UTF-8 UTF-8" auswählen (Hinweis: zum "Anhaken" des Pakets die Leertaste verwenden, und über TAB auf <ok>) und danach nochmals mit Return auf "de_DE.UTF-8" bestätigen. Danach dauert es einen kurzen Augenblick.
Danach empfehle ich gleich den root-User zu konfigurieren und ein Passwort zu vergeben. In der Kommandozeile/LX-Terminal folgendes eingeben:
sudo passwd root
danach wird man aufgefordert zwei mal das gewünschte Passwort einzugeben
Über Shutdown -> Logout mit dem Root-User anmelden
Dann mit dem Befehl:
sudo raspi-config -> Internationalisation Options -> Change Timezone timezone -> Europe -> Berlin einstellen
und mit Expand filesystem -> den verfügbaren Speicherplatz maximieren
Um den Raspberry Pi bequem per Remotedesktopverbindung von einem anderen Windows-PC aus zu konfigurieren, kann xrdp installiert werden.
Hinweis: Bei neueren Raspbian-Versionen (z.b. Raspbian Pixel) ist der alternative Remoteserver VNC ab Werk integriert, der sich mit xrdp leider nicht verträgt. In dem Fall sollte man VNC entfernen, bevor man xrdp installiert. Das geht mit dem Befehl:
sudo apt-get purge realvnc-vnc-server
Anschließend xrdp mit nachfolgendem Befehl installieren:
sudo apt-get install xrdp
Nach erfolgreicher Installation kann der Raspi heruntergefahren werden.
3) Anschluss des Raspberry Pi
Jetzt kann der Raspberry Pi eigentlich schon an seinem geplanten Bestimmungsort installiert werden.
-> Raspberry Pi am mit dem Netzwerk verbinden
-> Raspberry Pi mit dem USB-Seriell an COM1 des Heizkessels anschließen
-> Raspberry Pi mit dem Strom verbinden und booten
4) Installation des p4d
- per Remotedesktopverbindung (Windows) unter Eingabe der IP-Adresse des Raspberry Pi (bei Computer), Benutzername "root" (ohne Anführungszeichen") und dem oben definierten Root-Passwort auf dem Raspberry Pi einloggen
- in der Konsole folgende Befehle nacheinander eingeben
[Hinweis: ab Raspbian Jessie Pixel müssen vorher zusätzlich noch, mit nachfolgenden Befehlen, diese 3 Pakete installiert werden:
apt-get install libxml2-dev
apt-get install libssl-dev
apt-get install libcurl4-openssl-dev]
wget hungerphilipp.de/files/p4d/install.sh
chmod +x install.sh
./install.sh
Es werden damit Raspbian aktualisiert, sowie Apache2 Webserver, PHP5, SQL-Datenbank und der p4d an sich installiert - es ist quasi das Rundum-Sorglos-Paket! (Installation dauert bei einem Raspberry Pi 2 ca. 15min)
Während der Installation muss man ein Passwort festlegen, z.B. p4-3200 (oder eigenes PW). Im weiteren Verlauf der Installation muss man genau dieses Passwort erneut eingeben.
Wenn die Installation abgeschlossen ist, am besten den Raspberry Pi neu starten
5) erster Test
- in der Konsole mit Befehl tail -f /var/log/syslog solltet ihr eine Ausgabe erhalten die ungefähr so aussieht, denn dann habt ihr alles richtig gemacht !
sollte eine Fehlermeldung kommen, wie z.B. 'Error-no such file or directory', dann müsst ihr den USB-Port in der Konfig-Datei /etc/p4d/p4d.conf bei /dev/ttyUSB1 auf 0 stellen, also so: /dev/ttyUSB0
An dieser Stelle kann man das Aufzeichnungsintervall des p4d gleich auf den gewünschten Wert einstellen. Beim Parameter "Interval" haben sich eigentlich 181sec bewährt, die Zeile würde folglich so aussehen: interval=181
Nach ggf. anpassung des USB-Ports den Raspberry Pi neustarten und o.g. Test erneut durchführen
6) Weitere Einrichtung:
Da unter "Jessie" der maßgebliche Ordner für den Webserver der Ordner /var/www/html ist, müssen die ganzen Dateien (außer natürlich HTML selbst) im Ordner /var/www/ noch nach /var/www/html kopiert werden. Des Weiteren ist der Ordner IMG von /p4d/linux-p4d/htdocs nach /var/www/html zu kopieren.
-> Neustart
7) p4d aufrufen und einrichten:
- über Eingabe der IP-Adresse des Raspberry pi und dem Zusatz index.php über einen Webbrowser eines PCs im Netzwerk auf, also z.B. mit der Adresse 192.168.1.7/index.php könnt ihr auf den p4d zugreifen und konfigurieren
- nun muss die Aufzeichnung des p4d aktiviert werden:
geht hierzu auf Login (User: p4, Passwort: p4-3200) -> Setup -> Aufzeichnung -> Init (etwas warten) -> auswählen welche Werte gelesen und gespeichert werden sollen -> Speichern
dann: Menu -> Init (etwas warten) -> Aktualisieren (etwas warten) -> Aktuell => fertig
- unter Aktuell habt ihr somit nun Zugriff auf alle Daten des Heizkessels, unter Menü ist die Menü-Struktur des Kessels abgebildet
Der p4d verrichtet nur grundlegend seine Arbeit.
8.) Aufgezeichnete Werte des p4d an die CCU2 senden:
Unter /p4d/Linux-p4d/scripts die Datei after-update.sh nach /etc/p4d kopieren.
In der Konsole mit den Befehlen:
cd /etc/p4d
sudo chmod +x after-update.sh
die Datei ausführbar machen.
Konfiguration der Datei after-update.sh:
- die Datei after-update.sh im Pfad /etc/p4d öffnen
- in der Zeile HM_IP= die IP-Adresse eurer CCU eingeben bei mir (192.168.1.4)
- die Zeile LOG="/tmp/hm-push.log" mit dem #-Zeichen auskommentieren -> #LOG="/tmp/hm-push.log"
- 6 Zeilen drunter unter Sensors="...." nach dem Schema x#yz die an die CCU2 zu übermittelnden Werte/Adressen eingeben.
Die Adressen (x#yz) sind imWebIF des p4d unter Setup->Aufzeichnung ganz rechts zu finden (ID/Typ). In der Spalte Bezeichnung ist der Name der zugehörigen Systemvariablen der CCU zu hinterlegen, falls diese vom Namen links abweicht. Generell sind Sonderzeichen und Umlaute zu vermeiden, d.h. Außentemperatur sollte man besser in Aussentemperatur umbenennen. Sind die gewünschten Parameter konfiguriert, erstellt man für jeden Messwert des p4d eine Systemvariable vom Typ Zahl oder Zeichenkette in der CCU.
Sobald sich nun ein Messwert im Heizkessel ändert, wird dieser an die CCU übermittelt und in die jeweilige Systemvariable geschrieben (unter Berücksichtigung des Messintervalls von - hier - 181 sec). Ändert sich der Wert nicht, wird er auch nicht übermittelt (Entlastung der CCU). Gerade am Anfang kann es vorkommen, dass die Werte nicht sofort in der CCU aktualisiert werden - keine Panik, das System muss sich erst "einschwingen", da ja nur bei Wertänderung der Wert an die CCU gepusht wird. Also einfach etwas abwarten.
9.) Steuerung der Heizungsanlage über die CCU2
Der Heizkessel kann auch per Homematic-Befehle gesteuert werden. Z.B. lassen sich damit die Heizkreispumpen abschalten, wenn alle Stellventile im Heizkreisverteiler geschlossen sind (Stromeinsparung).
Beispielhaft für Heizkreispumpen ausschalten folgende Vorgehensweise:
- die "Adresse" der Heizkreispumpe herausfinden, die geschaltet werden soll. Die "Adresse" befindet sich ganz links unter Menü ->Heizen->Heizkreis nach Programm steuern (NEIN -> Heizkreis ist ausgeschaltet) als Wert in Klammern. In meinem Fall ist es die "Adresse" 2355 und zum Ausschalten der Pumpe der Wert nein. (Hinweis: beim Neuaufsetzen des Raspberry Pi / p4d ändern sich ggf. die "Adressen" und müssen erneut bestimmt werden.)
- man erstellt nun auf dem Raspi unter /var/www/html ein .php-Datei, z.B. HK2_aus.php, mit folgendem Inhalt:
Code: Alles auswählen
<!DOCTYPE html>
<html>
<body>
<?php
$result = shell_exec('/p4d/linux-p4d/scripts/setp.sh 2355 nein');
?>
</body>
</html>
Code: Alles auswählen
<!DOCTYPE html>
<html>
<body>
<?php
$result = shell_exec('/p4d/linux-p4d/scripts/setp.sh 2355 ja');
?>
</body>
</html>
Durch Aufrufen dieser URLs über ein kleines WebUI-Skript oder einer virtuellen CUxD-Komponente in Abhängigkeit, ob die Stellventile im Heizkreisverteiler alle zu oder teilweise offen sind, lassen sich Heizkreispumpen bedarfsgerecht aus- oder einschalten.
Beispielhaft ein einfaches WebUI Programm, welches auf den Tastendruck einer virtuellen CCU2_Funk Taste, das Skript auslöst und die Befehle an den Kessel sendet (hier können natürlich noch aufwändigere Wenn/Dann-Beziehungen in Abhängigkeit der Heizkreisaktoren untergebracht werden).
hier der Code des Skripts was auf den kurzen Tastendruck ausgeführt werden soll (in diesem Fall AUS-schalten des HK2):
Code: Alles auswählen
var url1 = "http://192.168.1.7/HK2_aus.php";
var url2 = "http://192.168.1.7/HK2_ein.php";
string command="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k '"#url1#"'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(command);
10.) Updaten des P4D:
Der p4d wird permanent weiterentwickelt. Das aktuellste Update kann über folgende Schritte (Befehle fettgedruckt) per Konsole/LXTerminal installiert werden:
- p4d anhalten
/etc/init.d/p4d stop
- In den Quellordner wechseln, in dem der p4d abgelegt ist:
cd /p4d/linux-p4d
- aktuelle Daten aus dem Git holen
git pull
- Datenupdate installieren
make install
- Raspberry Pi neustarten. Die aktuelleste Version ist somit einsatzbereit.
Fazit:
O.g. Vorgehensweise bietet sehr Interessante Möglichkeiten, den Heizkessel in Homematic zu integrieren, bzw. diesen darüber zu steuern, vor allem, da es derzeit noch keine Apps zur Steuerung seitens Fröling gibt (abgesehen von der Möglichkeit Fröling Connect zu nutzen).
Für erfahrene Anwender bietet sich zudem die Möglichkeit den Heizkessel über das WebIF des p4d an der einen oder anderen Stelle auf die eigenen Bedürfnisse hin zu optimieren, was über das normale Touchdisplay unter Umständen nicht möglich ist.
Viel Spass bei der Umsetzung!
Viele Grüße