Heute: die Warmwasser-Steuerung
Morgens unter der Dusche sind die Gedanken bei mir absolut im Leerlauf. Das führt dazu, daß mir immer ganz komische Sachen einfallen. Gestern dachte ich darüber nach, was für eine Katastrophe eigentlich die häusliche Warmwasser-Erzeugung ist. An der Therme hat man zwei Optionen: Warmwasser "on demand" erzeugen, also als Durchlauferhitzer in dem Augenblick, in dem es benötigt wird. Nachteil: Man wartet lange auf den ersten Spritzer Warmwasser und die Therme muss natürlich erst die ausgekühlten Leitungen und Zwischenbehälter anwärmen. Andere Option: Warmwasser vorhalten auf einem bestimmten Temperaturniveau. (Achtung, Legionellen! ;-) ) Bessere Thermen haben dafür noch eine Zeitschaltuhr, mit der man die "relevanten" Tageszeiten vorgeben kann. Dann dreht man auf und husch: Warm. Ist man natürlich einen Tag der Woche z.B. früher unterwegs heizt der Zeitschalter umsonst und die Dauerheizung verbrät ohnehin eine Unmenge Energie. Was könnte man also machen?
Natürlich gibt es bereits schlaue Lösungen zu dem Problem. Eine Version erkennt durch kurzfristige Entnahme (2 Sek), dass gleich eine größere Menge Warmwasser benötigt wird. Ein anderer koppelt die Warmwassersteuerung an Bewegungsmelder, so dass erkannt wird, in welchem Raum möglicherweise gleich eine Entnahme erfolgt. Das funktioniert wahrscheinlich alles ganz gut. Am Ende steht natürlich immer die Frage, ob sich der ganze Aufwand rechnet aber dem Bastler ist das natürlich nicht wirklich wichtig, es geht ums Prinzip.
In dem Augenblick fiel mir eine Seminar wieder ein, das ich vor 20 Jahren(!) mal besucht hatte. Damals waren die "neuronalen Netze" eine total hippe Modeerscheinung in der Informatik. Dabei geht es um die vereinfachte Nachbildung von biologischer Nervenleitung mit Software. Nervenzellen werden also "Knoten" dargestellt, die mit Nervenbahnen ("Leitern") verbunden sind und eine Gitter- Netz- oder Baumstruktur bilden. Wenn ein Knoten angeregt wird gibt es eine bestimmte Wahrscheinlichkeit, mit der dieser Impuls an einen verbundenen Knoten weitergegeben wird. In einem anderen Modell wird ein Impuls auf alle weiteren verbundenen Knoten mit einer bestimmten Gewichtung verteilt. Er teilt sich damit auf und schwächt sich ab. Die Gewichtung kann dabei auch von der Stärke des Eingangsimpulses abhängen, so dass einzelnen Knoten auch als Verstärker oder Dämpfer wirken können. Die Gewichtungen oder Wahrscheinlichkeiten werden in den Netzen durch Training vergeben. In dieser Phase werden sie zufällig eingestellt und das Ergebnis anhand des gewünschten Zielzustands bewertet. Wenn dieser erwünscht oder positiv ist erhalten die Knoten Rückmeldung und liefern bei einem gleichen oder ähnlichen zukünftigen Eingangsimpuls denselben Ausgangsimpuls.
Mit diesem Verfahren kann man mit neuronalen Netzen Reaktionen auf ganz bestimmte komplexe Eingangsmuster erreichen, was mit klassischer Programmierung nur sehr aufwändig möglich wäre, z.B. Histogramm-ähnliche Funktionen abbilden, Bild- und Tonerkennung, Optimierungen u.v.m.
Im vorliegenden Fall trainiert man das Netz über ein Zeitmuster, das die Warmwasserentnahme abbildet. Das Training ist einfach: Wird Warmwasser entnommen, bekommt das Netz für den vorliegenden Zeitpunkt ein positives Feedback. Nach der Trainingsphase "weiß" dann das System, dass z.B. jeden Morgen zwischen 6:00 und 7:00 Warmwasser gebraucht wird, samstags allerdings von 8:00 bis 9:00 und sonntags von 9:00 bis 10:00. Der Intervall für die Mustererkennung wäre dabei z.B. eine Kalenderwoche, also die Zeiteinheit, nach der sich das Eingangsmuster mit größter Sicherheit wiederholt. Ein einzelner Tag halte ich für zu knapp, wenn z.B. ein Familienmitglied an einem bestimmten Abend Sport hat und danach heiss duschen will ist nicht erforderlich, dass auch an allen anderen Tagen um diese Zeit Warmwasser vorgehalten wird.
Ein Vorteil gegenüber anderen Systemen ist, dass keine externe Rückmeldung durch den Anwender (Kurzwasserentnahme) oder andere externe Systeme erforderlich ist. Außer der Programmlogik, die z.B. mit einem Arduino realisiert werden könnte ist nur ein Zeitgeber, ein Sensor für die Dauer der Warmwasserentnahme und ein Schalter erforderlich, der zwischen Training und Anwendung wechselt. Außerdem natürlich ein Rückstellknopf, mit dem ein Training wieder gelöscht werden kann.
Wer baut das? ;-) (ich programmier es auch)