added first draft of our developer documentation
This commit is contained in:
parent
3ebb21e0f0
commit
98543590d6
1 changed files with 375 additions and 0 deletions
375
misc/docs/manual.lyx
Normal file
375
misc/docs/manual.lyx
Normal file
|
@ -0,0 +1,375 @@
|
|||
#LyX 1.6.7 created this file. For more info see http://www.lyx.org/
|
||||
\lyxformat 345
|
||||
\begin_document
|
||||
\begin_header
|
||||
\textclass article
|
||||
\use_default_options true
|
||||
\language english
|
||||
\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 indent
|
||||
\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 Author
|
||||
Steffen Vogel
|
||||
\end_layout
|
||||
|
||||
\begin_layout Date
|
||||
Januar 2011
|
||||
\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 Standard
|
||||
\begin_inset CommandInset toc
|
||||
LatexCommand tableofcontents
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
\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 kostenlose Alternative 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
|
||||
Aufbau
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Das Projekt lässt sich in drei Module aufteilen, die untereinander über
|
||||
eine spezifizierte API kommunizieren.
|
||||
Diese drei Module grenzen sich lokal, durch die verwendeten Technologien
|
||||
und ihre jeweilige Aufgabe voneinder ab.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
Controller
|
||||
\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 Zählerschrank.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
Frontend(s)
|
||||
\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 Subsubsection
|
||||
Browser
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Das Web-basierte Frontend für den Browser ist das bisher einzige Frontend
|
||||
und kann quasi als Referenz Implementierung angesehen werden.
|
||||
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 Subsubsection
|
||||
fnordlicht
|
||||
\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 Subsection
|
||||
Backend
|
||||
\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.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Section
|
||||
API
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Eine Referenz unserer API befindet sich im Wiki.
|
||||
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
|
||||
Zähler und Sensoren können zusammengefasst werden.
|
||||
Diese Aggregatoren besitzen selbst wieder eine UUID und können dadurch
|
||||
beliebig tief verschachtelt werden.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Welche EntiAggregatoren
|
||||
\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.
|
||||
Zur Datenbankabstraktion setzen wir Doctrine 2 ein.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Sowohl Doctrine als auch unser eigender Quelltext sind stark Objekt orientiert.
|
||||
Wir bauen setzen viele neue Funktionen von PHP 5 ein.
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
MVC
|
||||
\end_layout
|
||||
|
||||
\end_body
|
||||
\end_document
|
Loading…
Add table
Reference in a new issue