Hier möchte ich meine neueste Errungenschaft vorstellen.

Einleitung

Im Zuge einer Badsanierung musste der Fußboden(Estrich) erneuert werden. Aus deisem Grunde wurde eine neue Fußbodenheizung in Bad und Dusche eingebaut. Ziel war es neben warmen Füßen auch die vorhandene Heizleistung  der "normalen" Heizkörper zu erhöhen. Durch die Brennwerttechnik sinken die Heizwassertemperaturen entsprechend.

Zum hydraulischen Abgleich des gesamten Heizkreislaufs wollte ich im ersten Schritt die Temperaturspreizung der vorhanden Heizkörper und natürlcih auch der neuen Fußbodenheizkreise erfassen.

Hierzu habe ich auf Basis des ESP8266 WLAN Moduls kleine Temperaturmessknoten entwickelt die im Haus verteilt die Vorlauf und Rücklauftemperaturen messen und drahtlos an einen Server übermitteln und in einer eigenen Datenbank ablegen. Jetzt kann man mittels Grafana die Temperaturdaten grafisch anzeigen lassen und auswerten. So habe ich relativ schnell herausgefunden das Heizkreise im Untergeschoss viel zuviel Heizleistung bekamen und dadurch im Obergeschoss zuwenig Heizleistung ankam.

Datenerfassung

 

Hier stelle ich ein kleines Wocheendprojekt zur Messung von Licht, Temperatur und Luftdruck vor. Ursprünglich mal vorgesehen um Lichtabhängig Relais zu schalten, dient es jetzt als kleine Wetterstation. Der Raspberry kommuniziert per I2C mit  einem Lichtsensor TLS2561 sowie mit dem Boschluftdruck und Temperatursensor GY/BM280, konvertiert die Daten in physikalisache Werte und schreibt diese jede Minute in eine SQL Datenbank (MySQL).

Der Raspberry III hat ja einen eingebauten WLAN-Chip, so kann man einen Hotspot aufbauen um per Tablet (HTML, JAVASCRIPT) mal eben die aktuellen und historischen Daten anzeigen zu lassen.

Die Sensoren haben ich als preiswerte Breakoutboards beschaft, wobei die Kosten sehr überschaulich sind. Zusätzlich habe ich dem Raspberry noch eine RTC spendiert, damit die Daten auch bei Stromausfall zeitrichtig erfasst werden.

Im Bild sieht man die 3 Breakout-Boards mit etwas Verkabelung.

Hier jetzt die Details des Aufbaus.

Die Downloads fürs Programm und die Verkabelung folgen noch.

Zur Steuerung einer ganzen Gruppe mit bis zu 4 Jalousien oder Rolladen habe ich jetzt einen Kontroller auf Basis des Microprozessors STM32F103 entwickelt.Diese CPU hat viele IOs, genügend Flashspeicher bis zu 512kB und eingebauten CAN-Bus Controller. Zur zentralen Steuerung per Hausbus/CAN-Bus) ist dies natürlich ideal. Der Ruhestromverbrauch liegt bei ca. 17mA. Die Schaltung verwendet einen kleinen Step-Down Regler LT1933 von Linear Technologies um aus der 12V-Versorgung durch die Buskabel die benötigten 3.3Volt für den Prozessor zu gewinnen.

Die Ansteuerung der 8 Relais efolgt wahlweise über klassische NPN-Transistoren oder über moderne Digitaltransistoren von Infineon BCR135.

Zur lokalen Bedienung hat die Schaltung 4*2 Tastereingänge um jede Jalousie einzeln ab oder auf zu steuern, so kann neben jeder Jalousie ein lokaler Schalter montiert werden um die Jalousien auch bei Ausfall der zentralen Steuerung zu bedienen.

Als Besonderheit habe ich dieser Schaltung neben den vier einzelnen Schaltereingängen noch zwei zusätzliche Master-Eingänge spendiert. Über diesen Mastereingang kann man an einem zentralen Schalter (neben dem Lichtschalter) direkt an der Tür - alle Jalousien gleichzeitig steuern. Dies erschien mir sinnvoll um nicht zu jeder Jalousie einezln hinlaufen zu müssen.

Über den CAN-Bus-Eingang kann die zentrale Haussteuerung jeden Kanal einzeln oder auch als Teil einer Gruppe kommandieren. Die Firmware kann per RS232 bzw. USB-Anschluss parametriert werden. Hierzu ist nur die sogenannte Aktor-Id (also CAN-Bus Adresse) einzustellen. Alle weiteren Parameter kann man dann über den CAN-Bus einstellen - es geht aber auch per RS232/USB. Die wesentlichen Parameter sind die Gruppenadresse, sowie die Fahrzeiten für komplette Auf- oder Abfahrten. Als Besonderheit kann man auch die Zeit programmnieren die eine Rolade oder Jalousie benötigt um zur Häfte zu fahren. Dieser Modus wir verwendet wenn man sowohl Ab- als auch Auf-Taste gleichzeitig drückt. Dies ist sinnvoll wenn man z.B. Rolladen auf gesperrt setzen möchte.

Als Busleitung ist nur GND, +12V, sowie CAN-H und CAN-L anzuschliessen - hier verwende ich wie überall das grüne EIB-Kabel, da es für solche Steuerungsanwendungen perfekt geeignet ist.

Hier folgen die Bilder des Controllers in zwei Versionen. Die kleine Tasterplatine habe ich nur zum Test der Software benötigt.

Durch die Schaltung mit den Sharp-Halbleiterrelais - die im Nulldurchgang schalten - sind die Snubber-Cs aber eigentlich nicht mehr nötig. Diese Schaltung funktioniert auch mit alten Rolladenmotoren da für alle Relaiskontakte auch Snubber-Cs vorgesehen sind. Aber wie gesagt die habe ich am Ende nicht mehr bestückt. Hier gibts noch einen Artikel zum Thema: Halbleiterschalter bei Rolladenmotoren.

Die Downloads für die Schaltung, die Platine und für die Firmware finden sich nachfolgend:

Und hier noch die Firmware im ELF-Format:

Nach dem Flashen erfolgt die Einstellung der Parameter, Adressen etc. über die Terminal-Schnittstelle (38400Baud). Der Einbau der Platine kann in standard Bopla-Gehäuse erfolgen.

Achtung:

Diese Schaltung ist nicht für Anfänger geeignet die keine Ausbildung im Fachbereich Elektrotechnik haben, da hier potentiell mit hohen (Netz-) Spannungen gearbeitet wird. Aufbau und Test daher unbedingt nur mit Trenntrafo. Hier gibts sowas für kleines Geld:

 

MYSQL Auswertungen

Die Heizungsdaten die das Infrarotinterface der Vitotronicsteuerung im Laufe der Zeit geliefert hat stehen mit eigenem Label und Wert in einer MySQL Datenbank. Diese Daten sollte man aber auch auswerten um zu sehen, wie wirtschaftlich die Heizung arbeitet. Wieviel Energie habe ich verbraucht ? oder wie hoch war der Solarertrag diesen Monat sind interessante Informationen. Hier stelle ich jetzt so nach und nach die notwendigen Auswertungen als kleine PHP-Scripts ein.

SOLARERTRAG

Eine Liste der täglichen Solarerträge bekommt man mit folgender MySQl Abfrage:

  .syntaxhighlighter { 
     overflow-y: hidden !important; 
     overflow-x: auto !important; 
width: 200px !important
  }


>SELECT cast(timestamp as DATE), min(value),max(value),max(value)-min(value) from `vito_values` WHERE  label_id = '0x6560' group by 1 order by 1 LIMIT 0,365

Mit etwas PHP und JPGraph kann man dann die Auswertung erstellen und im Webbrowser darstellen. Man sieht jetzt z.B. dass man innerhalb von 40 Tagen mehr als 1 Megawatt Energie vom Dach in den Speicher holt. Vorausgesetzt die Heizungssteuerung rechnet richtig. Das wäre nur mit dem kleinen Vitotronic Display nur mühsam von Hand auszuwerten.

Hier findet sich der PHP-Quellcode zum Download.

Letzte bzw. neueste Werte auslesen: Die letzten Werte für alle Labels bekommt man mit folgendem Query:

SELECT vito_values.label_id, vito_values.value,vito_values.unit,max(vito_values.timestamp) FROM `vito_values`
group by vito_values.label_id order by label_id
// und hier die letzten Werte mit den dazugehörigen Labelnamen:
SELECT vito_values.label_id, vito_values.value,vito_values.unit,max(vito_values.timestamp) as date, vito_labels.label_name FROM `vito_values` 
left join vito_labels on vito_values.label_id = vito_labels.label_id group by vito_values.label_id

Hier gibts noch ein Beispiel für eine schöne grafische interaktive Darstellung mit dygraphs:

Auswertung Viessmann Heizungsdaten

 

Wer kennt das nicht, aus unerfindlichen Gründen hängt sich der heimische Router auf und nur ein Neustart kann ihn wieder zum Leben erwecken.

Im Prinzip ist es ja recht leicht, aber bis man alles zusammen hat vergehen locker 2-3h, daher habe ich hier mal zusammengetragen wie ich es gemacht habe.

Das Prinzip: Alle 5 Minuten wird durch eine http-GET Anfrage kontrolliert ob mindestens eine von zwei Webseiten erreichbar ist. Falls beide Webseiten nicht erreichbar sind, wird der Router kurz von der Stromversorgung getrennt und wieder neu gestartet. Nach einer einstellbaren Zeit von z.B. 120 Sekunden wird wieder geschaut ob er denn jetzt funktioniert. Gleichzeitig wird ein Logfile geschrieben um die Störung auch mitzubekommen. Man sollte übrigens Web-Urls verwenden die sicher Online erreichbar sind z.B. Spiegel.de oder Google.de.

Die Unterbrechung der Stromversorgung habe ich allerdings nicht auf der 230-Netzteilseite sondern auf der Niederspannungsseite des Routers gemacht -  dies reduziert den Relais- und Sicherheitsaufwand beim Auf- und Einbau. Man könnte sicherlich auch ein kleines Watchdog-Programm auf dem Router selbst laufen lassen, aber viele Router erlauben das leider nicht, so muss man keinen Eingriff in den Router machen.

Nachfolgend ein Bild des Aufbaus:

 

Die Relaisplatine bkommt man recht günstig z.B. bei Amazon oder auf EBAY.

Einfach mal suchen nach SunFounder Relay Module 4 Kanäle

Verkabelung Relais an Raspberry Pi

1. Hardwareanschluss einer kleinen Relaisplatine an die GPIOs des Raspberry-Py

Pin 11 : GPIO 17 : Relaisport

Pin 13 : GPIO 27 : Relaisport

Pin 15 : GPIO 22 : Relaisport

Pin 16 : GPIO 23 : Relaisport

2. Installation des Raspi Image Jessie

3. Installation der Python Libraries für die GPIOs

sudo -apt-get install python-dev

sudo apt-get install python-rpi.gpio
sudo apt-get python-netifaces
sudo apt-get install ethtool

Jetzt fehlen nur noch die 20 Zeilen Phyton Programm ;-)

Tatsächlich - nach einigen Wochen Betrieb - stellt sich dank Logfile heraus, das das Internet immer mal wieder ausfällt - Warum ? und ob der Router oder der Provider die Ursache ist weiß man natürlich nicht. Wichtig ist der Watchdog weil ja heutzutage auch das Telefon über den Router funktioniert und man gegebenfalls einfach nicht erreichbar ist - weil - ja weil der Router sich aufgehängt hat.