<warunki> - lista porównań stanów do wartości.
Pojedynczy warunek zapisujemy w następujący sposób: <urządzenie>[:<kwalifikator>] <operator> ”<wartość>„
Za pomocą kwalifikatora : można odwoływać się do czasu trwania stanu: :time
<wartość> może być parametryzowana aktualną (w chwili wykonywania instrukcji) wartością istniejącego stanu.
Parametry definiujemy w następujący sposób: #param:<urządzenie>#<wartość>
Parametry mogą zawierać wyrażenia arytmetyczne (również parametryzowane).
Wyrażenia arytmetyczne definiujemy w następujący sposób: @eq:<wyrażenie>@. W wyrażeniu można stosować operatory: +, -, *, / oraz nawiasy: () np:
@eq:(#param:<urządzenie>#+#param:<urządzenie>#)/7@
IF unimodule.unimodule_1.zarowka.1:time > "119" AND unimodule.unimodule_1.zarowka.1 = "100" THEN unimodule.unimodule_1.zarowka.1 = "0";
IF unimodule.unimodule_1.zarowka.1 > "0" AND satel.satel_integra64.partition.2.zone.6.input.6.zones_violation = "0" AND satel.satel_integra64.partition.2.zone.6.input.6.zones_violation:time > "14" THEN unimodule.unimodule_1.zarowka.1 = "0";
Obsługiwane operatory to: =, >, <
Warunki można łączyć ze sobą przy pomocy operatorów logicznych: AND, OR, XOR, NOR, NAND, XNOR
W warunkach można używać jednoargumentowego operatora zaprzeczenia NOT
Warunki można grupować przy pomocy nawiasów.
Kolejność operacji: najwyższy priorytet mają warunki zawarte w nawiasach, następnie sprawdzane są warunki zaprzeczone operatorem NOT, a po nich pozostałe warunki.
<akcje> - lista zmian stanów do wykonania przez system gdy spełnione są <warunki>
Pojedynczą akcję zapisujemy w następujący sposób: <urządzenie> = ”<nowa_wartość>„
W sytuacji gdy po spełnieniu wymienionych warunków chcemy wykonać klika zmian stanów, wymieniamy kilka akcji po przecinku: <urządzenie> = ”<nowa_wartość_1>”, …, <urządzenie_n> = ”<nowa_wartosc_n>„
Nowe wartości stanów mogą być parametryzowane aktualną (w chwili wykonywania instrukcji) wartością istniejącego stanu. Parametry definiujemy w następujący sposób: #param:<urządzenie>#.
W każdej akcji można dodawać dowolną liczbę parametrów.
Możemy opóźniać wykonanie akcji o dowolną liczbę sekund lub milisekund stosując przed tą akcją jedno z poleceń: sleep.s=”<liczba_sekund>”, sleep.ms=”<liczba_milisekund>”.
Polecenie sleep.<x> oddzielamy od akcji przecinkiem, np: sleep.s=„5”, unimodule.demo3.10000001.c.5=„1”
Jeśli został naciśnięty przycisk 1 w unimodule „unimodul_1” to włącz output 5 w centralce „satel_integra64”
IF unimodule.unimodul_1.przycisk.1 = "1" THEN satel.satel_integra64.partition.2.output.5.outputs_state = "1";
Jeśli został naciśnięty przycisk 1 w unimodule „unimodul_1” to wyślij smsem na numer 48654987321 informacje o godzinie i o tym, czy jest aktualnie alarm w strefie 5
IF unimodule.unimodul_1.przycisk.1 = "1" THEN sms_sender.gsm_1.new_sms = "48654987321: godzina: #param:clock.time.hour#, stan alarmu dla strefy 5: #param:satel.satel_integra64.partition.2.zone.5.partitions_alarm#";
Jeśli żarówka 1 w unimodule „unimodul_1” jest zapalona na 90% od conajmniej godziny to ją zgaś
IF unimodule.unimodul_1.zarowka.1 = "90" and unimodule.unimodul_1.zarowka.1:time = "3600" THEN unimodule.unimodul_1.zarowka.1 ="0";
Jeśli w godzinach 22-8 naciśnięto przycisk 1 w unimodule „unimodul_1” lub przycisk 1 w unimodule unimodul_7 lub nastąpiło naruszenie 4 czujki, to włącz output 5 w centralce „satel_integra64” i wyślij smsa o treści „NAPAD” pod numer 48654987321
IF (unimodule.unimodul_1.przycisk.1 = "1" OR unimodule.unimodul_7.przycisk.1 = "1" OR satel.satel_integra64.partition.2.zone.5.input.4.zones_violation = "1") AND (clock.time.hour > "21" OR clock.time.hour < "8") THEN satel.satel_integra64.partition.2.output.5.outputs_state = "1", sms_sender.gsm_1.new_sms = "48654987321:NAPAD";
Złożona instrukcja z wykorzystaniem zmiennych systemowych (definiowanych przez użytkownika): Ustawianie zmiennej systemowej noc na 1 w godzinach 22-08 w tygodniu i w godzinach 00-11 w weekendy
IF SYSTEM.VARIABLES.noc = "0" AND ( ((clock.time.hour > "21" OR clock.time.hour < "8") AND clock.date.weekday > "0" AND clock.date.weekday < "6") OR ((clock.time.hour > "23" OR clock.time.hour < "11") AND (clock.date.weekday = "1" OR clock.date.weekday = "6")) ) THEN SYSTEM.VARIABLES.noc = "1";
Ustawianie zmiennej systemowej noc na 0 w godzinach 08-22 w tygodniu i w godzinach 11-00 w weekendy
IF SYSTEM.VARIABLES.noc = "1" AND ( (clock.time.hour > "7" AND clock.time.hour < "22" AND clock.date.weekday > "0" AND clock.date.weekday < "6") OR (clock.time.hour > "10" AND clock.time.hour < "24" AND (clock.date.weekday = "1" OR clock.date.weekday = "6")) ) THEN SYSTEM.VARIABLES.noc = "0";
Instrukcja wykorzystująca zmienną systemową ustawianą przez inną instrukcję: Jeśli jest noc to uzbrój alarm w strefach 1,2,3,4
IF SYSTEM.VARIABLES.noc = "1" THEN satel.satel_integra64.partition.2.zone.1.armed_partitions_really = "1", satel.satel_integra64.partition.2.zone.2.armed_partitions_really = "1", satel.satel_integra64.partition.2.zone.3.armed_partitions_really = "1", satel.satel_integra64.partition.2.zone.4.armed_partitions_really = "1";
Instrukcja zapalająca światła w korytarzu z opóźnieniem pół sekundy przed każdym kolejnym światłem:
IF unimodule.demo3.1000001A.e.1="1" THEN unimodule.demo3.1000001A.c.5="1", sleep.ms="500", unimodule.demo3.1000001B.c.5="1", sleep.ms="500", unimodule.demo3.1000001C.c.5="1", sleep.ms="500", unimodule.demo3.1000001D.c.5="1";