Page 1 sur 2

commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 09:41
par neo_matfr
Bonjour,

J'ai une prise On/Off chacon que je pilote via mon rxfcom.
Sous domoticz j'ai donc créé ma commande de prise que j'ai appellé "lampe" (car elle alimente une lampe). Manuellement via l'interface web de domoticz je pilote depuis des années cette prise sans problème particulier.

Puis j'ai décidé de faire un script de type "time', et je m’aperçois que j'ai quelques soucis avec la commande "commandArray['device']=... "

Pour illustrer ma problématique j'ai fait un script très simplifié qui exécute les commandes toutes les 5 minutes.

Code : Tout sélectionner

commandArray={}

local m = os.date('%M')

if (m % 5 == 0) then
    print("Script lancé")
    commandArray['lampe']='Off'
        print("J'ai éteind la lampe !")
        commandArray['lampe']='On'
        print("J'ai allumé la lampe !")
end

return commandArray
Voici la log:

Code : Tout sélectionner

LUA: Script lancé
LUA: J'ai éteind la lampe !
LUA: J'ai allumé la lampe !
LUA: Script lancé
LUA: J'ai éteind la lampe !
LUA: J'ai allumé la lampe !
LUA: Script lancé
LUA: J'ai éteind la lampe !
LUA: J'ai allumé la lampe !



On voit bien que le script est exécuté toutes les 5 minutes, les messages sont présents et donc les commandes "commandArray[]" executées ! Mais non !
Les premières fois, la lampe s'eteind et s'allumer puis après plus rien, et un peu plus tard ça s'eteind et s'allume de nouveau puis comme si la commande "commandArray[]" n'est plus executée. Mais dans ce ca je n'aurais pas eu les messages (print...)

Avez vous dèjà vu celà ?
Bug ? je suis sur raspberry domoticz en dernière stable.

Merci

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 10:11
par vil1driver
Salut,

Normal.

Pourquoi tu fais Off puis On dans la foulée ?

Ne met que l'un ou l'autre et ça fonctionnera

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 14:12
par landaisbenj
C'est marrant ca :D

Moi je dirais qu'il te manque la verification de l'etat de la lampe pour séparer le on du off (suivant ce que tu recherche vraiment)

Genre:

Code : Tout sélectionner

if (m % 5 == 0) and otherdevice['lampe']=='On' then
    print("Script lancé")
    commandArray['lampe']='Off'
        print("J'ai éteind la lampe !")
elseif (m % 5 == 0) and otherdevice['lampe']=='Off' then 
        commandArray['lampe']='On'
        print("J'ai allumé la lampe !")
end

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 16:54
par neo_matfr
Merci pour vos réponses.
Salut,

Normal.

Pourquoi tu fais Off puis On dans la foulée ?

Ne met que l'un ou l'autre et ça fonctionnera
Mais en réelle (sur le vrai script qui est beaucoup plus long) ça ne se fait pas dans "la foulée" et le résultat est le même, je peux mettre un timer, c'est pareil... (j'ai juste fait un script simplifié pour le forum)


Concernant l'état, je ne peux pas, les prises chacon n’émettent rien, donc pas de retour. Elle reçoivent un signal radio on/off.

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 17:11
par thier
Essai en indexant les commandArray avec commandArray [commandArray +1]. Tu ne peux faire plusieurs commandArray à suivre pour un même device sans les hiérarchiser.

Envoyé de mon SM-T533 en utilisant Tapatalk

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 17:23
par neo_matfr
On va essayer, j'avais vu ça dans la doc sans bien comprendre, donc on va faire comme un tableau pour voir avec commandArray[1]... et commandArray[2]

Re: commandArray['device']=... ne s’exécute pas !

Publié : 03 nov. 2017, 20:00
par Fredok
Bonjour, effectivement quand on change un même device plusieurs fois dans la même condition dans un script il faut utiliser
commandArray[#commandArray+1]={['device'] = 'On'}
puis
commandArray[#commandArray+1]={['device'] = 'Off AFTER 30'}
etc...

Re: commandArray['device']=... ne s’exécute pas !

Publié : 04 nov. 2017, 11:41
par neo_matfr
Ça à l'air de fonctionner !
C'est un peu contraignant, le tout c'est de le savoir et de faire en conséquence.
Merci !

Re: commandArray['device']=... ne s’exécute pas !

Publié : 04 nov. 2017, 12:07
par vil1driver
rien n'est fait durant le script,
on ne fait que lister ce que domoticz aura à faire une fois le script terminé.
c'est clair que sans comprendre cela...

Re: commandArray['device']=... ne s’exécute pas !

Publié : 04 nov. 2017, 12:46
par neo_matfr
vil1driver a écrit :rien n'est fait durant le script,
on ne fait que lister ce que domoticz aura à faire une fois le script terminé.
c'est clair que sans comprendre cela...
Et pourtant, tu ne l'as pas l'as pas mentionné lors de ton précédent post...
Avoue que pour un langage basé sur de "l'événementiel" c'est tout simplement génial !