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.
gesamtes Script markieren / kopieren
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):
gesamtes Script markieren / kopieren
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