Erreur sur Min Max

Bonne soirée,
Bien vu @mips le « ° » à la fin de la formule… C’est bizarre que ça marche.
La commande refresh d’un plugin virtuel est accessibl même si elle n’apparait pas dans la liste des commandes (pour qu’on ne puisse pas la supprimer dit @Loic ). Par exemple dans un scénario. On peut ainsi éviter le refresh par CRON. Par exemple sir la température change ou s’il elle change de plus de x° on lance le refresh.
De la même manière on pourrait sans doute s’affranchir des effets du lissage et de la compression des données par l’archivage en calculant et en stockant soi-même le max par un scénario et une variable.

C’est normal que ça fonctionne. On est en info de type Autre. Ce n’est que la valeur d’une commande suivie d’un texte. Même si dans ce cas la case Unité serait préférable.
Le calcul des maxBetween n’est pas non plus perturbé puisque c’est la valeur de la temperature d’origine qui est utilisée et pas celle du virtuel.

@ste.che
Pour montrer l’effet du lissage sur maxBetween, j’ai fait un virtuel:
image

Le curseur en bas fait varier les valeurs des 2 widgets rain à gauche en même temps. J’ai fait varier le curseur de -1 à 180.
A chaque variation du curseur, il faut que je clique sur Refresh pour que les min et max se recalculent.

  • Le widget du bas est en lissage Aucun. Les Min et Max correspondent aux valeurs extrêmes des variations. Dans la bdd, il y a une valeur à chaque variation.
  • Celui du haut est lissé: Moyenne. les Min et Max correspondent aux valeurs extrêmes lissées par tranche de 5 minutes. Dans la bdd, il n’y a qu’une valeur par tranche de 5 minutes.
1 « J'aime »

Dans la formule il y a bien le caractère ° qui a été ajouté après la commande:

#[Chambre][Température chambre][Température]#° > maxBetween(#[Chambre][Température chambre][Température]#,today 00:00:00,now)°

Il faudrait le retirer de cette formule.

1 « J'aime »

Je n’avais pas vu cette formule. Je suis resté sur le titre de la discussion et le 1er post avec les valeurs max inférieures à la temp actuelle. Le scénario, c’est l’étape après.

Salut @jpty,
Entre temps j’ai fait quelques essais . Le « ° » n’empêche pas la formule de fonctionner effectivement (testeur d’expression), même avec une commande info numérique. Cependant on ne devrait pas pouvoir exploiter le résultat dans un calcul numérique.
Ton exemple tend à monter qu’il ne suffit pas que la valeur d’une commande change (ton slider) dans un virtuel pour qu’il y ait un refresh automatique, ce que je croyais naïvement .

Je n’avais pas bien appréhendé le concept de lissage tous les 5mn (pas trouvé dans la doc officielle qui parle surtout de l’archivage de l’historique par paquet de 2heures).

sinon j’ai glané des infos dans ce post « filtrage-des-donnees-recues-min-max-errones/5267 » (je sais pas l’insérer).
Je me demande par ailleurs quelle valeur de la commande utilise le paramètre « Now » dans les formules type between: la valeur #value# ou la dernière valeur historisée ??

Voilà pour l’insertion de ton lien :

Tu sélectionnes le bouton « … » en bas du post souhaité puis le bouton de lien (chaîne) que tu peux copier et coller dans un autre post

Super! Marci…

Bonjour,
Je n’ai trouvé les 5 minutes pour le lissage qu’en surveillant la bdd. Je n’ai pas regardé le code source.
AMHA, il ne devrait pas y avoir de lissage dans la table history. Toutes les valeurs devraient être conservées et uniquement lissées chaque nuit lors de leur archivage.
Si on prend un exemple de 5 valeurs arrivant dans un intervalle de 5 minutes, 200 180 170 200 0 Jeedom va les lisser au fur et à mesure de leur arrivée en (200+180)/2= 190 puis (190+170)/2 = 180 puis (180+200)/2 = 190 puis (190+0)/2 = 95 alors que la moyenne des 5 valeurs sur les 5 minutes est 150.

now c’est une des valeurs possible du 1er paramètre de strtotime PHP: strtotime - Manual
Dans l’exemple de cette discussion, il veut la valeur max d’une commande entre minuit et maintenant.

OK. Ca correspond bien à ça:

J’ai bien compris le sens php de « now ». Je me demandais simplement si, quand on demandait la valeur d’une commande à l’instant « now », il allait chercher cette valeur « value », stockée je ne sais où (table des commandes ?) ou bien prendre la dernière valeur enregistrée dans la fameuse table history. Pure curiosité…

Oui, l’historisation est un vaste sujet déjà abordé maintes fois. :thinking:

Pour les valeurs actuelles, il va les chercher en priorité en cache.

Alors, peut on dire que le max (des températures dans mon cas) sur une journée n’est pas forcément le max des valeurs discrètes mesurées lors de cette même journée ?

@ste.che , @jpty ,

AMHA ( :grin: Je ne connaissais pas cet acronyme) pas forcément « exactement »… . J’ai reproduit un virtuel similaire au tien et j’ai déjà constaté des soucis similaires : température actuelle inférieure au minimum calculé. Je pense que le refresh du virtuel est la cause principale.

Ce sujet m’a interpellé car j’ai rencontré des problèmes similaires sur des consos de convecteurs électriques. Mes radiateurs connectés indiquent la consommation globale d’énergie depuis leur mise en service, en KWxh. Le rythme est beaucoup plus lent : minimum 1 h pour 1 kWxh avec un convecteur de puissance 1 KW pendant 1 heure. Croisé avec le CRON au 1/4h du plugin qui va chercher l’information ça ne fait pas beaucoup de valeurs au final. Pas perturbé par le lissage « 5 mn » et très peu par le lissage 24h.
Sauf que si il n y a pas eu de changement sur une journée il n’y a pas de valeur dans la bdd « archive-history » et les formules max min… basées sur yesterday, to day-1 etc n’aiment pas beaucoup. Le but: calculer la consommation du jour et de la veille).

En conclusion si on veut utiliser efficacement ces formules il faut bien comprendre les mécanismes d’historisation, d’archivage et d’interprétation des dates au format relatif PHP.

Enfin pour le problème des températures min max, des widgets ont étés développés (voir @jag notamment) mais je n’ai aucune idée de comment ils traitent le problème ni même si ils le traitent.

Il vous reste à faire:

  • Changer le lissage des valeurs remontées par vos capteurs en Aucun dans le plugin.
  • Sur le virtuel, passer le type des valeurs où il y a les calculs maxBetween en Numérique et enlever les ° pour avoir des valeurs numériques utilisables ensuite dans des scénarios. ( ° à mettre dans le champ Unité de la commande si besoin)
  • Mettre l’auto actualisation du virtuel à la minute * * * * *

Vous en êtes où ? :wink:

1 « J'aime »

Hello je vais lire tout simplement l historique de la commande et je ne fais rien d autre

@JAG
Merci de ton intervention. Donc il peut arriver épisodiquement et temporairement que l atempérature affichée soit supérieure au max ou inférieure au Min…

Ah je ne pense pas

J’ai ouvert un ticket pour avoir le retour de l’équipe Jeedom !

Vous avez déjà eu le retour de l’équipe Jeedom dans ce que Garnoulle62 a écrit au dessus:

J’ai quand même du mal à comprendre si on peut avoir le vrai max et le vrai min ou si on ne peut pas. Un max et un min sont des valeurs discrètes qui ne doivent pas être modifiées par un méthode de lissage ou autre. Si ce n’est pas un vrai min ni un vrai max, il faut l’indiquer dans la doc et pourquoi ne pas corriger ce comportement ?

Les valeurs sont lissées avant le calcul des max, min.
Lisez toute la discussion fournie en lien juste au dessus. Toutes les réponses à vos questions sont déjà dedans.

Vous n’avez pas répondu: