Was macht man wenn man entspannt im Garten sitzt, das schöne Wetter genießt und dann der Postbote 3mal (oder öfters) klingelt?
Man hört ihn nicht und bekommt sein heiß ersehntes Paket nicht.

Dieser Zustand ist natürlich nicht haltbar, so habe ich zusätzlich zu meinen zahllosen anderen Projekten mal schnell ein neues aufgemacht.

Im Baumarkt meines Vertrauens habe ich zusammen mit meiner Sachverständigen für schöne Klingeltöne (aka. Freundin) eine neue Klingel gekauft. Da mein Pumpenhaus direkt an die Terasse grenzt werde ich dort einen Klingeltrafo und einen 1-Port Aktor einbauen, der dann Bus-gesteuert eine Sequenz mit einer kleinen Klingel-Melodie auslöst.

Nötiger Kleinkram

Ich habe mir folgenden Kleinkram zugelegt:
Zuerst das Netzteil / Klingeltrafo von EATON.

Eaton Hutschienen Klingeltrafo

Dann einen einfachen 1-Port-Aktor von MDT (da alle meine Aktoren von MDT sind).

MDT Unterputz 1-Port Aktor

Der Verkabelung im Sicherungskasten sieht dann so aus. Simpel und einfach.

Neu verkabelter Sicherungskasten

Natürlich möchte ich, dass die außen Klingel nur klingelt, wenn auch jemand draußen ist. Das mache ich mal an der geöffneten Terassentür fest. Hier ist die entsprechende Logik dafür. (unterer Teil)

Logik zum Ausführen der Klingelsequenz

Und hier noch ein Screenshot der Sequenz.

Sequenz für das Klingeln

Schon ist das Projekt Gartenklingel fertig und es sollte kein Besuch mehr an mir vorbei gehen.

Auch im neuen Jahr habe ich natürlich wieder einige Ideen, was ich noch alles umsetzen und verbessern möchte.

Neben meiner Gartenbeleuchtung und Bewässerung möchte ich vor allem mein Haus per Sprache steuern. Doch nach den letzten Datenskandalen bei Amazon (siehe z.B. heise.de) möchte ich mir auf keinen Fall eine solche Wanze in mein Haus (vielleicht sogar in jeden Raum) hohlen.

Daher muss ein System her wo
a) ich als Individuum nicht eindeutig identifizierbar bin
b) die Spracherkennung komplett lokal stattfindet

Wie sich einige vielleicht erinnern habe ich schon einmal versucht so ein System im großen Stil selbst aufzuziehen und habe dafür sogar eine Kickstarter Kampagne gemacht (die leider nicht finanziert wurde).

Jetzt werde ich einen neuen Versuch wagen – aber deutlich kleiner. Es gibt mittlerweile diverse Frameworks für Sprachassistenten:

  • MyCroft
  • Snips
  • Jarvis
  • Hound
  • PocketSphinx

Ich bin noch weiterhin in der Evaluierungsphase, aber nach aktuellem Stand überlege ich folgendes zu tun:

  • Einen Fork von MyCroft erstellen und die Verknüpfungen zur Cloud entfernen (was nach den Aussagen auf deren Homepage auch so erlaubt ist)
  • Ein eigenes, neuronales Netz (DeepSpeech) für deutsche Sprache trainieren (oder sollte ich online eines finden dieses benutzen)
  • MyCroft zusammen mit meiner lokalen Spracherkennung nutzbar machen

Einen Fork von Mycroft zu erstellen und diesen offline lauffähig zu machen wird dabei nicht das große Problem sein. Aktuell stehe ich beim neuronalen Netz.

Nachdem ich mich jetzt umfangreich mit dem Thema KI, neuronale Netze und Spracherkennung auseinander gesetzt habe, habe ich mir von “The Spoken Wikipedia” und “VoxForge” rund ca. 250 Stunden deutsche Sprachsamples geladen und diese so umgewandelt, das ich mit DeepSpeech ein neuronales Netz trainieren konnte (hat auf meiner Hardware 3.78 Wochen gedauert).
Die Spracherkennung war schon sehr gut, allerdings nur wenn ich nahe an dem Mikrofron stand. In der Praxis wird aber später z.B. Raumhall die Sprache verändern. Auch darauf muss ich das Netz trainieren. Ich habe also alle Sprachsamples mit Raumhall angereichert (digital natürlich) und trainiere aktuell wieder. Vermutlich wird es ca. 2 Monate dauern, da ich jetzt fast doppelt so viele Sprachdaten habe. Mir ist bewusst das ich auch in der Cloud viel schneller trainieren könnte, jedoch habe ich zu Hause Solarstrom und kann somit (fast) kostenfrei das Netz trainieren.

Und ich setze große Hoffnung in das Mozilla Common Voice Projekt und möchte alle einladen dort mitzumachen. Dort werden Sprachdaten gesammelt und geprüft und dann allen kostenlos zur Verfügung gestellt. Englisch ist bereits fertig und zum Download bereit, an Deutsch wird noch gearbeitet (Stand jetzt 191 Stunden vorhanden). Sobald Deutsch zum Download angeboten wird, werde ich erneut ein Netz trainieren (müssen) um die Erkennung noch weiter zu verbessern. Vielleicht wird Mozilla beim DeepSpeech Projekt auch direkt ein trainiertes Modell für Deutsch zum Download anbieten. (so wie für Englisch geschehen). Dann kann ich mir das Training selbst sparen.

Ansonsten werde ich das Projekt so aufziehen, wie schon bei meinem Listen2Me Projekt geplant:

  • Ein “potenter” Server im Haus (i3, 8 GB, …)
  • In jedem Raum ein Beakon (Pi mit Fernfeld Mikrofon)

Die Beakons senden die Sprache als Stream an den Server, der wandelt die Sprache in Text um und übergibt diesen dann an den digitalen Assistenten. Sobald ich erste sinnvolle Resultate habe, werde ich umgehend einen weiteren Beitrag schreiben.



So. Nun kommt die schöne Jahreszeit und ich kann mich weiter um den Garten kümmern. Die Unterverteilung ist ja schon montiert, aber jetzt rüste ich ein paar Funktionen nach:

  1. Ich habe ein Gartentor gebaut und möchte erfassen ob es offen oder geschlossen ist
  2. Möchte ich meinen Unterstand im Garten mit Steckdosen ausstatten, die per Schlüsselschalter aktiviert werden können
  3. Anschluss der Parkplatzbeleuchtung
  4. Anschluss der Led-Ambiente-Beleuchtung

So sieht die Verteilung aktuell aus.

Sicherungskasten offen

Sicherungskasten geschlossen

Die Kabel sind also drin und die ersten Verbraucher sind am Aktor angeschlossen.

Die Parkplatzbeleuchtung wird vom sowieso vorhandenen Bewegungsmelder mit geschaltet. Dazu habe ich in die Programmierung des Melders einfach nur den zweiten Aktor hinzugefügt, und schon geht der LED-Fluter mit an und aus. (Punkt 3)

Dann habe ich 4 Außenleuchten gekauft und rund ums Haus platziert. Diese sind parallel geschaltet und das Erdkabel der Lampen ist in der Verteilung aufgelegt. Dann noch schnell den Aktor angeschlossen, die Sicherung hoch gedrückt und schon leuchtet es Abends gemütlich rund ums ganze Haus. (Punkt 4)

Diese Verbaucher sind oben links an den Klemmen angeschlossen. Alle Aktorausgänge hatte ich ja zuvor mit diesen Klemmen verbunden. So bleibt es schön übersichtlich.

Punkt 2 (die Steckdosen) war etwas trickreicher. Ich wollte natürlich endlich mal Strom am Unterstand haben, möchte aber nicht das diese ständing unter Spannung stehen (meine Paranoia lässt grüßen). Natürlich hätte ich jetzt einen teuren Schlüsselschalter kaufen können (um die 100,- € habe ich gesehen) und die Phase damit unterbrechen / verbinden können. Allerdings erschien mir das nicht “cool” genug.

Vor allem wollte ich aber auch, dass die Steckdosen – wie alles andere auch – über den Bus geschaltet werden können und somit auch über das Handy usw. bedienbar sind.

Ich habe mir also einen 4-Fach Schalteingang (MDT BE-04001.01) zugelegt, diesen direkt programmiert und beschriftet. (es geht nichts über Dokumentation ! 😉 )

MDT Binäreingang, 4fach MDT Binäreingang, 4fach mit VerkabelungSchlüsselschalter getarnt offen Schlüsselschalter TarnungDann habe ich einen günstigen Schlüsselschalter gekauft (bei einem der großen Elektronikversender, Auchtung: Auf einbautiefe achten!) und diesen getarnt in eine Steckdose eingebaut.
Der Schlüsselschalter verbindet einfach einen Port des Schalteingangs. Und dieser weisst dann den Aktor an zwei Eingänge (also zwei Phasen für die Steckdosen zur Lastverteilung) zu schalten.

So kann ich also nun die Steckdosen manuell per Schalter, oder über den Bus (z.B. per Handy) steuern. Punkt 2 ist damit auch erledigt.

 

Nun kommt Punkt 1. Obwohl ich nicht wirklich geübt bin Holz zu verarbeiten (Elektro geht viel besser!) finde ich, ich habe ein ganz passables Gartentor hin bekommen. Dies habe ich mit einem simplen, eingeschweissten Reedkontakt (Magnetkontakt) ausgestattet und mit dem für Punkt 2 angeschafften Schalteingang verbunden.
Tor zu = Kontakt geschlossen
Tor offen = Kontakt offen
Das brauche ich jetzt nur noch über den Bus zu signalisieren.
Der aufwändigste Teil an diesem Punkt war tatsächlich eine “schöne” Kabelverlegearbeit.

Reedkontakt montiert Reedkontakt montiert mit Kabel

Somit ist Punkt 1 auch erledigt und meine Elektroarbeiten im Garten erstmal beendet.

Als nächstes werde ich mich dann wohl um eine automatischen Gartenbewässerung kümmern…

Nachdem ich ja schon vor einiger Zeit zu diesem Thema experimentiert habe gehe ich dieses nun wieder an.

Ich habe erneut viel gesucht und recherchiert und kein fertiges Produkt gefunden, dass meine Ansprüche an Datenschutz erfüllt. Darum werde ich es wieder selbst bauen. Während meiner Arbeit kam mir dann die Idee, aus dieser Software vielleicht ein “richtiges” Produkt zu machen, so dass auch andere von meiner Arbeit profitieren können.

In den letzten Wochen habe ich viel Zeit in die Planung und Entwicklung einer Crowd-Funding-Kampagne gesteckt (ist mein erstes Crowd-Funding) und die Software hat sich zu einem “richtig großen Ding” gemausert.

Falls du Interesse daran hast die Kampagne zu unterstützen, ist hier der Link zur Projektseite.

Zwei Jahre nach Hauskauf möchte ich mich nun endlich um den Garten kümmern. Wie schon bei der Renovierung selbst möchte ich euch nicht mit Details der Bepflanzung und dem Häuschenbau langweilen, sondern vielmehr die elektronischen Pläne schildern.

Ich möchte im Außenbereich eine Unterverteilung bauen. Mit eigenen KNX Bussegment, welches elektrisch vom Haupt-KNX-Segment getrennt ist (für den Kurzschluß- und Fehlerfall). Diese Unterverteilung soll dann die komplette Außenelektrik steuern.

Geplant ist folgendes:

  • LED Beleuchtung rund um Haus (Ambiente Beleuchtung als auch Flutlicht)
  • Bewegungsmelder zur Parkplatzbeleuchtung
  • Beleuchtung der Gartenhütte
  • Schaltbare Steckdosen für Gartengeräte
  • Steuerung der Bewässerung und Messung der Bodenqualität
  • Alarmierung wenn ich vergesse die Blumen zu gießen
  • Gartentor-Sensor (offen zu)
  • Extra Klingel am Gartentor

Realisiert wird das über einen IP67 Unterverteiler in der Gartenhütte. Dieser ist zur Sicherheit auch abschließbar. Es kommen dort eigene Aktoren sowie eine Busstromvorsorgung rein. Im Haus wird das KNX Segment dann mittels Linienkoppler mit dem Hauptstrang verbunden. Dadurch bekommen die Außengeräte auch andere KNX-Nummern. Haupt-Linie ist dann bei mir 1.1.X und die Außenlinie wird 1.2.X werden.

Außerdem kommen natürlich ein haufen Sicherungen und ein FI-Schalter mit in die Unterverteilung. (Sicher ist Sicher).
Damit der Versicherungsschutz nicht gefärdet ist werde ich das von einem Elektriker zusammenstecken lassen. Die Programmierung mache ich dann wieder selbst.

innen

So sieht die Unterverteilung von innen aus. Unten eine Reihe Sicherungen mit FI. Gabs als Set. Soviel Sicherungen brauchen ich (noch) nicht, aber das Set war billiger als einzeln kaufen. In der Mitte ist links die KNX Busversorgung und rechts daneben ein 16-fach Aktor. Oben links sind die Klemmen zum Auflegen der Kabel zu den Endgeräten.

installiert

So sieht die Unterverteilung dann montiert aus. Unten ist schon das Loch für die Kabelzuführung zu sehen. Dieses Loch wird dann von einem Kabelkanal abgedeckt.

busskoppler

Um den Außen-Bus mit dem Haut-Bus zu verbinden habe ich einen Linienkoppler verwendet. Dieser sitzt in einer kleinen Kiste in der Garage auf halbem Weg nach draußen. Er trennt die beiden Bus-Segmente elektrisch und leitet nur entsprechend konfigurierte Pakete weiter. Nicht ganz günstig das Ding, aber sorgt dafür das mein Haus noch funktioniert, auch wenn es außen einen Kurzschluß gibt.

Mein Haus kann schon viel, aber wirklich verstehen tut es mich noch nicht.

Daher muss nun eine Spracherkennung und Sprachausgabe her!

Aktuell suche ich noch nach Möglichkeiten zur Realisierung.

Soweit bin ich bisher:

  • Raumfeld Mikrofone, wie das Samson UB1 eignen sich super um einen ganzen Raum zu überwachen (Samson UB1 USB) und haben USB Anschluß
  • Ein PI hat nicht genug Rechenleistung um ein großes Wörterbuch zeitnah zu durchsuchen und eine Spracherkennung zu machen
  • Es muss viele, von mir “Beacons” getaufte Geräte geben, welche die Audio-Aufzeichnung machen und dann an einen zentralen Server zur Texterkennung weiterleiten
  • Es gibt (soweit ich bisher recherchiert habe) zwei Open-Source Ansätze zur Texterkennung: CMU Sphinx (http://cmusphinx.sourceforge.net) und Julius (https://github.com/julius-speech/julius)
  • Ich möchte auf jeden Fall eine Offline-Sprach-Erkennung, da ich nicht möchte das die großen Konzerne jedes gesprochene Wort im Haus mit bekommen (Stichwort: Datenschutz)

Falls jemand schon Erfahrung mit Spracherkennung hat, freue ich mich auf Hinweise und Anregungen. Ich halte ich hier über meine Fortschritte auf dem Laufenden.

Ich habe bei mir den KNX-Bus ausschließlich über Kabel realisiert. Lt Foren und meinen Elektriker funktioniert das am zuverlässigsten.

Doch nun habe ich ein Problem. Es ist Weihnachtszeit und es soll ein (beleuchteter) Weihnachtsbaum in den Vorgarten. Natürlich habe ich im Garten kein KNX und auch in der Garage (wo der Strom herkommen soll) habe ich keine schaltbaren Steckdosen und auch keine einfache Möglichkeit die Verdrahtung zu ändern.

Die einfachste Lösung war daher Funk. Nach kurzer Recherche viel meine Wahl auf das ELV FS20 System. Die Aktoren kosten nicht viel
Funksteckdose FS-20 (Funksteckdose, ca. 40,- €)
und es gibt einen Bausatz um FS20 per UART ansprechen zu können
http://www.elv.de/elv-fs20-uart-sender-fs20-us-komplettbausatz.html (FS20-UART, ca. 20,- €)

Wie? UART? Also seriell? Na, das wäre doch wieder eine Aufgabe für unseren PI, der sich auch schon um die Heizung, Solaranlage und um die Anwesenheits-Kontrolle kümmert!

Also flux den Bausatz bestellt und an die UART des PI angeschlossen. Im Moment unterstützt mein Script erstmal nur “senden”, also keine bidirektionale Kommunikation. Und, um auch möglichst viel Abwechslung in die Scripte zu bringen, habe ich das in Python umgesetzt. Das Script gibt es hier: FS20Listener
Es wird per Screen aufgerufen und läuft die ganze Zeit im Hintergrund. Natürlich hätte ich auch einen richtigen Dienst machen können, aber so ging es erstmal am schnellsten. Vor allem sieht man die Log-Ausgabe direkt in der Console, was das debuggen einfacher macht.

Das Script dient als transparenter Proxy. D.h. es empfängt Netzwerkpakete eine bestimmten Musters auf Port 22100 und leitet diese quasi 1zu1 an das FS20 Modul weiter.
Und natürlich, wie könnte es auch anders sein, erzeugt mein Homeserver wieder diese Pakete, die ich nun von überall aus, über den BUS, auslösen kann.

Gira Homeserver FS20 Paket verschicken
Gira Homeserver FS20 Paket verschicken

Gira Homeserver FS20 Paket verschicken
Gira Homeserver FS20 Paket verschicken

 

Natürlich muss ich für jede Aktion ein eigenes Telegramm machen, aber das ist ja nicht schlimm. In meinem Beispiel kann ich jetzt also eine Funksteckdose AN und AUS-Schalten. Und das über KNX!

Natürlich macht es auch Sinn, dass mein Haus weiß welche der Bewohner gerade zu Hause sind.

So kann man z.B. weniger Licht anmachen wenn es draußen Dunkel wird, wenn keiner da ist.

Realisiert habe ich das ganz einfach. Nämlich über die Handys!

Jeder Bewohner hat ein Handy, mit WLAN. Das Handy bucht sich zu Hause automatisch ins WLAN ein. Ich habe den DHCP-Server so konfiguriert, dass jedes Handy immer die selbe IP-Adresse bekommt. z.B. Handy 1 = 192.168.178.55, Handy 2 = 192.168.178.71, usw

Jetzt brauche ich nur noch regelmäßig zu versuchen diese IP-Adressen zu pingen und weiß somit ob das Handy (und somit auch der Bewohner) zu Hause ist.

Das macht auch wieder der kleine PI, denn Ihr schon aus dem Heizungs-Artikel kennt. Das Script gibt es hier: ping-handy

Das Script pingt die Handys und schickt dann wieder ein IP-Paket an den Homeserver mit dem Aufbau IP=”192.168.178.X”;STATUS=”0″.
Der Homeserver wartet auf diese Pakete, schneidet es aus einander und setzt den KNX-Objekte auf die entsprechenden Werte.

Homeserver IP Paket Empfangen
Homeserver IP Paket Werte

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.

Fußbodenheizung und Wärmepumpen mit Motorventilen
Fußbodenheizung und Wärmepumpen mit Motorventilen

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.

GIRA Homeserver IP Empfangspaket
GIRA Homeserver IP Empfangspaket

GIRA Homeserver IP Empfangspaket
GIRA Homeserver IP Empfangspaket

 

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:

  1. Außentemperatur (über Wetterstation)
  2. Heizungsstatus an/aus (über Energiezähler)
  3. Temperatur von Vor- und Rücklauf (über 1-Wire Sensoren)
  4. 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:

Gira Experte Heizungssteuerung Logik
Gira Experte Heizungssteuerung Logik

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:

Gira Experte Heizungssteuerung Fenster offen Logik
Gira Experte Heizungssteuerung Fenster offen Logik

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.

Wie schon einige Male erwähnt funktioniert alles im Haus mit Strom. Ich heize mit Strom, ich mache warmes Wasser mit Strom, usw. Daher lag es nah auch meinen eigenen Strom zu erzeugen. Aus diesem Grund habe ich eine 19.8 KWp Anlage auf meinem Dach. Und natürlich soll auch diese mit dem KNX Bus gekoppelt werden.

Zumindest erstmal soweit, dass der Bus weiß ob die Sonne scheint und wieviel Strom gerade erzeugt wird.
Zur Verbesserung des Eigenverbrauchs wäre es auch sinnvoll zu wissen wieviel Strom aktuell das ganze Haus verbraucht. Sollte dann noch “Strom über sein”, könnte man z.B. die Waschmaschine oder den Trockner starten.

Gott sei Dank ist der Wechselrichter aktuell und bietet die aktuellen Schnittstellen. Es ist daher möglich über Netzwerk an einige Daten zu kommen.

Diesmal habe ich das mit einem PHP-Script gelöst, das werde ich aber noch etwas schöner machen und auf eine andere Programmiersprache umbauen.
Das Script gibt es hier: solar-daten

Auch hier ist das Vorgehen wieder ganz einfach:

Das Script liest die Daten vom Wechselrichter aus, bereitet sie auf und schickt sie dann über ein IP-Paket an den Homeserver. Dieser schneidet das Paket wieder auseinander und setzt die KNX-Objekte auf die entsprechenden Werte. Hier gibts nur zwei: Strom-Erzeugung und aktueller Strom-Verbrauch. Den Stromverbrauch kennt der Wechselrichter auch wieder über eine S0 Schnittstelle zum Stromzähler und brauchte diesen Wert für die dynamische 70% Regelung. (Das ist Abrechnungstechnisch. Wenn jemand mehr dazu wissen möchte freue ich mich auf eine Nachricht).

Ich öffne also am Homeserver wieder einen Port, der auf ein Paket nach dem Muster “Stromerzeugung=X;Stromverbrauch=Y” wartet und dann die KNX-Objekte entsprechend mit Werten füllt.

Gire Homeserver IP Paket Empfangen Solar Anlage
Gire Homeserver IP Paket Empfangen Solar Anlage

Gire Homeserver IP Paket Empfangen Solar Anlage
Gire Homeserver IP Paket Empfangen Solar Anlage