Logika a diagnostika
Funkcie skriptu TapHome pre neznáme hodnoty a diagnostiku zariadení: ISNULL, ISNAN, EQUALS, SLEEP, ADDERROR, ADDWARNING, ADDINFO a DEBOUNCE.
Tieto funkcie testujú hodnoty na Null a NaN, porovnávajú desatinné čísla s toleranciou, pozastavia skript zariadenia a hlásia správy pri zariadení. NaN je neznáme číslo, Null je chýbajúca hodnota — pozrite Dátové typy. Minimálnu verziu Core pre každú funkciu uvádza stránka Požiadavky skriptov na verziu.
ISNULL
ISNULL vráti TRUE, keď je hodnota Null, teda chýbajúca hodnota — napríklad LastState pri prvom spustení smart rule Vzorec alebo PARSEJSON s ignorovaním chýb, keď sa cesta nenájde.
| |
Návratová hodnota — bool. Prijme hodnotu ľubovoľného typu. NaN je číslo, nie chýbajúca hodnota, preto ISNULL(NaN) je FALSE.
Príklad
IF(ISNULL(LastState), 0, LastState);
# Result: 0 on the first run of a Formula smart rule, then the previous resultPozrite aj — ISNAN, Skripty v smart rules.
ISNAN
ISNAN vráti TRUE, keď je číslo NaN, teda neznáma hodnota — napríklad hodnota zariadenia, ktoré je v chybe alebo ešte nebolo prečítané.
| |
Návratová hodnota — bool.
Poznámky — NaN sa nikdy nerovná ničomu. Porovnanie s literálom NaN, napríklad x = NaN, sa odmietne už pri uložení skriptu. Argument musí byť číslo: ISNAN(Null) zastaví skript chybou pri vykonávaní, preto keď môže hodnota aj chýbať, otestujte najprv ISNULL.
Príklad — zápis 0, keď je zariadenie v chybe alebo vráti NaN
Výraz IF(ISNAN(x), 0, x) odovzdá číslo, aj keď je zdrojové zariadenie v chybe:
IF(ISNAN(x), 0, x);
# Result: 0 while the device is in error or returns NaN, otherwise xKeď môže byť hodnota aj Null, skontrolujte to najprv — OR nevyhodnocuje pravú stranu, keď je ľavá strana už TRUE:
IF(ISNULL(value) OR ISNAN(value), 0, value);Chyby — Comparison with NaN is always false. Use the IsNaN method to check for NaN value. (pri uložení skriptu).
EQUALS
EQUALS vráti TRUE, keď sa dve čísla líšia najviac o toleranciu (epsilon, predvolene 0.005); pri desatinných hodnotách, napríklad teplotách, ho používajte namiesto =.
| |
Parametre
| Názov | Typ | Popis |
|---|---|---|
number1, number2 | číslo | Porovnávané hodnoty. |
epsilon | číslo, voliteľný | Najväčší rozdiel, ktorý sa ešte považuje za zhodu. Predvolene 0.005. |
Návratová hodnota — bool. Dve hodnoty NaN sa považujú za rovnaké, preto EQUALS(NaN, NaN) je TRUE. Argument Null je chyba pri vykonávaní.
Príklad
EQUALS(21.499, 21.5);
# Result: TRUE
EQUALS(21.4, 21.5, 0.01);
# Result: FALSE
EQUALS(NaN, NaN);
# Result: TRUESLEEP
SLEEP pozastaví skript Modbusu alebo Packet parsera na zadaný počet milisekúnd (0 – 10 000) a vráti toto číslo.
| |
Poznámky — Kým skript čaká, modul nedopytuje svoje zariadenia, preto držte pauzu krátku — typicky len medzeru, ktorú zariadenie potrebuje medzi dvoma zápismi.
Príklad
MODBUSW(H, 100, Uint16, 1);
SLEEP(200);
MODBUSW(H, 101, Uint16, 1);Chyby
- SLEEP function not allowed in this context. — skript patrí smart rule (Rovnica, Vzorec alebo Skript) alebo notifikácii; nedá sa uložiť.
- Interval ‘X’ is out of range (0-10000) — pri vykonávaní.
Dostupnosť — skripty Modbusu a Packet parsera.
ADDERROR, ADDWARNING, ADDINFO
ADDERROR, ADDWARNING a ADDINFO zobrazia pri zariadení v aplikácii TapHome chybu, upozornenie alebo informačnú správu a vrátia TRUE.
| |
Parametre
| Názov | Typ | Popis |
|---|---|---|
code | celé číslo, voliteľný | Identifikuje správu. Správy s rôznymi kódmi sa zobrazia vedľa seba; nová správa s rovnakým kódom alebo druhá správa bez kódu nahradí predchádzajúcu. |
text | reťazec | Správa zobrazená v aplikácii. |
Poznámky — Správy sa vyhodnocujú pri každom behu: správa zmizne hneď, ako ju niektorý beh skriptu už nevyvolá.
Príklad
VAR alarm := MODBUSR(H, 599, Uint16);
IF(alarm > 0, ADDERROR("There are " + alarm + " active alarms"));
IF(GETBIT(MODBUSR(H, 600, Uint16), 0) = 1, ADDERROR(1, "Alarm 1 active"));
IF(GETBIT(MODBUSR(H, 600, Uint16), 1) = 1, ADDWARNING(2, "Filter change due"));Chyby — ADDERROR function not supported here. (alebo ADDWARNING, ADDINFO) v každom skripte, ktorý nie je uvedený v časti Dostupnosť.
Dostupnosť — skripty na čítanie modulov a zariadení Modbus; skripty na čítanie a zápis a listener skripty Packet parsera. Nie v skriptoch na zápis a v inicializačných skriptoch Modbusu, v servisných atribútoch a servisných akciách oboch integrácií, v smart rules ani v notifikáciách.
Pozrite aj — Modbus funkcie, Funkcie Packet parsera.
DEBOUNCE
DEBOUNCE počas zadaného počtu milisekúnd ignoruje hodnoty jednej hodnoty zariadenia prečítané zo zariadenia a po uplynutí tohto času hodnotu skontroluje znova; zápisy do zariadenia nie sú ovplyvnené.
| |
Parametre
| Názov | Typ | Popis |
|---|---|---|
deviceVariable | premenná zariadenia | Skratka hodnoty zariadenia, napríklad St. Výraz sa neprijíma. |
milliseconds | číslo | Dĺžka okna, 0 alebo viac. |
Návratová hodnota — zadaný interval. Pri hodnote zariadenia bez debounce filtra volanie nerobí nič.
Príklad
DEBOUNCE(St, 500);Chyby
- DEBOUNCE - Function is not available — skript nie je skript zariadenia uvedený v časti Dostupnosť.
- DEBOUNCE - invalid argument, must be a device variable
Dostupnosť — od Core 2026.1, build 36599 · skripty na čítanie a zápis zariadení Modbus, skripty na čítanie a zápis a listener skripty Packet parsera.