Page 1 sur 1

Envoi de 2 OPENURL : Seul le seond est pris en compte

Publié : 23 janv. 2018, 13:56
par xavierlp
Bonjour après beaucoup d'essai et de lecture du forum je bloque sur ce script !

Mon souhait est de pouvoir désactiver l'ouverture des volets quand je suis en congés.
J'ai donc créer un dummy qui doit ACTIVER/DESACTIVER le planning du groupe

Ma spécificité est qu'il y a 2 lignes sur le planning :
1-Jours de semaine
2-Weekend

Il y a donc 2 idx (4 et 5)

Voici le script

Code : Tout sélectionner

--activation  du planning d'un volet en mode vacances 
commandArray={}

print ('------------- Schedule ---------------------------')
if ( otherdevices['Vacances'] == 'On')   then

commandArray['OpenURL']='http://..../json.htm?type=command&param=disablescenetimer&idx=4'
commandArray['OpenURL']='http://..../json.htm?type=command&param=disablescenetimer&idx=5'

else

commandArray['OpenURL']='http://..../json.htm?type=command&param=enablescenetimer&idx=4'
commandArray['OpenURL']='http://..../json.htm?type=command&param=enablescenetimer&idx=5'

end -- if vacances

return commandArray
Il fonctionne à moitié car uniquement IDX=5 est pris en compte, si j'inverse les 2 commandes c'est IDX=4 qui est pris en compte.
Il semble que la première commande ne soit pas exécutée.

En regardant le forum cela devrait fonctionner.

Ais je loupé un truc?

Je suis en V3.8153

Merci

Re: Envoi de 2 OPENURL : Seul le seond est pris en compte

Publié : 23 janv. 2018, 15:37
par chacal62
Bonjour,
oui c'est normal la 2 commande ecrase la premiere adapte tes commandes a cette syntaxe :

Code : Tout sélectionner

commandArray[#commandArray + 1] = {['testSwitch'] ='On AFTER 5' }
commandArray[#commandArray + 1] = {['testSwitch'] ='On AFTER 15' }
cordialement

Re: Envoi de 2 OPENURL : Seul le seond est pris en compte

Publié : 02 févr. 2018, 19:34
par justman1010
Bonjour j'ai le même problème, je ne vois pas comment adapter cette syntaxe sur mes OpenURL pourrais-tu m'éclairer ?
merci

Re: Envoi de 2 OPENURL : Seul le seond est pris en compte

Publié : 09 févr. 2018, 16:29
par landaisbenj
Bonjour. Il faut bien comprendre le principe des tables.

Lua fonctionne presque tout le temps en créant des tables.
Il s'agit de tableau contenant plusieurs variable étant ou non égale a un résultat. Chacune de ces variables est une valeur de position dans le tableau.

Exemple: Je peux avoir un tableau "tableau" contenant trois variables, "heure", "minute", "seconde". Etant respectivement égale à des chiffres, et ayant une position precise dans le tableau.

A l’écrit ça donne: tableau = { "heure" = 16; "minute" = 08; "seconde" = 12 }
J'ai donc une variable "heure" étant égale a 16 en première position, une variable "minute" etant egale a 08 en deuxième position ect...
Chaque variable a une valeur de position dans le tableau.
Si j'essai d'afficher un print: tableau.heure..'h'..tableau.minute alors j'ai ce résultat: 16h08.
Si j'essai d'afficher un print: tableau[1]..'h'..tableau[2] j'ai le meme resultat.

Je peux renseigner mon tableau plusieurs manière, dont:
--J'ouvre le tableau
tableau{}
--je renseigne ses variables:
tableau['heure'] = 16
tableau['minute'] = 08
tableau['seconde'] = 12

Donc si je fais:

tableau{}
tableau['heure'] = 16
tableau['heure'] = 08
tableau['heure'] = 12

la tableau ressemblera a ça: tableau = { "heure" = 12" }
Car nous avons a chaque fois remplacer la variable heure. On ne prend que le dernier.

Il aurait fallu renseigner les valeurs de position et non le nom de la variable:
tableau{}
tableau[1'] = { "heure" = 16 }
tableau[2] = { "heure" = 08}
tableau[3] = { "heure" = 12}
Pour ressembler a ça: tableau = { "heure" = 16; "heure" = 08; "heure" = 12 }





En fait commandarray sur domoticz c'est pareil.
Au début j'ouvre mon tableau "commandarray {}" et je viens entrer chaque variable (nom de device ou autre) suivant les conditions (if else ect...) et au return domoticz prend la totalité de mon tableau et pour chaque variable active le resultat.

Donc si tu as ça qui se suit:
commandArray['OpenURL']='http://..../json.htm?type=command&param=disablescenetimer&idx=4'
commandArray['OpenURL']='http://..../json.htm?type=command&param=disablescenetimer&idx=5'

Tu as entrée deux résultats dans le tableau "commandarray" pour la même variable "OpenURL" et donc il ne prend que la dernière...
C'est pour ça qu'on rajoute ceci:
commandArray[#commandArray+ 1] = {['OpenURL'] ='16' }
commandArray[#commandArray+ 1] = {['OpenURL'] ='18' }
commandArray[#commandArray+ 1] = {['OpenURL'] ='12' }

Pour créer la même variable sur différentes valeur du tableau (ou le +1 ajoute automatiquement 1 a la dernière valeur)