[BUG][RESOLU] précision senseur virtuel "Electrique (instantané+Compteur)"

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Francis91
Messages : 4
Inscription : 22 mars 2021, 19:33

[BUG][RESOLU] précision senseur virtuel "Electrique (instantané+Compteur)"

Message par Francis91 »

Salut tout le monde,

je dispose de pinces antiques CurrentCost qui me donnent la puissance instantanée, et je peux également comparer avec ce que me donne Enedis par le Linky.

Pinces CurrentCost -> senseur virtuel "Electrique (instantané+Compteur)"
Linky -> plugin Linky

Je lis mes pinces sur un Pi dédié, et j'envoie les valeurs par URL (en gros toutes les 6 secondes).
http://192.168.0.3:8080/json.htm?type=c ... IS_pince;0
(avec IDX_pince et PUIS_pince variables)

En comparant mes courbes de puissance instantanée, c'est en gros pareil.
Par contre, en comparant mes valeurs d'énergie consommée, c'est très différent, et surtout quand la puissance est faible.

Les valeurs d'Enedis sont évidement correctes :-) (j'ai vérifié sur l'interface d'Enedis)
Les valeurs d'énergie consommée de mes pinces sont calculées par Domoticz ("Energy read : Computed").

Pour vérifier ce problème, j'ai créé quatre nouveaux senseurs, en envoyant toutes les 6 secondes des valeurs constantes.

Après une heure :

10W -> le compteur de kWh ne bouge pas et reste à 0.000 kWh
100W -> le compteur de kWh est bien à 0.100 kWh
1000W -> le compteur de kWh est bien à 1.000 kWh
10000W -> le compteur de kWh est bien à 10.000 kWh

Changement d'échelle :

20W -> le compteur de kWh ne bouge pas et reste à 0.000 kWh
30W -> le compteur de kWh monte
40W -> le compteur de kWh monte (même valeur que pour 30W)
50W -> le compteur de kWh monte (même valeur que pour 30W)

Dans SQLHelper.cpp, je vois le calcul :

float energyDuringInterval = static_cast<float>(powerDuringInterval * intervalSeconds / 3600);
float energyAfterInterval = static_cast<float>(energyUpToInterval + energyDuringInterval);

(comme pour le test, on commence à 0, energyUpToInterval = 0)

Ce qui donne pour 20W et 6s : 20*6/3600 = 0.033Wh et pour 30W : 30*6/3600 = 0.050Wh

Plus loin, on trouve :

sprintf(sValueUpdate, "%s;%.1f", powerUpdate, energyAfterInterval);

Ha ! Donc si energyAfterInterval < 0.050, le %.1f nous ramène à 0.

Ne pourrait on pas stocker dans la base une valeur un peu plus précise ?
Tout ce qui est en dessous de 30W pendant 6s n'est pas vu, et la précision minimum est de 60W.

Si on veut une précision au W, il faut faire une mesure toutes les 6 minutes (360s pour avoir 1*360/3600 = 0.1Wh).
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: [BUG][RESOLU] précision senseur virtuel "Electrique (instantané+Compteur)"

Message par Aile »

Bravo et merci !
Ça faisait un moment que je pestais sur ce manque de précision pour les faibles consommations.
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
Répondre