what you see …

Wärmepumpen-Monitoring

Motivation

Hauptmotivation: wieder einmal etwas Neues zu lernen und zu erfahren – ganz einfach.

Schon lange interessierte ich mich für den kleinen, kreditkartengrossen Computer namens «Raspberry Pi», welcher bereits 2012 in England auf den Markt kam. Der im Vergleich zu üblichen Personal Computern sehr einfach aufgebaute Rechner wurde mit dem Ziel entwickelt, jungen Menschen den Erwerb von Programmier- und Hardware-Kenntnissen zu erleichtern. Entsprechend niedrig wurde der Verkaufspreis angesetzt, der je nach Modell etwa 5 bis 100 EUR beträgt. Allein in England wurden schon mehr als 36 Millionen Exemplare verkauft. Einer gehört seit Kurzem mir und wartet auf den ersten produktiven Einsatz:

Raspberry Pi 4
Raspberry Pi 4

Energiezähler Wärmepumpe

Als ich vor fünf Jahren eine neue Heizung in Form einer Luft-/Wasser-Wärmepumpe installierte, liess ich mir vom Elektriker einen separaten Energiezähler einbauen, welcher ausschliesslich den Energiekonsum (kWh) der Wärmepumpe misst und anzeigt. Im Datenblatt entdeckte ich, dass dieser Zähler eine Schnittstelle besitzt, über welche Impulse abhängig von der aufgebrachten Leistung gesendet werden.

Die zeitliche Distanz zwischen zwei Impulsen ist dabei proportional zur momentanen Leistung (W). So entspricht jeder Impuls einem Energieverbrauch von einer Wattstunde (Wh). Je schneller sich die Pulse folgen, desto grösser ist der Energieverbrauch. Beispiel: 1000 Impulse in einer Stunde entsprechen einem Energieverbrauch von 1 kWh.

Ich hatte nun die Idee, eine elektrische Schnittstelle zwischen Energiezähler und Raspberry Pi zu «basteln», die Impulse softwaremässig zu zählen und auszuwerten, in einer Datenbank zu speichern und grafisch auf meiner Webseite darzustellen – und das alles in Echtzeit.

Hardware-Interface

Schnittstelle zur Wärmepumpe
Schnittstelle zum Energiezähler

Als Elektro-Inschinör mit langjähriger Hardware-Erfahrung weiss ich natürlich, wie eine solche einfache Verbindung gemacht wird (Open-Collector-Schaltung). Der Raspberry ist bezüglich Hardwareanschlüsse sehr flexibel. Die GPIO-Pins können zum Beispiel softwaremässig wahlweise als Aus- oder Eingänge konfiguriert werden. Ebenso kann festgelegt werden, ob es sich um Pull-up oder Pull-down-Eingänge handeln soll.

Die Kabelverbindung musste ich vom Energiezähler durch den Elektro-Schaltkasten nach aussen ziehen und dort mit dem Raspberry verbinden. Schaut listig aus, nicht wahr?

Energiezähler Wärmepumpe
Energiezähler Wärmepumpe
Wärmepumpen-Monitoring mit dem Raspberry Pi 4
Wärmepumpen-Monitoring mit dem Raspberry Pi 4

Selbstverständlich habe ich die ordnungsgemässe Funktion der Schnittstelle mit einem kleinen Testprogramm auf dem Raspberry Pi getestet. Dabei habe ich festgestellt, dass durch Schaltvorgänge im Starkstrom-Schaltkasten gelegentlich Störimpulse auftreten (induktives/kapazitives Übersprechen trotz abgeschirmter Leitungen). Diese Störungen werde ich aber softwaremässig abfangen. Ansonsten funktioniert alles wie gewünscht.

Softwareumgebung

Meine praktische Programmiererfahrung im professionellen Umfeld liegt mittlerweile 35 Jahre zurück und basierte vornehmlich auf Assembler und dem damals populären PL/M (PL/I für Mikroprozessoren). Für die Software meines kleinen Projekts musste ich also eine neue Programmiersprache mit entsprechender Entwicklungsumgebung erlernen.

Ich habe mich für die populäre Sprache «Python» entschieden. Sie hat relative einfache Strukturen und eine gut zu erlernende Syntax. Ausserdem gibt es für jeden Anwendungsfall fertige Bibliotheken und Unmengen von guten Anleitungen. Wikipedia meint dazu: «Python ist eine universelle, höhere Programmiersprache. Sie hat den Anspruch, einen gut lesbaren, knappen Programmierstil zu fördern. So werden unter anderem Blöcke nicht durch geschweifte Klammern, sondern durch Einrückungen strukturiert. Python unterstützt mehrere Programmierparadigmen, z. B. die objektorientierte, die aspektorientierte und die funktionale Programmierung. Ferner bietet es eine dynamische Typisierung. Wie viele dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache weist ein offenes, gemeinschaftsbasiertes Entwicklungsmodell auf, das durch die gemeinnützige Python-Software Foundation gestützt wird, die die Definition der Sprache in der Referenzumsetzung CPython pflegt.» (Quelle: Wikipedia)

Programme

Hauptprogramm mit den folgenden Funktionen:

  • Initialisierung der Hardwareports des Raspberrys (GPIO 4 als Input mit Pull-up-Widerstand)
  • Finite-State-Machine (FSM) mit den Stati der Heizung aufgrund der momentanen Leistung (Start, Ruhezustand, Heizzustand)
  • Messen der Impulsabstände und Berechnen der Leistung, Mittelwertbildung
  • Bereitstellen der Datenbankrecords (Status, Pulsabstand, Leistung, Zeitstempel)
  • Senden der Records an die SQL-Datenbank (MariaDB)
  • Mail-Benachrichtigungen auslösen, wenn der Status der Heizung wechselt

Programm zur Echtzeitdarstellung der Messresultate (Diagramme):

  • Auslesen der SQL-Datenbank (MariaDB)
  • Aufbereiten der Records zur Darstellung
  • Generieren und Speichern der Diagramme mithilfe der Mathplotlib-Bibliothek
    (letzte sechs Stunden, letzte 24 Stunden, Übersicht seit Messbeginn)
  • Senden der Diagramme via FTP/TLS an diese Webseite zur Echtzeitdarstellung

Energieverbrauch der Wärmepumpe

Durchschnittstemperaturen der letzten Tage

Echtzeitdiagramme (Update ca. alle 300 Sekunden)

Die letzten sechs Stunden
Die letzten 24 Stunden