Geräte anbinden per HTTP-Request
Geräte, die von mediola nicht offiziell via Plugins angebunden werden können, können alternativ über HTTP-Requests aus dem CREATOR heraus angesprochen werden.
Voraussetzungen
- Das anzubindende Geräte muss eine gut dokumentierte API besitzen und Befehle und Status für die Geräte bereitstellen
- Sie brauchen Programmiererfahrung bzw. Erfahrung im Umgang mit APIs
- AIO CREATOR NEO-Version 2.8.5 oder höher (für Status-Request)
Aktion: Steuern per HTTP-Request
Zum Ansteuern können über Buttons HTTP-Requests abgesetzt werden. Sie können beim Zuweisen der Aktion zu einem Button im Drop-Down-Menü HTTP-Request senden wählen. Wurde die Aktion HTTP-Request für einen Button ausgewählt, kann in dem Einstellmenü eine URL eingegeben werden, die beim Drücken des Buttons ausgesendet wird. Neben GET können hier auch POST, PUT, DELETE Befehle gesetzt werden.
Status: HTTP-Request senden
Wird als Status für z. B. ein Textelement HTTP-Request senden gewählt, verhält sich dies zunächst wie die gleichnamige Aktion (siehe Aktion: HTTP-Request senden). Jedoch wird die Server-Antwort als Statuswert an das Element weitergegeben. Das Textelement z. B. gibt dies dann als Text aus. Ein HTTP-Request für einen Status kann mit folgenden Elementen realisiert werden:
Textelement, Button, Grafik, Slider/Rundslider und Analogmeter.
Bitte beachten Sie, dass der Status eines HTTP-Requests mit Grafiken/Statusbuttons bzw. Slidern/Analogmetern nur dargestellt werden kann, wenn der HTTP-Request dem Wertebereich der jeweiligen Statusgrafik bzw. dem Wertebereich des Sliders/Analogmeters entspricht. Der Wertebereich von Statusgrafiken kann mit Statusregeln angepasst werden, der Wertebereich von Slidern/Analogmetern über Erweiterte Optionen → Intervall.
Bei jeder Statusaktualisierung wird auch erneut der HTTP-Request an den Server geschickt. Bitte bedenken Sie dies, wenn Sie z. B. eine Web-API benutzen, die nur eine beschränkte Anzahl an Anfragen pro Stunde erlaubt.
Auswertung von JSON
Gibt der Server als Antwort ein JSON-Objekt zurück, wie es z. B. bei vielen Web APIs der Fall ist, kann dies speziell ausgewertet werden. Klicken Sie dazu im Dialog für Status zuweisen auf den Button Verarbeitung. Daraufhin öffnet sich ein neues Fenster. Wählen Sie hier als Format JSON aus.
In dem Eingabefeld für Pfad können Sie dann angegeben, welchen Teil des JSON-Objektes Sie als Status verwenden möchten. Dazu müssen Sie bereits wissen, wie eine typische Server-Antwort aussehen wird.
Beispiel 1: Teilergebnis
{
"wetter": {
"luftfeuchte": { "wert": 70 },
"temperatur": { "wert": 24.4, "einheit": "°C" }
}
}
Wenn die Server-Antwort wie oben aussieht, lässt sich der Temperatur-Wert herausfiltern, indem man als Pfad angibt:
wetter.temperatur.wert
Das Textelement gibt in dem Fall 24.4
aus.
Beispiel 2: Listen
{
"messungen": [
{ "name": "aktuell", "temp": 24 },
{ "name": "gestern", "temp": 21 },
{ "name": "vorgestern", "temp": 23 }
]
}
Möchten Sie auf ein bestimmtes Element innerhalb einer Liste zugreifen, dann funktioniert dies über eckige Klammern und dem Index (beginnend bei 0 für das erste Element):
messungen[1].temp
Ausgabewert ist in dem Fall 21
, da auf das 2. Element in der Liste zugegriffen wird.
Beispiel 3: Punkt im Namen
Der Punkt wird als Trennzeichen für die JSON-Struktur verwendet. Jedoch kann es sein, dass ein Name/Schlüssel ebenfalls einen Punkt beinhaltet. In diesem Fall können Anführungszeichen verwendet werden.
{
"v1": { "name": "Version 1" },
"v1.1": { "name": "Version 1.1" },
"v2": { "name": "Version 2" }
}
Um an das Objekt von „v1.1“ zu gelangen, müssen Sie als Pfad nun eintragen:
"v1.1".name
Dies wird als Wert Version 1.1
ausgeben.
Hinweis: Anzahl tatsächlich ausgeschickter Anfragen
Befinden sich mehrere Elemente auf einer Seite, die genau denselben Aufruf ausschicken (d. h. sowohl die URL, Methode, als auch ggf. Anfrageinhalt und Kopfzeilen sind alle identisch), dann wird dieser Aufruf nur ein einziges Mal ausgeschickt und nicht für jedes Element einzeln. Die Server-Antwort wird dann an alle Elemente weitergegeben.
Die Art der Auswertung kann sich dabei jedoch unterscheiden. Ist die Server-Antwort ein JSON-Objekt, können so verschiedene Elemente über die Pfad-Angabe verschiedene Werte für sich heraussuchen – ohne dass dadurch zusätzliche Server-Anfragen anfallen.