openHAB arbeitet komplett eventbasiert. Rulefiles werden gat nicht abgearbeitet. Stattdessen werden Rules abgearbeitet, und zwar genau dann, wenn das Event eintritt, welches als Ruletrigger angegeben ist.
Wenn mehrere Rules einen identischen Trigger haben, werden alle Rules "gleichzeitig" ausgeführt. Dazu stehen 5 Threads zur Verfügung. Genau genommen werden also nur bis zu fünf Rules mit identischem Trigger zeitgleich ausgeführt. die übrigen Rules werden dann schnellstmöglich nachgeholt. Welche der Rules in einem solchen Fall zuerst ausgeführt werden, ist dem Zufall überlassen.
Daraus ergibt sich gleich eine wichtige Regel: Wenn irgend möglich, sollte es pro Event nur eine Rule geben, allenfalls wird man
ausnahmsweise einzelne Trigger mehrfach einsetzen, wenn sich das aufgrund des Programmcodes nicht ohne Codedoppelungen vermeiden lässt - z.B. System started).
Man wird aber sehr genau darauf achten, möglichst nicht die magische Grenze zu überschreiten.
Wie gesagt ist openHAB eventbasiert, das heißt, die Items werden genau dann aktualisiert, wenn ein entsprechendes Event auftritt. Das hat nichts mit den Rules zu tun, Rules greifen nur auf Zustände zu bzw. werden durch Events getriggert.
Variablen werden genau dann mit einem Wert beschrieben, wenn ein entsprechender Befehl in der Rule steht.
Eine globale Variable wird beim Einlesen der Datei initialisiert und einmalig mit dem angegebenen Wert beschrieben, danach gilt das gleiche wie für alle anderen Variablen, Veränderung nur dann, wenn per Befehl ausgelöst.
Code: Alles auswählen
var a = 0 // Initialisierung und Wertzuweisung
a = 5 // Wertzuweisung an die Variable a