Scenario de différence d'index pour calcul conso instantanée

Bonjour,

Je souhaite calculer une conso avec un index toute les 30 min
Voici le scenario :
Déclenchement par l’index
Action : Event → Commande : #[Maison][Consommation générale][Conso Instantanée]# → Valeur : #[Maison][Consommation générale][Instantanée]#-#[Maison][Compteur][Index]#
Dans : 1
Action : Event → Commande : #[Maison][Last Value][Index]# → Valeur : #[Maison][Compteur][Index]#

Dans un premier temps je fais la différence pour nourrir le virtuel « Conso Instantanée » puis dans un second temps je retiens l’index venant de tomber pour pouvoir rééffectuer le calcul au prochain déclenchement.

Parfois ça fonction, puis parfois j’ai des trous qui correspondent à cette erreur :

Too few arguments to function scenarioExpression::statisticsBetween(), 3 passed in /var/www/html/core/class/scenarioExpression.class.php on line 1271 and exactly 4 expected

Déroulement normal du scénario :

[2023-10-23 15:14:56][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Maison][Compteur][Index] (58476).
[2023-10-23 15:14:56][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-10-23 15:14:56][SCENARIO] Changement de  [Maison][Consommation générale][Conso Instantanée] à 58476-58469
[2023-10-23 15:14:56][SCENARIO] Exécution d'un bloc élément : 538
[2023-10-23 15:14:56][SCENARIO] - Exécution du sous-élément de type [condition] : in 1
[2023-10-23 15:14:56][SCENARIO] Evaluation de la condition : [1] = 1
[2023-10-23 15:14:56][SCENARIO] Tâche :  538  programmée à :  2023-10-23 15:15:56 (+ 1 min)
[2023-10-23 15:14:56][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-10-23 15:15:02][SCENARIO] ************Lancement sous tâche**************
[2023-10-23 15:15:57][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-23 15:15:57][SCENARIO] Changement de  [Maison][Last Value][Index] à 58476
[2023-10-23 15:15:57][SCENARIO] ************FIN sous tâche**************

Lorsque le déroulement est anormal :

[2023-10-23 15:44:56][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Maison][Compteur][Index] (58482).
[2023-10-23 15:44:56][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-10-23 15:44:56][SCENARIO] Too few arguments to function scenarioExpression::statisticsBetween(), 3 passed in /var/www/html/core/class/scenarioExpression.class.php on line 1271 and exactly 4 expected
[2023-10-23 15:44:56][SCENARIO] Exécution d'un bloc élément : 538
[2023-10-23 15:44:56][SCENARIO] - Exécution du sous-élément de type [condition] : in 1
[2023-10-23 15:44:56][SCENARIO] Evaluation de la condition : [1] = 1
[2023-10-23 15:44:56][SCENARIO] Tâche :  538  programmée à :  2023-10-23 15:45:56 (+ 1 min)
[2023-10-23 15:44:56][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-10-23 15:45:03][SCENARIO] ************Lancement sous tâche**************
[2023-10-23 15:45:56][SCENARIO] - Exécution du sous-élément de type [action] : do
[2023-10-23 15:45:56][SCENARIO] Changement de [Maison][Last Value][Index] à 58482
[2023-10-23 15:45:56][SCENARIO] ************FIN sous tâche**************

Pourquoi un coup ça fonctionne et un autre ça marche pas?

Merci d’avance pour vos réponses :slight_smile:

Bonsoir,

Peux-tu montrer ton déclencheur et une capture de ton scénario ?

Déclencheur :

Scenario :

Je me suis trompé dans mon topic sur la valeur appliquée à « Conso Instantanée » , c’est : « Index - Last value Index »

Bon alors il y a 2 choses que je ne comprends pas.

Je ne vois pas de statisticsBetween dans ton scénario donc je vois pas bien comment cette erreur peut apparaître dans les logs !?

A quoi ça sert de programmer dans 1mn la mise à jour de last_value ? Pourquoi tu ne le fais pas tout de suite ?

Bah peu importe, c’est parce que je ne veux pas qu’il y ai de croisement. (Si la ligne d’après se fait avant celle d’en haut, même si je sais que c’est impossible, au cas où, 1min c’est pas grave) et ce n’est pas ce qui fait dysfonctionner.

Bah moi non plus, je vois pas comment c’est possible. J’ai des stat between sur d’autres commandes. La commande de conso instantanée par exemple pour calculer dans un virtuel la conso d’une journée, d’une semaine et d’un mois.

Pas grave c’est toi qui le dit.

Elle est mise à jour à interval régulier ta commande Index ?
Parce que tu ne peut pas. Calculer un instantané comme ça.

Une valeur instantanée c’est une valeur qui fait une différence d’index sur un interval de temps bien défini.

Un index est en Wh ou kWh et un instantané est plutôt en W ou kW.

Imaginons que tu es 100 dans last index.
Index passe à 200 le scénario se déclenche et mets donc 100 dans instantané
5 secondes après index passe à 500. Le scénario mets donc (500-100=400) 400 dans instantané
10s après index passe à 1500 et instantané se retrouve avec 1500-100=1400

Pendant tout ce temps le last value n’a toujours pas été mis à jour (délais 1mn) et instantané est passé par les valeurs 100, 400, 1400 … Ça veut rien dire.

Il faut forcément soustraire une différence d’index mais aussi diviser par un certain délais.

Tu pourras montrer tes commandes virtuelles (instantané et celles avec les statistiquesBetween) au passage ?

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