Skripte
Ein Skript führt eine Reihe von Eib-Kommandos mit einer definierten Verzögerung aus.Es wird gestartet durch die Anforderung /script/my-script-name.
Skripte befinden sich in /usr/local/etc/rleibd. Im Augenblick ist es möglich, den Pfad durch ../ zu erweitern aber das wird möglicherweise in Zukunft aus Sicherheitsgründen blockiert.
Wenn Sie Ihre Skripte woanders plaziert haben wollen müssen Sie das bei der Kompilierung angeben.
Das Script-Verzeichnis sollte nicht vom Benutzer, unter dem rleibd ausgeführt wird, schreibbar sein (aber natürlich lesbar!)
Ein Script wird als Pthread ausgeführt. Dadurch kann eine praktisch unbegrenzte Anzahl von Skripten parallel ausgeführt werden und ein einzelnes Skript kann beliebig lange laufen. Es besteht jedoch keine Möglichkeit, ein Skript abzubrechen. Bedenken Sie das bei Skripten mit langer Laufzeit. Die einzige Möglichkeit, ein Skript zu beenden, ist rleibd zu beenden.
Ein Skript besteht aus Zeilen des folgenden Aufbaus:
url delay #comment
Kommentare sind möglich durch das "#"-Zeichen. Jede Zeile, die mit einem "#" beginnt wird ebenfalls als Kommentar behandelt. Alles andere wird an den Portserver geschickt.
Der Skriptprozessor fordert die <url> an und wartet für <delay> Millisekunden.
Bei größeren Skripten sollten Sie die Übertragungszeit für jedes Telegramm bedenken um einen Sendepuffer-Überlauf oder extreme Buslast zu vermeiden. Da es normalerweise nicht nötig ist, Telegramme mit Maximalgeschwindigkeit zu versenden, sollte 200ms eine angemessene Verzögerung zwischen den Telegrammen sein. Das erlaubt fünf Schaltkommandos pro Sekunde.
Die Größe des Sendepuffers ist im Eib-Kerneldriver angegeben und liegt im Moment bei 20 Nachrichten.
![]() |
Denken Sie an den besonderen Wert "-1" für Signalisierungszwecke. /eib/grp/x.y.z?val=-1 invertiert den augenblicklichen Wert, d.h. wenn Ihr Licht aus ist wird es eingeschaltet und wenn es an ist wird es ausgeschaltet. Das ist sehr nützlich um z.B. bei bestimmten Ereignissen Lichter blinken zu lassen. (crond, atd!). |
Zukünftige Erweiterungen
- Möglichkeit, ein Skript durch bestimmte Telegramme zu stoppen
- Bedingungen (if group x.y.z = 0)
- Schleifen
- Parameter (z.B. MinimumDelayMilliseconds um die Verzögerung in jeder Zeile zu sparen)
- Sperren von .. und / aus Sicherheitsgründen

