[VIRTUAL] Liste bouton avec retour d'état

Bonjour,

J"ai créé une liste de boutons que voici :
image

On y voit 3 boutons pour le chauffage : Confort / Eco / Hors gel.
Voici le Virtual associé :

De plus sur chaque commande action, j’ai ajouté un widget pour l’affichage. Voici un exemple :

Ce que je souhaite faire :
Récupérer / Envoyer l’information au widget afin qu’il sache s’il est ON ou OFF en fonction de l’état actuel pour afficher le bon icône.
Du coup que l’on puisse directement savoir via la liste lequel est actif (et donc pouvoir enlever la ligne « Etat actuel : Confort »)

J’ai essayé plusieurs combinaisons dans la configuration du Virtual sans résultat…

Est-ce que quelqu’un connaît la solution pour faire cela ?

Merci d’avance pour votre aide.

Cdt

Salut,

Chaque commande action doit envoyer une valeur à la commande info si possible la même que l’équipement d’origine.

Si c’est un mot (arrêt, confort, éco) la commande info peut rester de type autre, si c’est un nombre (0, 99, 30) elle devra être numérique

Hello @Salvialf,

Tout d’abord merci pour ton aide.

Effectivement, j’avais déjà fais le test. Je viens de le refaire en envoyant un string (l’équipement d’origine #[Appartement][Mode Chauffage][Absent]# étant une action je ne saurais pas être sûr de ce qu’il renverrait) :

Mais cela ne fonctionne pas mieux au niveau des widgets. Ceux-ci sont toujours en mode OFF.

Je pensais à la case valeur qui n’est pas remplie sous le nom des commandes rapatriées pas au niveau de la colonne « paramètres ».

Ah, faire comme ceci ?

Cela ne fonctionne pas, il est toujours en mode OFF.
Ce que j’ai également essayé de faire c’est de mettre ce code dans le OFF du widget mais sans résultat, il affiche toute la chaine sans interpréter le code :
#value# == ‹ Travail › ? :

Est-on sûr que les « Remplacements » sont pris en compte dans les widgets de type action ? J’en ai un en type info et je sais que le ON/OFF fonctionne bien.

OK en fait il n’y avait rien à changer à ta première copie d’écran, je viens de regarder sur le pc j’avais mal compris.

Par contre j’ai du mal à vraiment comprendre ce que tu cherches à faire… Tu as une commande nommée Confort sur laquelle tu veux appliquer un widget On/Off ?! Un widget On/Off s’applique sur 2 commandes (On et Off) d’un équipement.

Tu devrais (re)lire la doc des widgets:

J’ai remis comme le premier screen et suite à ton commentaire j’ai ajouté une valeur sur la colonne Valeur pour envoyer 1 ou 0 en fonction d’un test qui check si l’état de l’info virtuelle correspond à l’action. Voici le screen de ce que j’ai fais :

Cependant, ceci ne fonctionne toujours pas. Le rendu est toujours à OFF pour tous :
image

Pour ta question : je souhaite simplement savoir si la commande Confort est actuellement celle qui est active. Pour cela j’ai donc rajouté le test afin d’envoyer 1 ou 0 en fonction de l’information virtuelle Etat actuel :

Finalement, faute de possibilité, j’ai éclaté mon Virtual en 3 Virtual qui comporte chacun des ON OFF.
Avec comme résultat, par exemple :
image

C’est juste dommage car ça fait bien plus de Virtual à stocker donc la liste devient un peu illisible au bout d’un moment mais pas le choix à priori.

Salut oas6s,

Désolé, ce n’est pas une solution sexy,

Tu peux te débrouiller avec une seul virtuel, 3 lots de commandes on/off et 4 infos.
tu lies un on et 1 off à 1 info en binaire
pour chaque « on » tu ajoute dans sa conf les actions off des deux autres états , et tu met à jour ton info N°4, avec le mode souhaité ([edit] ce que tu dois faire à peu près dans 3 virtuels séparés)

Tu récupère bien tes 3 états on/off. Mais tu peux mettre tout à off.

Re,
Solution bis ([edit] suis en V4)

3 commandes On, 3 info binaires liées à ces on et 1 info générale
sur les on → configuration → Action après exécution de la commande → event sur la valeurs etat général à mettre à la valeur souhaitée
+
event sur les 2 autre valeur etat à passer à 0

widget (à modifier avec tes icones/images) :

<div class="cmd cmd-widget" data-type="action" data-subtype="other" data-cmd_id="#id#" data-template="tripleState" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="content-xs">
    <a class="btn btn-sm btn-default action cmdName tooltips" title="#name#">
      <span class="iconCmd"></span>
    </a>
  </div>
  <script>
    jeedom.cmd.update['#id#'] = function(_options){
      if (_options.display_value == '1' || _options.display_value == 1 || _options.display_value == '99' || _options.display_value == 99 || _options.display_value == 'on') {

          $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon_green fas fa-check"></i>'); // <--------- Mettre ici l'icone/image On
      } else {
          $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="fas fa-times"></i>');// <--------- Mettre ici l'icone/image Off
      }
    }
    jeedom.cmd.update['#id#']({display_value:'#state#'});
    $('.cmd[data-cmd_uid=#uid#] .action').off().on('click', function () {
      jeedom.cmd.execute({id: '#id#'});
    });
    if ($('.cmd[data-cmd_uid=#uid#]').last().prev().data('subtype') != undefined && $('.cmd[data-cmd_id=#id#]').last().prev().data('subtype') != 'other'
    && $('.cmd[data-cmd_uid=#uid#]').last().prev().css('display') != 'block') {
      $('.cmd[data-cmd_uid=#uid#]').last().prepend('<br/>');
    }
  </script>
</div>

et là tu as un bouton triple

image

bon, ici c’est trois fois la même icone, soit faire 3 widget différent ou y ajouter des paramètres optionnels

[edit]__________________________________________________________________

Plus simple, pour le widget, avec 3 commandes on et 1 seul info maitre (que j’ai mis de 1 à 3 pour faire simple)

Les commande « on » avec une option idName = « nom de l’etat » selon le bouton dans l’affichage et le widget :

<div class="cmd cmd-widget" data-type="action" data-subtype="other" data-cmd_id="#id#" data-template="btnAlert" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="content-xs">
    <a class="btn btn-sm btn-default action cmdName tooltips" title="#name#">
      <span class="iconCmd"></span>
    </a>
  </div>
  <script>
    jeedom.cmd.update['#id#'] = function(_options){
      if (_options.display_value == #idName#) {
          $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon_green fas fa-check"></i>');
      } else {
          $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="fas fa-times"></i>');
      }
    }
    jeedom.cmd.update['#id#']({display_value:'#state#'});
    $('.cmd[data-cmd_uid=#uid#] .action').off().on('click', function () {
      jeedom.cmd.execute({id: '#id#'});
    });
    if ($('.cmd[data-cmd_uid=#uid#]').last().prev().data('subtype') != undefined && $('.cmd[data-cmd_id=#id#]').last().prev().data('subtype') != 'other'
    && $('.cmd[data-cmd_uid=#uid#]').last().prev().css('display') != 'block') {
      $('.cmd[data-cmd_uid=#uid#]').last().prepend('<br/>');
    }
  </script>
</div>

On peut affiner, mettre une icone selon le idName d’ailleurs comme ça un seul widget

J’suis peut être pas très clair, n’hésites pas

[Edit 2] désolé ça commence à faire long, et je suis probablement pas dans les BPD.

2 fichiers de widgets (à mettre ds « html/data/customTemplates/dashboard » sans le .txt)
cmd.action.other.Triple_State.html.txt (1,4 Ko)
=> prend les icones attribuées aux commandes
paramètre du widget :
idName : la valeur donnée à la commande

cmd.action.other.Triple_state_Image.html.txt (1,5 Ko)
=> prend des images pour les statut on et off
paramètre du widget :
idName : la valeur donnée à la commande
imgOnUrl : l’url de l’image on
imgOffUrl : m’url de l’image off

virtuel tel que


=> « Etat_X » sont les valeurs à donner à Etat (l’info générale triple)

me donne :
image
(j’ai pris des images random que j’avais)

1 « J'aime »