Compteur journalier et intégrale de Riemann

Bonjour, je souhaite suivre la production journalière de mon routeur vers mon ballon ECS, je pensais faire que chose comme :

statisticsBetween(#[Maison][pv_router][envoyée_ballon]#,sum,0600,2200)/18/1000

ou je divise la somme des watt instantanés sur une période par le nombre d’heure puis par 1000 pour mettre en kiloWatt.

seulement après quelques recherche, ce n’est apparement pas si simple (dommage…) et il faut passer par une intégrale de Riemann pour bien faire les choses : j’ai vu qu’il y a avait une intégration sous HA pour appliquer cette formule a un capteur ;

est-ce qu’on a quelque chose d’équivalent sous jeedom?

A mon avis, un virtuel avec un scenario suffit

Virtuel : [total quotidien]
Scenario :
declencheur : puissance
Contenu :
fonction event
valeur : [total quotidien] + ( puissance / delta temps entre maintenant et puissance t-1 )

Le plus compliqué à obtenir est, je pense, le delta temps entre maintenant et l’avant dernière remontée de puissance. Peut-être que passer par une variable est plus simple

Norbert

C’est la surface sous la courbe qu’on peut approcher en faisant la somme des rectangles sous la courbe
image

Donc si vous avez une valeur toutes les minutes il faut faire la somme des puissances en W à chaque minute multipliées par 0,0167 (soit 1/60e d’heure) pour avoir des Wh

L’approximation par des trapèzes n’est pas plus difficile à calculer et est plus précise c’est d’ailleurs la méthode utilisée par HA
440px-Intégration_num_trapèzes.svg

2 « J'aime »

je peux aussi faire la somme directement sur une durée d’une heure, par contre je vois pas le rapport avec le calcul de l’air des rectangles?

ça m’intéresse! je vois en gros ce que je dois faire :

  1. revoir mes cours de maths de 6eme sur le calcul de l’aire des trapèzes :sweat_smile:
  2. prendre deux repères (remontée de valeur a intervalle régulier)
  3. faire le calcul de l’aire de chaque trapèzes
  4. additionner le tout sur la durée du routage.

c’est bien ça?

ça ressemble a un exercice de programmation en C…

je me pose la question du choix de l’intervalle pour être suffisamment précis sans trop charger la bête : minutes? comme le proposait @Bonjour ?

L’aire des rectangles permet de passer des W (ou kW) aux Wh (ou kWh)

Si ta commande jeedom qui donne la puissance instantanée est historisée (et pas lissée !) tu récupère l’intervalle qui t’intéresse par
$cmd->getHistory($startdate, $enddate);
et ensuite tu fais une boucle et tu obtiens chaque abscisse (le temps) par strtotime($history->getDatetime()); et chaque ordonnée (la puissance instantanée) par $history->getValue();

ok et la hauteur H serait donc égale a l’intervalle de temps entre les getDatatime() ?

Enfin oui la hauteur des trapèzes mais qui est en horizontal (sur l’axe des abscisses) :smiley: les 2 « bases » des trapèzes elles sont en vertical (sur l’axe des ordonnées) :smiley: il ne faut pas se mélanger !
J’avais déjà réfléchi à tout çà pour mon plugin ElmTouch pour les chaudières à gaz car la chaudière me fournit une puissance instantanée (et qui en plus a des variations de folie quand on prend une douche).

plugin très chouet que j’utilise par ailleurs ! :clap: :clap:

toutes les commandes que tu m’as envoyées sont a mettre dans un script je suppose?

Calculer le rectangle en faisant la moyenne des 2 valeurs devrait faire une bonne approximation !

A noter que dans les deux propositions citées précédemment (rectangle et trapèze) on voit bien que systématiquement on minimise l’aire. Attention à ne pas avoir de mauvaises surprises à la fin :wink:

Si tu te bases sur les graphiques montrés plus haut oui, mais dans le cas d’un minimum, les trapèzes (voire les rectangles si tu prends toujours la valeur de gauche -ou de droite) vont passer au-dessus de la courbe et donc équilibrer les écarts.
Ça ne sera ni plus juste ni plus précis, mais la valeur obtenue sera sans doute plus proche de la réalité.
Je peux faire vite fait un schéma demain si besoin.

Je comprends bien ce que tu veux dire.
Dans le cas des rectangles je pense qu’il il faudrait utiliser le rectangle qui passe par la moyenne des valeurs aux bornes, et pour le trapèze je dirais à la louche qu’il faudrait essayer d’approcher la tangente de la pente qui relie les deux bornes mais il est trop tard pour que je réfléchisse aussi loin :smiley:

Il ne faut pas faire de moyenne juste calculer les aires des rectangles… Tantôt ils surestimeront tantôt ils sous-estimeront.

L’idée, mais c’est exactement le principe de l’intégral, c’est d’avoir un delta t le plus faible possible pour diminuer le pourcentage d’erreur

Je propose de faire la moyenne des 2 valeurs de puissance comme hauteur du rectangle ce qui revient à calculer l’aire du trapèze !
Calculer la surface d’un rectangle ça fait moins peur que calculer celle d’un trapèze

A = h*(b+c)/2
h = hauteur du trapèze soit le pas sur l’axe des heures
b et c étant les bases du trapèze soit les Watts à t et t+1

2 « J'aime »

La méthode de Simson peut également être utile si j’ai bien compris ce que vous voulez faire.

Ça me ramène 40 ans en arrière tout ça !
De toute manière, les mesures de puissance sont déjà très approximatives et je ne pense pas qu’il soit bien utile de chercher une méthode plus précise au risque d’amplifier les erreurs.

C’est exactement ce que je compte faire en utilisant des trapèzes qui sont plus précis en revanche je ne suis pas encore décidé sur l’intervalle entre 2 valeurs de puissance qui va représenter la hauteur ; si valeurs pas suffisamments rapprochées, je perds en précision et si trop rapprochées c’est le jeedom qui va chauffer…