====== Volkszaehler besser verstehen und planen (alternative version) ======
Auf dieser Seite wollen wir euch eine Schritt-für-Schritt Anleitung für die eigene Installation liefern.
volkszaehler ist keine Fertiglösung "von der Stange" (und kann und will das auch nicht sein)!\\
Etwas Bereitschaft zum Basteln ist Voraussetzung!\\
Kenntnisse im Umgang mit Linux, und ggf. auch Programmierung und Elektronik sind (gerade im aktuellen Stadium des Projekts) vorteilhaft.
Wenn Du einen Raspberry Pi mit Volkszaehler benutzen möchtest, steht [[howto/raspberry_pi_image|hier]], wie das geht!
Die Installation gliedert sich anhand der Bestandteile eines volkszaehler-systems, siehe auch: [[/overview]]
==== Messen ====
Um den Verbrauch von Strom, Gas, Wasser oder Umgebungsdaten wie Temperatur, Luftfeuchte oder Füllstand zu erfassen, muss ein [[hardware/channels/meters|geeignetes Messgerät]] verwendet werden.
Im Idealfall ist schon ein vom [[misc/netzbetreiber|Netzbetreiber]] installierter Zähler mit Datenschnittstelle vorhanden. Viele moderne Stromzähler nach [[hardware/channels/meters/power/edl-ehz/edl21-ehz|EDL21]] können zum Beispiel mit einem [[hardware/controllers/ir-schreib-lesekopf]] ausgelesen werden, viele [[hardware/channels/meters/gas|Gaszähler]] haben eine Mulde für einen Magnetsensor.
Alternativ können zusätzliche Zähler, zB [[hardware/channels/meters/power/liste_s0_zaehlermodelle|mit Impulsausgang]] installiert werden oder die vorhandenen Zähler mit z. B. optischen Abtastungen "gelesen" werden.
Die Messdaten liegen dann entweder in standardisierten Protokollen vor (z. B. [[software/sml]]) oder werden als Folge von Impulsen verarbeitet ([[misc/S0_schnittstelle]]).
Möchtest du z. B. den Stromverbrauch deines Hausanschlusses messen und sind dazu Änderungen in Deinem Zähler-, Verteiler- oder Sicherungskasten erforderlich, solltest du die Installation unbedingt einem Fachmann überlassen!
Ihr müsst also herausfinden, was Ihr messen wollt und dafür das richtige Messgerät auswählen und beschaffen.
weiterführende Dokumentation unter: [[hardware/channels]]
==== Übertragen ====
Die durch die Messgeräte erfassten Werte müssen zur weiteren Verarbeitung und Speicherung übertragen werden, da nicht immer eine Auswertungs- und Speichereinheit in direkter Nähe zum Messgerät verfügbar ist.
In diesem Fall bietet es sich an, eine [[hardware/controllers|Microcontroller-basierte Hardware]] einzusetzen, die mit geringem Energiebedarf die Daten vom Messgerät annimmt und per Netzwerk (und/oder Internet) zur Interpretation und Speicherung überträgt.
Es gibt hier zwei Geräteklassen:
- Geräte für die reine Übertragung von Messwerten, um an anderen Geräten deren Speicherung und Auswertung vorzunehmen
- universelle Geräte, die direkt an die Messgeräte angeschlossen werden können und alle weiteren Schritte übernehmen inkl. der Speicherung und Visualisierung der aufbereiteten Messdaten per Webserver.
Möglich sind hier zB.:
* Klasse (1): das [[hardware:controllers:avr_net-io|AVR NET-IO Board von Pollin]]
* Klasse (1): der [[hardware:controllers:hutschienencontroller_v2|5xS0-Hutschienencontroller]]
* Klasse (2): ein [[http://raspberrypi.org|Raspberry Pi]], evtl. auch mit den Erweiterungen von Udo [[/hardware:controllers:raspberry_pi_erweiterung_mit_schaltausgaengen_rev.1|RaspberryPi-Erweiterung mit Schaltausgängen Rev.1]] oder von busware.de [[http://shop.busware.de/product_info.php/products_id/82?osCsid=b4e3b9ec58f0437160b275b027e44c91|RPi-Erweiterung 4 * S0, 1 * D0]], wenn S0 oder 1Wire Ports für die Messgeräte benötigt werden.
* weitere unter: [[hardware/controllers]]
Auf microcontroller-basierten Controllern der Klasse (1) wird die [[software:controller:ethersex]] Firmware eingesetzt, beim Raspberry Pi kommen fertig installierte Images zum Einsatz, z. B. dieses: [[https://www.energie-und-it.de/raspi/|fertiges Volkszähler-Image für RPI]].
Ihr müsst also herausfinden, ob Ihr eine Fernerfassung der Messdaten und Übertragung per Funk oder Netzwerk zu einer zentralen Einheit einrichten wollt oder müsst (Klasse 1-Geräte erforderlich) oder ob Ihr die Verarbeitung und Speicherung der Daten direkt in der Nähe der Messgeräte machen wollt/könnt (Klasse 2 Gerät erforderlich).
==== Verarbeiten ====
Ein Stromzähler mit optischer Datenschnittstelle liefert eine lange Liste von Zeichen, aus denen der aktuelle Zählerstand und der momentane Verbrauch mittels einer Auswertungssoftware extrahiert werden muss.
Die Pulse eines Gaszählers mit Magnetschalter müssen mit Bezug auf die Zeit zwischen zwei Pulsen interpretiert werden, um daraus den momentanen Verbrauch zu bestimmen. Um den Zählerstand des Gaszählers zu ermitteln, müssen die Pulse einfach nur gezählt, durch die Auflösung geteilt und zum Startwert des Zählers bei der Installation der Messanlage addiert werden.
Es ist also eine Art Computer erforderlich, der diese Messdatenaufbereitung und die Übergabe an die Datenbank vornehmen kann.
Dabei kann der Computer zwar ein klassischer Computer sein, aufgrund des hohen Energiebedarfs dieser Geräte empfehlen sich aber eher stromsparende Mini-Computer wie z. B. der [[http://raspberrypi.org|Raspberry Pi]].
Für den Rasberry Pi und die RPi-Erweiterung gibt es verschiedene Lösungen für die Entgegennahme von Messdaten:
* [[software/controller/vzlogger]], eine Softwarekomponente, die in einer Schleife die Ports abfragt
* [[https://github.com/w3llschmidt|Daemons]], die mit geringer CPU-Last die Ports überwachen
Beide Ansätze führen bei neu eingehenden Daten zum Aufruf der Middleware-Php-Scripte (in /var/www/volkszaehler.org/htdocs/), die nach eventueller Berechnung von Werten neue Datensätze in der Volkszähler-Datenbank erzeugen.
==== Speichern ====
Für die Speicherung der Daten wird eine Datenbank eingesetzt. Da nahezu jede Datenbank dazu verwendet werden kann, wird hier beispielhaft nur die Verwendung von MySQL beschrieben. MySQL ist eine kostenlose Datenbank für viele Betriebssysteme und kann auch auf den hier interessanten Kleinstrechnern unter Linux betrieben werden.
Das [[development:schema|Datenbankschema]] für den Volkszähler ist einfach. Es besteht aus vier Tabellen:
* data: Tabelle der Datenwerte mit Zeitstempel und Zuordnung zum Anzeigegerät
* entities: Die Anzeigegeräte und ihre ID (UUID)
* entities_in_aggregator: [[development:schema#typen|Zusammenfassung/Gruppierung]] mehrerer Anzeigegeräte (entities) zur gemeinsamen Auswertung.
* properties: Die Bezeichnung und andere Eigenschaften der Anzeigegeräte wie Auflösung und ob sie öffentlich auswählbar sind, oder nicht
Die Anzeigegeräte ("Kanäle" genannt) werden über das Frontend erzeugt und von den Messgeräten mit Daten versorgt. Dazu muss das Messgerät die ID des Anzeigegerätes kennen. Deswegen müssen in den Konfigurationsdateien der verarbeitenden Komponenten (vzlogger, s0vz, 1wirevz usw.) diese IDs angegeben werden.
Detaillierte Beschreibung für Linux: [[software/middleware/installation]] (wird bei Verwendung des fertigen Raspberry Pi Images NICHT benötigt!)
Ihr müsst also entscheiden, welche Art des Volkszählers Ihr wollt: ein eigenständiges Gerät mit Web-Frontend, das ständig läuft und die Messdaten aufzeichnet und deswegen sehr energiesparend sein sollte oder ein gelegentlicher Volkszähler am PC, der auf die per LAN oder WLAN übertragenen Messdaten Eurer Messgeräte zugreift - aber nicht ständig läuft.
==== Auswerten ====
Letztlich sollen die gemessenen Daten in einer für uns angenehmen Weise aufbereitet angezeigt werden. Dazu wird ein Frontend verwendet.
Der Volkszähler hat ein [[http://volkszaehler.org|Standard-Frontend]], das die Messdaten in einem hübschen Graphen anzeigen kann und erlaubt, Zeitraum und Auflösung der Darstellung frei zu wählen.
Dieses Standard Frontend wird von einem Webserver bereitgestellt und kann von jedem Browser aufgerufen werden (PC, Handy, Tablet).
Damit eine zusätzliche Sicherheit bei einer eventuellen Übertragung des Frontends über das Internet erzeugt wird, werden die Anzeigegeräte (=Kanäle) mittels einer kryptischen UUID (beispielsweise 550e8400-e29b-11d4-a716-44665512562) definiert, die man am Browser separat eingeben muss, um den entsprechenden Kanal sehen zu können.
Wer die UUID nicht kennt, kann zwar das Frontend aufrufen, aber die Daten nicht sehen. Man kann aber auch die Definition als öffentliche Kanäle wählen, dann erspart man sich diese Mühe.
Um die UUIDs nicht jedesmal eingeben zu müssen, wenn man die Seite neu lädt oder ein anderes Mal wieder aufrufen möchte, können die UUIDs in Browser-Cookies gespeichert werden und stehen dann an diesem Arbeitsplatz dauerhaft zur Verfügung. (Vorsicht an öffentlichen Computern!)
Die Kanäle des Volkszählers werden über das Frontend nicht nur angezeigt, sondern auch erzeugt:
Dazu wählt Ihr die Schaltfläche "Kanal hinzufügen" aus.
Es gibt drei Möglichkeiten:
- Kanal über bekannte UUID hinzufügen (dabei müsst Ihr die UUID des in der Tabelle Entities gespeicherten Kanals wissen und in das Feld einfügen!)
- Öffentlichen Kanal hinzufügen (der in der Tabelle Entities gespeichert ist und in der Tabelle Properties mit der Property "public" versehen ist!)
- Einen neuen Kanal erstellen (der dann in den Tabellen entities und properties erzeugt wird und DANACH mit einem Messgerät durch die Konfiguration der Middleware (vzlogger, s0vz oder 1wirevz) auf die neue UUID verbunden wird!)
Ihr müsst also herausfinden, welche Messkurven Ihr im Frontend sehen wollt, dann diese über das Frontend anlegen und mit Euren Messgeräten über die Zuordnung der UUID in vzlogger, s0vz und 1wirevz verbinden
==== Fazit ====
Der Volkszähler ist vielfältig verwendbar. Es gibt die einfache Variante, in der ein RPI mit einem Standardimage mit einem USB-IR-Kopf den Stromzähler liest (Inbetriebnahmezeit ca. 2 - 8h, je nach Vorkenntnissen) und unendliche viele Varianten bis zur komplexen Messung an unterschiedlichen Orten mit zentraler Auswertung.