TapHome

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.

1
ISNULL(value)

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 result

Pozrite 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é.

1
ISNAN(number)

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 x

Keď 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).

Pozrite aj — ISNULL, EQUALS.

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 =.

1
2
EQUALS(number1, number2)
EQUALS(number1, number2, epsilon)

Parametre

NázovTypPopis
number1, number2čísloPorovná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: TRUE

SLEEP

SLEEP pozastaví skript Modbusu alebo Packet parsera na zadaný počet milisekúnd (0 – 10 000) a vráti toto číslo.

1
SLEEP(milliseconds)

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.

1
2
3
4
5
6
ADDERROR(text)
ADDERROR(code, text)
ADDWARNING(text)
ADDWARNING(code, text)
ADDINFO(text)
ADDINFO(code, text)

Parametre

NázovTypPopis
codecelé čí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.
textreťazecSprá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é.

1
DEBOUNCE(deviceVariable, milliseconds)

Parametre

NázovTypPopis
deviceVariablepremenná zariadeniaSkratka hodnoty zariadenia, napríklad St. Výraz sa neprijíma.
millisecondsčísloDĺž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.