Netaddict



Das Projekt wurde in dieser Form nicht fertig gestellt. Die Software war immer instabil und hängte sich nach kurzer Zeit auf. Weiterhin ergaben sich im Rahmen der Umsetzung mehrere Änderungen am Projektziel. Der neue Ansatz zur Problemlösung findet sich hier. Zu Dokumentationszwecken bleibt diese Seite aber erhalten.

HappyHeaterMon Heizungsüberwachung

Ziel des Projekts ist, den Zustand meiner Heizung im Keller mittels geeigneter Sensoren zu kontrollieren und diese Daten vom Wohnraum aus einzusehen. Als Wärmequellen stehen ein Holzpellet-Ofen (Grimm Pellino), sowie eine Solarthermie-Anlage zur Verfügung. Die Wärme wird in einen 900L Kombipufferspeicher eingespeist. Der Ofen hat einen Zwischenspeicher für Pellets und wird aus einem großen Bunker mittels Spiralförderschnecke versorgt.

Überlegungen und Konzept

Grundsätzliches

Ich möchte vom Wohnraum aus alle Daten der Heizung überwachen. Die Rohdaten sollen im Heizungskeller von einem Gerät erfasst werden und an einen zentralen Server geschickt werden. Im Wohnraum ist ein zweites Gerät zur Anzeige aller Daten geplant. Natürlich soll es im Keller ebenfalls möglich sein, die aktuellen Messwerte einzusehen. Weiterhin ist gewünscht, alle Daten auch über das Internet einsehen zu können. Es bietet sich dafür eine Weboberfläche (WWW) an, da alle modernen Endgeräte wie z. B. Handys mit einem Browser ausgestattet sind und IP sprechen. Weiterhin ist gewünscht, dass alle Daten in eine zentrale Datenbank gespeichert werden um dort entsprechende Auswertungen machen zu können und eine Historie zu haben.

Das Monitoring der Heizung mittels des hier geplanten und gebauten Systems HappyHeaterMon, ist Teil einer größeren Installation in meinem Haus und muss daher offen sein. Die Überwachung soll für jedermann nachbaubar, verbesserbar und anpassbar sein. Die Schaltpläne, sowie die Software sollen frei zugänglich sein, bzw unter freien Lizenzen (z. B. (L)GPL verfügbar sein. Diese Seite dokumentiert ausschließlich die Einheit im Keller (HappyHeaterMon folgend nur noch HHM genannt), welche die Daten dort erhebt, zum Teil anzeigt und an den Rechner übermittelt. Den Überblick über das gesamte Konzept findet man hier.

Kommunikation

Im Wohnraum, sowie im Keller liegen Ethernetdosen, eine Kommunikationsverbindung zwischen HHM und Server ist gegeben. Da die Dosen auf ein Patchpanel aufgelegt sind, ist es möglich die Sensordaten als serielles Signal über die Netzwerkleitung zu senden.

Datenerfassung

Als Hardwarebasis soll ein Arduino dienen. Er lässt sich sehr leicht programmieren und alle nötigen Bibliotheken für Ein- und Ausgaben können einfach eingebunden werden. Als Temperatursensoren werden DS18S20 zum Einsatz kommen. Deren Messspektrum (-55°C - +125°C) ist groß genug für die zu erwartenden Temperaturen und sie genügen sich dank OneWire-Bus mit einem einzigen Kabel und einem Messeingang am Controller. Außerdem wurden die Sensoren von mir mittlerweile über ein Jahr im Praxiseinsatz getestet, da sieben davon auf meinem Warmwasserspeicher aufgeklebt waren und mittels Rechner ständig ausgelesen wurden. Der Füllzustand der Pelletbehälters soll mittels Ultraschall bestimmt werden. Der Betrieb der Pumpen, der Förderschnecke und des Zugmotors wird über eine Art selbst gebauten Optokoppler ermittelt. Dazu kommen an die 230V-Verbraucher 230V-LEDs und diese werden mittels Sensor-LED (Entladezeitmessung) vom Mikrocontroller ausgelesen. Als Anzeige dient ein 20×4 LC-Display, die Steuerung wird mittels eines Joysticks vorgenommen. Die Luft im Heizungsraum soll zusätzlich mit einem Rauchsensor überwacht werden.

Für die Umsetzung in Software machte ich einige Tests um festzustellen, ob es überhaupt möglich ist, alle Daten die ich messen möchte zu erlangen und alle Bauteile anzusteuern. Dabei fanden letztlich folgende Bibliotheken Verwendung:

Bauteil Bibliothek Lizenz Funktioniert
DS1820Dallas Temperature Control LibraryLGPL:-)
SRF02SRF02 LibraryLGPL:-)
74*LS*164ShiftRegLCDLGPL(?) / GNU GPL v3:-)
Sharp GP2Y1010AU0Fselbst gehackt, ist ja nur ein Puls und eine SpannungLGPL:-)

Anforderungen an die Messeinheit

  • Warmwasser-Pufferspeicher
    • 7x Temperatur-Sensoren, die äußerlich auf den Puffer aufgebracht werden
    • 1x Temperatur-Sensor für Warmwasservorlauf
  • Solaranlage
    • Solarpumpe (an/aus)
    • Vor- und Rücklauftemperatur
  • Heizung
    • Vor- und Rücklauftemperatur
    • Heizkreispumpe (an/aus)
  • Umgebung
    • 1x Temperatur im Heizraum
    • 1x Rauchsensor im Heizraum
  • Ofen
    • Vor- und Rücklauftemperatur
    • Zugmotor (an/aus)
    • Pufferladepumpe (an/aus)
    • Pelletmotor (an/aus)
    • Füllstand des Pelletbehälters im Ofen
    • 1x Temperatursensor Kessel
    • 1x Temperatursensor Pelletförderschnecke (Rückbranddetektion)
    • Füllstand des Vorratsbehälters

Datenanzeige

Eigentlich bestellte ich mir einen FriedlyARM eher als Spielzeug. Nach einigen Tests und der Installation von Debian, stellte sich allerdings heraus, dass das Gerät geradezu ideal war als Frontend für meine Heizungsüberwachung. Folgendes soll angezeigt werden (= Spezifikation für die Webanwendung):

  • Zustand Ofen
    • Füllstand Pellets
    • Status Zugmotor (an/aus)
      • letzter Lauf
    • Status Pufferladepume (an/aus)
      • letzter Lauf
    • Temperatur Vor- und Rücklauf
    • Status Pelletförderschnecke (an/aus) - interpoliert
      • letzter Lauf
      • errechneter Verbrauch in 1h, 24h, 7 Tagen
  • Zustand Heizkreis
    • Temperatur Vor- und Rücklauf
    • Status Heizkreispumpe (an/aus)
  • Zustand Solar
    • Temperatur Vor- und Rücklauf
    • Status Solarpumpe (an/aus)
  • Zustand Puffer
    • Temperaturen des Puffers
    • Grafik der Temperaturverteilung
    • Temperatur am Warmwasser-Vorlauf
  • Zustand Umgebung
    • Partikel in der Luft (Rauch)
    • Temperatur im Heizraum
    • Temperatur Aussen

Übertragung der Messdaten

  • mySQL-Tabellen (Minutentakt)
  • munin-Grafiken (5 Minutentakt)
  • Update der sonstigen Daten ~ 10 Sekunden

Alarm

  • wenn Solarvorlauf Nachts warm (ungewollte Zirkulation)
  • wenn Temperatur im Heizraum zu hoch (Brand)
  • wenn Rauch im Heizraum zu dicht (Brand)
  • wenn Temperatur an Förderschnecke zu hoch (Brand)
  • wenn Puffer kalt (kein Warmwasser)
  • wenn Pelletbehälter im Ofen unter 20% Füllstand
  • wenn Heizkreisvorlauf zu hoch (Schädigung der Fussbodenheizungen)
  • wenn Kesseltemperatur zu hoch (Überkochen)

Materialbedarf

Anzahl Bauteil Beschaffungsquelle Einzelpreis Gesamtpreis
16DS18S20 Temperatursensorvia eBay aus Polen 1,40€ 22,40€
1LCD Display HD44780 4×20via eBay aus Polen 8,95€ 8,95€
1SRF02 UltraschallentfernungssensorManu Systems AG 16,56€ 16,56€
1Joystickwatterott.com 3,95€ 3,95€
1Arduino Pro Miniwatterott.com 14,95€ 14,95€
1LS 164 Shift-Register f. LCDReichelt 0,24€ 0,24€
1MAX232via eBay aus Polen 0,43€ 0,43€
1Sharp GP2Y1010AU0Fwatterott.com 13,50€ 13,50€
1Gehäuse AluReichelt 9,35€ 9,35€
ca. 50mKabelverschiedene AdernReichelt 20,00€ 20,00€
xdiversesVersandkosten, Verbrauchsmaterial (Lötzinn, Platinen), Kleinteile (Wiederstände, LEDs, Kondensatoren), Stecker, Kleingehäuse, etc. 40,00€ 40,00€
Summe ~150,00€

Realisation

Achtung! Wer meine Hardware nachbaut oder Software verwendet, tut das auf eigenen Gefahr. Ich übernehme keine Haftung für Datenverluste, kaputte Hardware, abgebrannte Häuser, zerstörte Atomkraftwerke oder am Frickelwahn zerschellte Familienverhältnisse.

Software

Quelltext-Download FIXME

EEPROM-Belegung

  • 0-255 Byte - Adressen der Temperatursensoren (Zuordnung auf Grund Speicherplatz) (max. 32 Sensoren)
    1. auf Puffer (unten)
    2. ..
    3. ..
    4. ..
    5. ..
    6. ..
    7. auf Puffer (oben)
    8. Warmwasser Vorlauf
    9. Heizung Vorlauf
    10. Heizung Rücklauf
    11. Solar Vorlauf
    12. Solar Rücklauf
    13. Ofen Vorlauf
    14. Ofen Rücklauf
    15. Ofen Kessel
    16. Ofen Pelletschecke
    17. Heizungsraum
    18. Aussen
    19. frei
    20. frei
    21. frei
    22. frei
    23. frei
    24. frei
    25. frei
    26. frei
    27. frei
    28. frei
    29. frei
    30. frei
    31. frei
    32. frei
  • 256, 257 Byte - Minimal- und Maximal-Stand des Pelletspeichers im Zentimeter, als Byte (0-255)

Hardware

Arduino PIN-Belegung

Digital
  • 0 RX via RS232MAX an PC
  • 1 TX via RS232MAX an PC
  • 2 LCD-Data an LCD-Modul
  • 3 LCD-Takt an LCD-Modul
  • 4 OneWire-Verbindung zu den Temperatursensoren
  • 5 LED-Sensor Pelletförderschnecke
  • 6 LED-Sensor Zugmotor
  • 7 LED-Sensor Heizkreispumpe
  • 8 LED-Sensor Solarpumpe
  • 9 LED-Sensor Pufferladepumpe
  • 10 Joystick Button
  • 11 Staubsensor Schalter LED
  • 12 Status-LED grün
  • 13 Status-LED rot
Analog Pins
  • 0 (14) Joystick Horizontal
  • 1 (15) Staubsensor Messeingang
  • 2 (16)
  • 3 (17)
  • 4 (18) SRF02
  • 5 (19) SRF02

IO-Stecker PIN-Belegung

  • 1 LED-Sensor Pelletförderschnecke - weiß
  • 2 LED-Sensor Zugmotor - rosa
  • 3 LED-Sensor Heizkreispumpe - grau
  • 4 LED-Sensor Pufferladepumpe - gelb
  • 5 LED-Sensor Solarpumpe - grün
  • 6 OneWire - grün
  • 7 Staubsensor Messeingang - grün
  • 8 Staubsensor LED - rosa
  • 9 SRF02 SCL - gelb
  • 10 SRF02 SDA -weiß
  • 11
  • 12
  • 13
  • 14 LED-Sensoren GND - braun
  • 15 OneWire GND - braun
  • 16 LED-Sensor Solar GND - braun
  • 17 SRF02 GND - schwarz
  • 18 Staubsensor S-GND / Staubsensor LED GND - braun
  • 19
  • 20
  • 21
  • 22 Staubsensor VCC / Staubsensor LED VCC - gelb
  • 23 SRF02 VCC - rot
  • 24 OneWire VCC - gelb
  • 25

Schaltpläne

Displayplatine FIXME Hauptplatine FIXME

Downloads

Eagle Board Download FIXME Vorlagen für Tonerdirektmethode FIXME

Bilder

 

 
XHTML 1.1 CSS 2 Creative Commons License
Netaddict Version 6.0 - © 1996-2012 by netaddict.de - Kontakt