Internet der Dinge WS2015/EnergyEye

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche
EnergyEye: Optische Auslese, Signalverarbeitung und Visualisierung von Energieverbrauchsdaten

EnergyEye

Optische Auslese eines Drehstromzählers als Energieverbrauchsmonitor oder Das eigene Smart Meter ab 10,- EUR

Download der Projekt-Präsentation

Einleitung

Motivation

Viele ältere Häuser besitzen noch immer mechanische Stromzähler, an denen der Energieverbrauch des Gesamthaushaltes in der Regel einmal im Jahr manuell abgelesen wird. Die Abrechnung der Energiekosten erfolgt dann beispielsweise vierteljährlich anhand von Verbrauchs-Prognosen, die durch den Energieversorger erstellt werden. Während dieses Vorgehen für die Abrechnung den Anforderungen des Versorgers genügt, nehmen die Bedürfnisse des Verbrauchers im Hinblick auf eine genauere Energiekostenkontrolle immer weiter zu. So wird es für den Verbraucher zunehmend wichtiger den Verlauf der Energienutzung im Haushalt detailliert zu protokollieren. Dies ermöglicht es, ggf. Geräte und Betriebsbedingungen zu identifizieren, die zu erhöhten Energienutzung führen, sowie Energieverbrauch und Nutzungverhalten abzugleichen und bei erhöhtem Verbrauch bewusst Anpassungen vorzunehmen. Für Neubauten und grundsanierte Gebäude hat der Gesetzgeber ab dem Jahr 2010 den Einbau von intelligenten elektronischen Stromzählern, sog. Smart Meter vorgeschrieben [1]. Diese werden vom Energieversorger über einen Kommunikationskanal ausgelesen und der Endverbraucher kann seine Energieverbrauchsdaten in der Regel über ein Webportal des Versorgers einsehen.

In der vorliegenden Projektarbeit Optischer Drehstromzähler im Rahmen der Veranstaltung Internet der Dinge im Wintersemester 15/16 an der Hochschule RheinMain soll untersucht werden, inwiefern ein vorhandener mechanischer Drehstromzähler derart umgerüstet werden kann, um eine zeitnahe, kurzperiodische Energiemessung ähnlich der eines Smart Meters zu ermöglichen. Dabei soll der Zähler mit minimalen Kosten und ohne Eingriff in den Zählerbetrieb um eine optische Ausleseeinheit ergänzt werden, die den Stromzählerstand erfasst, die Verbrauchsdaten an eine Internetanwendung überträgt und dem Endverbraucher eine grafische Visualisierung seiner Energienutzungsdaten ermöglicht.

Geplante Arbeitsschritte

Ziel 1 Projektbeschreibung und Aufgabenplanung (dieses Dokument)
Das Projektziel wird kurz beschrieben und in Motivation und Kontext für den Endbenutzer eingeordnet. Es wird ein Projektplan aufgestellt, der, soweit zu diesem Zeitpunkt möglich, grob die einzelnen Arbeitsschritte auflistet, deren Bearbeitung beschreibt und einen Katalog an Fragestellungen sammelt, die im Projektverlauf in fortlaufender Dokumentation zu klären sind. Ziel ist die Erstellung eines kurzen Dokuments, dass den Projektverlauf grob gliedert.
Ziel 2 Literaturrecherche
Das Projekt wird anhand einer Literaturrecherche in den Kontext ähnlicher Arbeiten eingeordnet, wobei ggf. bereits gefunden Lösungen für die geplante Aufgabenstellung aufgegriffen werden können.Ziel ist hierbei die Erstellung einer Liste von Referenzen, die im Projektverlauf im Bezug zu den jeweiligen Teilaufgaben erweitert wird.Zur Hintergrundinformation kann eine Kurzbeschreibung der Leistungen kommerziell verfügbarer Smart Meter Lösungen angefertigt werden, die zur Orientierung des Funktionsumfangs dienen kann.Zusatzziel ist hierbei die Erstellung einer Liste mit Anwendungsfällen, die für den Endverbraucher relevant sind, sowie eine Überschlagsrechnung der zu erwartenden zeitlichen Auflösung des Systems.
Ziel 3 Erkennen des aktuellen Zählerstandes
Es wird ein Sensor zur Erzeugung eines elektronischen Zähl-Impulses aus der mechanischen Anzeige des Drehstromzählers benötigt. Hierzu werden verschiedene Lösungen auf Ihre Tauglichkeit und einer ausreichend zuverlässigen Erkennungsrate hin untersucht. Gegebenenfalls werden Zusatzmodule zur Signalverarbeitung wie z.B. Operationsverstärker oder Spannungswandler mit in die Betrachtung einbezogen.Ziel ist die Konzeption eines Sensormoduls, mit dem die mechanische Anzeige des Drehstromzählers ausgelesen werden kann.
Ziel 4 Controller-Auswahl
Die für die Lehrveranstaltung zur Verfügung stehenden Hardwareplattformen und Funktechnologien werden auf Ihre Tauglichkeit für die aktuelle Aufgabenstellung hin untersucht. Das Ergebnis dieses Zwischenziels ist eine Liste, die die Vor- und Nachteile der einzelnen Hardwaremodule zusammenfasst, daraus Fragestellungen für den weiteren Projektverlauf ergänzt und eine Entscheidung für eine der Hardwareplattformen festlegt.Dabei sollen z.B. die Funkreichweite und der Energiebedarf des Sensorsystems Betrachtet werden.
Ziel 5 Hardware-Aufbau (Prototyp) und fortlaufende Funktionstests
Es wird ein modularer Prototyp aufgebaut, bestehend aus Sensor-Modul und Elektronik zur Signalverarbeitung, der in der Lage ist ein aufgenommenes Signal, wie z.B. die Intervalldauer zwischen zwei Umdrehungen der Stromzählerscheibe als Zeichenkette über eine Dahrtlosverbindung zu senden.Ziele dieses Abschnitts sind neben dem Aufbau eines funktionstüchtigen Protyps die Erstellung einer Stückliste und eines Schaltplans.
Ziel 6 Drahtlose Übertragung des Auslese-Signals ins Internet
In diesem Abschnitt soll die Softwareschnittstelle der verwendeten Hardwareplattform untersucht und entwickelt werden. Insbesondere ist hier die Software-Einrichtung zu dokumentieren (z.B. AT-Befehle, Bibliotheken und Betriebssystemkomponenten sofern verwendet), die die Firmware des verwendeten Moduls bildet. Zusätzlich wird das verwendete Kommunikationsprotokoll dokumentiert, dass die Energiemessungen darstellt und übermittelt.
Ziel 7 Grafische Aufbereitung der ermittelten Daten
In diesem Arbeitspaket wird untersucht, welche Möglichkeiten zur grafischen Aufbereitung der Energiemessdaten bestehen, um eine benutzerfreundliche Präsentation zu erleichtern. Ziele sind hier die Untersuchung von ggf. bereits vorhandenen Visualisierungslösungen und deren Handhabung.
Ziel 8 Test des Gesamtsystems mit dem Ziel der Erstellung eines Energienutzungsprofils
Im Rahmen dieses Arbeitspakets soll das Gesamtsystem getestet werden. Zielsetzung ist hierbei, den Verlauf des Energieverbrauchs über einen längeren Zeitraum zu erfassen und ein Energieprofil von unterschiedlichen angeschlossenen Verbrauchern zu erstellen. Neben einem allgemeinem System- und Funktionstest soll auch die erreichte Messgenauigkeit getestet und die Aussagekraft der Messdaten überprüft werden.
Ziel 9 Dokumentation des Projekts im zugehörigen Wiki
Das gesamte Projekt soll frühzeitig und regelmäßig im entsprechenden Wiki der Lehrveranstaltung dokumentiert werden VS-Wiki. Dabei wird vorzugsweise eine Wiki-Seite ohne Unter-Seiten angelegt. Eine Kopie dieses Dokuments wird ebenfalls dort abgelegt, zusammen mit dem fortlaufend geführten Fragenkatalog und der Referenzliste.
Ziel 10 Präsentation und Demonstration des Projekts
Zum Abschluss der Lehrveranstaltung wird das Projekt am Ende des Semesters kurz vorgestellt und die Funktion demonstriert.

Analyse

Grundlagen

Abbildung 1: Ferraris-Zwischenzähler zum Anschluss einzelner Verbraucher über eine Schutzkontaktsteckdose. (Bildquelle: Amazon)
Abbildung 2: Fest installierter Ferraris-Drehstromzähler eines Mehrfamilienhauses.
Abbildung 3: Elektronischer Zwischenzähler mit S0 Schnittstelle (Schaltungsansicht). (Bildquelle: Reichelt)
Abbildung 4: Elektronischer Zwischenzähler mit S0 Schnittstelle (aktive Ansicht). (Bildquelle: Reichelt)

Zur Erfassung des elektrischen Energieverbrauchs im Haushalt stehen verschiedene Zähler-Arten zur Auswahl. Dementsprechend müssen auch unterschiedliche Methoden der Signalerfassung zur Auslese eingesetzt werden.

Der klassische Drehstromzähler ist ein sogenannter Ferraris-Zähler, bei dem eine Aluminiumscheibe im Inneren des Zählers nach dem Prinzip eines Asynchronmotors rotiert. Vereinfacht ist hierbei die Rotationsgeschwindigkeit proportional zum Energieverbrauch.

Im Rahmen der Vorlesung wird ein nicht geeichter Zwischenzähler (Abbildung 1) als Demonstrationsobjekt verwendet, der z.B. bei Amazon für ca. 20.- EUR erworben werden kann. Bei diesem Zwischenzähler rotiert die Aluminiumscheibe laut Herstellerangaben mit 600 Umdrehungen pro Kilowattstunde. Bei einer Glühbirne mit einer Leistungsangabe von 40 Watt findet daher ca. alle 150 Sekunden eine volle Umdrehung statt.

Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://en.wikipedia.org/api/rest_v1/“:): {\displaystyle \frac{600 U}{kWh} \cdot 40 W = \frac{600 U \cdot 40}{1000 \cdot 60 \cdot 60 s} = \frac{1 U}{150 s} }

Bei einem entsprechenden Drehstromzähler für die Erfassung des Energieverbrauchs im Gesamthaushalt (Abbildung 2) rotiert die Aluminiumscheibe entsprechend langsamer mit 75 Umdrehungen pro Kilowattstunde. Bei einer 40 Watt Glühbirne ist daher mit einer Umdrehung in 20 Minuten zu rechnen.

Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://en.wikipedia.org/api/rest_v1/“:): {\displaystyle \frac{75 U}{kWh} \cdot 40 W = \frac{75 U \cdot 40}{1000 \cdot 60 \cdot 60 s} = \frac{1 U}{1200 s} = \frac{1 U}{20 min} }

Neben Drehstromzählern werden auch elektronische Zwischenzähler zur Erfassung des Energieverbrauchs eingesetzt (Abbildungen 3 und 4). Diese besitzen eine sogenannte S0 Schnittstelle, die je nach aktuell gemessenem Energieverbrauch eine definierte Anzahl an Impulsen fester Länge (beim hier genutzten Gerät 90 ms) pro Zeiteinheit ausgeben. Das hier eingesetzte Gerät gibt 1000 Impulse pro kWh aus. Bei einem Verbraucher mit einer Leistung von 40 Watt ist also ein 90 ms langer Impuls alle 90 Sekunden zu registrieren. Geräte in anderen Leistungsklassen haben entsprechend andere Impulsangaben. Quelle: Reichelt Elektronik

Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://en.wikipedia.org/api/rest_v1/“:): {\displaystyle \frac{1000 Impulse}{kWh} \cdot 40 W = \frac{1000 Impulse \cdot 40}{1000 \cdot 60 \cdot 60 s} = \frac{1 Impuls}{90 s} }

Signalerfassung

Abbildung 5: Konzeptskizze zur Erfassung der roten Markierung auf der Aluminiumdrehscheibe eines Ferraris-Zählers
Abbildung 6: Zweiter Testaufbau mit Infrarot-Lichtschranke an der Sichtscheibe eines fest eingebauten Drehstromzählers.
Abbildung 7: Testaufbau mit Infrarot-Lichtschranke und Arduino-Prototyp zur Erfassung der roten Zählermarkierung im Vordergrund.
Abbildung 8: Nahaufnahme des Sichtfensters und der Aluminiumscheibe am Drehstrom-Zwischenzähler.

Reflexlichtschranke

Auf der rotierenden Aluminiumscheibe eines Drehstromzählers befindet sich eine rote Markierung (Abbildung 8), die über einen optischen Sensor erfasst werden kann. Hierbei kann sowohl die Länge der Sichtbarkeit als auch die Zeitabstände zwischen dem Vorbeikommen der Markierung erfasst werden. Unter Nutzung der Kalibrierungsangabe auf dem Gerät n Umdrehungen pro kWh kann daraus ein Rückschluss auf den momentanen Energieverbrauch gezogen werden. Abbildung 5 illustriert das Konzept zur Erfassung der roten Markierung mit Hilfe einer Infrarot-Reflexlichtschranke.

Bei der Verwendung der Infrarot-Reflexlichtschranke wird eine Signaländerung registriert, sobald die Markierung 'sichtbar' ist. Das zeitliche Auflösungsvermögen ist dabei primär durch die Zeitdauer zwischen zwei 'Sichtbarkeiten' der Markierung gegeben: Wird wenig Energie verbraucht, dreht sich die Scheibe langsam und man bekommt in diesem Zeitraum keine Information. Als kleine Verbesserung dazu kann noch die Zeitdauer der Sichtbarkeit selbst erfasst werden, was zumindest eine Abschätzung des Verbrauchs innerhalb eines Messintervalls erlaubt.

Die Implementierung dieses Verfahrens stellt ein primäres Ziel im Rahmen dieses Projekts dar, um die Möglichkeit der preiswerten Nachrüstung von Smart-Meter Funktionalität für einen klassischen Drehstromzähler zu analysieren. Die Abbildungen 6 und 7 illustrieren das Konzept in Form von prototypischen Aufbauten.

Digitale Impulse

Der elektronische Zwischenzähler verfügt über eine sogenannte s0 Schnittstelle. Technisch stellt dieser Anschluss einen Open-Collector Ausgang einer Digitalschaltung dar, wodurch beim Anschluss auf die korrekte Polarität geachtet werden muss. Vereinfacht kann man den Anschluss wie einen Schließer-Kontakt betrachten, der, gemäß der vom Hersteller angegebenen Zählerkonstanten, in vom gemessenen Verbrauch abhängigen Zeitabständen für Impulse von fester Dauer (z.B. 90 ms) seinen Kontakt schließt und eine von außen angelegte Spannung durchschaltet.

Diese Impulse können z.B. von einer nachgeschalteten Elektronik erfasst werden, wobei die Zeitdauer zwischen zwei Impulsen im Prinzip den Umdrehungen der Aluminiumscheibe im Drehstromzähler entspricht. Hier bei kann somit die gleiche Auswertelogik verwendet werden wie der oben beschriebenen analogen Erfassung des Umdrehungssignals der Zählerscheibe.

Magnetfeldsensoren

Als dritte mögliche Option der Signalerfassung wird ein Zangen-Stromsensor betrachtet, der in Form eines Clip-sensors direkt um eine Wechselstromführende Leitung montiert werden kann. Der Hallsensor arbeitet dabei nach dem Transformatorprinzip, wobei durch den Wechselstrom der zu messenden Leitung ein Magnetfeld im Eisenkern des Sensors induziert wird, was wiederum ein Elektrisches Feld und in der Sekundärwicklung, also der Messleitung, des Sensors erzeugt. Über einen Messwiderstand kann daraufhin eine resultierende Spannung gemessen werden, die proportional zum Stromfluss der zu messenden Leitung ist.

Um dieses Konzept auch auf Gleichstomkreise auszuweiten, könnte ein Hallsensor eingesetzt werden. Dies wird allerdings nicht im Rahmen dieses Projekts betrachtet.

Plattformen

Arduino

Für erste Tests und Machbarkeitsstudien wurde die Arduino-Plattform verwendet. Dabei wurde zunächst eine als Fertigbauteil verfügbare Miniatur-Infrarotlichtschranke an einen Analogeingang des Arduino angeschlossen und ausgelesen. Der zwischen 0 und 1023 liegende Analogwert wurde auf einer vierstelligen, per seriellem Port angeschlossenen Siebensegmentanzeige dargestellt und zusätzlich wird eine RGB-LED entsprechend einer im Quellcode festgelegten Schaltschwelle geschaltet, um die 'Sichtbarkeit' der Scheibenmarkierung anzuzeigen. In unbedecktem Zustand ist der ausgelesene Analogwert relativ hoch und die LED leuchtet rot (Abbildung 9). Bedeckt der Daumen die Lichtschranke, so sinkt der ausgelesene Analogwert und die LED leuchtet grün auf (Abbildung 10). Ein ähnlicher Test wurde für die Auslese des S0 Signals durchgeführt, wobei allerdings ein Digitaleingang verwendet wurde.

Abbildung 9: Arduino-Prototyp im Zustand 'Sensor offen'.
Abbildung 10: Arduino-Prototyp im Zustand 'Sensor bedeckt'.

Die Vorteile bei der Verwendung der Arduino-Plattform sind der relativ einfache Aufbau, einheitliche Spannungspegel, sowie eine große Community, die eine Vielzahl von Tutorials und Code-Beispielen bietet. Im Rahmen dieses Projekts eignet sich der Arduino allerdings nur als grobe Testplattform, um auf einfache Weise zu überprüfen, ob die prinzipielle Sensor-Auslese funktioniert und ob z.B. Änderungen an der Schaltschwelle im laufenden Betrieb nötig sind.

Der wesentliche Nachteil der Arduino-Plattform liegt für das vorgesehene Projekt in Tatsache, dass der hier verwendete Arduino-Typ kein eigenes WLAN Modul mitbringt und so, wie auf den Bildern gezeigt, ein entsprechendes zusätzliches Modul zur Datenübertragung (z.B. ESP8266) eingesetzt werden muss. Diese Tatsachen bedingen auch einen erhöhten Preis und Komplexität des Gesamtaufbaus, weswegen nach weiteren Alternativen gesucht wurde.

Verwendete Bauteile:

  • FTDI 5V USB to Serial adapter
  • Arduino Pro Mini
  • Level shifter
  • Stromversorgung
  • Serielles Display
  • ESP8266
  • RGB LED
  • Elektronikmodul vom Feuchtigkeitssensor
  • IR sensor
  • LED Vorwiderstände und Messwiderstand
  • Jumperkabel

Photon

Abbildung 11: Particle Photon. Bildquelle: Particle.io

Die Photon Plattform (Abbildung 11) bietet unter anderem mit 16 digitalen GPIO Anschlüssen, 8 analogen Eingängen und 2 analogen Ausgängen (Datenblatt) eine Vielzahl an Anschlussmöglichkeiten. Zudem ist Drahtlos-Netzwerkfunktionalität bereits integriert. All diese Möglichkeiten können allerdings im Rahmen dieses Projektes nicht effektiv genutzt werden, wodurch der Preis von 19 $ in keinem vertretbaren Verhältnis zum Nutzen steht. Als weiterer Zwangspunkt ist es bei der Photon Plattform in ihrer Originalform vorgesehen, die Platine über das Internet per Cloud-Dienst zu programmieren. Der Betrieb erfordert daher eine ständige Internetverbindung zum Dienstanbieter.

Nach einer Kurzen Testphase wurde daher diese Plattform als zwar sehr interessant für schnelle Prototypen-Entwicklung, jedoch als zu umfangreich für das geplante Projekt eingestuft.

ESP8266

Abbildung 12: ESP-12E Modul. Bildquelle: Watterott

Als preiswerteste Plattform wurde das zuvor beim Arduino-Prototyp verwendete WLAN Funkmodul ESP8266 in der Ausführung ESP-12E betrachtet (Abbildung 12). Das Modul ist im deutschen Versandhandel wie z.B. Watterott.com bereits ab 3,79 EUR erhältlich und bietet neben 11 digitalen 3.3 Volt GPIO Anschlüssen auch einen analogen Eingang, sowie Kommunikationsschnittstellen und FCC-zertifizierte WLAN Funktionen (Datenblatt). Mit der bereits installierten Firmware ist die Kommunikation über die serielle Schnittstelle und AT-Befehle möglich, was bereits im Zusammenspiel mit dem Arduino genutzt wurde.

Durch das schnelle Wachstum der Community um die Familie der ESP8266 Module sind inzwischen noch einige weitere Programmiermöglichkeiten und vor Allem Informationen zur Inbetriebnahme hinzugekommen. So ist es z.B. möglich, das Modul selbst mit der Arduino-Entwicklungsumgebung zu programmieren oder sogar ein Echtzeitfähiges Betriebssystem wie FreeRTOS zum Einsatz zu bringen. Diese letztere Möglichkeit wurde auch hier im Rahmen des Projekts genutzt, da dies nach aktueller Einschätzung die beste Vereinigung aus der einfachen Hardware und der Flexibilität in der Programmierung bietet.

Datenspeicherung

Eine Datenspeicherung auf dem Microcontroller, der zur Auslese der Sensoren verwendet wird ist unpraktikabel da ohne Zusatzmodule wie z.B. eine SD-Karte der Speicherplatz in der Regel stark begrenzt ist. Aus diesem Grund wurden verschiedene Möglichkeiten untersucht, die erfassten Sensordaten für nachfolgende Analysen vorzuhalten.

Wichtige Aspekte sind dabei sowohl die kurzzeitige und die langzeitige Speicherung der Daten. Kurzzeitig werden die Daten z.B. in Form einer Variablen geeigneten Typs im Programm des Microcontrollers gespeichert. Hierbei sollte dann der Messwert jedoch zügig, nämlich innerhalb eines Messintervalls (eine Umdrehung der Zählerscheibe) an die nachfolgenden Systemkomponenten übertragen worden sein, da der Wert sonst mit der nächsten Messung überschrieben wird.

Um eine begrenzte Pufferung zu erlauben, kann diese Variable z.B. als Array definiert werden, das eine vorgegebene Anzahl an Messwerten vorhalten kann. Hierbei ist dann allerdings zu beachten, dass eine korrekte Zuordnung von Messdaten und Zeitstempel vorgenommen werden muss, wodurch schon eine minimal komplexere Datenstruktur festgelegt werden muss.

Hintergrund dieser Überlgungen sind die potenziell stark schwankenden Zeitintervalle zwischen den Messperioden: Wird kaum Strom verbraucht, dreht sich die Zählscheibe relativ langsam, es werden nur selten neue Messwerte erfasst (ggf. vergehen mehrere Minuten zwischen den Messungen) und der Microcontroller hat viel Zeit für seine Arbeit. Wird jedoch relativ viel Strom verbraucht müssen neue Messwerte schnell erfasst und weiterverarbeitet werden. Besonders bei der Erfassung der Zeitdauer der 'Sichtbarkeit' der Zählermarkierung ist dies wichtig, da sich diese im Extremfall auf wenige Millisekunden verkürzen kann.

Die Langzeitspeicherung der erfassten Messdaten ist besonders für die nachfolgende Aufbereitung und Analyse wichtig. Hierbei geht es einerseits um eine automatische Analyse aktueller Verbrauchswerte (wie z.B. eine direkte Visualisierung in Form einer Verbrauchs-Ampel) als auch die (asynchrone) Analyse längerer Messzeiträume wie z.B. den Tagesverlauf, Wochenverlauf oder gar der Verlauf der Energienutzung in den Winter- und Sommermonaten.

data.sparkfun.com

Für einen ersten Test wurde die open-data-Plattform data.sparkfun.com von SparkFun verwendet, die es erlaubt eine zuvor definierte Anzahl an Datenwerten in Form einer HTTP GET Anfrage verpackt an einen Datenserver zu schicken. Aktuell werden 50 MB an Daten pro Kanal unterstützt, wobei neue Daten maximal 100 mal innerhalb eines 15-minütigen Fensters hochgeladen werden können. Diese Beschränkungen können allerdings verändert werden, wenn der darunter liegende Datendienst phant.io auf einem eigenen Server betrieben wird.

Technologiebedingt ist es hier nur möglich, eine feste Anzahl an Werten zu einem Zeitpunkt zu übermitteln. Dieser Datenübermittlung wird dann bei Eingang auf dem Server ein Zeitstempel zugeordnet. Im Zusammenhang mit dem eingangs diskutierten Problem der unterschiedlichen Datenrate wurde bei diesem Test als Messgröße die Anzahl ermittelt, wie oft die rote Markierung in einem festen Zeitintervall (hier 3 Minuten) sichtbar ist.

Es besteht die Möglichkeit, die in den Kanälen gesammelten Daten in den Formaten JSON, CSV, MySQL, PostgreSQL und Atom zu exportieren. Auch eine Visualisierung über Google Charts ist möglich

ThingSpeak

Ein weiterer Test verwendet die zu der von SparkFun sehr ähnlichen open-data-Plattform ThingSpeak, die nach dem gleichen Prinzip wie der oben genannte SparkFun IoT Datendienst funktioniert. Die Beschränkungen sind hier etwas restriktiver; es können nur alle 15 Sekunden neue Werte hochgeladen werden. Allerdings ist hier auch schon ein Web-Frontend zur Datenvisualisierung enthalten.

MongoDB auf Raspberry Pi

Um die erfassten Energieverbrauchsdaten zum Zwecke des Datenschutzes in der eigenen Hand zu halten empfiehlt sich der Einsatz einer lokal einsetzbaren Zusatzplattform wie z.B. des Raspberry Pi als Datenspeicher. Hierbei fiel die Wahl auf die dokumentenorientierte MongoDB Datenbank, bei der die Messdaten in der weitgehend auch von menschen lesbaren Form von JSON Objekten abgelegt werden.

Der direkte Vorteil der Verwendung einer lokal vorgehaltenen Datenbank liegt in der Entkopplung von Erfassungszeitpunkt und Abspeicherung (und ggf. Einsortierung) der Messdaten. Dies trägt zur Robustheit und Modularisierung des Gesamtsystems bei und erlaubt es, sowohl Daten nachträglich (z.B. im Fall von Verbindungsschwierigkeiten) in korrekter Reihenfolge zu erfassen, als auch die lokale Bereitstellung zur asynchronen nachfolgenden Analyse durch verschiedene voneinander entkoppelte Prozesse (z.B. Visualisierung, Alarm-Daemon oder ein Profiler-Dienstprogramm)

Datenverwertung und Darstellung

Als Möglichkeiten der Datenverwertung und der grafischen Darstellung wurde zunächst die Option der manuellen Visualisierung und im Folgenden die Verwendung von bereits vorgefertigten Frameworks betrachtet. Letztere sind im Zuge der schnellen Entwicklung des Themas Internet of Things immer weiter verbreitet und bieten eine Vielzahl and Programmierschnittstellen, um die eigene Anwendung an die gegebenen Anforderungen anzupassen.

Manuelle Visualisierung in Python

Bei ersten Tests mit der Arduino-Plattform wurden die auflaufenden Daten an data.sparkfun.com gesendet und dort gespeichert. Zur Untersuchung der Datenvisualisierung wurde eine CSV-Datei von der Seite des Test-Kanals manuell heruntergeladen. Der Inhalt der Datei sieht dabei wie nachfolgend dargestellt aus, wobei die neuesten Werte an Anfang der Datei stehen:

6.00,2015-12-15T11:45:44.357Z
6.00,2015-12-15T11:44:44.490Z
4.00,2015-12-15T11:43:44.452Z
10.00,2015-12-15T11:42:44.285Z
4.00,2015-12-15T11:41:44.602Z
...

Anschließend wurden die Werte aus der CSV-Datei mit einem minimalen Python script geplottet.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# SparkFun uses the ISO 8601 date format (yay!)
# 2015-11-11T20:29:47.477Z

def graph():
    energy, timestamp = np.loadtxt('stream_9JxQdlMzvXT8gLvAj81x.csv'
        , delimiter = ','
        , unpack = True
        , converters = {
            1: mdates.strpdate2num('%Y-%m-%dT%H:%M:%S.%fZ')
        })
    
    fig = plt.figure()
    
    ax1 = fig.add_subplot(1,1,1, axisbg='white')
    
    plt.plot_date(x=timestamp, y=energy, fmt='-')
    
    plt.title('Energyplot')
    plt.ylabel('Energy')
    plt.xlabel('Timestamp')
    plt.show()

graph()
Abbildung 13: Langzeitaufnahme des Energieverbrauchs eines Fünf-Personen Haushalts.
Abbildung 14: Beispielhafter Tagesverlauf des Energieverbrauchs eines Fünf-Personen Haushalts.

In Abbildung 13 ist eine Langzeitaufnahme des Energieverbrauchs eines Fünf-Personen Haushalts zu sehen. Diese Visualisierung hat allerdings nur begrenzte Aussagekraft, da im Zuge der Hardwaretests des Prototypen die Daten nur unvollständig erfasst wurden. Allerdings kann hier die prinzipielle Machbarkeit des Gesamtprojekts "Preiswertes Smart Meter im Eigenbau" durchgängig nachgewiesen werden.

Abbildung 14 zeigt einen Ausschnitt aus dem Tagesverlauf des Energieverbrauchs, angereichert mit einigen Annotationen, welche Geräte in etwa zum jeweiligen Zeitpunkt gelaufen sind bzw. welche Aktivitäten zu den jeweiligen Zeitpunkten stattfanden. Aus diesem Bild lässt sich ableiten, dass eine Verfeinerung der Datenerfassung und der Datenanalyse dem Nutzer durchaus einen guten Überblick über den eigenen Energieverbrauch geben kann.

IoT und Visualisierungs-Frameworks

Der Dienstanbieter IFTTT kurz für "If This Then That" bietet die Möglichkeit, verschiedene Ereignisse in Diensten wie E-mail, Facebook, Twitter oder ähnliche in Form von sogenannten Rezepten zu kombinieren, um Benutzerdefinierte Aktionen auszulösen. So ist es z.B. möglich das Philips Hue Lampensystem bei Eintreffen einer Twitter-Nachricht farbig zu schalten ('If Twitter then Hue' Rezepte). Im Rahmen dieses Projekts wurde dieser Dienst noch nicht genutzt. Es wäre allerdings denkbar, als spätere Ausbaustufe eine modulare Anbindung an populäre Internetdienste zu realisieren.

Die Google AppEngine stellt ein weitreichendes Framework online verfügbarer Dienste bereit, die von der Datenbank bis hin zum Aufbau komplexerer Webanwendungen reicht. Ein Test zur Einrichtung einer Datenbank hat allerdings gezeigt, dass die Nutzung nicht kostenlos und sich für den Projektrahmen etwas zu komplex gestaltet.

In Verbindung mit der Datenhaltung bei SparkFun wurde die Visualisierung mit Google Charts kurz getestet. Diese Anwendung kommt den Projektzielen am nächsten, bedingt aber noch eine Internetverbindung, um die Visualisierungsbibliothek von Google zu beziehen. Ein sehr positiver Aspekt ist jedoch die weitgehende Konfigurationsmöglichkeit der resultierenden Grafiken und besonders die Entkopplung von Datenhaltung und Visualisierung.

Volkszähler API

Bei der Recherche zum Thema Smart Meter im Eigenbau ist die Volkszähler community aufgefallen, die exakt das Thema des aktuellen IoT Projekts abdeckt. Eine Demonstrationsversion des Web-Frontends sieht bereits ohne weitere Konfiguration ansprechend aus und bietet von Haus aus einige automatische Analysemöglichkeiten wie z.B. Umrechnungen und Interpolationen für die hinterlegten Daten. Zur vom Internet entkoppelten Verwendung kann die bereitgestellte Middleware auf einem eigenen Rechner installiert werden.

Aufgrund der Tatsache, dass sich die Zielsetzung dieses OpenSource Projekts genau mit der Aufgabenstellung des EnergyEye Themas vereinbaren lässt, wird diese Software im weiteren Verlauf für die Visualisierung der erfassten Energieverbrauchsdaten verwendet. Die Volkszähler API bietet zudem eine einheitliche Lösung zur Erfassung auch anderer Verbrauchsdaten wie z.B. von Wasser und Gas, was besonders für den modularen Aufbau als nicht-funktionale Anforderung an das Projekt gilt. Zudem gibt es auch hier eine offene community, die ihre Lösungsansätze in einem Forum und einer Dokumentierten API zur Verfügung stellt.

Als kleinere Nachteile könnten der auf den ersten Blick komplex anmutende Aufbau und der Einrichtungsaufwand bei der Verwendung zuhause gelten. Diese haben sich allerdings im weiteren Projektverlauf als unwesentlich herausgestellt, da bereits ein durch die Community bereitgestelltes Raspberry Pi Image der Middleware existiert.

Design

Architekur-Übersicht

Die architekturelle Aufteilung entspricht der Aufteilung des Volkszaehler-Projektes, um die Middleware des Volkszaehlers mit möglichst wenigen Anpassungen nutzen zu können. Die Architektur lässt sich in vier Säulen unterteilen.

Sensorik
Die sensorische Erfassung der Daten.
Vorverarbeitung & Übertragung
Das Übertragen befasst sich mit der Datenübertragung an die Middleware (Volkszaehler). Zusätzlich soll es auch einen Rückkanal geben, der eine Konfiguration der unterliegenden Plattform ermöglicht, wie z.B. das Setzen der Impulse kW/h, oder einen Threshold, bei dessen Überschreiten eine Aktion ausgelöst werden soll. Die Konfigurationsmöglichkeit ist besonders für die Vorverarbeitung wichtig, die die Impulse in eine aussagekräftige Größe umwandeln muss und auf einen eingestellten Threshold reagieren soll.
Datenpersistenz & Auswertung
Für die persistente Datenhaltung soll eine klassische Datenbank verwendet werden. Das Projekt Volkszähler, dient als Middleware mit deren Hilfe es möglich ist Daten langfristig zu Speichern und diese gesammelten Daten grafisch aufbereitet wieder abzurufen.

Architektur energyEye.png

Sensorik

Als Sensor soll die Wahl zwischen einem optischen Sensor und einem digitalen Zähler mit s0 Schnittstelle möglich sein. Da sich wie Wahl des Sensors auf die gemessene Größe auswirkt, muss das System für den gewählten Sensor entsprechend konfiguriert werden. Der digitale Zähler mit s0 Schittstelle erzeugt einen Impuls, der über einen GPIO-Pin abgelesen werden kann. Der optische Sensor strahlt mit einer Infrarot-LED auf die Aluminiumdrehscheibe, von welcher das Licht reflektiert und durch den Infrarotdetector gemessen wird. Da die rote Markierung der Drehscheibe das Licht schwächer reflektiert, kann die Markierung auf diese Weise erkannt werden. Der optische Sensor liefert ein analoges Signal, der über den ADC ausgelesen werden kann. Da an den ADC auch ein digitales Signal angeschlossen werden kann, ist es möglich den digitalen Zähler auf gleiche Weise anzuschließen und die Verwendung des Sensors vollständig transparent zu machen.

Vorverarbeitung & Übertragung

Die Sensoren sollen mit dem ESP8266 ausgelesen werden. Sowohl der Digitalzähler, als auch der Infrarotsensor liefern Impulse. Der tatsächliche Stromverbrauch muss aus der Zeit zwischen zwei Impulsen und der Anzahl von Impulsen pro kWh erreichnet werden. Auf diese Weise lässt sich ein Leistungswert bestimmen, so dass der Aufbau zu einem späteren Zeitpunkt auch durch Sensorenren nachgerüstet werden kann, die eine direkte Leistungsmessung ermöglichen. Die Übertragung der Daten soll über WLAN erfolgen. Dafür wird ein HTTP-GET-Request an Middleware abgesetzt, um den neuen Leistungswert einzutragen.

Ablauf

Auf dem ESP8266 soll ein FreeRTOS als Betriebssystem eingesetzt werden, sodass die Echtzeitfähigkeit genutzt werden kann, um trotz der ständigen Kommunikation über WLAN den Sensor trotzdem zeitgemäß auslesen zu können. Da für Sollen zwei Tasks erzeugt werden, wie sie auf der Abbildung dargestellt sind.


FreeRTOS Tasks


Der Task analogReadTask soll den Sensorwert auslesen und anhand einen voreongestellen Thresholds den Impuls erkennen. Durch den zeitlichen Abstand zweier Impulse soll der tatsächliche Stromverbrauch in Watt berechnet werden und in eine Queue eingereiht werden, über welche analogReadTask mit der Task valueHandlingTask kommuniziert. AnalogReadTask kann nun für eine vordefinierte Zeitspanne schlafen bevor der Vorgang wiederholt wird.

Der Task valueHandlingTask entnimmt einen Messwert aus der Queue, wobei er allerdings an einer leeren Queue blockiert. Der entnommene Wert wird als HTTP-GET-Request an die Middleware gesendet und der Vorgang wiederholt.

Konfiguration

Da der ESP8266 keinen EEPROM besitzt und somit Daten nicht ohne weiteres persistent speichern kann, muss die WLAN-Konfiguration bereits zum entwicklungszeitpunkt festgelegt werden. Anschließend soll es möglich sein die Parameter: analogReadTaskDelay, impulseThreshold, impulse_kWh, middlewareAddr, channelUUID über einen HTTP-GET-Request zu verändern. Die geänderted Parameter, können jedoch nicht persistent gespeichert werden und nehmen nach einem Neustart des ESP wieder die Standardwerte ein.

Datenpersistenz & Auswertung

Die Daten werden von der Middleware in einer MySQL-Datenbank gespeichert. Dabei können sie unterschiedlichen Kanälen zugeordnet werden, sodass beispielsweise verschiedene Geräte oder Räume getrennt gemonitort werden können. Die graphische Darstellung geschiet anhand der gesammelten Daten in der Datenbank und wird clientseitig über einen Webbrowser gerendert. Damit stellen sich als Anforderungen an die Plattform, das bereitstellen einer MySQL-Datenbank und eines Webservers mit PHP-Unterstützung. Diese Anforderungen werden durch den RaspberyPi erfüllt, dass do das Midleware auf diesem betrieben werden kann und die Datensicherheit samit gewährleistet bleibt.

Implementierung

Sensor

Abbildung 16: Infrarot-Lichtschranke (Vorderseite).
Abbildung 17: Infrarot-Lichtschranke (Rückseite).

Der optische Sensor zur Erkennung der roten Markierung ist in Form einer Infrarot-Lichtschranke aufgebaut (Abbildungen 16 und 17). Dabei wurde ein möglichst einfaches Konzept verfolgt: Eine Infrarot-LED mit Vorwiderstand in Kombination mit einem Infrarot-Phototransistor mit pulldown-Messwiderstand, dargestellt im Schaltplan in Abbildung 18. Dieser Aufbau inklusive Messkabel ist sehr preiswert zu realisieren und kann je nach Anwendung noch abgewandelt und verfeinert werden.

Laut Datenblatt kann die Infrarot-LED zur vollen Leuchtstärke mit bis zu 60 mA versorgt werden, was im aktuellen Aufbau aufgrund der Entfernung zwischen Sichtfenster und Zählerscheibe auch angestrebt wurde. Bei 3.3 Volt ergibt sich ein Vorwiderstand z.B. aus der E12 Reihe von 56 Ohm.

Der Phototransistor ist in unbeleuchtetem Zustand hochohmig, schaltet also nicht durch. Im beleuchteten Zustand wird der Phototransistor niederohmig und schaltet durch. Als Signal wird eine erhöhte Spannung bei Sichtbarkeit der roten Markierung und demzufolge eine bessere Reflektion des infraroten Lichts erwartet. Zu diesem Zweck wurde nach Experimenten mit verschiedenen Werten ein 10 kOhm pull-down Widerstand verwendet.

Abbildung 18: Schaltplan der Infrarot-Lichtschranke.

Zur Erfassung des digitalen Signals des elektronischen Stromzählers ist kein gesonderter Sensor notwendig. Hier wurde stattdessen eine Referenz-Spannungsquelle von 1 Volt verwendet, wobei hier auch ein Spannungsteiler eingesetzt werden könnte. Die positive Spannung von 1 Volt wurde an den mit '+' bezeichneten Eingang des elektronischen Stromzählers angeschlossen, der Analog-Eingang des ESP-12E Moduls wurde mit dem mit '-' bezeichneten Anschluss des elektronischen Stromzählers verbunden.

Immer wenn ein Impuls ausgegeben wird, wird somit die Referenzspannung von 1 Volt am Analog-Eingang registriert und ausgewertet. Mit diesem Aufbau ist es möglich, beide Zähler-Arten mit demselben 'Sensor-Anschluss' zu betreiben.

Die Implementierung der Magnetfeldsensoren wurde im Rahmen der Projektarbeit nicht mehr vorgenommen. Ein kurzer Test mit einem Multimeter hat zwar gezeigt, dass an der Messleitung eine Analoge Wechselspannung von ca. 5 mV für einen Verbraucher von 60 Watt und von ca. 150 mV für einen Verbraucher von ca. 1000 W zu messen sind. Diese Werte sind jedoch noch recht ungenau und sollten zur besseren Erfassung zunächst in eine Gleichspannung gewandelt werden. Zudem müsste die Programmlogik der Auswertung entsprechend angepasst werden. Aus diesen Gründen ist die Anschlussmöglichkeit dieser Sensoren als Ausblick für weiterführende Arbeiten am Projekt vorgesehen.

Prototypen

Neben dem Arduino-Prototypen wurden im Rahmen des Projekts drei weitere Prototypen mit dem ESP-12E Modul auf Breadboards aufgebaut:

Abbildung 19: ESP-12E Prototyp mit 1 Volt Referenzspannungsquelle zum Anschluss des elektronischen Zwischenzählers.
Abbildung 20: ESP-12E Prototyp zum Anschluss der Infrarot-Lichtschranke.
Abbildung 21: ESP-12E Prototyp momentan im Einsatz am Stromzähler zuhause.

Die Protypen sind prinzipiell gleich aufgebaut und wurden zur gleichzeitigen Erfassung von Messwerten der verschiedenen Zählerarten eingesetzt.

Der Prototyp in Abbildung 19 zeigt die Version mit Referenzspannungsquelle zum Anschluss an die S0 Schnittstelle des elektronischen Zwischenzählers. Hier wurde ein baugleiches Mini-Schaltnetzteilmodul verwendet (zu sehen in der Mitte links), wie es auch zur Spannungsversorgung der Gesamtschaltung eingesetzt wird. Preislich liegt dieses Modul ebenfalls im Rahmen von 3-4 EUR. Die Referenzspannung könnte aber ebenso mittels zwei Widerständen in einer Spannungsteilerschaltung erzeugt werden.

Die Prototypen 2 und 3 in den Abbildungen 20 und 21 sind baugleich und dienen zur Auslese der Infrarot-Lichtschranken. Eine grüne LED dient zur Anzeige der Spannungsversorgung. Eine gelbe LED ist nahe des oberen Schalters angebracht. Diese dient zur Anzeige, ob ich das Modul im Regulärbetrieb (LED erloschen) oder im Programmiermodus befindet (LED leuchtet). Zudem ist ein weiterer Taster angebracht, mit dem ein Reset des Moduls ausgelöst werden kann (und muss, um die Programmierung zu bewerkstelligen). Zur optischen Signalisierung ist eine RGB-LED eingebaut, die verschiedene Zustände anzeigt. Zur Zeit sind folgende Signale implementiert: Aufleuchten in rot signalisiert die 'Sichtbarkeit' der roten Markierung; Aufleuchten in blau signalisiert das Senden des aktuell ermittelten Verbrauchswertes. An der linken oberen Ecke des Moduls ist die Serielle Verbindung zu erkennen. Diese wird jedoch nur zur Programmierung und zur Rohdatenaufnahme benötigt. Im Regulärbetrieb kann dieser Anschluss entfallen.

EnergyEye-Firmware

Die Firmware für den ESP8266 basiert auf einer für den ESP angepassten FreeRTOS-Version von SuperHouse. Als Treiber für die verbauten Hardware-Komponenten wird die Espressif-SDK verwendet, die unter anderem auch das Ansteuern des ADCs ermöglicht. Aus Kompatibilitätsgründen, mussten anscheinend einige Funktionsnamen der Espressif-SDK umbenannt werden, jedoch wurden die nötigen Header-Dateien dazu nicht exportiert. Dies scheint ein bekannter Fehler zu sein (issue), der jedoch bisher noch nicht behoben wurde.

Als Lösung dieses Problems wurde für das Projekt EnergyEye eine Header-Datei mit den neuen Funktionsprototpen angelegt, sodass Funktionen der Espressif-SDK genutzt werden konnten.

uint16_t sdk_system_adc_read(void);
uint16_t sdk_system_get_vdd33(void);

Weitere Funktionen die von SuperHouse umbenannt wurden können unter esp/lib/allsymbols.rename nachgesehen werden.

Die Implementierung der EnergyEye-Firmware ist hier zu finden.

Tests & Evaluation

Zunächst wurden die einzelnen Komponenten des Projekts wie Sensoren, Verwendung der S0 Schnittstelle und das Konzept der Datenerfassung mit Hilfe des Arduino-Prototyps getestet. Hierbei fiel z.B. auf, dass zusätzliche Programmlogik zur Aufrechterhaltung einer stabilen Internetverbindung nötig würde. Als Ergebnis daraus wurde für den nächsten Prototypen entschieden, auf FreeRTOS als Betriebssystem und damit die Option zum Management mehrerer paralleler Tasks zurückzugreifen.

Anschließend wurde das Gesamtsystem anhand der drei ESP-12E Prototypen mit verschiedenen Zähler-Arten und über verschiedene Zeiträume hinweg untersucht. Neben Tests der Sensoren und deren Handhabung bei 3,3 Volt Versorgungsspannung wurden auch Langzeittests der Datenerfassung im 'Realbetrieb' an einem Wohnhaus durchgeführt. Hierbei haben sich besonders die Vorteile des modular aufgebauten Systems gezeigt: Parallel zur Einrichtung der Middleware auf dem Raspberry Pi konnten über die Website demo.volkszaehler.org bereitgestellte Demokanäle mit Langzeit-Testdaten befüllt werden. Zusätzlich wurden Rohdaten der Sensortests aufgezeichnet, die im Folgenden exemplarisch analysiert werden.

Rohdaten

Bei den Plots in den Abbildungen 22 bis 24 sind auf der horizontalen Achse die Nummern der Messpunkte aufgetragen, die im Intervall von 20 ms aufgenommen wurden. Auf der vertikalen Achse sind die entsprechenden Analogwerte im Bereich zwischen 0 und 1023 aufgetragen.

Abbildung 22 zeigt einen Ausschnitt aus den Rohdaten die bei der Auslese des elektronischen Zwischenzählers anfallen. Hier sind deutlich die Spitzen der Digital-Impulse zu sehen, die bei 90 ms Dauer für 4 bis 5 Messpunkte (80 bis 100 ms) als hoher Spannungspegel anliegen. Die Abtastrate des Analog-Eingangs wurde zunächst willkürlich auf 20 ms, also 50 Hz festgelegt und könnte noch verringert werden, sollte aber laut Nyquist-Theorem 45 ms nicht unterschreiten, um die Impulse des elektronischen Zwischenzählers nicht zu verpassen.

Abbildung 22: Rohdatenplot des Signals vom elektronischen Zwischenzähler.

Alternativ könnte bei Verwendung von Digtialeingängen hier auch eine interruptgesteuerte Datenerfassung erfolgen. Dies wurde auch entsprechend getestet, wobei dann die angeschlossenen Sensoren ein externes Analog-Digitalwandler Modul benötigen, an dem eine Schaltschwelle eingestellt werden kann. Aufgrund der Ziele der Kompatibilität und Modularität wurde jedoch die Festlegung getroffen, die verfügbaren Sensoren einheitlich über den Analogeingang auszulesen und die Schaltschwelle per Software zu konfigurieren.

In Abbildung 23 ist der Rohdatenplot des Analogsignals von der Infrarot-Lichtschranke dargestellt. Im periodischen Signalverlauf ist dabei deutlich die Umdrehung der Aluminiumscheibe erkennbar, die bei unterschiedlichen Energieverbäuchen auch unterschiedliche Umdrehungsgeschwindigkeiten und damit eine Horizontale Stauchung des Signals zeigt.

Abbildung 23: Rohdatenplot des Analogsignals von der Infrarot-Lichtschranke.

Hierbei ist jedoch ein interessantes Phänomen aufgefallen: Bei schnellerer Umdrehung wurde das Signal nicht nur horizontal, sondern auch vertikal gestaucht. Dies entspricht leider nicht den Erwartungen und konnte bisher noch nicht ursächlich erklärt werden. Eine gewisse Abhilfe konnte durch leichte Veränderungen der Sensorposition an der Sichtscheibe des Drehstromzählers erreicht werden. Daraus ergibt sich das Folgeproblem, dass unter diesen Umständen keine 'feste' Schaltschwelle in der Software konfiguriert werden kann, sondern ggf. eine Mustererkennung (z.B. Flankensteilheit) implementiert werden müsste, falls sich das Problem als Systeminhärent herausstellt.

Glücklicherweise ist dieses Phänomen zunächst nur bei dem nicht fest installierten Drehstromzähler aufgetreten. Die Rohdaten, die von einem im Prinzip baugleichen Sensor am fest installierten Drehstromzähler aufgezeichnet wurden zeigen das erwartete Verhalten der lediglich horizontalen Stauchung und sind in Abbildung 24 dargestellt. Hier ist zu erkennen, dass der Dynamikumfang des Analogsignals von 1023 Werten zwar nicht optimal ausgenutzt wird, jedoch dennoch eine zuverlässige Erkennung der roten Markierung (Signalspitzen) gewährleistet ist. Der hier verwendete Aufbau ist zum Zeitpunkt der Erstellung dieser Dokumentation seit gut einem Monat im zuverlässigen Betrieb in einem Mehrfamilienhaus.

Abbildung 24: Rohdatenplot des Analogsignals von der Infrarot-Lichtschranke vom Sensor zu Hause.

Visualisierung in Volkszähler Frontend

Das mit der Volkszähler Middleware mitgelieferte Frontend zur Visualisierung ermöglicht bereits eine relativ komfortable Einrichtung und Darstellung der Energieverbrauchsdaten, ohne eine umfangreiche Konfiguration vorauszusetzen. Durch klicken auf den Knopf 'Kanal hinzufügen' wird ein neuer Kanal in der Middleware angelegt, der fortan über eine UUID erreichbar ist und entsprechend abonniert werden kann. Es können mehrere Kanäle gleichzeitig beobachtet werden und ermöglichen so ggf eine Korrelation verschiedener erfasster Verbrauchsdaten (z.B. Wasser & Durchlauferhitzer). Über ein blaues Info-Icon können Darstellungseigenschaften der Kanäle eingestellt werden.

Im dargestellten ersten Beispiel in Abbildung 25 wurden zwei Kanäle angelegt. Hierbei wurden die Prototypen zur Auslese des elektronischen Zwischenzählers und zur Auslese der Infrarot-Lichtschranke gleichzeitig betrieben und die gemessenen Geräte in Reihe geschaltet, um beide Systeme direkt vergleichen zu können. Bei diesem Versuch wurden verschiedene Verbraucher zeitlich hintereinander gemessen, um eine Aufnahme charakteristischer Verbrauchsprofile zu erstellen. Dabei wurde ein 1000 W Scheinwerfer, ein 1800 W Wasserkocher, ein Backofen und ein Kaffee-Vollautomat gemessen.

Zunächst fällt auf, dass besonders beim Backofen ein charakteristisches Profil von Aufheiz- und Nachheizphase erkennbar ist. Zudem stechen die überraschend hohen Energieverbrauchsspitzen des Kaffee-Vollautomaten ins Auge. Die Energiemessung ist dabei so granular, dass sogar ein Rückschluss auf die Art des ausgewählten Kaffees möglich ist. Im Vergleich zur Ablesung 'von Hand' stellt dies schon einen wesentlichen Schritt in Richtung konstantes Energie-Monitoring dar.

Im Vergleich der beiden Plots fällt auf, dass die Darstellung der blauen Kurve, also die des Analog-Zählers im Verglich zur Darstellung der roten Kurve des elektronischen Zwischenzählers etwas gröber ausfällt. Dies ist auf die unterschiedlichen Zählerkonstanten, 600 Umdrehungen pro kWh beim Analogzähler und 1000 Impulse pro kWh beim elektronischen Zwischenzähler, zurückzuführen. Im Gesamtverlauf betrachtet ist die Abweichung jedoch in einem sehr gut vertretbaren Rahmen, was sich auch im durch die Volkszähler Visualisierung automatisch berechneten Gesamtenergieverbrauch von 608 Wh bzw 606 Wh zeigt.

Abbildung 25: Visualisierung der Energieverbrauchsdaten gemessener Einzelverbraucher in der Volkszähler-Darstellung.

Abbildung 26 zeigt eine Langzeitaufnahme (Tagesverlauf) eines realen Mehrfamilienhaushalts in einer Darstellung des Volkszähler-Frontends. Die Annotationen wurden hierbei von Hand vorgenommen. Hierbei zeigt sich, dass sich einzelne Ereignisse sehr gut identifizieren lassen und sich damit die Beiträge einzelner Energieverbraucher sehr gut bewusst machen lassen. Zudem ist es möglich, den Grundumsatz im Tagesverlauf festzustellen, sowie regelmäßig auftretende Ereignisse zu erkennen. Besonders Auffällig sind hierbei die Energiespitzen, die durch den Betrieb eines elektrischen Durchlauferhitzers verursacht werden und die in einem kontrastreichen Verhältnis zu den übrigen Verbrauchern stehen. Weiterhin ist eine Elektrische Heizung erkennbar, die in regelmäßigen Abständen ein- und ausgeschaltet wird. Diese Erkenntnis und Visualisierung hat bereits dazu geführt, dass die Heizung im Nachtbetrieb zukünftig heruntergedreht bzw. abgeschaltet wird.

Aufgrund dieser Messergebnisse und Auswertungen könnte es möglich sein, einzelne, große Verbraucher wie Durchlauferhitzer, Waschmaschine und Trockener ggf. automatisch aus dem Summenverbrauch zu identifizieren und z.B. ein monatliches Energiebudget festzulegen und so den Energiehaushalt bewußter zu planen. Für kleinere Verbraucher wäre es im Rahmen eines ausgedehnteren Projekts eher sinnvoll, elektronische Zwischenzähler in Unterverteilungen einzusetzen und diese dann in ein verteiltes Monitoringsystem zu integrieren, das die Daten z.B. an einen Heimserver mit Volkszäher Middleware publiziert. Dies könnte dann z.b. für kleinere Mietgemeinschaften interessant sein.

Abbildung 26: Visualisierung der Energieverbrauchsdaten eines Gesamthaushalts in der Volkszähler-Darstellung.

Fazit und Ausblick

Fazit

Im Rahmen des Projekts EnergyEye der Veranstaltung Internet der Dinge im Wintersemester 2015/2016 konnte gezeigt werden, dass eine preiswerte Nachrüstung von Smart Meter Funktionalität für Drehstromzähler bereits ab ca. 10 EUR prinzipiell möglich ist.

Durch die Verfügbarkeit preiswerter Microcontroller Plattformen mit Drahtlosnetzwerk-Anbindung wie die des ESP8266 ist es relativ leicht möglich, im Rahmen eines modular aufgebauten Systems analoge und digitale Daten zu erfassen und durch die Verwendung externer Programmierframeworks und Bibliotheken im Intra- oder Internet grafisch aufbereitet zur Verfügung zu stellen.

Bei der Visualisierung von Energieverbrauchsdaten ist es dabei besonders reizvoll, eine herkömmlich unbewußt und als selbstverständlich genutzte Größe des alltäglichen Lebens dem Endverbraucher sichtbar und bewußt zu machen. Neben der Erforschung des eigenen Nutzungsverhaltens können so auch z.B. unübliche Energieverbraucher identifiziert werden und ggf. Einsparpotenziale aufgedeckt werden.

Zusätzlich hat der Nutzer der in diesem Projektrahmen verwendeten Technologien prinzipiell die Möglichkeit seine Energieverbrauchsdaten ohne die Abhängigkeit permanent angebundener Internetdienste zu nutzen und kann sich auf sein eigenes Heimnetz beschränken. Durch die Verwendung von OpenSource Komponenten ist auch die Erweiterbarkeit und Anpassung des Systems durch den Endnutzer möglich. Die hier im Rahmen der elektrischen Energiemessung genutzten Werkzeuge sind mit relativ geringem Mehraufwand auf die Erfassung von Verbrauchsdaten zu Wasser und Gas erweiterbar.

Ausblick

Das hier dargestellte System zur Auslese der elektrischen Energieverbrauchsdaten stellt einen Prototyp dar, der unter anderem Folgende Erweiterungsmöglichkeiten bietet:

  • Im Rahmen der kontinuierlichen Verbesserung der Auslese-Software kann noch ein Rückkanal implementiert werden, der es ermöglicht, Programmvariablen wie die IP Adresse und den Port des Datenservers zu setzen, sowie die Identifikationsnummer des Kanals, die Schaltschwelle des Analogsignals, sowie die Zählerkonstante zu konfigurieren.
  • Weitere Recherchen zur ESP8266 Plattform haben noch weitergehende Konfigurationsmöglichkeiten aufgezeigt, wie z.B. den Betrieb eines minimalen Webservers mit Echtzeit-Datenmonitoring über Websockets, sowie die Anpassung der WLAN-Konfiguration bzw. sogar der Firmware im laufenden Betrieb (OTA-Update) (WebSockets for awesome on the ESP8266).
  • Eine automatische Auswertung von einzelnen Verbrauchern und die Ermittlung von Verbrauchsprofilen wäre denkbar, aus denen Anomalien im Vergleich zu 'standard Tagesabläufen' angezeigt werden könnten. Hierbei ist jedoch eine Langzeiterfassung, sowie eine gute Fehlerbehandlung unabdingbar mit einer klar umgrenzten Zielsetzung der automatischen Datenerfassung.
  • Auf technischer Seite kann die Fehlerbehandlung noch optimiert werden, indem z.B. ein Time-out der zu sendenden Daten konfiguriert wird, falls die Daten nicht in einem bestimmten Zeitfenster an den Server abgesetzt werden können.
  • Weitere Sensoren wie z.B. Magnetfeldsensoren können angeschlossen werden, um ein noch genaueres Echtzeit-Monitoring des Stromverbrauchs zu ermöglichen. Hierbei sind allerdings sowohl auf Sensorseite (Signalaufbereitung) als auch auf Softwareseite (zuordnen und senden der analogen Auslesewerte) noch weitere Anpassungen notwendig.
  • Aus Systemsicht besteht die Möglichkeit, weitere Folgeentscheidungen durch Zusatzmodule umzusetzen. Dies könnte z.b. die Ansteuerung schaltbarer Funksteckdosen über 433 MHz ISM-Band beinhalten, die nicht benötigte Geräte vom Netz trennen, um den Verbrauch zu reduzieren.
  • Zudem ist das Konzept sehr leicht auf die Erfassung weiterer Verbrauchsdaten wie Wasser- und Gasverbrauch erweiterbar. Hierbei können teilweise sogar die gleichen Sensoren mit Infrarotlichtschranke verwendet werden.

Referenzen

  1. https://de.wikipedia.org/wiki/Intelligenter_Z%C3%A4hler