1003 lines
25 KiB
Text
1003 lines
25 KiB
Text
#LyX 1.6.7 created this file. For more info see http://www.lyx.org/
|
|
\lyxformat 345
|
|
\begin_document
|
|
\begin_header
|
|
\textclass paper
|
|
\use_default_options true
|
|
\language ngerman
|
|
\inputencoding auto
|
|
\font_roman default
|
|
\font_sans default
|
|
\font_typewriter default
|
|
\font_default_family default
|
|
\font_sc false
|
|
\font_osf false
|
|
\font_sf_scale 100
|
|
\font_tt_scale 100
|
|
|
|
\graphics default
|
|
\paperfontsize default
|
|
\spacing single
|
|
\use_hyperref true
|
|
\pdf_bookmarks true
|
|
\pdf_bookmarksnumbered true
|
|
\pdf_bookmarksopen true
|
|
\pdf_bookmarksopenlevel 1
|
|
\pdf_breaklinks false
|
|
\pdf_pdfborder true
|
|
\pdf_colorlinks true
|
|
\pdf_backref false
|
|
\pdf_pdfusetitle true
|
|
\papersize a4paper
|
|
\use_geometry false
|
|
\use_amsmath 1
|
|
\use_esint 1
|
|
\cite_engine basic
|
|
\use_bibtopic false
|
|
\paperorientation portrait
|
|
\secnumdepth 3
|
|
\tocdepth 3
|
|
\paragraph_separation skip
|
|
\defskip medskip
|
|
\quotes_language english
|
|
\papercolumns 1
|
|
\papersides 1
|
|
\paperpagestyle default
|
|
\tracking_changes false
|
|
\output_changes false
|
|
\author ""
|
|
\author ""
|
|
\end_header
|
|
|
|
\begin_body
|
|
|
|
\begin_layout Title
|
|
volkszaehler.org
|
|
\end_layout
|
|
|
|
\begin_layout SubTitle
|
|
the open smartmetering platform
|
|
\end_layout
|
|
|
|
\begin_layout Author
|
|
volkszaehler.org community, Steffen Vogel
|
|
\end_layout
|
|
|
|
\begin_layout Abstract
|
|
volkszaehler.org ist ein freier Smart Meter im Selbstbau.
|
|
Die anfallenden Stromprofile bleiben dabei unter der Kontrolle des Nutzers.
|
|
\end_layout
|
|
|
|
\begin_layout Abstract
|
|
Seit dem 1.1.2010 müssen Stromversorger ihren Kunden für Neubauten so genannte
|
|
"intelligente Stromzähler" (Smart Meter) anbieten.
|
|
Der Kunde soll dadurch seinen Stromverbrauch analysieren und optimieren
|
|
können.
|
|
\end_layout
|
|
|
|
\begin_layout Abstract
|
|
Das dabei anfallende Stromverbrauchsprofil erlaubt einen sehr detallierten
|
|
Einblick in den Tagesablauf des Nutzers (wann steht er auf? wann geht er
|
|
in's Bett? wann kocht er? wie oft verwendet er seine Spülmaschine? verändert
|
|
sich sein Verhalten? ...).
|
|
\end_layout
|
|
|
|
\begin_layout Abstract
|
|
Darum sollten diese Daten ausschließlich für den Nutzer selbst zur Verfügung
|
|
stehen - und das geht nur, wenn man sich den Smart Meter selbst baut.
|
|
Mit einem Materialeinsatz von ca.
|
|
100 €, etwas Geschick und Zeit lässt sich das mit Hilfe eines Standard-µC-Modul
|
|
s aufbauen.
|
|
\end_layout
|
|
|
|
\begin_layout Title
|
|
\begin_inset Graphics
|
|
filename /home/stv0g/workspace/volkszaehler.org/misc/graphics/logo.png
|
|
lyxscale 40
|
|
scale 40
|
|
draft
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
\begin_inset Newpage pagebreak
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
\begin_inset CommandInset toc
|
|
LatexCommand tableofcontents
|
|
|
|
\end_inset
|
|
|
|
|
|
\begin_inset Newpage pagebreak
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Einführung
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
In diesem Artikel werden wir das Projekt vorstellen, einen generellen Überblick
|
|
über die einzellnen Kompontenten geben und auf die Implementierung eingehen.
|
|
Ich möchte damit den Einstieg in das Projekt erleichtern und neue Entwickler
|
|
motivieren sich zu beteiligen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Einzellheiten zur Installation/Konfiguration eines eigenen volkszaehler.org
|
|
Setups finden Sie unsere Mailingliste
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
volkszaehler-dev@lists.volkszaehler.org
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
und im Wiki
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
\begin_inset Flex URL
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
|
|
http://wiki.volkszaehler.org
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
\begin_inset VSpace defskip
|
|
\end_inset
|
|
|
|
Neben dem
|
|
\series bold
|
|
Schutz der Privatsphäre
|
|
\series default
|
|
, hat das Projekt auch noch einige andere Ziele:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
eine kostenfreie Alternative gegenüber den kommerziellen Messstellenbetreibern
|
|
anbieten
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
dem Nutzer ein Bewusstsein über seinen Verbrauch/Nutzungsverhalten aufzeigen
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Energie intelligenter zu nutzen
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
die Breite Masse erreichen
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
Daher stammt auch der Name
|
|
\series bold
|
|
volks
|
|
\series default
|
|
zaehler.org
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
offene Protokolle und Standards zu vorrantreiben
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Wir haben es uns zur Aufgabe gemacht diese Ziele durch eine lückenlose Kette
|
|
von quelloffener Soft- und Hardware zu erreichen.
|
|
Der Nutzer soll die Möglichkeit haben jeden einzellnen Schritt nachvollziehen
|
|
zu können.
|
|
Daraus folgt nicht, dass wir jede Zeile Code selbst geschrieben haben.
|
|
Wir nutzen eine Reihe anderer Software, die aber wiederum selbst quelloffen
|
|
ist.
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Was ist ein intelligenter Zähler, Smart Meter oder elektronischer Heimzähler
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Ein intelligenter Zähler ist ein elektronischer Strom-, Gas-, Wasser- oder
|
|
Wärmemengenzähler.
|
|
Er soll dem Nutzer seinen Energieverbrauch transparent machen.
|
|
Durch eine zeitnahe Rückmeldung soll ein sparsamer Umgang mit Energie gefördert
|
|
werden.
|
|
Detaillierte Lastprofile erlauben dem Verbraucher eine gezielte Optimierung
|
|
seines Energieverbrauchs.
|
|
Sein Lastprofil gibt ihm Antworten auf die folgenden Fragen:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Wie hoch ist die eigene Grundlast?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Lohnt sich (aus ökonomischer oder ökologischer Sicht) der Ersatz eines Altgeräte
|
|
s durch ein effizienteres Neugerät?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Wie hoch ist der Anteil von Geräten mit hoher Leistung, die nur für kurze
|
|
Zeit eingesetzt werden (bei Stromverbrauchern z.B.
|
|
Fön, Staubsauger, Mikrowelle), am Gesamtverbrauch?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Gibt es hier Optimierungspotenzial?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Lassen sich Lastspitzen in Zeiten günstigerer, tageszeitabhängiger Tarife
|
|
verschieben?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Dem Energieversorger dienen die genaueren Verbrauchszahlen im Falle eines
|
|
intelligenten Stromzählers dazu, die Bereitstellung von Strom im Netz zu
|
|
optimieren und so den risikobehafteten kurzfristigen Zukaufbedarf an der
|
|
Strombörse zu minimieren und die Kraftwerkeinsatzplanung so zu optimieren,
|
|
dass die bereitgestellte Strommenge die Nachfrage nur minimal übersteigt.
|
|
Um dies zu erreichen sind die intelligenten Zähler in der Regel aus der
|
|
Ferne vom Versorger auslesbar.
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Wikipedia schreibt zum Thema intelligente Zähler:
|
|
\end_layout
|
|
|
|
\begin_layout Quotation
|
|
Ein intelligenter Zähler (auch Smart Meter genannt) ist ein elektronischer
|
|
Stromzähler, der dem Energieversorgungsunternehmen über eingebaute Zusatzfunkti
|
|
onen oder nachträgliche Module ermöglicht, die erfassten Zählerstände über
|
|
die Ferne auszulesen.
|
|
\end_layout
|
|
|
|
\begin_layout Quotation
|
|
[…] Neben dem reinen Einsatz von intelligenten Zählern zur Messung des Stromverb
|
|
rauchs ist es auch möglich, in einem Haushalt den Wasser-, Gas-, und Wärmeverbra
|
|
uch intelligent zu überwachen.
|
|
\end_layout
|
|
|
|
\begin_layout Quotation
|
|
[…] Der Zweck intelligenter Zähler ist vornehmlich, variable Leistungsentgelte
|
|
in Abhängigkeit von der Gesamtnachfrage und Netzauslastung erheben zu können.
|
|
Damit erhoffen die Energieversorger, das Netz und die vorhandene Kraftwerkinfra
|
|
struktur besser auszunutzen sowie Investitionen für Spitzenlastausbau zu
|
|
vermeiden oder zumindest zurückzustellen.
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
Quelle:
|
|
\begin_inset Flex URL
|
|
status open
|
|
|
|
\begin_layout Plain Layout
|
|
|
|
http://de.wikipedia.org/wiki/Intelligenter_Zähler
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Bei den konventionellen Ferrariszählern wird in der Regel einmal im Jahr
|
|
der Zählerstand abgelesen.
|
|
Dadurch hat weder der Versorger noch der Kunde einen Überblick darüber,
|
|
wann genau er wieviel Strom verbraucht.
|
|
Bei den intelligenten Stromzählern wird der Verbrauch in deutlich kürzeren
|
|
Intervallen erfasst.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Anhand der gemessenen Werte lassen sich Verbrauchsdiagramme erstellen.
|
|
Hier seht Ihr als Beispiel ein paar Diagramme typischer Verbraucher eines
|
|
Haushaltes:
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
\noindent
|
|
\align center
|
|
\begin_inset Graphics
|
|
filename /home/stv0g/workspace/volkszaehler.org/misc/graphics/backofen.jpg
|
|
|
|
\end_inset
|
|
|
|
|
|
\begin_inset Graphics
|
|
filename /home/stv0g/workspace/volkszaehler.org/misc/graphics/kuehlschrank.jpg
|
|
|
|
\end_inset
|
|
|
|
|
|
\begin_inset Graphics
|
|
filename /home/stv0g/workspace/volkszaehler.org/misc/graphics/spuelmaschine.jpg
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Tatsächlich birgt die verbraucherfreundliche Lösung einer automatischen
|
|
und feingranularen Verbrauchserfassung durch den Stromzähler die Möglichkeit
|
|
zur Erstellung eines präzisen Lastprofiles.
|
|
Der Lastgang eines Haushalts verrät viel über die Gewohnheiten der Personen,
|
|
die in diesem Haushalt leben.
|
|
Anhand der gemessenen Daten lassen sich Nutzungsprofile erstellen.
|
|
Es sind im Prinzip Rückschlüsse auf die Lebensgewohnheiten des Haushaltes
|
|
möglich:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Wann stehen die Bewohner auf?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Wann gehen Sie ins Bett?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Wird jeden Tag gekocht? mit einer oder mit mehreren Herdplatten? oder gibts
|
|
häufig Pizza? :-)
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Ändern sich die Gewohnheiten (Besuch oder Nachwuchs)?
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Muss ein Bewohner Nachts häufiger auf Toilette?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Im Prinzip hat man mit diesen Daten eine bessere Überwachung als mit einer
|
|
Kamera!
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Energiewirtschaftsgesetz (EnWG) schreibt den Versorgern nur vor, das
|
|
auch der Kunde auf diese Daten zugreifen können muss.
|
|
Die Nutzung, Weitergabe, Anonymisierung der Daten ist in dem Gesetz nicht
|
|
explizit geregelt.
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Was ist der Volkszaehler?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
volkszaehler.org ist ein freier intelligenter Stromzähler im Selbstbau, bei
|
|
dem die anfallenden Stromprofile unter der Kontrolle des Nutzers verbleiben.
|
|
Die Daten des Volkszaehlers sind nicht duch den Versorger auslesbar.
|
|
Mit einem Materialeinsatz von ca.
|
|
EUR 100, etwas Geschick und Zeit lässt sich ein solcher Volkszaehler auf
|
|
Basis eines Standard-µC-Moduls aufbauen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Der Volkszaehler kann nicht als fertiges Gerät gekauft werden.
|
|
Es ist ein Selfmade-Projekt.
|
|
Der Volkszaehler besteht nicht aus einem einzigen Element sondern aus insgesamm
|
|
t 4 Modulen (Messung, Verarbeitung, Speicherung & Auswertung).
|
|
Das Modul zur Messung muss in der Regel von einem Elektriker im Schaltschrank
|
|
der Hausinstallation eingebaut werden.
|
|
Es gibt auch Varianten die keinen Eingriff in die Hausinstallation benötigen.
|
|
Alle anderen Module lassen sich von interessierten Tüftlern selber nachbauen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die einzelnen Module und deren Zusammenspiel wird etwas weiter unten genauer
|
|
erklärt.
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Warum brauche ich einen Volkszaehler?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Wer seinen Energiebedarf analysieren möchte, braucht dazu genaue Messwerte.
|
|
Bei heutigen Hausinstallationen mit konventionellen Drehstromzählern sind
|
|
für den Stromverbrauch diese Messwerte nicht vorhanden.
|
|
Es wird also ein intelligenter Zähler benötigt, der in der Lage ist den
|
|
Energiebedarf über sehr kurze Zeiträume zu messen und zu speichern.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Diese Geräte werden heute schon von vielen Versorgern angeboten.
|
|
Die einfachen Lösungen ermöglichen die Anzeige der aktuellen Leistung,
|
|
der Verbrauchswerte des aktuellen Tages, der aktuellen Woche, des aktuellen
|
|
Monats und der jeweils vorhergehenden Zeiträume.
|
|
Bei den meisten Lösungen, bei denen darüber hinaus eine komfortable Auswertung
|
|
möglich ist, werden die Verbrauchsdaten jedoch zum Versorger übertragen.
|
|
Der Nutzer kann dann i.d.R.
|
|
über eine Weboberfäche eine komfortable Analyse vornehmen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Wie schon weiter oben geschildert besteht nun die Möglichkeit für den Versorger
|
|
auf Grundlage der Daten Nutzerprofile anzulegen und diese auszuwerten.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
So Lustig diese Gedankenspiele auch sind - mit einem intelligenten Zähler
|
|
eines Versorgers gibt man seine Daten aus der Hand und weiß nicht was mit
|
|
diesen Daten gemacht wird.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Wer dies nicht möchte, hat mit dem Volkszaehler die Möglichkeit sich einen
|
|
intelligenten Zähler selbst zu bauen und die Verbrauchsdaten selbst auszuwerten.
|
|
Die Daten bleiben beim Kunden und der Versorger hat keinen Zugriff auf
|
|
diese Daten.
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Wie funktioniert der Volkszaehler?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Der Volkszaehler besteht aus mehreren Modulen.
|
|
Für jedes Modul gibt es unterschiedliche Ideen der Umsetzung.
|
|
Es gibt also nicht den einen Volkszaehler, sondern in der technischen Ausführun
|
|
g verschiedene Varianten.
|
|
Grundsätzlich funktionieren aber alle diese Varanten nach dem gleichen
|
|
Prinzip.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die Sensoren - in der Regel je einer pro Phase - werden im Schaltschrank
|
|
der Hausinstallation zwischen den Vorsicherrungen und den normalen Sicherungsau
|
|
tomaten installiert.
|
|
Diese Sensoren geben ihre Signale an ein µController-Board weiter, welches
|
|
die Daten über eine Netzwerkverbindung an einen Datenbankserver zur speicherung
|
|
weitergibt.
|
|
Möchte der User nun die Daten abrufen und auswerten nutzt er dazu einen
|
|
Webbrowser, mit dem er die Daten aus der Datenbank abrufen - und diese
|
|
grafisch aufbereiten lassen kann.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die folgende Zeichnung zeigt die Position der Sensoren im Schaltschrank.
|
|
Das µController-Board kann, muss aber nicht, im Schaltschrank installiert
|
|
werden.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
\begin_inset Graphics
|
|
filename /home/stv0g/workspace/volkszaehler.org/misc/graphics/schematischer_schaltkasten.jpeg
|
|
scale 50
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Woraus besteht ein Volkszaehler?
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Der Volkszaehler besteht aus 4 Modulen:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Messen
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Verarbeiten
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Protokollieren/Speichern
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Auswerten
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Für jedes dieser Module gibt es verschiedene Ideen diese zu realisieren.
|
|
Mehr dazu findet Ihr im Wiki unter Morphologischer Kasten.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Hier möchte ich für jedes Modul eine Beispielkonfiguration vorstellen und
|
|
kurz ein paar Infos dazu schreiben:
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Projekt lässt sich in drei Bereiche aufteilen, die untereinander über
|
|
eine spezifizierte API kommunizieren.
|
|
Diese drei Module grenzen sich lokal, durch die verwendeten Technologien
|
|
und ihre Aufgabe voneinder ab.
|
|
Alle Module sollen untereinander austauschbar sein und sind in mehreren
|
|
Varianten verfügbar.
|
|
So kann den individuellen Bedürfnissen nach ein angepasstes Setup aufgebaut
|
|
werden.
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
Messen
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Ein möglicher Messsensor ist ein Wattmeter, welches auf der Hutschiene des
|
|
Schaltschrankes montiert wird und zwischen den Vorsicherungen und den Sicherung
|
|
sautomaten eingeschleift wird.
|
|
In der Regel wird pro Phase ein Wattmeter benötigt.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
hier ein Foto der Wattmeter im Schaltschrank einfügen!
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Auf dem Foto sieht man unten die Stromanschlüße und oben - die etwas dünnere
|
|
Kabel - die Signalleitungen die dann zum µController-Board gehen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
kurz die Funktionsweise der Wattmeter erklären
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
Verarbeiten
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die Aufgabe der Controller ist es Sensoren auszulesen und diese Daten direkt
|
|
an das Backend zu senden.
|
|
Meist sind sie direkt mit den Zählern/Sensoren verbunden.
|
|
Ein typischer Ort wäre also der Sicherungskasten.
|
|
Diese Controller sind dann meist in das lokale IP Netzwerk eingebunden
|
|
und senden ihre Daten an ein Backend.
|
|
Ausgehend von Prototyp sind im volkszaehler.org Projekt bisher die Atmel
|
|
AVR/Ethersex basierenden Controller am meisten verbreitet.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Als Sensoren werden hier für das Erfassen des Verbrauchs Impulszähler eingesetzt.
|
|
Diese signalisieren dem Controller durch einen elektrischen Impuls, das
|
|
eine bestimmte Menge an elektrischer Energie, Wasser oder Gas verbraucht
|
|
wurde.
|
|
Auch skalare Messgrößen wie z.B.
|
|
Temperatur, Luftdruck oder Luftfeuchtigkeit sind möglich, werden dann aber
|
|
nicht mehr durch Impulse erfasst.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Ein typisches Setup für ein Einfamilienhaus könnte folgendermaßen aussehen:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
3x 1-phasige S0-Stromzähler für den Hausanschluss
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
jede Phase erhällt einen Zähler
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
1x S0-Wasserzähler
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
1x S0-Gaszähler
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
1x Sensor für die Außentemperatur
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
Protokollieren/Speichern
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Im Backend werden die Messwerte der Sensoren gespeichert und ausgewertet.
|
|
Es handelt sich hierbei um ein PHP Skript welches auf einem Webserver läuft
|
|
und somit die Schnittstelle zwischen Controller und Frontend ist.
|
|
Daraus folgend muss es von den Controllern sowie von den Frontends via
|
|
HTTP erreichbar sein.
|
|
Ob der Backendserver nur über das lokale Netzwerk oder auch über das Internet
|
|
erreichbar ist, wirkt sich nur auf die Erreichbarkeit durch die Frontends
|
|
und die Controller aus.
|
|
So kann es durchaus erwünscht sein die Daten nur im lokalen Netzwerk vorzuhalte
|
|
n um sie gegen Zugriff über das Internet zu schützen.
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
Auswerten
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die Frontends visualisieren Messwerte und können zur Verwaltung genutzt
|
|
werden.
|
|
Durch ein zentrales Backend haben wir die Möglichkeit die Messwerte an
|
|
mehrere Frontends gleichzeitig zu verteilen.
|
|
Verschiedene Frontends, können die Daten dann unterschiedlich darzustellen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Web-basierte Frontend für den Browser ist das bisher einzige Frontend
|
|
und ist quasi eine Referenzimplementierung der API.
|
|
Es unterstützt die volle Funktionalität des Backend und kann auch zur Verwaltun
|
|
g von Zählern genutzt werden.
|
|
Es nutzt AJAX um Daten dynamisch nachzuladen.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Inspiriert vom Wattson
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
\begin_inset Flex URL
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
|
|
http://www.diykyoto.com/uk/wattson/about
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
haben wir uns entschieden eine ähnliche interaktive Variante dieses Moodlights
|
|
zu entwickeln.
|
|
Derzeit experimentieren wir mit fnordlichtern
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
\begin_inset Flex URL
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
|
|
http://wiki.lochraster.org/wiki/Fnordlichtmini
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die möglichen Visualisierungsmethoden sind praktisch endlos.
|
|
Damit auch die Anzahl der möglichen Frontends.
|
|
Frontends dürfen nicht nur als abgeschlossenes System betrachtet werden.
|
|
Denkbar sind auch Plugins in bestehende Systeme (Social Networks, iGoogle,
|
|
Twitter).
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
API
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Die API definiert eine Schnittstelle zwischen Controllern und Backend, sowie
|
|
zwischen Backend und Frontends.
|
|
Die API orientiert sich am REST Entwurfsmuster.
|
|
Dabei kann jeder Zähler/Sensor/Gruppe (im folgenden als
|
|
\begin_inset Quotes eld
|
|
\end_inset
|
|
|
|
Entity
|
|
\begin_inset Quotes erd
|
|
\end_inset
|
|
|
|
bezeichnet) durch eine weltweit eindeutige UUID referenziert werden.
|
|
Diese UUID werden entsprechend RFC 4122 von Backend generiert und vergeben.
|
|
Dieser 128 Bit lange Identifier sichert uns auch gleichzeitig die Privatsphäre.
|
|
Die UUID ist praktisch eine Zugangskennung und sollte immer vertraulich
|
|
behandelt werden.
|
|
Da wir keinerlei nutzerbezogene Daten speichern kann diese UUID nur durch
|
|
den Zugriff eines Nutzers zugeordnet werden.
|
|
Daher empfiehlt sich der Einsatz von verschlüsseltem HTTPS.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Als Ausgabeformat nutzen wir das leichtgewichtige und menschenlesbare JSON.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Eine Referenz unserer API befindet sich im Wiki.
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
Gruppierung
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Zähler und Sensoren können zusammengefasst werden.
|
|
Diese Aggregatoren besitzen selbst wieder eine UUID und können dadurch
|
|
beliebig tief verschachtelt werden.
|
|
Hirachische Strukturen wie z.B.
|
|
Mehrfamilienhäuser, Wohngemeinschaften, Hotels, Gemeinden & Städte können
|
|
dadurch nachgebildet und gemeinsam ausgwertet werden.
|
|
\end_layout
|
|
|
|
\begin_layout Section
|
|
Implementierung
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Dieser Abschnitt konzentriert sich auf die Implementierung des Backends.
|
|
Das Backend ist in PHP programmiert und kann auf jedem LAMP-ähnlichen System
|
|
betrieben werden.
|
|
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Der Code ist stark Objekt orientiert.
|
|
Daher müssen wir PHP 5.3 vorraussetzen.
|
|
Diese Objekt orientierte Programmierung erlaubt es uns den Code übersichtlicher
|
|
und modularer aufzubauen.
|
|
Zukünftige Erweiterungen, neue Zählertypen können dadurch leichter in das
|
|
System integriert werden.
|
|
\end_layout
|
|
|
|
\begin_layout Subsection
|
|
MVC
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Backend wurde nach dem
|
|
\series bold
|
|
M
|
|
\series default
|
|
odel
|
|
\series bold
|
|
V
|
|
\series default
|
|
iew
|
|
\series bold
|
|
C
|
|
\series default
|
|
ontroller Entwurfsmuster aufgebaut.
|
|
Jeder Request an das Backend muss über die Datei
|
|
\family typewriter
|
|
/htdocs/backend.php
|
|
\family default
|
|
erfolgen.
|
|
Sie ist quasi der
|
|
\begin_inset Quotes eld
|
|
\end_inset
|
|
|
|
Haupteingang
|
|
\begin_inset Quotes erd
|
|
\end_inset
|
|
|
|
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
Dadurch ist sie auch das einzige PHP Skript, das über das öffentliche
|
|
\begin_inset Quotes eld
|
|
\end_inset
|
|
|
|
htdocs
|
|
\begin_inset Quotes erd
|
|
\end_inset
|
|
|
|
Verzeichnis zugänglich sein muss
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Dort wird zunächst der PHP Interpreter konfiguriert (automatisches Laden
|
|
von Klassen, der Konfiguration, Fehlerbehandlung, Aufbau der Datenbankverbindun
|
|
g).
|
|
Danach wird direkt der Router initialisiert.
|
|
\end_layout
|
|
|
|
\begin_layout Subsubsection
|
|
Router
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Der Router ist das Herz der MVC Struktur.
|
|
Er leitet den Request an den zuständigen Kontext
|
|
\begin_inset Foot
|
|
status collapsed
|
|
|
|
\begin_layout Plain Layout
|
|
Wir nutzen hier den Begriff
|
|
\begin_inset Quotes eld
|
|
\end_inset
|
|
|
|
Kontext
|
|
\begin_inset Quotes erd
|
|
\end_inset
|
|
|
|
um eine Verwechslung mit dem Hardware-Controllern zu vermeiden.
|
|
Entsprechend des MVC-Patterns ist hier der
|
|
\begin_inset Quotes eld
|
|
\end_inset
|
|
|
|
Controller
|
|
\begin_inset Quotes erd
|
|
\end_inset
|
|
|
|
gemeint.
|
|
\end_layout
|
|
|
|
\end_inset
|
|
|
|
weiter und antwortet mit dem korrekten Ausgabeformat.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Alle Anfragen an das Backend müssen einem bestimmten Schema entsprechen.
|
|
Hier wird auch der zuvor angesprochene Einsatz von REST deutlich.
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
|
|
\family typewriter
|
|
http://server:port/path/to/volkszaehler/backend.php/kontext/uuid.format?paramters=
|
|
values
|
|
\end_layout
|
|
|
|
\begin_layout Subsubsection
|
|
Kontext (Controller)
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Backend hat verschiedene Aufgaben zu bewältigen.
|
|
Für jede dieser Aufgaben gibt es einen eigenen Kontext, der praktisch die
|
|
ganze Logik enthällt:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Daten erfassen/ausgeben
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Entities erstellen/bearbeiten/abfragen
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Eigenschaften des Backends abfragen
|
|
\end_layout
|
|
|
|
\begin_layout Subsubsection
|
|
Datenabstraktion (Model)
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Zur Datenbankabstraktion setzen wir Doctrine 2 ein.
|
|
Dieses Database Abstraction Layer (DAL) erlaubt es uns datenbankspezifische
|
|
Eigenheiten, SQL-Dialekte ähnliches zu ignorieren.
|
|
Doctrine unterstützt verschiede Datenbanken:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
MySQL
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
SQLite
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
PostgreSQL
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Oracle
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Aufbauend auf das DAL kommt der Object Relational Mapper (ORM) von Doctrine
|
|
zum Einsatz.
|
|
Wir können mit den Daten nun als Instanzen von PHP-Objekten arbeiten.
|
|
SQL Queries sind nicht mehr nötig.
|
|
Für weitere Infos empfehle ich die Dokumentation des Doctrine Projekts.
|
|
\end_layout
|
|
|
|
\begin_layout Subsubsection
|
|
Ausgabe (View)
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Das Backend kann in verschiedenen Formaten antworten:
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
JSON (Standard)
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
XML
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
CSV
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Klartext
|
|
\end_layout
|
|
|
|
\begin_layout Itemize
|
|
Jpeg, PNG, Gif
|
|
\end_layout
|
|
|
|
\begin_layout Standard
|
|
Dabei ist JSON das bevorzugte Format, das auch von dem Webinterface genutzt
|
|
wird.
|
|
Die anderen Formate sind als Alternativ für Endgeräte ohne JSON Unterstützung
|
|
gedacht.
|
|
Wir können nicht garantieren, dass diese Formate den gleichen Funktionsumfang
|
|
wie das JSON Format besitzen.
|
|
\end_layout
|
|
|
|
\end_body
|
|
\end_document
|