development:api:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
development:api:start [2010/08/18 16:36] – justinotherguy | development:api:start [2018/12/10 15:15] (aktuell) – Beispiel hinzugefügt zugschlus | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
Alternativ zum Browser sind aber auch andere Frontends angedacht: eine direkte Anzeige des aktuellen Verbrauchswertes z.B. via [[http:// | Alternativ zum Browser sind aber auch andere Frontends angedacht: eine direkte Anzeige des aktuellen Verbrauchswertes z.B. via [[http:// | ||
- | ==== Backend | + | ==== Middleware |
- | Hierbei handelt es sich im Wesentlichen um einen Wrapper um die Datenbank. Sämtliche Kommunikation in Richtung Datenbank wird über das Backend | + | Hierbei handelt es sich im Wesentlichen um einen Wrapper um die Datenbank. Sämtliche Kommunikation in Richtung Datenbank wird über die Middleware |
Zeile 14: | Zeile 14: | ||
==== Frontend-API ==== | ==== Frontend-API ==== | ||
- | Diese definiert die Kommunikation zwischen dem Frontend und dem Backend. | + | Diese definiert die Kommunikation zwischen dem Frontend und der Middleware. |
- | ==== Backend-API ==== | + | ==== Middleware-API ==== |
- | Das ist jetzt leicht: die Backend-API beschreibt die Kommunikation zwischen dem Messgerät (AVR Net-IO, Flukso, ...) und dem Backend. | + | Das ist jetzt leicht: die Middleware-API beschreibt die Kommunikation zwischen dem Messgerät (AVR Net-IO, Flukso, ...) und der Middleware. |
- | + | [[development/ | |
- | **[[reference]]** | + | |
===== Aufgaben der API ===== | ===== Aufgaben der API ===== | ||
- | * die komplette Kommunikation mit dem Backend | + | * die komplette Kommunikation mit der Middleware |
- | * 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 | + | * die Möglichkeit bieten Daten in Paketen an den Middleware-Server schicken, um die Netzwerkverbindung zu entlasten und dadurch Strom zu sparen oder Verbindungsprobleme zum Middleware-Server abfangen können |
* nicht nur Pulse übertragen können, sondern auch Messwerte anderer Sensoren (Temperatur, | * nicht nur Pulse übertragen können, sondern auch Messwerte anderer Sensoren (Temperatur, | ||
* eine eindeutige Versionierung beinhalten | * eine eindeutige Versionierung beinhalten | ||
Zeile 33: | Zeile 32: | ||
===== Umsetzung ===== | ===== Umsetzung ===== | ||
- | Das API baut auf dem HTTP Protokoll auf und orientiert sich an [http:// | + | Die gesamte Kommunikation mit der Middleware wird ausnahmslos über HTTP-Anfragen abgewickelt. |
- | Die Daten werden mit JSON codiert übertragen. | + | Beim Entwurf der API wurde auf folgende Punkte geachtet: |
- | **HTTP** | + | **HTTP-Protokoll** |
* wird nur selten in Netzwerken gefiltert | * wird nur selten in Netzwerken gefiltert | ||
* kann getunnelt oder durch Proxies benutzt werden | * kann getunnelt oder durch Proxies benutzt werden | ||
Zeile 42: | Zeile 41: | ||
* ist durch vorhande Bibliotheken gut nutzbar und weit verbreitet | * ist durch vorhande Bibliotheken gut nutzbar und weit verbreitet | ||
- | **REST** | + | **[[http:// |
- | * die Zustandslosigkeit ist gerade für schwache Controller von Vorteil. | + | * [[http:// |
- | * wird auch von Flukso genutzt | + | * [[http:// |
+ | * [[http:// | ||
+ | * [[http:// | ||
- | **JSON** | + | **JSON-Format** |
* von Menschen lesbar | * von Menschen lesbar | ||
* geringer Overload im Vergleich zu XML | * geringer Overload im Vergleich zu XML | ||
* performante Verarbeitung der Daten mit Javascript | * performante Verarbeitung der Daten mit Javascript | ||
- | ===== Zukunftsmusik | + | ===== Beispiel |
+ | |||
+ | ** (nachträgliches) Auslesen von Zählerständen zum 01. des laufenden Monats ** | ||
+ | |||
+ | (alles auf eine Zeile schreiben) | ||
+ | |||
+ | http:// | ||
+ | uuid[]=...& | ||
+ | uuid[]=...& | ||
+ | group=month& | ||
+ | options=raw& | ||
+ | to=first%20day%20of%20this%20month%20midnight | ||
+ | |||
+ | Man kann beliebig viele `uuid[]=...` (also auch nur einen einzigen) Abschnitte angeben und erhält ein CSV zurück, in dem die Zählerstände zum 01. des Monats Mitternacht enthalten sind. | ||
- | * 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, | ||
- | * Google Power Meter like Workflow zum installieren neuer Zähler |
development/api/start.1282142204.txt.gz · Zuletzt geändert: 2011/05/29 13:09 (Externe Bearbeitung)