Affichage de la puissance électrique dans un virtuel

Bonjour,
Je suis en d’intégrer mon installation solaire dans Jeedom et, par ce faire, créer un Virtuel qui m’affiche la consommation totale, la puissance générée et le résultat net.

Dans mon virtuel, j’ai configuré toutes mes données avec l’unité « W ». Lorsque la consommation varie, l’affichage de l’unité varie de « W » à « kW » selon la valeur à afficher.

Dans certains cas, il arrive que l’unité (« W » ou « kW ») ne soit pas mis à jour dynamiquement sur l’interface (par exemple: « 465.45 kW »). Un refresh « manuel » de la page est nécessaire pour que l’unité à afficher soit la bonne.

Est-ce quelqu’un aurait déjà eu ce problème de mis à jour sporadique de l’unité et saurait comment le régler?

Merci pour votre aide

Jean-Philippe
puissance
template.txt (1,6 Ko)

Bonjour,

Vous voulez que jeedom ne convertise pas en kW ou vous voulez régler le problème d’affichage (W qui reste au lieu de kW)?

Si possible, je préfèrerais régler le problème d’affichage (que la conversion se fasse sans problèmes). Si cela ne s’avérrait pas possible, une solution pour éviter la conversion pour être bienvenue comme « workaround ».

c’est un widget custom ou un widget core?

c’est quoi le « template.txt » donné? (que je n’ouvrirai pas)

Il s’agit d’un widget custom.
Le fichier « template.txt » contient le code Html de mon Widget (si nécessaire pour l’analyse).

Alors le problème est là, vous avez mis « W » en dur dedans?
pouvez-vous coller le contenu dans un Texte préformaté dans le message (bouton </>)?

comme ceci:

saisissez ou collez du code ici
<div class="cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-template="badge" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="title #hide_name#">
    <div>#name_display#</div>
  </div>
  <div>
    <span class="energyResume">#state#</span>
  </div>
<style>
        .energyResume {
                font-size: 3em;
                vertical-align: middle;
                text-align: left;
                display: inline-block;
                padding-right: 50px;
                padding-top: 25px;
                padding-left: 40px;
                width: 230px;
                margin-bottom: -10px;
        }
</style>
  <script>
    jeedom.cmd.update['#id#'] = function(_options){
      $('.cmd[data-cmd_id=#id#]').attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)
      var resultat = _options.display_value;
        if (resultat == 0) {
                $('.cmd[data-cmd_id=#id#] .energyResume').empty();
        }
      if (resultat < 0) {
                        $('.cmd[data-cmd_id=#id#] .energyResume').empty().append('<p style="color:red"><b>' + (-_options.display_value) + ' #unite# </b></p>');
      } else {
                        $('.cmd[data-cmd_id=#id#] .energyResume').empty().append('<p style="color:green"><b>' + _options.display_value + ' #unite# </b></p>');
      }

    }
    jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
  </script>
</div>

Désolé, voilà le code que j’ai configuré pour l’affichage des données. La conversion entre « W » et « kW » se fait 99% du temps correctement, c’est le dernier 1% où la conversion ne se fait pas qui m’embête…

non, elle ne se fait que lors du refresh initial;

si vous laissez la page ouverte et que le core décide de passer de W à kW ou inversement, l’unité ne suivra pas car vous l’avez mise « en dur » via un tag #unite#, ce tag ne sera remplacé que lors du premier refresh (premier affichage de la page/du widget) et pas à chaque changement de valeur (valeur qui se trouve dans le paramètre _options de la fonction: _options.display_value)

donc vous devez récupérer l’unité de là, via _options.unit

ca donnera un truc du genre (à modifier 2 fois dans votre code):

... + (-_options.display_value) + ' ' + _options.unit + '</b></p>');

et du coup ne pas oublier de la fournir lors du premier appel:

jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#', unit: '#unite#'});

Super, merci!
Je vais tester ça et vous tiens au courant.