Wie schon früher angedeutet möchte ich den Bus nach und nach erweitern. Vor allem möchte ich, dass mein Hausbus der zentrale Dreh- und Angelpunkt ist und quasi immer alle Daten zur Verfügung hat. Damit er dann entsprechend handeln kann.
Z.B. “Wenn die Solaranlage > 5 KWh erzeugt, aber es im Haus kalt ist, dann mach die Heizung an”
D.h. der Bus muss die Leistung der Solaranlage (siehe späterer Eintrag) als auch die Leistung der Heizung kennen und die Heizungsventile betätigen können.
Doch von vorn:
Zunächst muß man wissen, dass im ganzen Haus Fußbodenheizung verlegt ist die von einer Wärmepumpe beheizt wird. Ich habe die einzelnen Heizkreise (jeder Raum hat mindestens einen Heizkreis) mit Motorantrieben ausgestattet und entsprechend an die Heizungsaktoren angeschlossen. (siehe Rahmen). Die große, graue Kiste ist übrigens die Wärmepumpe. Von 2009 oder so. Genaues weiß man nicht, habe ich mit dem Haus mit gekauft. Aber einen Netzwerkanschluss hat das Ding nicht, geschweige denn kennt es irgendwas von KNX.
Die Ventile an den Heizkreisen sind ganz normale Ventile, wie man sie auch von normalen Heizkörpern kennt. Die Motoren habe ich mir vom Sanitär-Onkel des Vertrauens liefern lassen. Größenordnung 20,- € pro Stück und sie werden mit 230V betrieben. Es gibt auch welche für 12V, aber da ich schon die 230V Aktoren hatte, passte das so.
Damit kann der Bus die Heizung in jedem Raum einzeln auf- und zu drehen. Darüber kann man indirekt dann auch die Wärmepumpe selbst steuern. Denn diese springt ja nur an, wenn das Wasser kalt ist. Was immer genau dann passiert, wenn der BUS einen kalten Raum öffnet. Für die Interessierten unter euch: Mein Haus hat keinen Gasanschluß. Ich mache alles mit Strom. Heizen per Wärmepumpe und Warmwasser per Durchlauferhitzer. Darum auch Solaranlage. Im Sommer von ich quasi Selbstversorger.
Doch zurück zur Heizung. Damit der Bus auch weiß ob die Heizung bereits läuft und zur Kontrolle und Optimierung der Heizparameter wollte ich sowohl den Stromverbrauch der Heizung (ca. 4 KW pro Stunde) als auch die Temperaturen im Vor- und Rücklauf messen.
Und das sollte meine erste Erweiterung werden.
Das Projekt gliedert sich in zwei Teile: Einmal die Verbrauchserfassung und einmal die Temperaturen. Beides zusammen wollte ich mit einem Raspberry PI machen.
Zunächst der Verbrauch:
Ich habe mir dazu vom Elektriker einen eigenen Stromzähler in den Sicherungskasten montieren lassen, der nur für die Wärmepumpe da ist. Dieser ist vom Typ DRT428DC und hat einen S0-Ausgang. Hier “morst” der Zähler quasi den Verbrauch. 1000 Impulse = 1 KW. Ich weiß selbst das es kein geeichter Zähler ist, aber für meinen Zweck ist er völlig ausreichend genau. Ich musste also nichts weiter tun als die beiden Ausgänge des Zählers auf z.B. PIN8 des PI zu legen (also einer auf Masse, einer auf den PIN) und mit einem kleinen C++ Programm zählen wieviel Impulse dort pro Sekunde ankommen. Das schreibe ich einfach erstmal in eine MySQL-Datenbank (für spätere Auswertung) und fertig. Das Programm gibts hier: heizungsserver.c
Damit auch der KNX das sofort mitbekommt, schicke ich es dann zusätzlich noch an den Homeserver. Dazu habe ich im GIRA-Experten einen IP-Empfangs-Port aufgemacht.
Jetzt kann ich einfach ein IP-Paket an Port 11108 schicken, welches den Inhalt “WP-Stromverbrauch=X;WP-HK-Vorlauf=Y;WP-HK-Ruecklauf=Z” haben muss. X, Y und Z werden dann in die entsprechenden KNX-Objekte geschrieben und lassen sich in Logiken verwenden oder in der Visu ausgeben.
Damit weiß nun das KNX was die Heizung gerade verbraucht und ob sie aktiv ist (denn dann ist der Verbrauch natürlich höher)
Nun zur Temperatur:
Im Elektronikhandel habe ich mir 1-Wire-Temperatursensoren besorgt. Modell DS18B20. Damit, und mit dem 1-Wire-Framework des PI lässt sich ganz simpel die Temperatur auslesen. Ich habe dann die Sensoren einfach mit etwas Wärmeleitpaste und Kabelbindern am Vor- und Rücklauf befestigt und mit diesem kleinen Perl-Script lese ich die Temperaturen aus und speichere sie auch in der MySQL Datenbank (siehe oben). readtemperatures
Weitere Informationen zur Verdrahtung usw findet man im Internet, z.B. hier http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Onewire/index.html
Somit habe ich nun alles zusammen, was ich für eine ordentliche Heizungssteuerung brauche:
- Außentemperatur (über Wetterstation)
- Heizungsstatus an/aus (über Energiezähler)
- Temperatur von Vor- und Rücklauf (über 1-Wire Sensoren)
- Raumtemperatur über Lichtschalter (ja, die Gira-Lichtschalter haben einen Temperatursensor eingebaut!)
Damit habe ich dann eine Logik im Gira-Experten, für den Homeserver erstellt:
Links am Rand sieht man die ganzen Eingänge (grün). Einmal die gemessene Raumtemperatur (RT) als auch die Wunschtemperaturen pro Raum (SOLL). Außerdem gibt es noch einen Sommerbetrieb und eine Möglichkeit den Motorstellwert für jeden Raum zu übersteuern. Die Logik für jeden Raum ist immer gleich: SOLL und IST Temperatur gehen auf den Heizungsregler (vorgefertigte Komponente). Ebenso Sommerbetrieb. Wenn Sommerbetrieb = 1 geht der ganze Regler aus. Der Regler gibt dann eine Prozentzahl aus, wie weit der Motor auf dem Heizungsventil aufmachen soll (0 = zu, 100% = offen). Dieser Wert kann ggf. noch übersteuert werden. Einige Heizkreise (z.B. Wohnzimmer) müssen immer zu 16% offen sein, damit die Wärmepumpe effizient arbeitet. Und der so ermittelte Wert wird dann auf dem Aktor, welcher den Motor steuert, ausgegeben. Fertig! 😉
Zusätzlich habe ich noch für jeden Raum eine Fenster-Offen Logik gemacht. Ja, ich weiß das es bei Fußbodenheizung nicht wirklich Sinn macht (da diese viel zu träge ist), aber ich fands trotzdem toll:
Hier sieht man links auch wieder die verschiedenen Eingänge. Die Logik ist etwas umfangreicher: Wenn es draußen unter der eingestellen Heiztemperatur ist (draußen Kalt?) UND das Fenster in dem Raum offen ist (Fenster offen?) UND der Raum noch nicht reduziert ist (Reduziert?) dann starte die Überwachungszeit (Überwachungszeit warten). Wenn diese um ist (bei mir 3 Minuten) und der Raum noch immer nicht reduziert ist, DANN Heizung aus. Wird das Fenster wieder geschlossen, SOFORT Heizung an. Diese Logik gibts für jeden Raum und sie sorgt dafür, dass im Winter die Heizung des entsprechenden Raums zu geht, sobald das Fenster länger als 3 Minuten offen ist.