Toggle et va et vient

Bonjour,

J’ai regardé des messages sur le forum mais je ne trouve pas la réponse.
Voici mon montage:
image

Un va et vient avec un inter et une carte relais et un ESP qui va mesurer le courant du voyant de l’inter et remonter l’info si la lumière est allumée.

Je ne suis pas certain que la doc du toggle fonctionne dans mon cas.
Je voudrais l’état de la lumière et non l’état de la commande.

En l’état cela ne fonctionne pas et je ne suis pas certain que cela soit éligible juste via le plugin virtuel.

Si vous avez des REX. Merci

Bonjour,
Je ne saisi pas trop la logique par rapport à la doc détaillant comment faire un toggle avec un virtuel.

La doc dit (et c’est très clair…) :

Il faut donc créer une action (toggle), référençant une info de type binaire (Etat), et chaque action sur toggle inverse l’état Etat en appliquant cette formule : not(#[...][...][Equipement]#) (on inverse donc l’état : 1 → 0 et 0 → 1).

Un exemple concret, qui fonctionne très bien dans un de mes virtuels :

Et dans votre cas :

Plusieurs questions :

  • Vous parlez d’un toggle, mais je ne vois qu’un classique ON/OFF ?
  • Tel qu’écrit, la valeur de l’info virtuel ExtMural est uniquement dépendante de l’info #[Système][ESP_ECL][Analog]# (qui, je l’espère, est bien une valeur binaire conformément au type défini, et non pas analogique…). ExtMural prendra donc cette valeur, et rien d’autre…

Si le but est de vérifier que l’ampoule a bien été allumée via l’inter ou un relais en testant la valeur retournée par l’ESP (via un capteur de courant donc…), ce n’est pas comme ça que ça pourra marcher en effet.

Il faut plusieurs lignes :
1.- Tester si le courant consommé est supérieur à xx mA (ou W), info remontée par l’ESP
2.- Si oui, basculer l’info EtatMural à 1, et sinon à 0.

Par exemple, en considérant que #[Système][ESP_ECL][Analog]# est bien l’info analogique remontée par l’ESP de mesure de courant (ou de puissance) consommée notée XX :

Et ca marchera aussi bien si action sur le relais, que sur l’interrupteur (c’est indépendant…).

Merci pour ce super retour détaillé.

Alors sur l’esp j’ai directement une valeur reçu binaire, 0 pas de courant 1 du courant.
Par contre avec le dernier screenshot, je ne suis plus en mesure de commander la lampe, avec ceci:

#[Système][Relay 16 Ports][ECL-EXT-MuralON R5]#
#[Système][Relay 16 Ports][ECL-EXT-MuralOFF R5]#

d’ailleurs ce qui me perturbe c’est un coup le ON va effectivement allumer la lumière mais peut etre que le coup d’après ce ne sera pas vrai.

Oui, de rien, j’essaie de bien saisir comment ca a été pensé (il y aurait beaucoup plus simple en mettant une ampoule Zigbee non ? :wink:)…

Bon, d’abord concernant l’état de l’ampoule…

Du coup ça simplifie encore plus le virtuel.
Il suffit de remplacer #[Système][ESP_ECL][Analog]# > XX ? LIGHT_ON : LIGHT_OFF par #[Système][ESP_ECL][Analog]# ? LIGHT_ON : LIGHT_OFF

Pour les commandes du relais (autre sujet…), je ne vois pas très bien.
Dans un virtuel, ça devrait fonctionner à tous les coups :

oui en effet zigbee et hop terminé :=)

Ce virtuel me sert pour avoir l’état de l’ampoule mais également pour pouvoir commander l’ampoule via Jeedom:

Je peux commander la lumière soit via l’interrupteur dans le mur soit via jeedom avec la carte relay.

Ceci me permet de commander l’éclairage via jeedom:

Mais je ne vois pas comment faire le lien avec ta solution:

par ex LIGHT_ON renvoie à l’action Etat_Mural mais LIGHT_OFF également ?

De mon coté ces 2 commandes me sont nécessaires pour faire basculer le relai soit en NO ou en NF

[Système][Relay 16 Ports][ECL-EXT-MuralON R5]
[Système][Relay 16 Ports][ECL-EXT-MuralOFF R5]

Avec la config suivante si l’inter dans le mur est éteint (pas de voyant), je peux allumer la lumière via le relai et j’ai bien le bon état par contre si je réappuie sur le bouton rien ne se passe elle reste allumée:

Je bug j’ai l’impression

Bonjour,

Ok, je comprends un peu mieux je pense, le premier schémas n’était pas assez détaillé et j’ai un peu zappé, désolé… Voilà ce que je visualise :

image
(Note : ni le voyant ni l’ESP32 ne sont bien sûr pas placés en série sur le fil de la phase, mais c’est la logique utilisée…)

Donc la consommation du voyant intégré à l’interrupteur donne l’information, via l’ESP, si l’ampoule à commander est éclairée ou non (sur ce schémas, elle est donc éteinte). Et cet interrupteur est monté en va-et-vient avec les contacts du relais en NO/NC.
Le voyant est donc bien allumé à partir du moment où l’ampoule est éclairée, quelque soit la méthode pour l’allumer (via le relai ou l’interrupteur), et éteint sinon, right ?

Reprenons…

Ca, c’est pour connaître l’état réel du voyant en partant du principe que voyant allumé = ampoule allumée et voyant éteint = ampoule éteinte. A partir du moment où l’ESP détecte une consommation, le test #[Système][ESP_ECL][Analog]# ? est vrai. On exécute alors la commande LIGHT_ON . Sinon, c’est la commande LIGHT_OFF.

La réponse est donc oui. LIGHT_ON va agir sur l’info Etat_mural en la mettant à 1 ou à 0, et celle-ci permet de visualiser l’état réel du voyant (et de l’ampoule donc) et de l’utiliser dans un design ou dans un scénario.

Côté relais maintenant, pour commander l’ampoule.
Dans un montage en va-et-vient, il faut tout d’abord préciser qu’il n’y a pas à proprement parler de position ON-OFF. L’allumage effectif ne dépend uniquement que de la position de l’interrupteur (ou du relais) en aval (ou en amont).
Il faut donc commander le relais avec une commande de type toggle (là, je fais enfin le lien avec la demande initiale…), pour allumer ou non l’ampoule suivant la position de l’interrupteur en aval.

Ceci dit, sur la plupart des cartes relais, il y a en principe une commande physique de type toggle, comme celle-ci sur une de mes cartes relais (ca peu différer évidemment suivant le constructeur du relais, mais généralement elle existe) :

Il faut utiliser cette commande, sinon pas moyen de faire via un virtuel à mon avis (mais c’est possible par un scénario).

Voilà ce qu’il faudrait inclure dans le virtuel en plus :

Explications :
L’action Toggle_relais créé un toggle avec l’information binaire Etat_toggle_relais. Si on l’active, Etat_toggle_relais passe de 1 à 0 et vice-versa.
L’action TOGGLE va elle actionner d’une part le relais en mode toggle (la commande exacte reste à trouver), et d’autre part (avec l’opérateur &&) elle va actionner également l’action Toggle_relais, qui va donc changer l’état de Etat_toggle_relais.

Ainsi, on atteint les objectifs :

  • la recopie de l’état réel de l’ampoule (= le voyant) avec l’information Etat_Mural, exploitable pour un design/scénario/…
  • Une action possible sur le relais lui-même en mode toggle, qui va allumer ou éteindre l’ampoule, avec recopie de l’état du relais via l’information Etat_toggle_relais si nécessaire (note : ce n’est pas obligatoire d’avoir cette info, on peut très bien s’en passer et ne pas créer la commande Toggle_relais…)
  • Une action possible également avec l’interrupteur mural, qui va avec le montage en va-et-vient, permettre d’allumer ou d’éteindre de son côté l’ampoule.

(testé OK chez moi…).
Ca te paraît clair ?

Tout d’abord, grand merci @DanielJ pour le temps et la qualité de la réponse.
La mauvaise nouvelle, c’est que ma carte relai est très basique et fonctionne en N2 avec envoi de code en hexa pour activer les relais, donc pas de mode toggle ou interface web.

De ce que je comprends, il faut que je bascule sur les scénarios pour faire ce que je souhaite, je vais regarder ce point voir si j’y arrive

D’accord, dommage pour la carte relais en effet…
Par un scénario, il faut suivre cette piste :
déclencheur = commande ON ou OFF via les boutons
Ensuite juste faire un test : si ON, alors lancer l’action OFF SINON lancer l’action ON.

On peut bien sûr compléter en mettant à jour l’état du relais (s’il est utilisé) :

  • Etat = !Etat, à la fin du scénario (Etat étant dans ce cas une variable),
  • ou lancer la commande Toggle_relais, telle que définie dans le virtuel.

Merci @DanielJ

Je ne m’en sors pas.

J’ai fait ce scénario avec un tag RelayP qui garde en mémoire la dernière position du relay.

De l’autre coté mon virtuel:

L’idée, lorsque j’appuie sur ON ou OFF du relai, cela met à jour l’info RelayPosition pour mon scénario donc il faut que je lie cette info. Pb en liant cette info je n’ai plus l’info de l’état de la lumière mais de la position du relai

Je m’embrouille je crois :expressionless:

Bonjour,
Oui, ce scénario ne peut pas marcher pour plusieurs raisons…
1.- Les deux SI sont imbriqués : la seconde condition ne sera donc évaluée que si la première est vraie, ce qui ne sera plus le cas dès que la lumière sera éteinte (#[Système][ESP_ECL][Analog]# passera à 0). Donc il ne se passera plus rien ensuite…
2.- Un ‹ tag › est interne au scénario. Sorti de celui-ci (i.e en fin d’exécution), les tag sont réinitialisés. Donc en dehors du scénario auquel ils sont associés, ils ne peuvent servir à mémoriser quoique ce soit en fait.
A remplacer par une variable qui elle perdure, même si coupure de courant ou s’il y a un RESET de la box Jeedom.

Voici plutôt ce que je propose (à adapter/compléter si besoin…).
L’état de l’ampoule reste associée à #[Système][ESP_ECL][Analog]# dans le virtuel.
Je constate que le relais renvoie sa position (je ne l’ai pas vu sur les captures d’écran ?), cela simplifie beaucoup car il suffit juste d’inverser sa position pour éteindre ou allumer l’ampoule, quelle que soit la position de l’interrupteur mural :
Si relais = 0 et inter = 0 (ampoule allumée), si appui sur ON ou OFF, relais = 1 → ampoule sur arrêt.
Si relais = 1 et inter = 0 (ampoule éteinte), si appui sur ON ou OFF, relais = 0 → ampoule sur marche.
Si relais = 0 et inter = 1 (action sur l’interrupteur mural), l’ampoule s’éteint.
Si relais = 0 et inter = 1 (ampoule éteinte), si appui sur ON ou OFF, relais = 1 → ampoule sur marche.
Si relais = 1 et inter = 1 (ampoule allumée), si appui sur ON ou OFF, relais = 0 → ampoule sur arrêt.
Et pas besoin de mémoriser quoique ce soit non plus…

1.- Déclencheurs

2.- Et le scénario se résume donc à ça :

Je me suis mal exprimé, le relais ne renvoie rien, c’est moi qui indique que qd je le bascule sur ON il est dans un état « 1 » par exemple et OFF dans un état « 0 ». Il s’agit en fait de l’état de la commande

Ok, j’avais cru comprendre que…
Dans ce cas il suffit de remplacer [...][...][Position_Relay] dans le scénario par #[Système][ESP_ECL][Analog]#, ce qui devrait fonctionner également, l’important étant d’avoir un retour sur l’état réel de l’ampoule (ou plus précisément du voyant, mais c’est pareil) avec l’info retournée par l’ESP.

je dois être bête en ce moment … mais il n’est pas possible de mettre des déclencheurs qui sont des actions

Il faudrait que j’y associe des états comme ci dessous mais sans succès pour le moment:

Bonjour,
Non, désolé, c’est plutôt moi qui le suis… :face_with_hand_over_mouth:
J’ai été un peu vite hier…

On peut contourner en faisant un truc comme ça :
Côté virtuel :

  • On créé deux actions de façon classique, associées à une info : ON et OFF, et avec dans le champ information, l’info Etat_toogle_relais par exemple.

  • On sauvegarde, ce qui permet la création de l’info Etat_toogle_relais.
  • Puis dans la partie info, on remplace Etat_toogle_relais par les commandes #[Système][Relay 16 Ports][ECL-EXT-MuralON R5]# et #[Système][Relay 16 Ports][ECL-EXT-MuralOFF R5]#.
  • Indiquer dans les infos à mettre à jour l’info Etat_toogle_relais avec les valeurs 1 et 0 respectivement.

De fait, chaque action sur ON ou sur OFF va provoquer l’action sur le relais, et mettre à jour l’information Etat_toogle_relais.

Côte scénario :
C’est cet état qu’on va utiliser comme déclencheur. Et là, on est bon…

Voici où j’en suis:

Puis le scénario:

image
image

Je ne comprends pas, lorsque j’appuie sur ON ou OFF Etat_toogle_relais reste à 0 et je vois bien que cela s’actualise car la valeur binaire est verte pendant 1s.

J’ai donc recréé le virtuel de 0 redémarré jeedom mais toujours le pb. Ca commence mal ^^

On est pas sur windows !
Pourquoi passer par un scénario ?

Là je sèche… :thinking:

Testé chez moi avec un luminaire, ca fonctionne très bien…
Test

(Et la lampe s’allume bien aussi…)

Comment as tu fais pour intégrer ta video ?
J’en ai fait une en MP4 pour voir le souci.

c’est un gif animé

1 « J'aime »

Il suffit de la transformer en .gif (4Mo max pour les .gif sur le forum) avec un outil, comme ScreenToGif que j’utilise par exemple…