Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
API
Die Software auf volkszaehler.org besteht aus 2 Komponenten:
Frontend
Das ist die Visualisierung der Werte, i.d.R. also ein Browser, in dem der Verlauf der Stromverbrauchswerte angezeigt wird. Alternativ zum Browser sind aber auch andere Frontends angedacht: eine direkte Anzeige des aktuellen Verbrauchswertes z.B. via Chumby.
Backend
Hierbei handelt es sich im Wesentlichen um einen Wrapper um die Datenbank. Sämtliche Kommunikation in Richtung Datenbank wird über das Backend abgewickelt.
Entsprechend besteht die API aus 2 Teilen:
Frontend-API
Diese definiert die Kommunikation zwischen dem Frontend und dem Backend.
Backend-API
Das ist jetzt leicht: die Backend-API beschreibt die Kommunikation zwischen dem Messgerät (AVR Net-IO, Flukso, …) und dem Backend.
Aufgaben der API
- die komplette Kommunikation mit dem Backend übernehmen (Logging, Auswertung & Verwaltung)
- die Möglichkeit bieten Daten in Paketen an den Backend-Server schicken, um die Netzwerkverbindung zu entlasten und dadurch Strom zu sparen oder Verbindungsprobleme zum Backend-Server abfangen können
- nicht nur Pulse übertragen können, sondern auch Messwerte anderer Sensoren (Temperatur, Wind, Luftdruck etc.).
- eine eindeutige Versionierung beinhalten
- jeden Kanal eindeutig referenzieren (UCID -
'u
'nique'c
'hannel'i
'd) - Fehlfunktionen der Sensoren/Controller übermitteln können
Umsetzung
Die gesamte Kommunikation mit dem Backend wird ausnahmslos über HTTP-Anfragen abgewickelt. Beim Entwurf der API wurde auf folgende Punkte geachtet:
HTTP-Protokoll
- wird nur selten in Netzwerken gefiltert
- kann getunnelt oder durch Proxies benutzt werden
- ermöglicht einfache Auswertung über einen Webserver mit PHP
- ist durch vorhande Bibliotheken gut nutzbar und weit verbreitet
- Zustandslosigkeit (es ist Aufgabe des Frontends eine Session zu verwalten)
JSON-Format
- von Menschen lesbar
- geringer Overload im Vergleich zu XML
- performante Verarbeitung der Daten mit Javascript
Zukunftsmusik
- Direktzugriff auf den Controller für Echtzeitdarstellung & Steuerung des Controllers (Ethersex besitzt bereits einen HTTPD, Flukso auch)
- Matthias von mysmartgrid hat das bereits für den Flukso Controller implementiert
- Erkennung und Übertragung der Sensortypen, Auflösungen etc..
- Google Power Meter like Workflow zum installieren neuer Zähler