Page 1 sur 1
[LUA] 'then' expected near 'commandArray'
Publié : 10 juin 2020, 21:31
par Hexolite
Bonjour,
J'essaye de mettre en place mon premier Script LUA, et je ne vois pas trop ce qui cloche donc je fais appel à vous.
Code : Tout sélectionner
--Script pour allumer les lumières du couloir
--En fonction de l'heure et de la luminosité
--Si luminosité pas suffisante on allume
--La petite lampe entre 23h et 9h
--Les 2 plafonniers sinon
commandArray = {}
if (devicechanged['detecteur_haut'] == 'On')then
print('mouvement')
if (tonumber(otherdevices_svalues['detecteur_haut_lum'])<10) then
print('lumiere faible')
if (os.date('%H') > '23' and os.date('%H') < '9') then
print('entre 23h et 9h')
commandArray['Lampe_couloir']='On FOR 30 SECONDS'
elseif
print('entre 9h et 23h')
commandArray['Group:Couloir']='On FOR 30 SECONDS'
end
end
end
return commandArray
Actuellement quand je place le fichier dans le dossier domoticz/scripts/lua j'ai le message d'erreur:
Je comprends qu'il manque un commandArray quelque part mais je ne vois pas...
Merci par avance

Re: [LUA] 'then' expected near 'commandArray'
Publié : 10 juin 2020, 22:23
par Keros
Le soucis n'est pas avec le commandArray. Tu as un soucis avec tes conditions (je fais un zoom sur ton code avec le soucis, je ne l'ai pas corrigé)
Code : Tout sélectionner
if (os.date('%H') > '23' and os.date('%H') < '9') then
print('entre 23h et 9h')
commandArray['Lampe_couloir']='On FOR 30 SECONDS'
elseif
print('entre 9h et 23h')
commandArray['Group:Couloir']='On FOR 30 SECONDS'
end
Le message
'then' expected near 'commandArray' indique un problème avec un then, très certainement manquant ...
Re: [LUA] 'then' expected near 'commandArray'
Publié : 10 juin 2020, 22:36
par vil1driver
Salut,
Après la syntaxe tu auras un souci de logique
Rien ne peut être à la fois supérieur à 23 et inférieure à 9...
Re: [LUA] 'then' expected near 'commandArray'
Publié : 10 juin 2020, 23:02
par Hexolite
vil1driver a écrit : 10 juin 2020, 22:36
à la fois supérieur à 23 et inférieure à 9
Tellement évident que je ne l'ai pas vu... Merci!
Keros a écrit : 10 juin 2020, 22:23
Le message 'then' expected near 'commandArray' indique un problème avec un then, très certainement manquant ...
Le elseif attend en effet un then... Du coup je peux juste mettre else? Merci!
Ça devrait être mieux comme ça (je ne peux pas tester maintenant, on verra demain):
Code : Tout sélectionner
commandArray = {}
if (devicechanged['detecteur_haut'] == 'On')then
print('mouvement')
if (tonumber(otherdevices_svalues['detecteur_haut_lum'])<10) then
print('lumiere faible')
if (os.date('%H') > '23' or os.date('%H') < '9') then
print('entre 23h et 9h')
commandArray['Lampe_couloir']='On FOR 30 SECONDS'
else
print('entre 9h et 23h')
commandArray['Group:Couloir']='On FOR 30 SECONDS'
end
end
end
return commandArray
Re: [LUA] 'then' expected near 'commandArray'
Publié : 10 juin 2020, 23:15
par Keros
Le else tout seul est bon
Bien vu vil1driver pour la logique au niveau des heures

Re: [LUA] 'then' expected near 'commandArray'
Publié : 11 juin 2020, 07:17
par denis_brasseur
On FOR doit etre exprimé en minutes.
Je n'ai jamais réussi à utiliser correctement 'On FOR 30'
Code : Tout sélectionner
commandArray['Lampe_couloir']='On'
commandArray['Lampe_couloir']='Off AFTER 30'
Re: [LUA] 'then' expected near 'commandArray'
Publié : 11 juin 2020, 08:22
par boum
Code : Tout sélectionner
commandArray['Lampe_couloir']='On'
commandArray['Lampe_couloir']='Off AFTER 30'
L'élément 'On' dans la table commandArray sera remplacé par la seconde commande et la lampe ne sera pas allumée.
Code : Tout sélectionner
commandArray[#commandArray+1]={['Lampe_couloir']='On'}
commandArray[#commandArray+1]={['Lampe_couloir']='Off AFTER 30'}
ou:
Code : Tout sélectionner
table.insert(commandArray, { ['Lampe_couloir'] = 'On' })
table.insert(commandArray, { ['Lampe_couloir'] = 'Off AFTER 30' })
Re: [LUA] 'then' expected near 'commandArray'
Publié : 11 juin 2020, 08:53
par vil1driver
Denis,
Regarde bien le lien que tu cites, il est bien écrit que tu peux préciser l'unité et plus encore
FOR est chiant car retourne à l'état précédent et non opposé.
Si déjà On lors du On FOR.. A la fin du décompte : retour à On..
Du moins c'était comme ça... Aujourd'hui je ne sais pas
Re: [LUA] 'then' expected near 'commandArray'
Publié : 11 juin 2020, 18:08
par Hexolite
vil1driver a écrit : 11 juin 2020, 08:53
Denis,
Regarde bien le lien que tu cites, il est bien écrit que tu peux préciser l'unité et plus encore
FOR est chiant car retourne à l'état précédent et non opposé.
Si déjà On lors du On FOR.. A la fin du décompte : retour à On..
Du moins c'était comme ça... Aujourd'hui je ne sais pas
Je testerai avec "On FOR 30 SECONDS" sinon je testerai la méthode @boum.
Pour le retour à l'état précédent c'est pas un soucis je trouve, au contraire.