Anwendung

Anwendungsbeispiele für DB-Access

3414 Zeichen
Score aktualisiert
100%
Code: 640a200712394e19aefea2981d49bcea
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert

Nach Installation gibt es vier Seiten, die per http aufgerufen werden können. Es kommen keinerlei HTML-Header und ähnliches, so dass das Ergebnis in Bash- oder CMD-Scripten usw. direkt weiterverwurstet werden kann.

http://ip-der-ccu/addons/db/table.cgi

Liefert eine Liste aller Datenpunkte und Systemvariablen mit ID, Name, Datenpunkt und aktuellem Wert. Auf meiner gut gefüllten CCU dauert die Abfrage etwa 4 Sekunden. Die Felder sind mit Tabulatoren getrennt, das Ergebnis kann dann weiterbearbeitet und z. B. am Stück in MySQL eingelesen werden.

Es werden nur die Datenpunkte aufgelistet, die lesbare Werte haben. Handsender oder Tasterschnittstellen beispielsweise liefern keine Werte und sind daher in der Auflistung nicht vorhanden.

http://ip-der-ccu/addons/db/state.cgi

Liefert den Wert eines Objekts zurück und kann auch neue Werte setzen.

http://ip-der-ccu/addons/db/objects.cgi

Liefert eine Gesamtliste aller Datenpunkte zurück ohne aktuelle Werte zurück.

http://ip-der-ccu/addons/db/values.cgi

Liefert – wie table.cgi – eine Liste aller Datenpunkte zurück, die einen Wert zurückliefern. Anders als table.cgi gibt es hier nur die ID zur Identifikation, über die die Klarnamen aus objects.cgi verknüpft werden können. Außerdem wird hier der Timestamp der letzten Änderung mitgeliefert.

Zusätzlich gibt es eine Art UUID, die sich aus der ID des Datenpunktes und dem Timestamp der letzten Änderung zusammensetzt. Wenn die Tabelle mit LOAD DATA INFILE eingelesen wird und UUID als „Unique“ definiert wird, kann so problemlos eine Historie aller Werte der CCU angelegt werden, auch wenn sich hierfür vermutlich der CCU Historian besser eignet..

Die Abfrage der Timestamps erzeugt sporadisch „Internal Server Error“ auf der CCU. Bei der Weiterverarbeitung sollte also darauf getestet werden, ob die Daten korrekt übertragen wurden. Weitere Auswirkungen des Fehlers sind bisher nicht bekannt.

Beispiele

state.cgi?item=Anwesenheit
state.cgi?item=950

liefert „true“ oder „false“; Achtung: Groß– und Kleinschreibung beachten

state.cgi?item=Kombisensor&dp=TEMPERATURE

liefert aktuelle Temperatur; Achtung: Datenpunkte haben nur Großschreibung

state.cgi?item=Lichtaktor&dp=STATE&value=true

schaltet das Licht ein, wenn es aus war, und liefert „true“

state.cgi?item=Lichtaktor&dp=STATE&value=true&force=1

schaltet das Licht ein, auch wenn es schon eingeschaltet war, und liefert „true“

state.cgi?item=Lichtaktor&dp=STATE&value=1

schaltet ebenfalls das Licht ein, auch wenn es schon eingeschaltet war, weil „true“ was anderes ist als „1“, und liefert „true“

Beispiel für die Anwendung in einer cmd-Datei (Windows):

Das Beispiel benötigt wget, das bei Windows nachinstalliert werden muss. Die IP-Adresse der CCU muss entsprechend angepaßt werden.

set command=wget -q -O - "http://ip-der-ccu/addons/db/state.cgi?item=Anwesenheit"
for /f "usebackq tokens=*" %%f in (`%command%`) do set anwesenheit=%%f
if "%anwesenheit%"=="true" (
  echo Jemand ist anwesend.
) else (
  echo Keiner da.
)

Beispiel für die Anwendung in einem bash-Script (Linux):

cmd="http://ip-der-ccu/addons/db/state.cgi?item=Anwesenheit"
x=$(wget -q -O - $cmd)
if [ "$x" == "true" ] ; then 
  echo "Jemand ist anwesend."
else 
  echo "Keiner da."
fi

Navigation