Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Résolu] Changer la valeur d'état d'un widget officiel

Pour échanger sur les plugins classés en catégorie "Programmation"
Répondre
Kyoshi
Timide
Messages : 429
Inscription : 04 mai 2018, 14:05

[Résolu] Changer la valeur d'état d'un widget officiel

Message par Kyoshi » 21 août 2019, 18:20

Hello,

Je viens de domotiser ma porte de garage à l'aide d'un Fibaro Smart Implant FGBS-222 associé à un détecteur magnétique de porte (fil du détecteur sur l'une des entrées du fgbs-222).

J'ai d'abord voulu utiliser un widget non officiel mais je rencontre un souci de refresh sur le Dashboard (widget certainement pas à jour d'après ce que j'ai pu lire dans les topics). Il fallait que je refresh a part pouvoir voir la porte de garage du widget ouverte.
J'ai donc associé le widget officiel garagebarrieroperator.

Si la porte est fermée, l'icône montre bien la porte fermée. Jusque-là tout va bien :).
Si par contre, j'ouvre la porte, il m'indique une position inconnue (mais plus de problèmes de refresh).

Si j'ai bien compris, le widget attend une valeur de 255 pour indiquer que la porte est ouverte.
Or, la valeur de mon contacteur est en binaire. Du coup, c'est ouvert à 1 et non à 255.

D'après ce que j'ai pu trouver sur le forum, il suffisait d'aller dans les paramètres de la commande et via un onglet code, on pouvait activer la personnalisation et changer la valeur 255 en 1.
Or... Pas de menu code ou bouton pour personnaliser cela...

Si quelqu'un peut m'indiquer la marche à suivre, je suis preneur :)

Merci d'avance.
Dernière édition par Kyoshi le 23 août 2019, 09:06, édité 1 fois.

Avatar de l’utilisateur
Claude69
Actif
Messages : 2088
Inscription : 04 avr. 2015, 07:57
Localisation : Nord de Lyon

Re: Changer la valeur d'état d'un widget officiel

Message par Claude69 » 21 août 2019, 18:43

Hello
Dans les paramètres, puis configuration et dans formule de calcul tu mets :
#value# * 255
Gestion d'ouverture / fermeture Portail et garage
Gestion filtration piscine
Divers éclairages
Et tout plein d'autres choses ...
JEEDOM NUC 3.3.33 ULTIMATE

Mon matériel ici

Kyoshi
Timide
Messages : 429
Inscription : 04 mai 2018, 14:05

Re: Changer la valeur d'état d'un widget officiel

Message par Kyoshi » 21 août 2019, 20:01

Claude69 a écrit :
21 août 2019, 18:43
Hello
Dans les paramètres, puis configuration et dans formule de calcul tu mets :
#value# * 255
Hello,

Merci de ton retour. Très bonne idée.
Néanmoins cela ne fonctionne pas.

Mon détecteur est de type normalement fermée.
Dans les paramètres de mon état, je dois inverser la valeur pour avoir une porte fermée quand elle est fermée.

J'ai raconté une bêtise (désolé) dans mon premier post. Lorsque la valeur est à 1, la porte est fermée (j'ai un scénario qui m'envoie bien porte fermée lorsque cela répond à la condition : #[Garage][Porte][Etat porte]#==1). Et le contraire quand la valeur est à 0.

Dans les commandes, je n'ai rien indiqué dans la valeur de retour d'état.
Dans les paramètres, si j'indique une formule de calcul "#value# * 255", cela ne change rien.

Il faut que je joue avec #state# (ça a l'air d'être cette variable qui est utilisé), c'est "inconnu" dans tous les cas.
Sauf si j'arrête l'inversion de la valeur. Là, il m'indique que c'est fermé tout le temps.

Avatar de l’utilisateur
Salvialf
Helper
Messages : 1324
Inscription : 24 févr. 2018, 09:37
Contact :

Re: Changer la valeur d'état d'un widget officiel

Message par Salvialf » 21 août 2019, 22:17

Salut,

Si ta commande est bien une info binaire tu peux utiliser le widget IconInfo en ajoutant 2 images de ton choix pour la porte de garage ouverte et fermée. Si c'est une info numérique tu as le widget MultiOuvrants.
VM Jeedom 3.2.16 sous Proxmox 5.4 sur NUC5i5RYH (Debian 9.9)
Helper Officiel Jeedom
Widgets développés
Téléchargement d'icônes domotique (Topic Forum)

Avatar de l’utilisateur
Claude69
Actif
Messages : 2088
Inscription : 04 avr. 2015, 07:57
Localisation : Nord de Lyon

Re: Changer la valeur d'état d'un widget officiel

Message par Claude69 » 21 août 2019, 22:33

Essaye :
abs(#value#-1) *255
Et tu enlèves « inverser »
Gestion d'ouverture / fermeture Portail et garage
Gestion filtration piscine
Divers éclairages
Et tout plein d'autres choses ...
JEEDOM NUC 3.3.33 ULTIMATE

Mon matériel ici

Kyoshi
Timide
Messages : 429
Inscription : 04 mai 2018, 14:05

Re: Changer la valeur d'état d'un widget officiel

Message par Kyoshi » 22 août 2019, 10:31

Hello,

Merci de votre retour à tous les deux.
Salvialf a écrit :
21 août 2019, 22:17
Salut,

Si ta commande est bien une info binaire tu peux utiliser le widget IconInfo en ajoutant 2 images de ton choix pour la porte de garage ouverte et fermée. Si c'est une info numérique tu as le widget MultiOuvrants.
Merci, je vais regarder cela de plus près et faire des essais.
Même si je ne l'utilise pas pour la porte de garage, il me sera certainement utile ailleurs.
Claude69 a écrit :
21 août 2019, 22:33
Essaye :
abs(#value#-1) *255
Et tu enlèves « inverser »
Merci, très bonne idée mais cela ne fonctionne pas non plus.
La valeur de ouvert reste à 1 et non à 250. On doit ne pas pouvoir jouer avec autre chose que 0 et 1 vu que c'est du binaire au départ.
Cela produit donc, sur le Dashboard, le même effet que si je coche "Inverser".

En attendant de tester le widget proposé par @Claude69, j'ai modifié le code du widget... Enfin... Les 4 fichiers cmd.action.other.garageBarrierOperator.html en ajoutant un elseif :

Code : Tout sélectionner

      //Gestion ouverture binaire
      }else if(_options.display_value == '1'){
        // Opened
        if (jeedom.cmd.normalizeName('#name#') == 'on') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                  $('.cmd[data-cmd_id=#id#]').show();
                  $('.iconCmd#uid#').append('<i class="icon jeedom-garage-ouvert fa-2x"></i>');
                  $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Ouvert');
                }
      //Fin gestion ouverture binaire
Dommage d'en arriver là, mais bon.

Kyoshi
Timide
Messages : 429
Inscription : 04 mai 2018, 14:05

Re: Changer la valeur d'état d'un widget officiel

Message par Kyoshi » 22 août 2019, 19:13

Bonjour @loic ,

Est-ce possible d'intégrer une mise à jour pour gérer les contacteur binaire?

Avatar de l’utilisateur
Claude69
Actif
Messages : 2088
Inscription : 04 avr. 2015, 07:57
Localisation : Nord de Lyon

Re: Changer la valeur d'état d'un widget officiel

Message par Claude69 » 22 août 2019, 19:26

Est ce que tu as bien mis en numérique ? J’utilise la formule que je t’ai donné pour mes volets et elle fonctionne
Gestion d'ouverture / fermeture Portail et garage
Gestion filtration piscine
Divers éclairages
Et tout plein d'autres choses ...
JEEDOM NUC 3.3.33 ULTIMATE

Mon matériel ici

Avatar de l’utilisateur
Salvialf
Helper
Messages : 1324
Inscription : 24 févr. 2018, 09:37
Contact :

Re: Changer la valeur d'état d'un widget officiel

Message par Salvialf » 22 août 2019, 19:28

C'est une commande action et pas une info que tu utilises du coup ? Tu peux donc utiliser le widget IconAction au lieu de IconInfo ...même principe tu ajoutes les icônes de ton choix.

Le code du widget garageBarrierOperator inclus dans jeedom est ici: https://github.com/jeedom/core/blob/mas ... rator.html

Code : Tout sélectionner

<div style="width:90px;min-height:70px;" class="cmd #history# tooltips cmd-widget" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#">
    <center>
        <!--<span class='cmdName' style="font-weight: bold;font-size : 12px;">#name_display#</span>-->
        <span class="cursor iconCmd#uid#" style="font-size: 2em;"></span>
      <span style="font-weight: bold;font-size : 12px;"  class='cmdState' >#state#</span>
    </center>
    <script>
      jeedom.cmd.update['#id#'] = function(_options){
      $('.iconCmd#uid#').empty();
      console.log(_options.display_value);
      if(_options.display_value == '0'){
        // Closed
        if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.iconCmd#uid#').append('<i class="icon jeedom-garage-ferme fa-2x" ></i>');
                    $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Fermé'); 
                }
      }else if(_options.display_value == '252'){
        // Closing
        if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.iconCmd#uid#').append('<span class="fa-stack"><i class="icon jeedom-garage-ouvert fa-stack-2x"></i><i class="fa fa-caret-down fa-stack-1x text-success"></i></span>');
                    $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Fermeture');
                }
        
      }else if(_options.display_value == '253'){
        // Stopped
        if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                  $('.cmd[data-cmd_id=#id#]').show();
                  $('.iconCmd#uid#').append('<span class="fa-stack"><i class="icon jeedom-garage-ouvert fa-stack-2x"></i><i class="fa fa-stop fa-stack-1x "></i></span>');
                  $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Arrêté');
                }
         
      }else if(_options.display_value == '254'){
        // Opening
        if (jeedom.cmd.normalizeName('#name#') == 'on') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                   $('.cmd[data-cmd_id=#id#]').show();
                   $('.iconCmd#uid#').append('<span class="fa-stack"><i class="icon jeedom-garage-ferme fa-stack-2x"></i><i class="fa fa-caret-up fa-stack-1x text-success"></i></span>');
                   $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Ouverture');
                }
        
      }else if(_options.display_value == '255'){
        // Opened
        if (jeedom.cmd.normalizeName('#name#') == 'on') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                  $('.cmd[data-cmd_id=#id#]').show();
                  $('.iconCmd#uid#').append('<i class="icon jeedom-garage-ouvert fa-2x"></i>');
                  $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Ouvert');
                }
        
      }else{
        // Unknown
        if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                  $('.cmd[data-cmd_id=#id#]').show();
                  $('.iconCmd#uid#').append('<i class="fa fa-question-circle fa-2x"></i>');
                  $(".cmd[data-cmd_id=#id#] .cmdState").empty().append('Inconnu');
                }
        
      }
      }
      jeedom.cmd.update['#id#']({display_value:'#state#'});
      $('.iconCmd#uid#').on('click', function() {
        jeedom.cmd.execute({id: '#id#'});
     });
    </script>
</div>
Sinon tu peux t'en faire un widget perso et juste remplacer 255 par 1.
VM Jeedom 3.2.16 sous Proxmox 5.4 sur NUC5i5RYH (Debian 9.9)
Helper Officiel Jeedom
Widgets développés
Téléchargement d'icônes domotique (Topic Forum)

Kyoshi
Timide
Messages : 429
Inscription : 04 mai 2018, 14:05

Re: Changer la valeur d'état d'un widget officiel

Message par Kyoshi » 23 août 2019, 09:05

Claude69 a écrit :
22 août 2019, 19:26
Est ce que tu as bien mis en numérique ? J’utilise la formule que je t’ai donné pour mes volets et elle fonctionne
Arf... Quel couillon des fois!
Effectivement, je n'avais bêtement pas basculer en numéro.

Cela fonctionne bien mieux comme cela :mrgreen:

Merci beaucoup pour ton aide.

Salvialf a écrit :
22 août 2019, 19:28
C'est une commande action et pas une info que tu utilises du coup ? Tu peux donc utiliser le widget IconAction au lieu de IconInfo ...même principe tu ajoutes les icônes de ton choix.

Le code du widget garageBarrierOperator inclus dans jeedom est ici: https://github.com/jeedom/core/blob/mas ... rator.html


Sinon tu peux t'en faire un widget perso et juste remplacer 255 par 1.
Hello,

C'est une info, qui était lié à une commande.
J'avais bien modifié le code sans soucis.

Mais je n'ai pas remplacé le 255, j'ai ajouté une condition (si 1 = fermé).
Parce que si je dois un jour utiliser ce même widget avec un contacteur qui me donne 255 en mode ouvert...

Mais la solution de @Claude69 est pleinement fonctionnelle (une fois que l'on configure correctement la valeur :D ).


Merci à tous les deux pour votre aide.

Répondre

Revenir vers « [Catégorie] Programmation »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité