development:api:start
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
API
Zur Zeit entwickeln wir zusammen mit den Machern von http://www.flukso.net ein gemeinsames API.
Das API besteht aus 2 Teilen:
- Kommunikation zwischen Controller und Backend (derzeit bei Flukso XMLRPC, soll auch bei Flukso auf JSON/REST umgestellt werden
http://github.com/icarus75/flukso/tree/develop/server/api/flukso/) - Kommunikation zwischen Frontend und Backend: läuft bei Flukso derzeit schon per JSON/REST (http://www.flukso.net/content/jsonrest-api-released)
Anforderungen
Das API sollte:
- die komplette Kommunikation mit dem Backend übernehmen (Logging, Auswertung & Verwaltung)
- je nach Möglichkeit Messwerte puffern und diese immer in Paketen an den Backend-Server schicken, um die Netzwerkverbindung zu entlasten und dadurch Strom zu sparen
- Verbindungsprobleme zum Backend-Server abfangen können
- nicht nur Pulse übertragen können, sondern auch Messwerte anderer Sensoren (Temperatur, Wind, Luftdruck etc.).
- eine eindeutige Version beinhalten
- jeden Kanal eindeutig referenzieren (UCID -
'u
'nique'c
'hannel'i
'd) - Fehlfunktionen der Sensoren/Controller übermitteln können
Umsetzung
Als Protokoll hat sich HTTP bereits durchgesetzt:
- 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
Für die Übertragung der Daten sehe ich folgende Möglichkeiten:
- als GET Parameter
- als POST Parameter
- mit JSON kodiert
- mit XML kodiert
- über eine [http://de.wikipedia.org/wiki/Representational_State_Transfer REST] API (http://www.gen-x-design.com/archives/create-a-rest-api-with-php/, wird auch von Flukso genutzt)
- unterschiedliche „Repräsentationen“ der Daten erlauben JSON und XML oder sogar HTML.
- die Zustandslosigkeit ist gerade für schwache Controller von Vorteil.
Bei genauerem Hinsehen sollten wir diese REST Grundsätze (siehe Wikipedia Artikel) für das ganze Backend nutzen. Dies halte ich auch für die beste Variante: Steffenvogel 14:15, 31. Mai 2010 (UTC)
Zukunftsmusik
- Direktzugriff auf den Controller für Echtzeitdarstellung & Steuerung des Controllers (Ethersex besitzt bereits einen HTTPD)
- Matthias von mysmartgrid hat das bereits für den Flukso Controller implementiert
- Erkennung und Übertragung der Sensortypen, Auflösungen etc..
development/api/start.1279870266.txt.gz · Zuletzt geändert: 2011/05/29 13:09 (Externe Bearbeitung)