Pas de mise à jour de la valeur si la valeur dépasse le max

Bonjour,

je viens de m’apercevoir d’un probleme sur la mise à jour d’une info d’un virtuel.

Un exemple sera plus parlant:
Je paramètre le max à 25 (ce qui permet de définir la plage d’affichage d’un widget)

En changeant la valeur de l’info à 20 puis 30, via un scénario tout simple:

l’info s’update pour 20 mais ne s’update pour 30. Pour moi elle devrait passer au max soit 25. En renvoyant ensuite 24, l’info s’update correctement.

[2022-06-27 21:18:06][SCENARIO] -- Start : Scenario lance manuellement.
[2022-06-27 21:18:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2022-06-27 21:18:06][SCENARIO] Changement de  [Technique][Module_test][state] à 20
[2022-06-27 21:18:06][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-06-27 21:20:08][SCENARIO] -- Start : Scenario lance manuellement.
[2022-06-27 21:20:08][SCENARIO] - Exécution du sous-élément de type [action] : action
[2022-06-27 21:20:08][SCENARIO] Changement de  [Technique][Module_test][state] à 30
[2022-06-27 21:20:08][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-06-27 21:20:34][SCENARIO] -- Start : Scenario lance manuellement.
[2022-06-27 21:20:34][SCENARIO] - Exécution du sous-élément de type [action] : action
[2022-06-27 21:20:34][SCENARIO] Changement de  [Technique][Module_test][state] à 24
[2022-06-27 21:20:34][SCENARIO] Fin correcte du scénario

Vous confirmez que vous reproduisez ce comportement ?
Est ce un probleme connu et en cours de correction ?
Y a t il un moyen de contourner simplement ?

Pour moi c’est le comportement normal.
Ca permet d’exclure les valeurs incorrectes/hors-norme

1 « J'aime »

Salut,

Un post qui confirme ce que dit @tomtom .

OK mais pourtant dans les widgets, il y a bien une correction de la valeur pour mise à l’echelle si celle-ci dépasse le max (ou le min):

var position = _options.display_value
      var minValue = ('#minValue#' == '') ? 0 : parseInt('#minValue#')
      var maxValue = ('#maxValue#' == '') ? 100 : parseInt('#maxValue#')
      if (position > maxValue) position = maxValue
      if (position < minValue) position = minValue

C’est ce que je comptais utiliser avec une data qui varie de 0 à 60 par pas de 0.05 (info de pluie d’openweather). J’aurais besoin de voir les petites variations jusqu’à 10 (au delà de 10 pas besoin, 10 étant déjà une bonne grosse pluie) Y a un moyen de récupérer l’information comme quoi la valeur n’est pas mise à jour car out of range ?

Tu pourrais faire un truc comme ça en définissant dans un bloc code l’id de la commande. C’est sûrement à améliorer mais ça doit le faire.

$cmdId = cmd::byId(1510);
$maxvalue = $cmdId->getConfiguration('maxValue');

$scenario->setLog('max : '.$maxvalue);
$tags['#maxvalue#']  = $maxvalue;

$scenario->setTags($tags);

Ensuite reste à faire une petite comparaison dans ton scénario avec tag(maxvalue) pour savoir quoi faire par rapport à la valeur que tu voulais injecter.

1 « J'aime »

Merci pour la proposition, je vais étudier celà.
Sinon, vu que j’étais en train de me faire un widget custom sur la base du widget vertical, je vais surement fixer la maxvalue à 10 au niveau du widget. Et maintenant que je connais la limitation/l’utilisation du max value au niveau de chaque commande, je vais certainement laisser ce champs vide.

bonjour dans la config
au niveau valeur
valeur > 25 ? 20 : valeur

si la valeur est supérieur a 25 affiche 20 sinon la valeur

pour que tu comprennes regarde le dernier screen

1 « J'aime »

Ca peut être effectivement une solution de contournement.
Mais après réflexion, si la conception de ces valeurs min / max a été pensées de façon à exclure les valeurs incorrectes/hors-norme, il pourrait être intéressant de pouvoir gérer nativement la valeur à considérer en cas d’out of range. Par exemple avoir une option au niveau de la commande permettant de sélectionner la valeur par défaut à afficher: pas de mise à jour / max / valeur perso (-1).

c’est pas du contournement ; c’est une possibilités offert en natif, a nous de l’utiliser comme bon nous semble.

je doutes que cette option « valeur par default » existe un jour !

cette possibilités et tres peu abordé mais tres utile le mini/max est intégrables, tous comme inversé la valeur.

exemple faire un arrondi « personnalisé demi degré » un widget « html » ne modifiera pas la valeur enregistré dans la bdd avec cette possibilité si ! il faut désactiver l’enregistrement redondant. donc pour moi « sauf a vouloir garder la valeur reel » c’est la bonne manière.

un autre exemple que j’utilise

ceil(#value#/5)*5

unité 5,10,15,…
pour temperature eau chaude sanitaire et radiateur

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