Hello,
Dans mon salon, j’ai plusieurs sondes de températures associées (multiprotocole) :
sonde SONOFF SNZB-02D (zigbee)
station Netatmo (netatmo)
ventilateur Dyson (matter)
« oeil de soron » Fibaro FGMS001 (zwave)
J’affiche sur mon dashboard la température de la pièce et la moyenne obtenue ne correspond pas à la moyenne de ces 4 appareils.
En regardant le détail, je me suis aperçu que la station Netatmo m’envoyait 3 valeurs de températures : actuelle, mini et maxi.
Et donc avec le mini et maxi, la moyenne de température de la pièce sur le dashboard est faussée.
Est-ce que c’est possible d’éliminer les valeurs mini et maxi de tous les appareils qui envoient ces données pour l’affichage de la temp moyenne d’une pièce?
Ceci est « de ma faute » ^^
Il aurait fallu une meilleur spec à l’époque. On verra ce que @pierre-gilles en pense mais je suppose que la seule manière de faire aujourd’hui serait de :
créer 2 nouveau types de TEMPERATURE_SENSOR : par exemple « temperature_min » et « temperature_max » (on pourrait envisager de créer dès maintenant un « temperature_avg »
migrer le type des appareils netatmo contenant de category : « TEMPERATURE_SENSOR », de type : « SENSOR.DECIMAL » et comportant « min_temp » dans le external_id vers ces nouveaux type
Exclure dans le calcul front de cette box ces types là.
J’ai pris tous les appareils de température. Les 3 qui sont des température courantes sont :
Hygromètre salon (Temperature - Hygromètre salon) = 23.5°C
Hygromètre salon (Temperature - room Living room) = 22.5°C
Vanne salon (Température) = 22.5°C
=> Température moyenne = (23.5 + 22.5 + 22.5) / 3 = 22.83°C => Ok.
Si j’ajoute les 2 qui sont maintenant de nouveau type :
Hygromètre salon (Température maximale) = 24.2°C
Hygromètre salon (Température maximale) = 23.5°C
=> Ancienne Température totale moyenne = (23.5 + 22.5 + 22.5 + 24.2 + 23.5) / 5 = 23.24°C => NOk => Les modifications sont donc bien valides de ce côté.
En espérant ne rien avoir oublié. J’ai galéré dans les tests car je ne trouvais pas les données utilisées (visiblement dans les seeders). Et il y avait une erreur dans les types transmis pour la température (type = « temperature » au lieu de « decimal » => Les tests passaient puisqu’on ne prenaient pas en compte les types).