JSON Files verstehen und verarbeiten

warning Ich übernehme keine Verantwortung für Schäden, die durch die hier angebotenen Infos/Scripte entstehen! Sie wurden von mir nach besten Wissen und Gewissen erstellt, können jedoch Fehler enthalten. Alles geschieht auf eigene Gefahr!

Seit der Einführung des AirStudios 7.7 dient die params.htm nicht mehr als Anlaufstelle um Daten aus dem Lightmanager Air auszulesen (Wie ihr trotzdem die params.htm weiternutzen könnt, steht hier beschrieben). Gründe dafür sind z.B. die schlechte Lesbarkeit der params.htm und die vielen, neu hinzugekommen, Temperaturwerte der Oregon Scientific Thermometer.

Ab sofort werden sämtliche, auslesbaren Daten in sog. JSON Files (nähere Details zu JSON gibt es hier) zur Verfügung gestellt. Diese liegen im jeweiligen Theme Ordner (z.B. C:\Program Files (x86)\airStudio\Theme 1) und sind unter dem Lightmanager Air Webserver abrufbar. Aktuell gibt es die folgenden JSON-Files:

params.json  (http://lightmanger.ip/params.json)
auth enabled Web-Interface mit Authentifizierung? (0=Nein / 1=Ja)
time Aktuelle Uhrzeit
date Aktuelles Datum
weekday Aktueller Wochentag
is dst Sommerzeit? (0=Nein / 1=Ja)
marker state Markerzustände (0=Marker aus / 1=Marker an)
ssid SSID des verbundenen WLAN
led off Front LED dauerhaft deaktiviert? (0=Nein / 1=Ja)
last update Zeitpunkt des letzten Updates (UNIX Timestamp)
firmware ver Aktuell installierte Firmware Version
mac addr MAC Adresse des Lightmanagers
busy Busy? (0=Nein / 1=Ja) Wert ändert sich auf 1, wenn Szene/Einzelaktion aktiv
master ip IP Adresse des Master Lightmanager Air (Wird nur in der params.htm der Extender angezeigt). Extender senden Daten über Netzwerk an den Master LM Air
weather.json  (http://lightmanger.ip/weather.json)
os selected Angabe, ob ein Oregon Scientific Themometer für die Innen- bzw. Außentemperaturanzeige im Webinterface des Lightmanagers genutzt werden soll. Werte 0-10 (0 = nein / 1-10 entspricht dem angegeben Funkkanal des Oregon Scientific Thermometers, dessen Werte verwendet werden sollen). Hinweis: Damit alle 10 Kanäle genutzt werden können, braucht man das „größere“ Modell THGR810. Beim Modell THGR122NX können nur die Kanäle 1-3 genutzt werden. Zusätzlich nutzt das Modell THGR122NX bei Kanal 3 tatsächlich den Kanal 4.
  |→ inside  Angabe für Innen (0-10)
  |→ outside  Angabe für Außen (0-10)
internal Aktuelle Temperatur des Themometers im Lightmanager
  |→ temperature Temperatur in °C
channel1 Werte eines angeschlossenen Oregon Scientific Thermometers, welches auf Kanal 1 sendet.
  |→ temperature Temperatur in °C
  |→ humidity Luftfeuchtigkeit in %
channel2 Werte eines angeschlossenen Oregon Scientific Thermometers, welches auf Kanal 2 sendet.
  |→ temperature Temperatur in °C
  |→ humidity Luftfeuchtigkeit in %
channel10 Werte eines angeschlossenen Oregon Scientific Thermometers, welches auf Kanal 10 sendet.
  |→ temperature Temperatur in °C
  |→ humidity Luftfeuchtigkeit in %
owm Werte von openweathermap.org
  |→ temperature Temperatur in °C
  |→ humidity Luftfeuchtigkeit in %
  |→ wind Wind in m/s
  |→ rain Regen in mm
  |→ weather id Openweathermap ID
paramsrf.json  (http://lightmanger.ip/paramsrf.json)
last rf Zeigt den letzten Funkcode an, der vom Lightmanager bearbeitet wurde. rf steht für radio frequency.

Nun kennt ihr schon einmal die genauen Werte der JSON Files des Lightmanagers. Am folgenden PHP-Script zeige ich euch, wie einfach die Abfrage der Werte ist. Natürlich lassen sich JSON Files auch mit fast allen anderen Script- und Programmiersprachen abfragen.

Das Script generiert den folgenden Output (sofern ihr bei euch auch einen Oregon Scientific Sensor auf Kanal 2 laufen habt. Ansonsten einfach den Kanal channel2 anpassen). Die Werte werden dabei von zwei JSON Files (weather.json & params.json) zeitgleich gezogen.

Habt ihr die Werte in der Form vorliegen, so könnt ihr jede beliebige Weiterverarbeitung (Speicherung in eine Datenbank, Formatierung, etc.) durchführen. Im Gegensatz zur Abfrage der params.htm ist die Abfrage der JSON-Files deutlich Ressourcen schonender, da viele Overhead Information (HTTP Abfrage) entfallen.