TapHome

Pogreške skripti i rješavanje problema

Poruke o pogreškama skripti TapHome navedene doslovno — Division by zero, pogreške raščlambe, pogreške pri izvršavanju te pogreške konteksta i verzije — s uzrokom i rješenjem svake.

Skripta TapHome može zakazati na jedan od dva načina. Pogreška raščlambe otkriva se dok se čita tekst skripte: uređivač skripti je prikazuje i skripta se ne izvršava. Pogreška pri izvršavanju zaustavlja skriptu koja se već izvršava. Poruke u nastavku navedene su doslovno; X, A, B i N označavaju naziv, tip ili broj u poruci.

Kako se pogreške javljaju

Pogreška pri izvršavanju nosi redak skripte i poruku:

1
2
Line in script: 7
Message: Division by zero

Gdje prijelom retka nije prikazan, ista pogreška glasi Line in script: 7 Message: Division by zero. Skripta zaustavljena pogreškom pri izvršavanju ne daje vrijednost (Null); smart rule Formula tada pri sljedećem izvršavanju ima i LastState = Null.

Dijeljenje nulom

Line in script: 1 Message: Division by zero znači da je djelitelj pri izvršavanju skripte bio točno 0 — obično vrijednost uređaja, kao va2 u va1/va2. Dijelite samo kada je djelitelj veći od 0:

IF(va2 > 0, va1/va2, 0);
# Result: 0 when va2 is 0, otherwise va1 divided by va2

Funkcijski oblik IF izračunava samo odabranu granu, pa nikada ne dijeli s 0. Kada djelitelj može biti negativan, koristite va2 <> 0. Više recepata na stranici Primjeri.

Pogreške raščlambe

PorukaUzrok i rješenje
Unknown variable or constant 'X'Tipkarska pogreška, vrijednost uređaja koja nije dodana u skriptu ili riječ koju jezik nema: NOT 1 daje 'NOT' — negacija je !. Izvan bloka ; koji nedostaje u prethodnom retku može se pojaviti kao sljedeći naziv.
Unknown function 'X'Takva funkcija ne postoji. MODBUS, TOBYTEARRAY i BYTEARRAY ne postoje — koristite MODBUSR ili MODBUSW, TOBYTES i BYTECOLLECTION.
Wrong number of literals and operators in expressionOperator bez operanda, na primjer 1 == 1. Jednakost je =, nejednakost <>.
Unexpected character 'X' at the end of statement.Nedostaje ; prije sljedeće naredbe. Unutar bloka poruka završava s Expected ';', na primjer Unexpected character 'E' at the end of statement. Expected ';' prije END.
Unexpected character '.'Svojstvo čitano iz rezultata funkcije, kao AVG(1, 2).Type. Najprije spremite vrijednost u varijablu.
Unexpected character ';' in WHILE statement (ili DO); iza unutarnjeg END ili LOOP unutar petlje.
Unexpected keyword 'X' at the end of IF statement.; iza unutarnjeg END unutar bloka IF.
Comment must start on a new line and inline comments are not supported# prije ; naredbe ili iza uvjeta IF ili WHILE.
Comparison with NaN is always false. Use the IsNaN method to check for NaN value.x = NaN — koristite ISNAN(x).
Couldn't unescape XJedna obrnuta kosa crta u stringu; napišite "C:\\data".
Too many characters in char literalTekst u jednostrukim navodnicima, kao 'ab'; tekst treba dvostruke navodnike.
Variable name must start with letter, Only letters or numbers are allowed in variable nameNaziv kao 1x ili my_value.
Variable must have initial value providedVAR x; — zadajte vrijednost ili deklarirajte tip: int x;.

Pogreške pri izvršavanju

PorukaUzrok i rješenje
Division by zeroVidi Dijeljenje nulom.
Specified argument was out of the range of valid values.PARSETEXT je pronašao lijevi uzorak, ali ne i desni. Najprije provjerite funkcijom INDEXOF.
PARSEJSON - Element not found: 'X'JSONPath nije pronašao ništa. Kao treći argument predajte TRUE da biste umjesto toga dobili Null.
Operator 'X' not defined for 'A' and 'B'Operacija nad nespojivim tipovima, na primjer aritmetika s Null. Najprije provjerite funkcijom ISNULL.
Cannot cast 'A' to 'B'Vrijednost tipa koji se ne može pretvoriti, na primjer tekst gdje je potreban broj.
Can not directly set value to device variableDodjela vrijednosti uređaja izvan smart rule Skripta.
More than 1 000 000 loops, stopping loopPetlja WHILE ili DO koja ne završava.
Cannot use BREAK() outside of WHILE or DO-WHILEBREAK izvan petlje; isto vrijedi za CONTINUE.
Interval 'X' is out of range (0-10000)SLEEP s negativnim intervalom ili duljim od 10 000 ms.
Maximum array length is 2048BYTECOLLECTION iz heksadecimalnog teksta duljeg od 2048 bajtova.
Invalid array length. Must be greater than 0 and less than or equal 2048BYTECOLLECTION s brojem bajtova 0 ili većim od 2048.
UINT16COLLECTION: count must be between 1 and 2048UINT16COLLECTION ili BOOLCOLLECTION (s vlastitim nazivom u poruci) s brojem izvan 1 – 2048.
GETBIT - bit must be between 0 and 15Bit ili bajt izvan tipa vrijednosti, ovdje 16-bitne vrijednosti.
GETBIT - value X is out of the 32-bit range (-2147483648 .. 4294967295)Decimalna vrijednost koja nije 32-bitni cijeli broj.
Return value 'X' does not match required return type constraint: 'T'Skripta za čitanje uređaja vratila je tip koji vrijednost uređaja ne može sadržavati.
Response is too long (Nbytes). Maximum supported length is 128KBHTTP odgovor veći od 128 kB.
Invalid register number: XRegistar Modbus izvan raspona 0 do 65535.
RegisterValueToWrites: Can't write double.NaN to modbus registerNaN upisan funkcijom MODBUSW.

Pogreške konteksta i verzije

PorukaUzrok i rješenje
X function not supported here.Funkcija ne radi u ovoj vrsti skripte, na primjer ADDERROR function not supported here. u smart rule.
SLEEP function not allowed in this context.SLEEP u smart rule Skripta ili u skripti obavijesti.
ModbusFunction - unknown modbus device to work withFunkcija Modbus izvan skripte Modbus.
PacketParserFunction - PacketParserContext is nullFunkcija Packet parsera izvan skripte Packet parsera.
DEBOUNCE - invalid argument, must be a device variablePrvi argument funkcije DEBOUNCE je izraz, a ne vrijednost uređaja.
DEBOUNCE - Function is not availableDEBOUNCE u skripti bez vrijednosti uređaja na koje se može primijeniti debounce.
X function not supported. Please update your core unit to be able to use this feature.Core je stariji od funkcije.
Data type 'X' not supported. Please update your core unit to be able to use this feature.Ključna riječ tipa novija od jedinice Core.
Modbus data type 'X' not supported. Please update your core unit to be able to use this feature.Int64, UInt64 ili Double na jedinici Core starijoj od 2026.1, build 40595.

Koji build treba pojedina funkcija, navedeno je na stranici Zahtjevi skripti za verziju.