Prise en compte des infos même si c'est la même valeur

Bonjour,

Peut-être quelque chose de trivial mais je n’arrive pas à voir comment faire pour que mes virtuels prennent en compte des infos répétitives de même valeur.
Sur l’example, toutes les données remontent en même temps et sont validés mais la valeur de la battery n’évolue pas et l’info n’est pas historisee par jeedom. La date de dernière mise à jour ne s’actualise pas.

J’ai regardé un peu partout mais je ne trouve pas comment changer ce comportement si cela est possible.

Merci

Patrice

salut @patrice_payen

Peut être la :

1 « J'aime »

@olive, ça je l’avais déjà essayé sans succès.
Je continu de chercher mais je sèche un peu

Bonjour,

Malgré mes dizaines de test, j’ai toujours pas trouvé.
@loic, une idée ?

Merci

Salut,

Les commandes ont 2 dates concernant les valeurs:

  • La date de valeur qui correspond à la date à laquelle la valeur a été reçue,
  • La date de collecte qui correspond à la dernière date de réception d’une même valeur.
    image

La fonction displayDuration telle qu’elle est codée dans les widgets affiche la durée sur base de la date de valeur.

Tu souhaites avoir la durée sur la date de collecte c’est ça ?

Exactement, dans mon cas, même si la valeur est le même, j’aimerai avoir l’info de collecte.
Ici les valeurs remontent toutes en même temps sous forme json via MQTT. Donc il ne doit pas y avoir de différence.

Ces informations apparaissent sur la première page de la configuration des commandes (roue crantée sur la droite de la commande).

Je vois que tu utilises le widget gaugeIMG, tu peux essayer une modification dans le code du widget:

  • il faut se rendre dans le menu Outils->Widgets et cliquer sur le bouton code WidgetCode

  • sélectionner dashboard sur la gauche puis cmd.info.numeric.gaugeIMG.html au milieu, le code du widget apparaît dans la case de droite.

vers le milieu tu trouveras ce code:

    if ('#time#' == 'duree') {  
      jeedom.cmd.displayDuration(_options.valueDate,cmd.find('.timeCmd'));
      }
    else if ('#time#' == 'date') {
      let week = ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'];
   	  let date = new Date(_options.valueDate.replace(' ', 'T'));
      let t = _options.valueDate.split(/[- :]/);
	  let format = week[date.getDay()]+" "+t[2]+"/"+t[1];
      let time = "à "+t[3]+":"+t[4];
      cmd.find('.timeCmd').html(format+'<br>'+time);
      }
    else if ('#time#' == 'heure') {
      let t = _options.valueDate.split(/[- :]/);
      let time = "à "+t[3]+":"+t[4]+":"+t[5];  
      cmd.find('.timeCmd').html(time);
      } 

il faut remplacer toutes les mentions valueDate par la mention collectDate pour obtenir ceci au final :

    if ('#time#' == 'duree') {  
      jeedom.cmd.displayDuration(_options.collectDate,cmd.find('.timeCmd'));
      }
    else if ('#time#' == 'date') {
      let week = ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'];
   	  let date = new Date(_options.collectDate.replace(' ', 'T'));
      let t = _options.collectDate.split(/[- :]/);
	  let format = week[date.getDay()]+" "+t[2]+"/"+t[1];
      let time = "à "+t[3]+":"+t[4];
      cmd.find('.timeCmd').html(format+'<br>'+time);
      }
    else if ('#time#' == 'heure') {
      let t = _options.collectDate.split(/[- :]/);
      let time = "à "+t[3]+":"+t[4]+":"+t[5];  
      cmd.find('.timeCmd').html(time);
      } 

A priori ça devrait correspondre au résultat que tu souhaites obtenir.

NB: il sera nécessaire de redimensionner la tuile utilisant ce widget sur le dashboard pour que les modifications soient prises en compte.

@salviaf, merci. C’est exactement ce que je cherchais.
Peut-être une option dans les paramètres du widget ?

Encore merci pour ta présence et réactivité.

Patrice

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.