Hola,
En mi salón tengo varias sondas de temperatura asociadas (multiprotocolo):
sonda SONOFF SNZB-02D (zigbee)
estación Netatmo (netatmo)
ventilador Dyson (matter)
« ojo de soron » Fibaro FGMS001 (zwave)
En mi panel de control muestro la temperatura de la habitación y la media obtenida no coincide con la media de estos 4 dispositivos.
Al revisar los detalles, me di cuenta de que la estación Netatmo me envía 3 valores de temperatura: actual, mínimo y máximo.
Y por lo tanto, con el mínimo y el máximo, la temperatura media de la habitación en el panel de control está distorsionada.
¿Es posible eliminar los valores mínimo y máximo de todos los dispositivos que envían estos datos para mostrar la temperatura media de una habitación?
Esto es « culpa mía » ^^
Habría hecho falta una mejor especificación en su momento. Veremos qué opina @pierre-gilles, pero supongo que la única manera de hacerlo hoy sería:
crear 2 nuevos tipos de TEMPERATURE_SENSOR: por ejemplo « temperature_min » y « temperature_max » (podríamos considerar crear ya un « temperature_avg »
migrar el tipo de los dispositivos netatmo que contienen de category : « TEMPERATURE_SENSOR », de type : « SENSOR.DECIMAL » y que tienen « min_temp » en el external_id a estos nuevos tipos
excluir en el cálculo front de esta caja estos tipos.
He tomado todos los dispositivos de temperatura. Los 3 que son temperaturas corrientes son:
Higrómetro sala (Temperatura - Higrómetro sala) = 23.5°C
Higrómetro sala (Temperatura - room Living room) = 22.5°C
Válvula sala (Temperatura) = 22.5°C
=> Temperatura media = (23.5 + 22.5 + 22.5) / 3 = 22.83°C => Ok.
Si añado los 2 que ahora son de nuevo tipo:
Higrómetro sala (Temperatura máxima) = 24.2°C
Higrómetro sala (Temperatura máxima) = 23.5°C
=> Antigua temperatura media total = (23.5 + 22.5 + 22.5 + 24.2 + 23.5) / 5 = 23.24°C => No Ok => Las modificaciones son, por lo tanto, válidas por este lado.
Espero no haberme olvidado de nada. Me costó con las pruebas porque no encontraba los datos utilizados (aparentemente en los seeders). Y había un error en los tipos transmitidos para la temperatura (type = « temperature » en lugar de « decimal » => Las pruebas pasaban porque no se tenían en cuenta los tipos).