Diese Website verwendet Cookies und ähnliche Technologien!

Falls Sie die damit nicht einverstanden sind, ändern Sie bitte die Einstellungen Ihres Browsers. Mehr erfahren

Ich bin damit einverstanden

 Wir nutzen Cookies um Ihnen das beste Surferlebnis auf unserer Website bieten zu können.

  • Falls Sie dies bestätigen und fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass sie einverstanden sind alle Cookies unserer Seite zu erhalten:
  • Falls Sie Ihre Einstellung ändern möchten, so finden Sie eine Anleitung dazu hier.

Mit dem HTTP-Binding lässt sich regelmäßig eine URL pollen oder eventbasiert ein HTTP Request stellen. Über eine Transformregel kann dann ein JSON-Tag direkt übernommen werden. In diesem Beispiel wird der Öffnungsstatus eines Hackerspaces über die Space-API in openhab eingebunden.

Space-API

In diesem Beispiel wollen wir den Öffnungsstatus des Netz39 e.V. aus der "Space-API" auslesen. Diese ist unter http://spaceapi.n39.eu/json zu erreichen und sieht z.B. so aus:
Hier möchte ich den "state"."open": true/false; auslesen.

{
  "api":"0.13",
  "space":"Netz39",
  "url":"http://www.netz39.de",  
  "logo":"http://www.netz39.de/wiki/_media/resources:public_relations:logo:netz39_logo_2013-07-11.png",

  "state": {
    "icon":{
      "open":"http://www.netz39.de/open.png",
      "closed":"http://www.netz39.de/closed.png"
    },
    "open":true,
    "lastchange": 1446671910
  },

  "location":{
    "address":"Leibnizstr. 32, 39104 Magdeburg, Germany",
    "lat": 52.119561,
    "lon": 11.629398
  },

  "contact":{
    "email":"Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!",
    "twitter":"@Netz39",
    "ml":"Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!",
    "irc":"irc://freenode/#netz39"
  }
}

Weitere Informationen zur Space-API

Do it!

Zuerst installieren wir das HTTP-Binding, falls noch nicht geschehen mit:

sudo apt-get install openhab-addon-binding-http

 

Ein String-Item wird erstellt und mit dem HTTP-Binding als Eingang verknüpft.
Der Syntax für das HTTP-Binding lautet dabei: {http="<[<url>:<refreshintervalinmilliseconds>:<transformationrule>]"}

Die entsprechende Zeile in einer *.items - Datei lautet nun z.B.

...
String SpaceStatus "Spacestatus" (Group) {http="<[http://spaceapi.n39.eu/json:60000:JS(GetSpaceState.js)]"}
...

Wobei die angegebene Transformationrule unter ${openhab_home}/configuration/transform entsprechende als "GetSpaceState.js" vorliegen muss.
Der Inhalt dieser "GetSpaceState.js" umfasst lediglich ein Zeile zum Auslesen des Werts.

JSON.parse(input).state.open;

Und das war's schon!

 

Ggf. noch prüfen ob du das neu erstellte Item noch in der Sitemap zur Anzeige bringen musst, falls nicht schon die ganze Gruppe angezeigt wird:

...
Text item=SpaceStatus
...

 

Schöner machen

Mithilfe von zwei PNG Grafiken lässt sich nun noch ein statusabhängiges Icon auf das Webinterface zaubern.

Dazu müssen die Icons deiner Wahl mit dem verknüpftem Zustand im Dateinamen abgespeichert werden:
Das Icon für den Zustand "true" z.B. unter n39open-true.png, bzw. unter n39open-false.png

 n39open-true.png  n39open-false.png

 

Lade deine persönlichen Icons zu den anderen Grafiken unter 

${openhab_home}/webapps/images/

 

und füge außerdem das Icon <n39open> der Item-Definition hinzu:

String SpaceStatus "Spacestatus" <n39open> (Group) {http="<[http://spaceapi.n39.eu/json:60000:JS(GetSpaceState.js)]"}

 

Weiter verwenden

Mit diesem Item kannst du natürlich alle möglichen Regeln erstellen. Du kannst zB. deine RGB - LED im Wohnzimmer blinken lassen, sobald sich der Spacestatus auf offen ändert. Oder schicke dir eine Mail sobald sich der Space-status ändert.

Meine Regel für meinen RGB-Strip werde ich bei Gelegenheit ich nachtragen...