Page 1 sur 2
Error : did not return a commandArray
Publié : 25 août 2018, 20:35
par g_ride
Bonjour,
je suis nouveau sur Domoticz.
j'ai implémenté un petit script avec un interrupteur virtuel pour "inverser" la commande d'activation du chauffage via fil pilote.
La commande à envoyer pour allumer doit être "OFF", mais je souhaite que le bouton montre "ON" , pour utilisation par des néophytes.
A l'exécution, le script fait ce que je souhaite, mais il affiche une erreur dans le log :
Code : Tout sélectionner
Error: EventSystem: Lua script /home/pi/domoticz/scripts/lua/script_device_RADIATEUR_1_SALON.lua did not return a commandArray
Error: Error executing script command (/home/pi/domoticz/scripts/lua/script_device_test.lua). returned: 32256
Ce script est très simple et adapté du script demo. Beaucoup de débutants ont donc dû avoir cette erreur, mais malgré mes recherches, je ne trouve pas d'explication sur/hors du forum.
Pouvez-vous svp m'indiquer d'où vient l'erreur ?
Merci, désolé si la réponse est sur le forum.
g_ride
Re: Error : did not return a commandArray
Publié : 25 août 2018, 21:05
par thier
Post ton script.
Re: Error : did not return a commandArray
Publié : 26 août 2018, 22:52
par g_ride
Bonjour,
merci de ta réponse,
voici le script :
Code : Tout sélectionner
commandArray = {}
if (devicechanged['RADIATEUR 1 SALON'] == 'On') then
commandArray['CMD RADIATEUR 1 SALON']='Off'
else
if (devicechanged['RADIATEUR 1 SALON'] == 'Off') then
commandArray['CMD RADIATEUR 1 SALON']='On'
end
end
return commandArray
Bien à toi,
Re: Error : did not return a commandArray
Publié : 26 août 2018, 23:24
par thier
trop tard pour réfléchir, j'essairai
Code : Tout sélectionner
commandArray = {}
if (devicechanged['RADIATEUR 1 SALON'] == 'On') then
commandArray['CMD RADIATEUR 1 SALON']='Off'
else
(devicechanged['RADIATEUR 1 SALON'] == 'Off') then
commandArray['CMD RADIATEUR 1 SALON']='On'
end
return commandArray
ou
Code : Tout sélectionner
commandArray = {}
if (devicechanged['RADIATEUR 1 SALON'] == 'On') then
commandArray['CMD RADIATEUR 1 SALON']='Off'
elseif (devicechanged['RADIATEUR 1 SALON'] == 'Off') then
commandArray['CMD RADIATEUR 1 SALON']='On'
end
return commandArray
Si tu l'édites avec l'éditeur de script interne à domoticz (que je n'utilise pas) il me semble qu'il faut décocher "All" et ne cocher que "Device".
Re: Error : did not return a commandArray
Publié : 27 août 2018, 10:12
par g_ride
Bonjour,
merci pour la réponse.
J'ai remplacé par la version elseif, mais j'ai surtout découvert (erreur de débutant) que
tous les scripts "script_device" se lançaient au changement d'événement et j'avais une autre version qui était toujours dans le répertoire.
Désormais, le script fait bien ce qu'il doit faire, mais il affiche toujours
Code : Tout sélectionner
Error: Error executing script command (/home/pi/domoticz/scripts/lua/script_device_test.lua). returned: 32512
à la fin du script. J'ai lu des infos sur le format du fichier (encodage en UTF8 "Unix" / sans "BOM"), mais je l'ai réédité avec nano, vérifié les fins de ligne, édité en notepad++ et converti en UTF8 (et pas UTF8-BOM), mais pas de changement, j'ai toujours cette erreur.
Ca semble pas bien grave, mais je préfèrerais savoir pourquoi....
bonne journée,
Re: Error : did not return a commandArray
Publié : 27 août 2018, 10:57
par vil1driver
Salut,
Que fait le script en question ?
Re: Error : did not return a commandArray
Publié : 27 août 2018, 11:31
par g_ride
Salut,
c'est vraiment tout con :
commande vers un fil pilote de chauffage avec diode :
Pour allumer le chauffage, il faut que la commande envoie OFF (OFF sur le fil pilote = mode confort)
Comme c'est pas très pratique si un néophyte doit allumer le chauffage dans domoticz, un interrupteur virtuel inverse la commande et c'est cet interrupteur virtuel qui est mis sur le tableau de bord :
Code : Tout sélectionner
#!/usr/bin/lua
commandArray = {}
if (devicechanged['RADIATEUR_1_SALON'] == 'On') then
commandArray['CMD_RADIATEUR_1_SALON']='Off'
print("radiateur 1 sur " .. devicechanged['RADIATEUR_1_SALON'])
elseif (devicechanged['RADIATEUR_1_SALON'] == 'Off') then
commandArray['CMD_RADIATEUR_1_SALON']='On'
print("radiateur 1 sur " .. devicechanged['RADIATEUR_1_SALON'])
end
return commandArray
Merci.
Re: Error : did not return a commandArray
Publié : 27 août 2018, 12:50
par thier
Enlève le sheeban #!/usr/bin/lua.
Re: Error : did not return a commandArray
Publié : 05 oct. 2018, 16:00
par g_ride
Salut,
merci pour ta réponse et désolé pour le délai de réaction. Naissance de mon premier bébé juste après ton msg, ... j'ai plus trop le temps de jouer

.
En revanche, j'ai essayé ce que tu as dit, mais ça ne change rien (quelle était la logique d'ailleurs : le shebang donne juste l'indication que le fichier est un script et l'emplacement de l'interpréteur, non ?
Re: Error : did not return a commandArray
Publié : 05 oct. 2018, 17:27
par thier
Il ne sert à rien.
Tu as des messages d'erreur?