Moyenne sur 30 minutes d'un capteur

Mon problème

Bonjour

Je souhaite faire la moyenne d’un de mes capteurs sur une durée de 30 minutes.

J’ai trouvé un add-on « average sensor » qui doit pourvoir le faire mais du mal a comprendre son utilisation :

Quelqu’un l’utilise et pourrait m’aider?
merci d’avance
sébastieb

Ma configuration


Texte à remplacer par votre configuration

Comment récupérer ma configuration :
Dans votre HA, Menu latéral Configuration > Info > bouton copier > Pour Github
image


Salut

ça existe de base :

#################################################################
- platform: statistics
  entity_id: sensor.sonde_jardin_temperature_moyenne5min
  name: sonde_jardin_temperature_moyenne5min_stats
  state_characteristic: mean
  sampling_size: 6

Capteur à 1 valeur par minute… => donc 6 valeur = fenêtre de 5min

salut

moi j’utilise la plateforme filter:

avec le TIME SIMPLE MOVING AVERAGE

comme ceci:

sensor:
  - platform: filter
    name: Power_filt_cuisine
    entity_id: sensor.Puissance_cuisine0
    filters:
      - filter: time_simple_moving_average
        window_size: "00:05"
        precision: 0

La « moyenne sur fenêtre glissante » prends tous les échantillons sur la durée spécifiée et en fait la moyenne pondérée par leur durée de vie.

1 « J'aime »

Pas mal, je basculer là dessus aussi

oui cela fonctionne bien :+1:
j’ai pu le comparer à mon propre calcul fait en sensor_template (j’avais besoin de faire des réinits réguliers) et les deux calculs sont au rendez vous!

@Haz

merci
j’ai donc crée ceci :

#average

  • platform: filter
    name: « moyenneprodsolaire30 »
    entity_id: sensor.envoy_122121066815_current_power_production
    filters:
    • filter: time_simple_moving_average
      window_size: « 00:30 »
      precision: 0

Mais comment je récupère la valeur? J’ai pas de sensor moyenneprodsolaire30.

Dsl de mon ignorance

seb

Hello Haz

merci mais comment je recupère l’information (valeur moyenne) stp?
merci

je pense qu’il n’y a pas de guillemets dans le nom du sensor

sinon dans l’exemple ci dessus, j’ai une entité:
sensor.Power_filt_cuisine

Merci encore je modifie et je vérifie si j’ai un capteur :=)

bon je sais pas pourquoi j’ai mis :

#average
  - platform: filter
    name: moyenneprodsolaire30
    entity_id: sensor.envoy_122121066815_current_power_production
    filters:
      - filter: time_simple_moving_average
        window_size: "00:30"
        precision: 0

mais pas de sensor.moyenneprodsolaire30
Vous auriez une idée du pourquoi?

l’entrée est bien vivante?

image

1 « J'aime »

Tu peux tenté une requête du style:

  platform: sql
   queries:
     - name: test
        query: "SELECT sum(state) / count(*) as state FROM states WHERE entity_id = 'sensor.exemple' AND state != 'unavailable' AND datetime('now','+30 minutes') <= datetime(created) ;"
       column: 'state'

Bonjour

Merci à tous

J’ai remonté le code tout en haut de ma liste de sensors et ça marche maintenant.

Cela veut peut être dire qu’à un endroit dans cette liste il y a une coquille… Va falloir que je regarde ça ! (pourtant pas d’erreur quand je reste la Config).
Bonne journée à tous

Bonjour
je viens de faire le même test que vous.
Je désire faire la moyenne d’un capteur de température, sur 24h par exemple.

Ca fonctionne mais la moyenne résultante est fausse !

Je prend l’exemple suivant :
Si la valeur de température reste (stable) 1 heure à 20 degrés et 1 minute (stable) à 10 degrés, le Filter donnera 15 comme résultat (20+10)/2=15, alors qu’il devrait donner une valeur proche de 20. (2060 + 101)/61

En fait dans la plateforme Filter, il ne rentre des valeurs que lorsque son entrée change de valeur. (JE PENSE)
Alors que pour faire une vraie moyenne, il faudrait échantillonner à fréquence constante.

A moins qu’il y ait un moyen de réveiller filter !!

salut
je m’étais dit la même chose et je suis allé chercher le code de « filter », la moyenne sur fenêtre glissante.
et ce que fait la moyenne sur fenêtre glissante c’est
somme(durée_de_val * Val)/durée_totale
Ce qui signifie que même si le capteur n’est pas rafraîchi, elle fait une moyenne qui a du sens.

La copie du git:

        for state in self.queue:
            moving_sum += (state.timestamp - start).total_seconds() * prev_state.state
            start = state.timestamp
            prev_state = state

        new_state.state = moving_sum / self._time_window.total_seconds()

Il faudrait regarder le code des autres filtres.
Mais en tout cas pour la fenêtre glissante, cela fonctionne comme une moyenne devrait fonctionner.