TapHome

Szkripthibák és hibaelhárítás

A TapHome szkript hibaüzenetei szó szerint idézve — Division by zero, elemzési hibák, futásidejű hibák, valamint környezeti és verzióhibák — mindegyik okával és javításával.

A TapHome szkript kétféleképpen hibázhat. Az elemzési hiba a szkript szövegének beolvasásakor derül ki: a szkriptszerkesztő megjeleníti, és a szkript nem fut le. A futásidejű hiba egy már futó szkriptet állít le. Az alábbi üzenetek szó szerint vannak idézve; az X, A, B és N az üzenetben szereplő nevet, típust vagy számot jelöli.

Hogyan jelződnek a hibák

A futásidejű hiba tartalmazza a szkript sorát és az üzenetet:

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

Ahol a sortörés nem látszik, ugyanez a hiba így olvasható: Line in script: 7 Message: Division by zero. A futásidejű hibával leállt szkript nem ad értéket (Null); a Képlet smart rule-nak ekkor a következő futáskor a LastState értéke is Null.

Nullával való osztás

A Line in script: 1 Message: Division by zero azt jelenti, hogy egy osztó pontosan 0 volt a szkript futásakor — jellemzően egy eszközérték, például a va2 a va1/va2 kifejezésben. Csak akkor ossz, ha az osztó nagyobb 0-nál:

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

Az IF függvényalakja csak a kiválasztott ágat értékeli ki, így soha nem oszt 0-val. Ha az osztó negatív is lehet, használd a va2 <> 0 feltételt. További receptek a Példák oldalon.

Elemzési hibák

ÜzenetOk és javítás
Unknown variable or constant 'X'Elírás, a szkripthez hozzá nem adott eszközérték, vagy olyan szó, amely a nyelvben nem létezik: a NOT 1 eredménye 'NOT' — a tagadás jele a !. Blokkon kívül az előző sorból hiányzó ; a következő névként is megjelenhet.
Unknown function 'X'Nincs ilyen függvény. A MODBUS, a TOBYTEARRAY és a BYTEARRAY nem létezik — használd a MODBUSR vagy MODBUSW, a TOBYTES és a BYTECOLLECTION függvényt.
Wrong number of literals and operators in expressionOperandus nélküli operátor, például 1 == 1. Az egyenlőség jele =, az egyenlőtlenségé <>.
Unexpected character 'X' at the end of statement.Hiányzik a ; a következő utasítás előtt. Blokkon belül az üzenet Expected ';' szöveggel végződik, például Unexpected character 'E' at the end of statement. Expected ';' az END előtt.
Unexpected character '.'Tulajdonság kiolvasása egy függvény eredményéből, például AVG(1, 2).Type. Előbb tárold az értéket egy változóban.
Unexpected character ';' in WHILE statement (vagy DO); egy cikluson belüli belső END vagy LOOP után.
Unexpected keyword 'X' at the end of IF statement.; egy IF blokkon belüli belső END után.
Comment must start on a new line and inline comments are not supported# egy utasítás ; jele előtt, vagy egy IF vagy WHILE feltétele után.
Comparison with NaN is always false. Use the IsNaN method to check for NaN value.x = NaN — használd az ISNAN(x) függvényt.
Couldn't unescape XEgyetlen fordított perjel egy szövegben; írd így: "C:\\data".
Too many characters in char literalSzöveg egyszeres idézőjelben, például 'ab'; a szöveghez dupla idézőjel kell.
Variable name must start with letter, Only letters or numbers are allowed in variable nameOlyan név, mint az 1x vagy a my_value.
Variable must have initial value providedVAR x; — adj meg értéket, vagy deklarálj típust: int x;.

Futásidejű hibák

ÜzenetOk és javítás
Division by zeroLásd: Nullával való osztás.
Specified argument was out of the range of valid values.A PARSETEXT megtalálta a bal oldali mintát, de a jobb oldalit nem. Előbb ellenőrizd az INDEXOF függvénnyel.
PARSEJSON - Element not found: 'X'A JSONPath semmire sem illeszkedett. Harmadik argumentumként add meg a TRUE értéket, hogy helyette Null értéket kapj.
Operator 'X' not defined for 'A' and 'B'Művelet nem kompatibilis típusokon, például számtani művelet Null értékkel. Előbb ellenőrizd az ISNULL függvénnyel.
Cannot cast 'A' to 'B'Nem átalakítható típusú érték, például szöveg ott, ahol szám kell.
Can not directly set value to device variableÉrtékadás eszközértéknek a Szkript smart rule-on kívül.
More than 1 000 000 loops, stopping loopVéget nem érő WHILE vagy DO ciklus.
Cannot use BREAK() outside of WHILE or DO-WHILEBREAK cikluson kívül; ugyanígy a CONTINUE.
Interval 'X' is out of range (0-10000)SLEEP negatív vagy 10 000 ms-nál hosszabb intervallummal.
Maximum array length is 2048BYTECOLLECTION 2048 bájtnál hosszabb hexadecimális szövegből.
Invalid array length. Must be greater than 0 and less than or equal 2048BYTECOLLECTION 0 vagy 2048-nál több bájttal.
UINT16COLLECTION: count must be between 1 and 2048UINT16COLLECTION, vagy a saját nevével a BOOLCOLLECTION, 1 – 2048 tartományon kívüli darabszámmal.
GETBIT - bit must be between 0 and 15Az érték típusán kívül eső bit vagy bájt, itt egy 16 bites értéknél.
GETBIT - value X is out of the 32-bit range (-2147483648 .. 4294967295)Olyan tizedes érték, amely nem 32 bites egész szám.
Return value 'X' does not match required return type constraint: 'T'Egy eszköz olvasó szkriptje olyan típust adott vissza, amelyet az eszközérték nem tud tárolni.
Response is too long (Nbytes). Maximum supported length is 128KB128 kB-nál nagyobb HTTP-válasz.
Invalid register number: X0 és 65535 közötti tartományon kívüli Modbus regiszter.
RegisterValueToWrites: Can't write double.NaN to modbus registerMODBUSW függvénnyel írt NaN.

Környezeti és verzióhibák

ÜzenetOk és javítás
X function not supported here.A függvény nem működik ebben a szkriptfajtában, például ADDERROR function not supported here. egy smart rule-ban.
SLEEP function not allowed in this context.SLEEP egy Szkript smart rule-ban vagy egy értesítés szkriptjében.
ModbusFunction - unknown modbus device to work withModbus függvény Modbus szkripten kívül.
PacketParserFunction - PacketParserContext is nullPacket parser függvény Packet parser szkripten kívül.
DEBOUNCE - invalid argument, must be a device variableA DEBOUNCE első argumentuma kifejezés, nem eszközérték.
DEBOUNCE - Function is not availableDEBOUNCE olyan szkriptben, amelyben nincs pergésmentesíthető eszközérték.
X function not supported. Please update your core unit to be able to use this feature.A Core régebbi, mint a függvény.
Data type 'X' not supported. Please update your core unit to be able to use this feature.A Core-nál újabb típuskulcsszó.
Modbus data type 'X' not supported. Please update your core unit to be able to use this feature.Int64, UInt64 vagy Double a 2026.1, build 40595-nél régebbi Core-on.

Azt, hogy melyik függvény melyik buildet igényli, a Verziókövetelmények oldal tartalmazza.