Víceřádkový skriptovací jazyk se zvýrazněním syntaxe, použitelný v chytrých pravidlech Rovnice, Vzorec a Skript a také v rozhraních Modbus a Packet parser.

Základy
Přiřazení
|
|
Víceřádkový algoritmus
Každý řádek je oddělen středníkem.
|
|
Návratová hodnota
- Výsledek posledního řádku kódu.
- RETURN(expression) ukončí provádění algoritmu a vrátí obsah uvnitř závorek.
|
|
Dočasná proměnná
Existuje pouze během jednoho spuštění skriptu.
|
|
IF klauze
Excel styl
|
|
Víceřádkový styl
|
|
SWITCH
Testuje výraz vůči seznamu případů a vrací hodnotu prvního shodného případu, případně výchozí hodnotu, pokud žádný případ nevyhoví.
|
|
Příklad:
|
|

Smyčka
LOOP / WHILE … opakuje sled příkazů na základě zadané podmínky, dokud není podmínka splněna. CONTINUE … přeskočí provádění příkazů a pokračuje na další cyklus. BREAK … ukončí smyčku.
Příklad s podmínkou na začátku:
|
|
Příklad s podmínkou na konci:
|
|
NaN (not a number) hodnota
NaN může být vrácena jako hodnota v případě, že skutečná hodnota není známa.
|
|
Funkce ISNAN(expression) vrací TRUE, pokud výraz není číslo.
ISNULL
Vrací true, pokud je parametr NULL, jinak false. Používá se pro typy String a Bytearray. Příklad: pokud XML prvek nebyl nalezen, vrácená hodnota je NULL a výraz ISNULL je true.
Syntaxe funkce:
|
|
Sleep
Pozastaví skript na uvedený počet milisekund. Používejte jen ve velmi specifických případech.
|
|
Komentáře
Nový řádek začínající znakem #.
|
|
Číselné literály
Hexadecimální čísla
Výrazy mohou také používat hexadecimální čísla. Je vyžadován prefix 0x a zbytek není citlivý na velikost písmen.
0x0A = 10
|
|
Binární čísla
0b1010 = 10
|
|
Matematické výrazy
+, -, *, /
|
|
Logické výrazy
AND, OR, !, =, !=, >, <
|
|
Funkce
LINEAR
Vrací lineárně upravenou hodnotu – lineární interpolaci.
|
|
Parametry
- input… vstupní hodnota
- value1_input… hodnota na vstupu na dolní hranici
- value1_output… hodnota na výstupu na dolní hranici
- value2_input… hodnota na vstupu na horní hranici
- value2_output… hodnota na výstupu na horní hranici
- [type]… volitelný parametr. Definuje, jaký má být výsledek, když je vstupní hodnota mimo rozsah value1_input ↔︎ value2_input:
- bez parametru (stejné jako s parametrem BOUNDS)… Pokud je vstupní hodnota mimo definovaný rozsah, výstupní hodnota bude jedna z krajních hodnot (minimum nebo maximum)
- INFINITE… Pokud je vstupní hodnota mimo definovaný rozsah, výsledek je extrapolovaná hodnota
- STRICT… Pokud je vstupní hodnota mimo definovaný rozsah, výstupní hodnota bude NaN (not a number)
Příklady
|
|
Příklady pro různé hodnoty [type]:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
Výsledek pro různé parametry [type]:
- BOUNDS (výchozí hodnota) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERESIS
Hysteresi lze použít k filtrování signálů tak, aby výstup reagoval pomaleji, než by jinak reagoval, a zohledňoval přitom historii systému. Například termostat řídící topení může zapnout topení, když teplota klesne pod A, ale nevypne ho, dokud teplota nestoupne nad B.
Vrací 0 nebo 1.
|
|
Příklad: udržovat teplotu 20 °C v rozsahu hystereze 2 °C. Zapnout topení, když teplota klesne pod 18 °C a vypnout, když překročí 22 °C.
|
|
Matematické funkce
MIN
Funkce MIN vrací nejmenší hodnotu ze zadaných číselných hodnot. Přijímá mezi 1 a 100 argumenty nebo jednu kolekci. Hodnoty NaN a NULL jsou ignorovány.
|
|
Příklady:
|
|
MINSTRICT
Funkce MINSTRICT vrací minimum z poskytnutých číselných hodnot. Přijímá mezi 1 a 100 argumenty či jednu kolekci. Pokud je jakákoli hodnota NaN nebo NULL, funkce vrátí NaN/NULL.
|
|
Příklady:
|
|
MAX
Funkce MAX vrací maximum z poskytnutých číselných hodnot. Přijímá mezi 1 a 100 argumenty nebo jednu kolekci. Hodnoty NaN a NULL jsou ignorovány.
|
|
Příklady:
|
|
MAXSTRICT
Funkce MAXSTRICT vrací maximum z poskytnutých číselných hodnot. Přijímá mezi 1 a 100 argumenty či jednu kolekci. Pokud je jakákoli hodnota NaN nebo NULL, funkce vrátí NaN/NULL.
|
|
Příklady:
|
|
AVG
Funkce AVG vypočítá průměr (mean) poskytnutých číselných hodnot. Přijímá mezi 1 a 100 argumenty nebo jednu kolekci. Hodnoty NaN jsou ignorovány.
|
|
Příklady:
|
|
AVGSTRICT
Funkce AVGSTRICT vypočítá průměr (mean) poskytnutých číselných hodnot. Přijímá mezi 1 a 100 argumenty nebo jednu kolekci. Pokud je jakákoli hodnota není číslo, funkce vrátí NaN.
|
|
Příklady:
|
|
ROUND
|
|
Vrátí zaokrouhlenou hodnotu.
|
|
ABS
Funkce ABS vrací absolutní hodnotu (tj. modul) libovolného zadaného čísla.
|
|
Příklady:
|
|
DEWPOINT
|
|
Vrací teplotu rosného bodu vzhledem k aktuální teplotě a relativní vlhkosti. Rosný bod je počítán podle této rovnice.
|
|
POWER
Funkce POWER vypočítá dané číslo na zadanou mocninu.
|
|
Příklady:
- POWER(2,3) … 2^3 = 8
- POWER(10, -3) … 0,001
- POWER(25, 0) … 1
MOD
Funkce MOD vrací zbytek po dělení dvou zadaných čísel.
|
|
Argumenty:
- number - číslo, které má být děleno.
- divisor - hodnota, kterou se číslo dělí.
Příklady:
- MOD(6, 4) … 2
- MOD(6, 2.5) … 1
CEIL
Funkce CEIL zaokrouhluje zadané číslo od nuly na nejbližší násobek daného čísla.
|
|
Argumenty:
- number - číslo, které má být zaokrouhleno.
- significance (optional) - násobek významnosti, na který má být zadané číslo zaokrouhleno. Pokud významnost není uvedena, je rovna 1 (obecně by měla mít stejné aritmetické znaménko – kladné nebo záporné – jako vstupní číslo).
Příklady:
- CEIL(22.25,0.1) … 22.3
- CEIL(22.25,1) … 23
- CEIL(22.25) … 23
- CEIL(-22.25,-1) … -23
- CEIL(-22.25,1) … -22
- CEIL(-22.25) … -22
- CEIL(-22.25,-5) … -25
FLOOR
Funkce FLOOR zaokrouhluje zadané číslo směrem k nule na nejbližší násobek dané významnosti.
|
|
Argumenty:
- number - číslo, které má být zaokrouhleno.
- significance (optional) - násobek významnosti, na který má být číslo zaokrouhleno. Pokud významnost není uvedena, je rovna 1 (obecně by měla mít stejné aritmetické znaménko jako vstup).
Příklady:
- FLOOR(22.25,0.1)… 22.2
- FLOOR(22.25,1) … 22
- FLOOR(22.25) … 22
- FLOOR(-22.25,-1) … -22
- FLOOR(-22.25,1) … -23
- FLOOR(-22.25) … -23
- FLOOR(-22.25,-5) … -20
RAND
Funkce RAND generuje náhodné reálné číslo mezi 0 a 1.
|
|
Příklady:
- RAND()
RANDINT
Funkce RANDINT generuje náhodné celé číslo mezi dvěma zadanými celými čísly.
|
|
Příklady:
- RANDINT(1,5)
- RANDINT(-2,2)
SIGN
Funkce SIGN vrací aritmetické znaménko (+1, -1 nebo 0) zadaného čísla. Tj. pokud je číslo kladné, funkce vrací +1, pokud záporné, vrací -1 a pokud je nula, vrací 0.
|
|
Příklady:
- SIGN(100) … 1
- SIGN(0) … 0
- SIGN(-100) … -1
SQRT
Funkce SQRT vypočítá kladnou druhou odmocninu zadaného čísla.
|
|
Příklady:
- SQRT(25) … 5
LOG
Funkce LOG vypočítá logaritmus zadaného čísla o zvoleném základu.
|
|
Argumenty:
- number - kladné reálné číslo, jehož logaritmus chceme vypočítat.
- base (optional) - volitelný argument určující základ, ke kterému má být logaritmus vypočítán. Pokud argument není uveden, používá se výchozí hodnota 10.
Příklady:
- LOG(4,0.5) … -2
- LOG(100) … 2
LN
Funkce LN vypočítá přirozený logaritmus zadaného čísla.
|
|
kde number je kladné reálné číslo, jehož přirozený logaritmus chceme vypočítat.
Příklady:
- LN(100) … 4,60517
Bitové operace
GETBIT
Vrací hodnotu bitu na zadané pozici.
|
|
Argumenty:
- number - číslo, ze kterého má být hodnota konkrétního bitu vyextrahována
- bit_position - pozice bitu, počítaná od 0 z pravé strany
Příklady:
- GETBIT(2, 0) → první bit čísla 2 (0b0010) je 0
- GETBIT(4,2) → třetí bit čísla 4 (0b0100) je 1
GETBITS
Vrací hodnotu zadaného počtu bitů na konkrétní pozici.
|
|
Příklady:
- GETBITS(216, 3, 2) → číslo 216 = 0b1101 1000; čtvrtý bit z pravé strany je 1, pátý bit je 1, takže výsledek je 0b0011 = 3
- GETBITS(0xFF, 0, 4) → číslo 0xFF = 255 = 0b1111 1111; prvních 4 bitů z pravé strany je 0b1111 = 0xF = 15
GETBYTE
Vrací hodnotu bajtu na zadané pozici v daném čísle.
|
|
Argumenty:
- number - číslo, ze kterého má být hodnota konkrétního bajtu vyextrahována
- byte_position - pozice bajtu, počítaná od 0 z pravé strany
Příklady:
|
|
SETBYTE
Přiřadí novou hodnotu do zadaného bajtu v uvedeném čísle a vrátí nové číslo.
|
|
Příklady:
|
|
SETBIT
Přiřadí novou hodnotu k zadanému bitu v daném čísle a vrátí nové číslo.
|
|
Argumenty:
- number - číslo, které má být upraveno
- bit_position - pozice bitu, počítaná od 0 z pravé strany
- new_value - 0 nebo 1 – hodnota, která bude nastavena na určený bit
Příklady:
- SETBIT(1, 1, 1) → 3
- SETBIT(3, 1, 1) → 3
- SETBIT(4, 2, 0) → 4
- SETBIT(12, 1, 0) → 14
SETBITS
Přiřadí novou hodnotu vybraným bitům v uvedeném čísle a vrátí nové číslo.
|
|
Příklady:
- SETBITS(192, 4, 2, 3) → 240
- SETBITS(192, 5, 2, 3) → 224
« (LEVÉ POSUNUTÍ BITŮ)
|
|
Excel: BITLSHIFT(number, shift_amount)
» (PRAVÉ POSUNUTÍ BITŮ)
|
|
Excel: BITRSHIFT(number, shift_amount)
& (BITWISE AND)
|
|
Excel: BITAND(number1, number2)
| (BITWISE OR)
|
|
Excel: BITOR(number1, number2)
Podívejte se na příklad operací s bity v Google Sheets: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing
Nebo vyzkoušejte interaktivní nástroj na http://bitwisecmd.com/
Text, řetězce a pole bajtů
LENGTH
Vrací délku objektu nebo počet bajtů. Objektem může být číslo, boolean, řetězec nebo kolekce.
|
|
Příklady:
|
|
BYTECOLLECTION
Vytvoří Collection
|
|
Příklady:
|
|
INDEXOF
Vrací index určeného prvku v řetězci nebo v kolekci. Vrací -1, pokud prvek nelze nalézt.
|
|
Příklady:
|
|
COPY
Vrátí kopii zadaného řetězce nebo kolekce (nebo jejich části).
|
|
Příklady:
|
|
REPLACE
Vrací nový řetězec nebo kolekci, ve které jsou všechny výskyty zadané hodnoty nahrazeny novou hodnotou.
|
|
Příklady:
|
|
SPLIT
Rozdělí řetězec na podřetězce na základě oddělovačů.
|
|
Příklady:
|
|
COMPARE
Porovnává 2 řetězce a vrací celé číslo, které naznačuje jejich relativní pozici v pořadí třídění.
|
|
Příklady:
|
|
APPEND
Přidá hodnotu k řetězci nebo kolekci a vrátí nový objekt s přidanou hodnotou.
|
|
Příklady:
|
|
INSERT
Vloží hodnotu do kolekce nebo řetězce. Vrací kolekci nebo řetězec se vloženou hodnotou.
|
|
Příklady:
|
|
REMOVEAT
Odebere prvky z kolekce nebo řetězce na základě indexu prvku a délky. Vrací kolekci nebo řetězec bez zadaných prvků.
|
|
Příklady:
|
|
GETAT
Získá hodnotu prvku z kolekce nebo řetězce na základě zadaného indexu.
|
|
Příklady:
|
|
SETAT
Nastaví hodnotu prvku v kolekci nebo řetězci na uvedený index.
|
|
Příklady:
|
|
ENCODE
Kóduje zadaný řetězec do vybraného formátu a vrací nový řetězec.
|
|
Podporované formáty:
- XML
- Base64
Příklady:
|
|
DECODE
Dekóduje zadaný řetězec zvoleným formátem a vrací nový řetězec.
|
|
Podporované formáty:
- XML
- Base64
Příklady:
|
|
EQUALS
Porovnává dvě čísla s plovoucí desetinnou čárkou. Čísla jsou považována za rovná, pokud | n1 - n2 | < epsilon. Výchozí hodnota prahu (*epsilon) je 0.005 a je volitelným argumentem.
|
|
Příklady:
|
|
Třídění
Existuje několik variant ORDER:
Vzestupně – ORDER, ORDERSTRICT – ORDERINDEX, ORDERINDEXSTRICT
Sestupně – ORDERDESC, ORDERDESCSTRICT – ORDERINDEXDESC, ORDERINDEXDESCSTRICT
ORDER
Funkce ORDER třídí poskytnuté vstupní hodnoty vzestupně a vrací je v nové kolekci. Přijímá n hodnot (až 100 argumentů) nebo jednu kolekci. Hodnoty nemusí být numerické, musí však být porovnatelné (např. čísla, TIMESPAN, DATETIME, řetězce). Smíšené typy (např. čísla a řetězce) nejsou povoleny. Hodnoty NaN a NULL jsou ignorovány a ve vrácené kolekci se nevyskytují.
|
|
Příklady:
|
|
ORDERINDEX
Funkce ORDERINDEX třídí poskytnuté vstupní hodnoty vzestupně podobně jako ORDER. Namísto vrácení seřazených hodnot vrací kolekci indexů, které určují polohy původních hodnot v seřazeném pořadí. Přijímá n hodnot (až 100 argumentů) nebo jednu kolekci. Hodnoty nemusí být numerické, musí však být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou ignorovány a ve vrácené kolekci se nevyskytují.
|
|
Příklady:
|
|
ORDERSTRICT
Funkce ORDERSTRICT třídí poskytnuté vstupní hodnoty vzestupně a vrací je v nové kolekci. Přijímá n hodnot (až 100 argumentů) nebo jednu kolekci. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou zahrnuty a vždy se řadí na první místa výsledku.
|
|
Příklady:
|
|
ORDERINDEXSTRICT
Funkce ORDERINDEXSTRICT třídí poskytnuté vstupní hodnoty vzestupně, podobně jako ORDERSTRICT. Místo vrácení seřazených hodnot vrací kolekci indexů určujících polohy původních hodnot v seřazeném pořadí. Přijímá n hodnot (až 100 argumentů) nebo jednu kolekci. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou zahrnuty a vždy se řadí na první místa výsledku.
|
|
Příklady:
|
|
ORDERDESC
Funkce ORDERDESC třídí poskytnuté vstupní hodnoty sestupně a vrací je v nové kolekci. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou ignorovány a ve vrácené kolekci se nevyskytují.
|
|
Příklady:
|
|
ORDERINDEXDESC
Funkce ORDERINDEXDESC třídí poskytnuté vstupní hodnoty sestupně, podobně jako ORDERDESC. Místo vrácení seřazených hodnot vrací kolekci indexů určujících polohy původních hodnot v seřazeném pořadí. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou ignorovány a ve vrácené kolekci se nevyskytují.
|
|
Příklady:
|
|
ORDERDESCSTRICT
Funkce ORDERDESCSTRICT třídí poskytnuté vstupní hodnoty sestupně a vrací je v nové kolekci. Přijímá n hodnot (až 100 argumentů) nebo jednu kolekci. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou zahrnuty a vždy se řadí na první místa výsledku.
|
|
Příklady:
|
|
ORDERINDEXDESCSTRICT
Funkce ORDERINDEXDESCSTRICT třídí poskytnuté vstupní hodnoty sestupně, podobně jako ORDERDESCSTRICT. Místo vrácení seřazených hodnot vrací kolekci indexů určujících polohy původních hodnot v seřazeném pořadí. Hodnoty nemusí být numerické, ale musí být porovnatelné. Smíšené typy nejsou povoleny. Hodnoty NaN a NULL jsou zahrnuty a vždy se řadí na první místa výsledku.
|
|
Příklady:
|
|
Datum a čas
DATETIME
Vytvoří objekt DateTime. Vlastnost DateTime.Ticks je počet milisekund od 1.1.0001 00:00:00.000. DateTime má vlastnosti: TICKS, YEAR, MONTH, DAY, DAYOFWEEK, DAYOFYEAR, HOUR, MINUTE, SECOND, MILLISECOND, KIND, UTCDATETIME, LOCALDATETIME, UNIXTIME.
|
|
Příklady:
|
|
NOW
Vrací DateTime objekt nastavený na aktuální datum a čas v místním časovém pásmu.
|
|
Příklady:
|
|
TIMESPAN
Funkce TIMESPAN vytváří proměnnou, která reprezentuje délku času, udanou v dnech, hodinách, minutách, sekundách a milisekundách. TIMESPAN má vlastnosti pro přímý přístup ke každé složce časového intervalu: DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS. TIMESPAN má i vlastnosti pro přístup k celkovým hodnotám času v konkrétních jednotkách (včetně zlomkových hodnot): TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS.
|
|
Příklady:
|
|
LOCALTIMEZONE
Vrací lokální časové pásmo jako počet milisekund od UTC času.
|
|
Příklady:
|
|
DATETIMEADD
Přidá zadaný počet let, měsíců, dnů, hodin, minut, sekund a milisekund k existujícímu DateTime a vrátí nový DateTime.
|
|
Příklady:
|
|
Převody datových typů
TODOUBLE
Převede řetězec na číslo. V případě chyby vrátí NaN.
|
|
Příklady:
|
|
TOSTRING
Vrací řetězcovou reprezentaci zadané hodnoty nebo kolekce dle zvoleného kódování. Kódování je volitelné (ve výchozím nastavení se používá iso-8859-1).
|
|
Příklady:
|
|
|
|
TOBCD
Převede zadané číslo do formátu binárně kódovaných desítek (BCD). Schéma kódování je BCD-8421.
|
|
Příklady:
|
|
FROMBCD
Dekóduje zadané číslo, které je zakódováno ve formátu binárně kódovaných desítek (BCD). Schéma kódování je BCD-8421.
|
|
Příklady:
|
|
TOBYTEARRAY
Převede řetězec na bajtové pole dle zvoleného kódování. Kódování je volitelné (ve výchozím nastavení se používá iso-8859-1).
|
|
Příklady:
|
|
RGBTOHSV
Převede definici barvy v RGB a vrátí barvu ve formátu Hue / Saturation / Brightness.
|
|
Příklad:
|
|
HSVTORGB
Převede barvu definovanou pomocí Hue / Saturation / Brightness a vrátí barvu v RGB formátu.
|
|
Příklad:
|
|
Parsovací funkce
PARSETEXT
Vrací část vstupního textu na základě levého a pravého vyhledávacího vzoru.
|
|
Příklady:
|
|
PARSEJSON
Vrací hodnotu prvku z textu ve formátu JSON. Prvek je určen jsonPath.
|
|
Příklady:
S json =
|
|
|
|
PARSEXML
Vrací hodnotu prvku z XML řetězce. Prvek je určen xml path.
|
|
Příklady:
S XML =
|
|
|
|
Pokud XML obsahuje jmenné prostory, musíte u prvků uvádět kompletní názvy včetně jmenného prostoru, např. PARSEXML(xml, “//DIDL-Lite:container[dc:title=‘My Playlist’’]/DIDL-Lite:res”);
Packet parser
Pro více informací viz stránku o Packet parser
SENDHTTPREQUEST
SENDDATA
MQTTPUBLISH
FTPDOWNLOAD
FTPUPLOAD
COMPLETESERVICEATTRIBUTE
COMPLETESERVICEACTION
Modbus
Modbus