Die Warmwasser Zirkulationspumpe an meiner Vaillant VSC 196/2 lässt sich leider nicht über FHEM, sondern nur durch die festgelegten Zeiten der CalorMatic 430 steuern. In der CalorMatic kann man drei Zeiten Pro Tag einstellen. Das ist nicht so Variabel.  Besser wäre es natürlich, wenn FHEM Zugriff auf die Pumpe bekommen würde und diese steuern könnte. Zum Beispiel wenn man an Feiertagen die auf einen Wochentag fallen zu Hause ist. Klar kann man dann zur Heizung gehen und das Wochenschaltprogramm für die Pumpe ändern oder einfach das kalte Wasser weglaufen lassen. Aber wenn man schon eine Hausautomation hat kann diese auch die Zirkulationspumpe entsprechend steuern. 

ACHTUNG: Das Berühren von 230V Netzspannung ist lebensgefährlich! Arbeiten am 230V-Netz dürfen nur von autorisiertem Elektrofachpersonal ausgeführt werden. Wer nicht wirklich weiß was er tut sollte sich in jedem Fall Unterstützung durch eine Elektrofachkraft oder elektrotechnisch unterwiesene Person einholen. Ich übernehme keine Haftung für personelle oder materielle Schäden, die durch den Nachbau und/oder Verwendung dieser Schaltung, Scripte oder dieser Anleitung entstehen.

Leider kann man bei der Vaillant CalorMatic 430 die Warmwasser Zirkulationspumpe nicht über den eBus ein oder ausschalten. Die Recherche im Internet förderte auch nichts anders zu Tage. Bis auf einen interessanten Beitrag im "Läuft: Heizung mit eBus-Schnittstelle" Megathread im FHEM Forum in dem der Benutzer Prof. Dr. Peter Henning auf einen von ihm verfassten Beitrag in der FHEM Wiki verweist. Er beschreibt dort die einfache Möglichkeit die Zirkulationspumpe auch über FHEM zu steuern. In seiner Lösung kommt für die Kommunikation der 1-Wire Bus zum Einsatz.

Da ich bei mir den 1-Wire Bus nicht im Einsatz habe, wollte ich diesen auch dafür nicht extra einführen. Also habe ich die dort vorgestellte Schaltung so abgewandelt, dass man diese Universal mit den GPIO's eines ESP8266, Raspberry Pi oder etwas vergleichbarem nutzen kann. Darüber hinaus fällt das relativ Kostenintensive 1-Wire Modul D2P weg, dass ich mit 12,90€ zzgl. Versand im Internet recherchiert habe. 


Schaltungsaufbau

Im wesentlichen besteht die Schaltung aus zwei Kondensatornetzteilen, einem Lastrelais/Opokoppler zur galvanischen Trennung und zwei Transistoren aus der Grabbelkiste. Über das erste Kondensatornetzteil (unten) wird der Schaltung über den Optokoppler der Schaltausgang der Pumpe von der Heizungssteuerung zugeführt. Damit erkennt die Schaltung ob die Heizungssteuerung die Pumpe gerade ein oder ausgeschaltet hat. Ohne weitere Steuerung von außen bleibt alles so wie es ist und die Pumpe läuft sobald die Heizungssteuerung diese einschaltet. Das wird durch die LED1 angezeigt. Diese wird vom zweiten Kondensatornetzteil versorgt und leuchtet sobald das Solid-State Relais eine Spannung auf den Ausgang P_out gibt. Zusätzlich wird auf der GPIO Seite der Ausgang an JP1 Pin 3 auf Low gezogen.

Möchte man jetzt die Pumpe aber ausschalten obwohl die Heizung diese noch eingeschaltet hat, kann man das mit den Transistor T1 tun. Zieht dieser die Masse auf den Anschluss 3 des Solid-State Relais. Dadurch wird das Relais ausgeschaltet und die Zirkulationspumpe geht aus. Möchte man hingegen die Zirkulationspumpe einschalten auch wenn die Heizung dies gerade nicht vorgesehen hat (z.B. an einem variablen Feiertag) kann man den Transistor T2 entsprechend ansteuern. Der Anschluss 4 des Halbleiterrelais wird auf Masse gezogen, das Relais schaltet und die Pumpe läuft.


Technischer Aufbau

Als Gehäuse habe ich eine Aufputz-Verteilerdose (Hensel D9125 Kabelabzweigkasten) gewählt. Diese Ausführung ist etwas Robuster als die Standarddosen aus dem Baumarkt und erhöhen dadurch die Sicherheit bei einem Selbstgebautem Gerät das mit Netzspannung arbeitet. Der Kabelabzweigkasten hat die Schutzart IP55 und ist für Innenräume und geschützte Installation im Freien geeignet. Auf die Befestigung der Platine mit Schrauben durch das Gehäuse habe ich absichtlich verzichtet und diese nur mit Heißkleber fixiert. Somit bleibt die Schutzklasse II (Schutz durch doppelte oder verstärkte Isolierung) erhalten.

Als 230V Zuleitung habe ich ein Kabel 3x1,5mm² direkt an die Zuleitung der Heizung angeschlossen. Da die Schaltung in Serie mit der Heizungssteuerung liegt reicht für die Steuerung der Pumpe eine 2x1,5mm² Leitung völlig aus. Ich habe die Schaltung in der Heizung eingeschliffen. Damit habe ich weiteren Installationsaufwand vermieden. Es wird einfach die Phase der Pumpe aus der Heizung ausgeklemmt und mittels geeigneter Verbinder mit der Leitung P out  der Platine verbunden. Die Leitung P in wird in die frei gewordene Klemme des Pumpenanschlusses an der Heizung geklemmt. 



Installation MQTT Client

FHEM und die Heizung kommunizieren bei mir via MQTT miteinander. Da ich dafür einen eigenen Raspberry Pi bereitgestellt habe, suchte ich eine Möglichkeit die zusätzliche Steuerung ebenfalls über das MQTT Protokoll anzusteuern. Dafür habe ich auf dem Raspberry Pi einen zusätzlichen MQTT Client installiert (Link unten). Damit lassen sich sehr einfach die GPIO's des Raspberry Pi setzen und auslesen. Installiert wird der Python MQTT Client mit:

sudo apt-get install python-pip (Falls noch nicht vorhanden)
sudo pip install pi-mqtt-gpio

Danach kann man eine config.yml erstellen oder die config.example.yml bearbeiten. Diese ist relativ einfach gehalten und selbsterklärend. Für die Steuerung der Platine habe ich folgende config.yml angelegt:

mqtt:
host: <Broker IP> meist FHEM Installation
port: <Broker Port> meist 1883
user: "<Benutzername>" falls benutzt, sonst leer
password: "<Passwort>" falls benutzt, sonst leer
topic_prefix: home/wpump

gpio_modules:
- name: raspberrypi
module: raspberrypi

digital_outputs:
- name: stop
module: raspberrypi
pin: 21
on_payload: "on"
off_payload: "off"
initial: low

- name: fhem
module: raspberrypi
pin: 22
on_payload: "on"
off_payload: "off"
initial: low

digital_inputs:
- name: input
module: raspberrypi
pin: 23
on_payload: "on"
off_payload: "off"
pullup: yes
pulldown: no

Nach der Installation und Einrichtung der Config kann man den Server testweise starten um zu sehen das alles wie gewünscht läuft. Der Client sollte jetzt schon Daten zum Server senden.

/usr/bin/python -m pi_mqtt_gpio.server /Pfad_zur_config/config.yml 

Zum Schluss nur noch den automatischen Start des Server in die rc.local eintragen. Die beiden Zeilen einfach an das Ende der Datei jedoch noch vor dem exit 0 eintragen.

sudo nano /etc/rc.local

printf "Start pi-mqtt-gpio-develop"
/usr/bin/python -m pi_mqtt_gpio.server /var/scripts/config.yml 1>/dev/null 2>&1 &

Danach noch ein sudo reboot.


Integration in FHEM

Die einzige Besonderheit bei der Implementierung des neuen Device ist die Tatsache, dass der Ausgang JP1/3 nicht direkt erkennen lässt, ob die Pumpe gerade läuft oder nicht. Das ist ein wenig Tricky. Um aber trotz alledem zu erkennen was die Pumpe gerade macht habe ich das Attribut stateFormat mit den entsprechenden Bedingungen gefüllt. Damit zeigt das state genau den tatsächlichen Status der Pumpe an.

defmod WWPumpe MQTT_DEVICE myBroker
attr WWPumpe IODev myBroker
attr WWPumpe devStateIcon on:rc_GREEN:off off:rc_RED:on
attr WWPumpe genericDeviceType switch
attr WWPumpe publishSet on off vaillant_wpump/output/fhem/set
attr WWPumpe publishSet_Stop on,off vaillant_wpump/output/stop/set
attr WWPumpe room 3.9_Heizung,9.6_Homekit
attr WWPumpe stateFormat {\
if(ReadingsVal($name,"Stop","0") =~ /on/) {\
return "off";;\
} \
elsif(ReadingsVal($name,"state","0") =~ /off/ and ReadingsVal($name,"Stop","0") =~ /off/) {\
return "off";;\
}\
elsif(ReadingsVal($name,"state","0") =~ /on/ and ReadingsVal($name,"Stop","0") =~ /off/) {\
return "on";;\
}\
elsif(ReadingsVal($name,"Input","0") =~ /on/ and ReadingsVal($name,"Stop","0") =~ /off/) {\
return "on";;\
}\
}
attr WWPumpe subscribeReading_Input vaillant_wpump/input/input

Jetzt hat FHEM den vollen Zugriff auf die Zirkulationspumpe der Heizung. Mit alle Möglichkeiten die sich jetzt bieten z.B. Wochenschaltprogramme, Anwesenheitssteuerungen oder die Pumpe einfach nur ein oder ausschalten. 

Nachtrag vom 25.03.2019

Bei der Programmierung der FTUI habe ich festgestellt, dass man die Pumpe natürlich nicht einfach einschalten kann wenn das Reading Stop auf on steht. Wie oben beschrieben ist das Stop dem einfachen Ein,-Aus übergeordnet. Damit man nun auch die Pumpe händisch einschalten und ausschalten kann muss zwingend das Reading Stop auf off gesetzt werden. Dafür habe ich einen zusätzlichen Dumm und ein zweites Notify erstellt welches beim setzen des "state" auf on das Reading Stop auf off setzt.

defmod DM_WWPumpeFTUI dummy
attr DM_WWPumpeFTUI devStateIcon on:rc_GREEN:off off:rc_RED:on
attr DM_WWPumpeFTUI room 3.9_Heizung
attr DM_WWPumpeFTUI setList on off
attr DM_WWPumpeFTUI webCmd on:off
defmod WWPumpe_SteuerungFTUI notify DM_WWPumpeFTUI:.* {\
Log(3,"Name: ". $NAME." Event: ". $EVENT);;\
if($EVENT =~ /on/)\
{\
fhem("setreading WWPumpe Stop off");;\
fhem("set WWPumpe on");;\
\
}\
elsif($EVENT =~ /off/)\
{\
fhem("setreading WWPumpe Stop on");;\
fhem("set WWPumpe off");;\
}\
}
attr WWPumpe_SteuerungFTUI addStateEvent 1
attr WWPumpe_SteuerungFTUI disable 0


Damit kann man jetzt über den Dummy DM_WWPumpeFTUI die Pumpe auch händisch ein und auch wieder ausschalten.


Es sind noch ein paar Prototype-Platinen aus der Bestellung übrig. Wer Interesse hat, kann diese für 2€ zzgl. Versand im Brief bei mir beziehen.


Links

Läuft: Heizung mit eBus-Schnittstelle

FHEM WiKi 1W-WPump

MQTT Client für den Raspberry Pi

Kommentare powered by CComment