Page 1 sur 2

comment feriez vous ?

Publié : 31 mars 2020, 15:52
par papoo
Je souhaite mettre à jour l'état d'un device nommé 'volet douche' ( interrupteur Venitian EU) qui commande un volet par un script dz et son dashboard et un autre système indépendant. l'action via dz agit sur le système tiers et inverse la commande dz (commande impulsionnelle)
le système tiers met à jour un device bouton poussoir (switch push on) dans dz appelé '$ impulsion volet douche' qui via un script doit mettre à jour l'état du volet

Je souhaitais simplement utiliser la commande silent () dans le cas exclusif d'une commande initiée par le système tiers sans renvoyer de nouvelle commande a ce système.

j'ai tenté un script avec lastupdate sur le device 'volet douche' mais cela ne fonctionne pas correctement

un brin d'analyse fonctionnelle :
-si le volet est activé directement par le système tiers, mise à jour du device correspondant dans dz, sans commande au volet, via le retour du système tiers et le device '$ impulsion volet douche' ...
- si le volet est contrôlé par dz, aucune action le device 'volet douche' a déjà changé d'état sur le dashboard


je vais essayer avec les historiques, mais si vous avez une idée je suis preneur

Re: comment feriez vous ?

Publié : 31 mars 2020, 16:11
par vil1driver
salut,

je ne suis certain de tout saisir..
le system tier possède sa propre commande manuelle ?
si oui peut-être voir à ce que '$ impulsion volet douche' ne soit mis à jour que dans ce cas (commande manuelle)?

Re: comment feriez vous ?

Publié : 31 mars 2020, 16:34
par papoo
je reformule
toutes les commandes pour actionner les volets passent par le système tiers même les commandes émanant de dz. Chaque action sur le volet génère une impulsion d'information que je récupère sur dz via le device '$impulsion volet douche'
la commande via dz se fait par action sur le device nommé 'volet douche' (de type interrupteur Venitian EU) et un script qui surveille les actions de ce device.
je souhaite donc mettre au point un deuxième script actionné par la surveillance du device '$impulsion volet douche' qui modifia l’état du device 'volet douche' sans déclenchement du script associé en cas de commande générée en dehors de dz via la commande silent() de dzvents.
mon soucis est de trouver l'information pertinente pour bloquer le script et ne mettre à jour que l'etat du device si ce n'est pas une commande dz

Re: comment feriez vous ?

Publié : 31 mars 2020, 17:08
par vil1driver
un updatedevice (je crois que cela revient à silent() en dzvent) permet de mettre à jour un status sans déclencher l'action, mais je ne sais pas si ça déclenche ou non un script associé (je crois que malheureusement si)
c'est ce que tu as testé ?

désolé mais j'ai encore un point que je ne saisi pas bien
papoo a écrit : 31 mars 2020, 16:34 (...) en cas de commande générée en dehors de dz via la commande silent() de dzvents.(...)
en dehors ? tu distingue le widget 'volet douche' de l'interface et un script ?

Re: comment feriez vous ?

Publié : 31 mars 2020, 17:43
par papoo
j'envois la commande dz via un script dzvents (l’équivalent de script_device en lua) au système tiers car si je le fais directement je ne peux pas dissocier la mise à jour virtuel du device et la commande.
je n'ai pas de soucis si je n'actionne le volet que par dz, cela fonctionne parfaitement.
je cherche à informer dz que le volet à changé de position en cas de commande hors dz. sans générer une nouvelle commande
mon soucis est : quel est le critique a prendre en compte pour mettre à jour le device sans envoyer de nouvelle commande
deux devices à ma disposition
une commande dz et une impulsion en cas de commande exterieure à dz (la commande dz envoyant une impulsion sur la commande exterieure)

Re: comment feriez vous ?

Publié : 31 mars 2020, 18:12
par vil1driver
Mon idée
20200331_175145.jpg
20200331_175145.jpg (640.96 Kio) Consulté 4876 fois
Le script A se lance sur MAJ de 'Volet douche'
Passe '$ impulsion volet douche' à Off
Puis commande le module.

Le script B se lance sur MAJ de '$ impulsion volet douche'
QUE s'il vaut On
ET que son précédent status était déjà On
et met à jour 'Volet douche'

comme cela, le script B sait s'il doit ou non mettre à jour 'volet douche'

c'est le plus simple que je vois
j'ai bon ?

Re: comment feriez vous ?

Publié : 31 mars 2020, 18:32
par papoo
'$impulsion volet douche' est un push on button il ne reçoit qu'une impulsion , il repasse à off quasi instantanément
'volet douche' est un device on/stop/off chaque action sur ce device envoi la meme commande, une impulsion au systeme tiers, qui peut recevoir des commandes extérieures à domoticz

le système de commande de volet (le fameux système tiers) fonctionne comme ceci :
Une seule entrée permet toutes les actions séquentiellement par impulsion successive (fermeture du contact)
1er IMP le volet MONTE pendant 30 secondes si pas d'impulsion dans ce délai
2eme IMP le volet STOP si impulsion dans les 30 secondes
3eme IMP le volet descend pendant 30 secondes si pas d'impulsion dans ce délai
4eme IMP le volet STOP si impulsion dans les 30 secondes
5eme IMP le volet MONTE pendant 30 secondes si pas d'impulsion dans ce délai
etc
chaque impulsion est reçu par domoticz sur le device '$impulsion volet douche'

Re: comment feriez vous ?

Publié : 31 mars 2020, 18:43
par papoo
mon petit schéma mais tu as compris l'essentiel
IMG_8080.jpg
IMG_8080.jpg (757.07 Kio) Consulté 4851 fois
reste à trouver /créer l'info qui permettra de différencier une cmd intérieure ou extérieure à dz

Re: comment feriez vous ?

Publié : 31 mars 2020, 18:51
par papoo
vil1driver a écrit : un push-on ne repasse pas à off tout seul en principe (1)
je ne te suis pas sur ce point,

ton system est super tordu :mrgreen: (2)

si tu fais 2 fois STOP sur 'volet douche'
le module reçoit 2 IMP et donc ne respect plus le souhait initial..(3)
1) il passe à On et je surveille le changement
2) oui effectivement, mais en période de confinement je fais avec ce que j'ai :)
3) je gère les impulsions avant 30 secondes et après 30 secondes différemment

Re: comment feriez vous ?

Publié : 31 mars 2020, 19:05
par vil1driver
sans ces commandes externes, le script B n'aurait pas lieu d'être, on est d'accord ?
si oui je trouve mon idée pas si mal
MAJ de l'état que s'il y a remontée d'impultion sans être passé avant par le script A