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?