Plugin virtuel, calcul à minuit et debian 12

Bonjour

J’ai un souci sur un virtuel de calcul avec une formule du type:

maxBetween(#[Energie][PV_Total_Int][PV_Total_int]#, midnight, now) - minBetween(#[Energie][PV_Total_Int][PV_Total_int]#, midnight, now) 

Quand il se lance à minuit, la commande #[Energie][PV_Total_Int][PV_Total_int]# (virtuel aussi) n’a pas encore était historisée et donc cela bug:

2025-12-13 00:00:02	http.error_evaluateExpression	Expression en erreur : maxBetween(#20831#, midnight, now) - minBetween(#20831#, midnight, now)
Expression décodée : maxBetween([Energie][PV_Total_Int][PV_Total_int](23879279), midnight, now) - minBetween([Energie][PV_Total_Int][PV_Total_int](23879279), midnight, now)
Message : Unsupported operand types: string - string

La commande #20831# correspond bien à #[Energie][PV_Total_Int][PV_Total_int]#

À part ne pas lancer le calcul à ce moment précis comment résoudre proprement cette erreur ?

Merci

Antoine

Salut,

Pas évident avec juste un virtuel.
Ca aurait été un scénario, j’aurais forcé la valeur à 0 si elle n’est pas présente dans l’historique mais bon en virtuel ça reste plus compliqué. Peut etre avec une expression ternaire en php ?

Sinon, perso pour remettre à zéro ma valeur de conso journalière à minuit pile avant que la première mesure de conso ne soit encore remontée, je procède comme ceci avec un scénario :

1 « J'aime »

Bonsoir,

Pourquoi ne pas mettre une expression ternaire du genre :

(strtotime(now) - strtotime(midnight) < 10 ? 0 : maxBetween(#[Energie][PV_Total_Int][PV_Total_int]#, midnight, now) - minBetween(#[Energie][PV_Total_Int][PV_Total_int]#, midnight, now) )

Je crois que je vais simplement passer le rafraîchissement du virtuel par scénario et non plus par le cron intégré. Une lecture d’ancien post semble indiquer que c’est faisable.

Merci

Antoine

Alors voici les pistes que j’ai testé et validé:

  1. un cron excluant les heures pleines, j’ai pas trouvé comment exclure juste minuit en écrivant un CRON unique:
1-59/5 * * * *
  1. refresh par commande rafraichir lancé par scénario (solution retenue) comme suggéré par Aurel. Quand la commande utilisée dans les calculs du virtuel est mise à jour, un scénario lance un refresh du second virtuel. (en cours de test)

Antoine

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