jjacques68 Posté(e) le 3 mars 2018 Signaler Posté(e) le 3 mars 2018 Hello tout le monde ! J'ai une scène qui me met de temps en temps cette erreur : Citation [DEBUG] 13:01:31: �[1;31m2018-03-03 13:01:31.981047 [ fatal] Unknown exception: /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ character: 1 0:1 [�] line: [DEBUG] 13:01:31: � Je n'arrive absolument pas à savoir pourquoi. d'autant que cette scène fonctionne très bien ! Vous avez une idée ?
jojo Posté(e) le 3 mars 2018 Signaler Posté(e) le 3 mars 2018 il semble avoir vers la ligne 35 une erreur de code LUA. c'est probablement une ligne qu'il n'exécute pas souvent, suite à un IF
jjacques68 Posté(e) le 3 mars 2018 Auteur Signaler Posté(e) le 3 mars 2018 Le problème est que sur cette ligne, il y a l’accolade de fin de déclaration d’un tableau...Envoyé de mon iPhone en utilisant Tapatalk Pro
jjacques68 Posté(e) le 3 mars 2018 Auteur Signaler Posté(e) le 3 mars 2018 Plus simple voilà la scène : son rôle est en commentaire au début. La ligne 35 correspond donc à l"accolade de fin de ma variable tableau ??????????? --[[ %% properties 378 value 322 value 505 value 298 value 391 value 428 value 443 value %% events %% globals --]] --[[ 13/01/2018 : Version 1 d'origine Allume les eclairage en fonction de la détection de présence - Je ne fais pas d'association directe entre les modules - La marche forcée se gère grâce au VD Mode Eclairage 383 - Ne tient pas compte du capteur Philio PSP05 car trop différent (donc scène a part = 210, 230) - Doit faire la différence entre les type d'actionneur (FGS ou IPX) --]] local Device = { --ID_PIR = {ID_actionneur, VG_Mode éclairage} [378] = {ID = 374, VG = "ModeEclDebarras"}, [322] = {ID = 318, VG = "ModeEclWc"}, [505] = {ID = 311, VG = "ModeEclSdB"}, [298] = {ID = 296, VG = "ModeEclEscalier"}, [391] = {ID = 405, VG = "ModeEclChaufferie"}, [428] = {ID = 454, VG = "ModeEclDebCave"}, [443] = {ID = 441, VG = "ModeEclBuanderie"}, } local Trigger = fibaro:getSourceTrigger() --si mode manu (VD 383) on sort. if tonumber(fibaro:getGlobalValue(Device[Trigger.deviceID].VG)) == 0 then fibaro:abort() end --si PIR = ON if tonumber(fibaro:getValue(Trigger.deviceID, "value")) == 1 then print("PIR", Trigger.deviceID, " = ON") --actionneur = FGS if fibaro:getType(Device[Trigger.deviceID].ID) == "com.fibaro.binarySwitch" or fibaro:getType(Device[Trigger.deviceID].ID) == "com.fibaro.FGD212" then fibaro:call(Device[Trigger.deviceID].ID, "turnOn") --tempo while tonumber(fibaro:getValue(Trigger.deviceID, "value")) == 1 do end fibaro:call(Device[Trigger.deviceID].ID, "turnOff") print("PIR", Trigger.deviceID, " = OFF") --actionneur = IPX elseif fibaro:getType(Device[Trigger.deviceID].ID) == "virtual_device" then fibaro:call(Device[Trigger.deviceID].ID, "pressButton", 1) --tempo while tonumber(fibaro:getValue(Trigger.deviceID, "value")) == 1 do end fibaro:call(Device[Trigger.deviceID].ID, "pressButton", 2) print("PIR", Trigger.deviceID, " = OFF") --si pas le bon actionneur else print("Type Device = "..fibaro:getType(Device[Trigger.deviceID].ID)) end end
jojo Posté(e) le 3 mars 2018 Signaler Posté(e) le 3 mars 2018 pour expliquer pourquoi ça fonctionne parfois, et parfois pas, j'aurais espéré que ce soit un bout de code lié à un IF. Mais comme ici c'est dans un tableau qu'il parcourt à chaque fois, je n'ai pas d'autres idées.
henri-allauch Posté(e) le 3 mars 2018 Signaler Posté(e) le 3 mars 2018 (modifié) Ce n'est pas du tout dans ta ligne 35 de ton code LUA car tous ceux qui on cette erreur c'est le même message : /usr/share/lua/5.2/json/decode/util.lua:35: unexpected character @ J'avais demandé de l'aide dans un post : Chasse à l'erreur Et @Steven m'avais expliqué : Citation Ce genre d'erreur est assez fréquent lorsque l'on reçoit un flux json qui n'a pas été correctement fini (latence réseau, micro-coupure, ...) Pour éviter de planter le tout, j'utilise personnellement le pcall : http://www.lua.org/pil/8.4.html Tu dois être dans un cas similaire Modifié le 3 mars 2018 par henri-allauch 1
jjacques68 Posté(e) le 3 mars 2018 Auteur Signaler Posté(e) le 3 mars 2018 Ok donc ce serait une erreur interne au process... et qui date visiblement... c'est bête ça, dans ma scène si ça arrive, la lumières allumées par le PIR déclencheur ne s'éteins plus du coup...
jjacques68 Posté(e) le 3 mars 2018 Auteur Signaler Posté(e) le 3 mars 2018 c'est peut-être cette ligne qui ne lui plait pas : (moi non plus d'ailleur, mais j'ai rien trouvé de mieux...) while tonumber(fibaro:getValue(Trigger.deviceID, "value")) == 1 do end je vais lui ajouter un petit sleep dans la boucle, histoire de calmer le process, et on verra la suite... while tonumber(fibaro:getValue(Trigger.deviceID, "value")) == 1 do fibaro:sleep(500) end
Messages recommandés