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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
neo_matfr
Messages : 16
Inscription : 15 janv. 2016, 17:21

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

Message 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
Dernière modification par neo_matfr le 04 nov. 2017, 11:41, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message 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
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
neo_matfr
Messages : 16
Inscription : 15 janv. 2016, 17:21

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

Message 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.
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

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

Message 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
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
neo_matfr
Messages : 16
Inscription : 15 janv. 2016, 17:21

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

Message 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]
Fredok
Messages : 90
Inscription : 12 août 2016, 15:04

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

Message 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...
Opi
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+
neo_matfr
Messages : 16
Inscription : 15 janv. 2016, 17:21

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

Message 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 !
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message 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...
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
neo_matfr
Messages : 16
Inscription : 15 janv. 2016, 17:21

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

Message 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 !
Répondre