Bei jeder Statusänderung von HECoS//Engine kann ein Tcl-Script aufgerufen werden. Die Scripte liegen unter /opt/hecos/tcl.
/opt/hecos/tcl/*.engine: Diese Skripte werden bei Statusänderungen der Engine aufgerufen.
/opt/hecos/tcl/*.agent: Diese Skripte werden bei Statusänderungen der Agents aufgerufen.
/opt/hecos/tcl/*.ui: Diese Skripte werden bei Statusänderungen der User Interfaces aufgerufen.
/opt/hecos/tcl/*.device: Diese Skripte werden bei Statusänderungen der Devices aufgerufen.
Folgende Kommandos stehen innherhalb der Skripte zur Verfügung:
Gibt den aktuellen Zeitstempel formatiert zurück
Beispiel:
% timestamp "2016-08-09 12:13:14.123"
Gibt eine Liste mit allen Devices
Syntax: devices
Beispiel:
% devices {"GA/1/ambient EG/5/ambient-links" "EG/5/ambient-rechts" "DG/1/temperatur DG/2/temperatur" "GA/2/lampe-kugeln" "GA/3/lampe-seite" "GA/3/lampe-eingang" "GA/2/lampe-sprudelstein" "GA/2/pumpe-sprudelstein" "GA/6/steckdose-links-1" "GA/6/steckdose-links-2" "GA/6/steckdose-links-3" "GA/6/steckdose-rechts-1" "GA/6/steckdose-rechts-2" "GA/6/steckdose-rechts-3"}
Abfragen von Parametern eines Devices
Syntax:
device <fid>/<rid>/<did> get type
device <fid>/<rid>/<did> get group
device <fid>/<rid>/<did> get fid
device <fid>/<rid>/<did> get rid
device <fid>/<rid>/<did> get did
device <fid>/<rid>/<did> get title
device <fid>/<rid>/<did> get description
device <fid>/<rid>/<did> get lastupdate
device <fid>/<rid>/<did> get channels
Beispiel:
% device "UG/3/fenster-links" get "fid" "UG" % device "UG/3/fenster-links" get "rid" "3" % device "UG/3/fenster-links" get "did" "fenster-links" % device "UG/3/fenster-links" get "channels" {"meta/rfaddress" "meta/device-type" "meta/room-id" "meta/firmware" "meta/test" "sensor/dst" "sensor/gateway" "sensor/panel" "sensor/link" "sensor/battery" "sensor/initialized" "sensor/error" "sensor/window"}
Abfragen und Setzen von Parametern eines Kanals eines Devices
Syntax:
channel <fid>/<rid>/<did>/<ctype>/<name> get name
channel <fid>/<rid>/<did>/<ctype>/<name> get unit
channel <fid>/<rid>/<did>/<ctype>/<name> get|set value
channel <fid>/<rid>/<did>/<ctype>/<name> get lastupdate
Beispiel:
% channel "UG/3/fenster-links/sensors/window" get "value" "OPEN" % channel "DG/1/temperatur/sensors/temperature" get "value" "26.1" % channel "DG/1/temperatur/sensors/temperature" get "unit" "°C" % channel "EG/5/lampe-vitrine2/actor/state" get "value" "OFF" % channel "EG/5/lampe-vitrine2/actor/state" set "value" "ON"