Contrôle d'un télérupteur

Merci JLE, je vais creuser dans ce sens là!

Regarde ici :

https://forum.jeedom.com/viewtopic.php?f=96&t=44696#p750202

Salut @Jeandhom,
Je me creuse la tête mais je ne comprends absolument pas le fonctionnement de ton virtuel! :sweat_smile:
Il faut dire que les champs d’une commande de type action pour un virtuel sont super flous pour moi…
Si je reprends ton exemple, tu as 2 actions « Palier On » et « Palier Off ».
« Palier On » agit sur « Palier » (présent sous le champ Nom, mais je ne sais pas de quelle manière) et sur « Palier mode » (présent dans la colonne valeur). La valeur 1 est affectée à … lorsque …?
« Palier Off » agit sur « Palier » (présent sous le champ Nom, mais je ne sais pas de quelle manière) et sur « Palier mode » (présent dans la colonne valeur). La valeur 0 est affectée à … lorsque …?
Enfin, tu as 2 infos « Palier Set On » et « Palier Set Off » mais de quelle manière ces 2 infos sont utilisées? Si ce ne sont que des infos, c’est qu’elles sont utilisées par autre chose et je ne les vois pas appelées dans les commandes de type action…
Pas facile d’expliquer à l’écrit mes interrogation mais je patauge grave!
Si tu peux m’aider à comprendre le fonctionnement de ton virtuel!
Sinon j’ai regardé ton post et en fait je suis exactement dans le même mode de fonctionnement que toi… Telerupteur bipolaire sauf que ce n’est pas un shelly qui simule un appui et me donne le retour d’état chez moi, c’est un IPX800v4 :wink:

Je reposte ici le virtuel.

J’ajoute l’info manquante sur la « configuration commande » des deux « Pallier Set … ».

Capture d’écran du 2020-09-28 20-59-30

Hello @Jeandhom
Ce que tu proposes fonctionne parfaitement depuis Jeedom mais uniquement si on commande la lumière depuis Jeedom. Mais j’ai aussi des interrupteurs au mur…
Du coup, si j’allume la lumière via l’interrupteur et que sous Jeedom le mode est sur OFF, on va déclencher l’action poussoir à cause de l’info Palier Set Off qui passe à 1…
Je vais donc chercher pour voir comment m’en sortir…

Ne t’inquiète pas @Pierro, tu n’es pas le seul à avoir des interrupteurs au mur. Moi aussi, j’ai plein d’interrupteurs au mur.
Je m’en sers aussi pour commander directement le télérupteur, sans soucis.

@Jeandhom, dans ce cas la, comment ta config peut marcher???
Je vais détailler le cas de figure que je rencontre.
Imagine ta lumière est éteinte et tu es en OFF côté jeedom. Cela veut dire que Palier Mode est à 0 et Palier est à 0.
Quelqu’un appui sur un interrupteur mural, du coup, Palier passe à 1 (le retour d’état venant de la seconde borne du télérupteur bipolaire)
D’après ton virtuel, Palier Set On vaut 0 (!1 et 0 donc 0 et 0) et Palier Set Off vaut 1 (1 et !0 donc 1 et 1).
Du coup, selon la « configuration commande » de Palier Set Off, tu as bien une valeur différente de 0 donc tu actives la commande de ton télérupteur par Jeedom ce qui a pour conséquence d’éteindre ta lampe puisqu’elle était allumée…
Ou est le loup? :rofl:

As-tu essayé ?

Bien sur et c’est l’effet que j’ai!! Des que j’allume une lumière à l’interrupteur, Jeedom l’éteint!

Ta commande info de retour d’état de ta lampe (inter chez moi), est-elle, pour « Gestion de la répétition des valeurs », en « jamais répéter » ?

Oui c’est bien le cas!
Mais dis moi, dans le déroulement des actions que j’ai décrit plus haut, où est l’erreur?
Parce que je pense clairement que le comportement que j’obtiens (et qui n’est pas celui souhaité) est normal au vue de la configuration…

Je pense que tu ne dois pas faire d’erreur.
Chez moi le retour d’état doit se faire pendant l’appui sur le poussoir et donc être transparent pour le télérupteur.
Le retour d’état est-il immédiat chez toi ?

Oui le retour d’état est instantané mais je vois pas trop où la latence du retour d’état jouerait dans ce que j’ai expliqué. Au pire, si le retour d’état avait de la latence, la lampe s’éteindrait avec la meme latence…

Si la bobine du télérupteur est excité par le poussoir et que Jeedom fait de même avant le relâchement du poussoir, le télérupteur ne voit qu’un seul appui.
Essaye des appuis plus long sur ton poussoir.

aucun changement… Je n’y comprends rien, enfin surtout, je ne comprends pas comment ta configuration peut marcher!!
Je pense que je vais abandonner la solution « full » virtuel et passer par un scénario déclenché…

Finalement, je suis aussi passé par un scénario car je vais avoir à faire la même chose avec un ipx.
Le virtuel s’en trouve très simplifié et pour le scénario quelques lignes suffisent.

Effectivement, je suis passé par un scénario, cela fonctionne parfaitement.
J’ai un scénario que j’appelle et c’est dans la commande de mon virtuel que je configure l’appel au scénario et que je passe les tags nécessaires pour que le scénario agisse sur la bonne lampe avec la bonne action (on ou off)…
Je te partage ma conf dès que je rentre chez moi. Elle est surement perfectible dans le code. On pourra essayer de sortir un truc potable!

Voila mon bloc code du scénario :

// CMDINFO= CMDACTION= ONOFF=

$tags = $scenario->getTags();
$cmdInfo = $tags['#CMDINFO#'];
$cmdAction = $tags['#CMDACTION#'];
$onOff = $tags['#ONOFF#'];
$scenario->setLog($cmdInfo . ' ' . $cmdAction . ' ' . $onOff);
if ($cmdInfo != $onOff) {
  cmd::byString($cmdAction)->execCmd();
}

Peux tu également me montrer comment tu passes tes tags dans l’appel du scénario?
Tu as bien un seul scénario pour gérer tous tes poussoirs?
Et c’est dans le scénario que tu définis les déclencheurs ou bien dans chaque commande du virtuel que tu configures le scénario?

Voila ce que j’ai fait de mon côté:
Un scénario unique sans déclencheur configuré:

$tags = $scenario->getTags(); // Récupération des tags passés en paramètre.
if($tags["#etat#"]==0 && $tags["#commande#"]=="ON"){
	$commande="#".$tags["#objet#"]."#";
	$cmd = cmd::byString($commande);
	$cmd->execCmd();
	$scenario->setLog("On allume la lumière");
} elseif($tags["#etat#"]==1 && $tags["#commande#"]=="OFF"){
	$commande="#".$tags["#objet#"]."#";
	$cmd = cmd::byString($commande);
	$cmd->execCmd();
    $scenario->setLog("On éteint la lumière");
}

Et pour chaque commande ON et OFF de mes virtuels, j’appelle le scénario dans les paramètres de la commande.
Voici un exemple pour une commande ON:

C’est sensiblement la même chose :

Le virtuel.

L’appel du scénario pour l’action ON.

Les logs du scénario.

[2020-10-01 11:38:27][SCENARIO] Start : Lancement provoque. Tags : {"#CMDINFO#":"1","#CMDACTION#":"#6298#","#ONOFF#":"0"}
[2020-10-01 11:38:27][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-10-01 11:38:27][SCENARIO] Exécution d'un bloc code
[2020-10-01 11:38:27][SCENARIO] 1 #6298# 0
[2020-10-01 11:38:27][SCENARIO] Durée d'exécution (depuis le 1er bloc code) : 26.38 millisecondes
[2020-10-01 11:38:27][SCENARIO] Fin correcte du scénario

Le résultat.

Capture d’écran du 2020-10-01 13-56-13