Page 1 sur 3
script pour fermer un volet
Publié : 20 juin 2020, 18:07
par Le-Steph
Salut,
J'ai tenté de faire un script tout bête pour fermer un store en LUA :
Code : Tout sélectionner
commandArray = {}
commandArray['store salle à manger terrasse'] = 'Off'
return commandArray
Le store se ferme bien, mais en descendant par pas de quelques millimètres. Et ça ne s'arrête plus.
Le store descend millimètre par millimètre, et le processus ne s'arrête jamais (le relais claque sans arrêt).
Donc la commande ne doit pas être la bonne
Qu'est-ce qu'il faut changer ?
Re: script pour fermer un volet
Publié : 20 juin 2020, 18:10
par thier
Peut être Closed au lieu de Off. Après si c'est un script time, tu lui envoi la commande toutes les minutes puisque tu n'as de condition.
Re: script pour fermer un volet
Publié : 20 juin 2020, 18:21
par Le-Steph
Closed ne fait rien.
Ce n'est pas un sript time, mais un script device que j'ai collé à un inter virtuel

Re: script pour fermer un volet
Publié : 20 juin 2020, 18:33
par thier
Il faudrait peut être mettre dans ton script
si bouton virtuel change en passant à Off, ferme le store (sous réserve que ton virtuel soit un interrupteur On/Off).
Il faudrait voir aussi du coté de ton actionneur pour le store s'il fonctionne en impulsion.
Re: script pour fermer un volet
Publié : 21 juin 2020, 01:44
par Le-Steph
Mon bouton virtuel est comme celui de mes stores, à savoir blind. Mais j'ai essayé également sur un script time sans passer par le bouton virtuel, c'est pareil.
Comment savoir si le module fonctionne par impulsion ?
J'ai fait un blocky sur la fermeture du store, et ça fonctionne très bien. D'ailleurs, je mets Off en blocky.
Bien sûr, l'idée de mon script LUA est de fermer mon store et de l'ouvrir sous conditions.
Re: script pour fermer un volet
Publié : 21 juin 2020, 09:33
par Keros
Regarde les liens dans ma signature concernant le débogage.
Là, on ne sait pas si le soucis vient de ta commande ou si c'est ton programme qui ne s'exécute pas

Re: script pour fermer un volet
Publié : 21 juin 2020, 12:25
par Le-Steph
Beaucoup de lecture fort intéressante, merci !
Donc pour débugger, il faudrait que colle un print de l'état de la commande ?
En tout cas, à l'oreille, il envoie une succession de Off, sans jamais s'arrêter

Ce qui en Enocean se traduit en descente, stop, descente, stop, etc.
Re: script pour fermer un volet
Publié : 21 juin 2020, 14:35
par denis_brasseur
Si ton script est de type device, il va s’exécuter à chaque changement de n'importe quel device, y comprit changement d'état de ton store.
Sans condition d’exécution, cela explique que ton store s'affole...
exécution du script, fermeture du store, exécution du script, arrêt du store, exécution du script, fermeture du store, etc.
Si tu ajoute un print, tu devrais avoir une succession continu de messages dans tes logs.
Re: script pour fermer un volet
Publié : 21 juin 2020, 16:51
par Le-Steph
Le problème, c'est que comme il envoie tout un tas d'ordre de fermetures rapidement, les logs deviennent rapidement illisibles et inexploitables
Donc j'ai mis deux traits devant la fermeture du store pour empêcher l'envoi de la fermeture et n'avoir que le print :
Code : Tout sélectionner
commandArray = {}
--commandArray['store salle à manger terrasse'] = 'Off'
print("off")
return commandArray
Et là dans les logs, off n'apparaît qu'une fois toutes les minutes en sript time ou all.
Chose étrange, quand je fais le même script en script time, ça fonctionne comme il faut ! Mais dès que c'est un script all ou device, paf, ça recommence.
Re: script pour fermer un volet
Publié : 21 juin 2020, 17:23
par Keros
Denis a raison : en Device, ton programme s’exécute dès que quelque chose change. Or dedans, tu changes ton volet. Ton volet changeant il ré-exécute ton programme : c'est une boucle que tu fais d'où les logs "illisibles et inexploitables".
Évidement, si tu mets des tirets, les logs se "calment" : tu coupes la boucle.
Tu n'as pas compris comment fonctionne les scripts > relie la doc. Tu peux t'inspirer en ouvrant un nouveau script de type Device : il y a un exemple.