script pour fermer un volet

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 <\>.
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Ok, je comprends en gros le problème. Il me reste à creuser.

J'ai compris comment fonctionnent les scripts sur les changements de valeur d'une variable, j'ai fait pas mal de tests concluants. J'ai un script qui a l'air de bien fonctionner pour la fermeture des mes volets en fonction de la température extérieure, où pour l'instant il n'agit pas sur la fermeture du volet mais il change juste la valeur d'une variable qui s'affiche dans les logs à chaque relevé de température (script device donc), et mon idée est de dire qu'en fonction de la valeur de cette variable le script commande mon volet.

Déjà, je sais qu'apparemment commandArray['store salle à manger terrasse'] = 'Off' est la bonne ligne de commande pour fermer mon volet. Il me reste donc à savoir comment lui envoyer l'info qu'une seule fois.
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

En fait, mon script pour agir sur mes volets est de type device car il relève la température toutes les dix minutes.
Donc je me disais que ça ne servait à rien de lancer un script time toutes les minutes puisque la température ne changera pas au moins neuf fois de suite. Je pensais bêtement n'agir sur le volet que toutes les dix minutes lors du relevé, donc de type device. Mais c'était sans compter sur le device volet qui lui aussi change.

Donc si je comprends bien, même si c'est inutile de relever la température toutes les minutes, je suis obligé de passer par un script time ?

Je me pose alors une question. Si je voulais attribuer un script de fermeture de volet au bouton d'un interrupteur virtuel ou physique, le script devrait être également un script time ? Ca me paraît complètement illogique, car sans conditions, le volet se fermer toutes les minutes. Ou alors il ne faut pas utiliser LUA pour ce type de script (mais je ne connais pas les ficelles des autres langages, déjà que j'ai du mal avec celui-là :D).
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: script pour fermer un volet

Message par denis_brasseur »

Le-Steph a écrit : 21 juin 2020, 19:17 Il me reste donc à savoir comment lui envoyer l'info qu'une seule fois.
Peut-être en lui disant de ne fermer le volet que si il est ouvert ?


Concernant les scripte de type time, exécuté toute les minutes, tu peux lui dire également, avec une condition adaptée, toutes les 5 ou 10 minutes, voir toutes les heures.
Mais ton problème n'est pas là.
Le-Steph a écrit : 21 juin 2020, 19:38 Je me pose alors une question. Si je voulais attribuer un script de fermeture de volet au bouton d'un interrupteur virtuel ou physique, le script devrait être également un script time ? Ca me paraît complètement illogique, car sans conditions, le volet se fermer toutes les minutes. Ou alors il ne faut pas utiliser LUA pour ce type de script (mais je ne connais pas les ficelles des autres langages, déjà que j'ai du mal avec celui-là :D).
Si tu as bien lu les liens de keros, tu sais maintenant que la détection du changement d'état d'un device ne peux pas se faire avec un script time, mais avec un script device.
Dernière modification par denis_brasseur le 21 juin 2020, 19:55, modifié 1 fois.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Ah oui on peut définir l'intervalle de temps dans un script time, merci.

Alors justement, depuis que j'ai Domoticz, je ne comprends pas comment récupérer l'état de mon volet. Mon idée est bien sûr de n'exécuter mon script que quand le volet est ouvert, mais je ne sais absolument pas récupérer l'info. J'ai bien compris que ça sera grâce à un script device, mais je ne sais pas quoi lui mettre dedans. Il y a une commande particulière pour interroger l'état ?
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: script pour fermer un volet

Message par thier »

si mon volet est ouvert alors je fais...
if otherdevices ['le nom de ton volet'] == 'On' then
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.
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Merci beaucoup ! Je testerai demain.
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Je ne comprends pas ce qui se passe.

Voici un script tout bête :

Code : Tout sélectionner

commandArray = {}

if otherdevices ['store salle à manger terrasse'] == 'On' then
print("store ouvert")
end

return commandArray
Et rien dans les logs. J'ai tenté avec Off, idem, rien. Donc le test ne se fait pas :(
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: script pour fermer un volet

Message par Keros »

A ce moment là, il faut continuer le débogage :

Rien ne s'affiche : est-ce que c'est ton programme qui ne s’exécute pas ou est ce que c'est ta condition qui n'est pas valide.
  • rajoute un else avec un autre print > tu vérifieras que ton programme s'exécute et tu sauras quel est le résultat du IF
  • Fait un print de la valeur du device : tu vérifieras que ta syntaxe pour récupérer l'info du device est bonne.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Mais oui ! Donc le statut d'un volet ouvert est 'Open'.

Là où je vais devenir fou, c'est que qu'elle que soit la position de mon volet, il est tout le temps 'Open' :geek:
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
Le-Steph
Messages : 69
Inscription : 06 mai 2020, 12:40

Re: script pour fermer un volet

Message par Le-Steph »

Si je passe mon script en device, les logs n'apparaissent qu'avec le bouton de Domoticz.

Si j'utilise l'interrupteur mural ou la télécommande, il n'y a pas de log. Si je ferme le store dans Dz, il y a rapidement un état 'Closed' qui apparaît et redevient de suite à 'Open' :shock:
Dz version 2020.2 installé sur Raspberry - USB300 Enocean
dzVents Version 3.0.2
Python Version 3.7.3
Répondre