Statystyki pogodowe nie działają

Dzień dobry,
Korzystam z integracji Met.no, która udostępnia sensor pogodowy weather.home. Dane meterologiczne przechowywane są w atrybutach tej encji:


Aby móc zbierać statystyki podstawowych danych (temperatura, wilgotność, ciśnienie, wiatr), zamieniłem odpowiednie atrybuty na odrębne encje:

- platform: template
  sensors:
    pogoda_temperatura:
      friendly_name: "Pogoda Temperatura"
      value_template: "{{ state_attr('weather.home', 'temperature') }}"
    pogoda_wilgotnosc:
      friendly_name: "Pogoda Wilgotność"
      value_template: "{{ state_attr('weather.home', 'humidity') }}"
    pogoda_cisnienie:
      friendly_name: "Pogoda Ciśnienie"
      value_template: "{{ state_attr('weather.home', 'pressure') }}"
    pogoda_wiatr:
      friendly_name: "Pogoda Wiatr"
      value_template: "{{ state_attr('weather.home', 'wind_speed') }}"

Utworzone w ten sposób encje zawierają poprawne dane:

W pliku configuration.yaml zdefiniowałem recorder:

recorder:
  include: !include db_included.yaml
  purge_keep_days: 30

Plik db_included.yaml zawiera:

entities:
  - sensor.pogoda_temperatura
  - sensor.pogoda_wilgotnosc
  - sensor.pogoda_wiatr
  - sensor.pogoda_cisnienie
  - weather.home

Na panelu pogodowym chciałbym wyświetlać statystyki pogodowe dla tych 4ech parametrów. Stworzyłem więc kartę statystyk:

chart_type: line
period: hour
type: statistics-graph
entities:
  - sensor.pogoda_temperatura
  - sensor.pogoda_wilgotnosc
  - sensor.pogoda_cisnienie
  - sensor.pogoda_wiatr
stat_types:
  - mean
  - min
  - max
title: Statystyka pogodowa
hide_legend: false
days_to_show: 7

Mam dostępne dane historyczne.
Np. dla temperatury historia sensor.pogoda_temperatura wygląda tak:
image

Wygląda na to, że niczego nie pominąłem… ale statystyki się nie tworzą / nie wyświetlają:
image

Analizowałem problem wiele razy i nie mogę dojść przyczyny braku statystyk.
Proszę oświećcie mnie choć trochę, gdzie robię błąd…

Dopisz wszędzie odpowiednie device_class z zgodnie Sensor - Home Assistant i wszystko będzie działało poprawnie :slight_smile::

- platform: template
  sensors:
    pogoda_temperatura:
      friendly_name: "Pogoda Temperatura"
      value_template: "{{ state_attr('weather.home', 'temperature') }}"
      unit_of_measurement: '°C'
      device_class: temperature

Zawierają dane, ale nie mają atrybutów, które by umożliwiały ich umieszczenie w statystykach (statystyki długoterminowe nie podlegają regułom rekordera dotyczących zwykłego czasu przechowywania w bazie).

Nie wiem po co grzebałeś w rekorderze, bo to co ustawiłeś nie ma nic do rzeczy (no chyba, że ogólnie masz własne ustawienia rekordera, w których wiesz co robisz i ich nie pokazałeś).

Tak, pokazałem tylko fragment rekordera, żeby pokazać, że historia tych sensorów zapisuje się do bazy.

Dopisałem też device_class sugerowane przez @macek:

- platform: template
  sensors:
    pogoda_temperatura:
      friendly_name: "Pogoda Temperatura"
      value_template: "{{ state_attr('weather.home', 'temperature') }}"
      device_class: temperature
      unit_of_measurement: '°C'
    pogoda_wilgotnosc:
      friendly_name: "Pogoda Wilgotność"
      value_template: "{{ state_attr('weather.home', 'humidity') }}"
      device_class: humidity
      unit_of_measurement: '%'
    pogoda_cisnienie:
      friendly_name: "Pogoda Ciśnienie"
      value_template: "{{ state_attr('weather.home', 'pressure') }}"
      device_class: atmospheric_pressure
      unit_of_measurement: 'hPa'
    pogoda_wiatr:
      friendly_name: "Pogoda Wiatr"
      value_template: "{{ state_attr('weather.home', 'wind_speed') }}"
      device_class: wind_speed
      unit_of_measurement: 'km/h'

ale nie zadziałało.

Usunąłem więc dodatkowo wszystkie ograniczenia rekordera. To również nie pomogło.

Statystyki pojawiają się po jakimś czasie, jakie masz stany tych encji w Narzędzia deweloperskie -> stany ?

zawsze możesz użyć

sensor:
    - platform: statistics
    name: "Średnia Dzienna Temperatura Zewnętrzna"
    unique_id: outdoor_temperature_daily_average
    entity_id: sensor.pogoda_balkon_temperature
    state_characteristic: mean
    sampling_size: 5000
    max_age:
      days: 1
    precision: 1

  - platform: statistics
    name: "Dziena Wysoka Temperatura Zewnętrzna"
    unique_id: outdoor_temperature_daily_high
    entity_id: sensor.pogoda_balkon_temperature
    state_characteristic: value_max
    sampling_size: 5000
    max_age:
      days: 1
    precision: 1

  - platform: statistics
    name: "Najwyższa Dzienna Temperatura Zewnętrzna"
    unique_id: outdoor_temperature_daily_high_time
    entity_id: sensor.pogoda_balkon_temperature
    state_characteristic: datetime_value_max
    sampling_size: 5000
    max_age:
      days: 1

  - platform: statistics
    name: "Temperatura Zewnętrzna Dziennia Niska"
    unique_id: outdoor_temperature_daily_low
    entity_id: sensor.pogoda_balkon_temperature
    state_characteristic: value_min
    sampling_size: 5000
    max_age:
      days: 1
    precision: 1
2 polubienia

Tu są aktualne stany encji:

Może faktycznie trzeba trochę poczekać na ich pojawienie się na karcie… Więc czekam grzecznie, choć martwi mnie ten komunikat:
image

Nie wiem co usunąłeś, ale “spuchniętą” bazę trudno odchudzić, więc jeśli wiesz co robisz to po co w niej grzebiesz…


Jak dla mnie w tym template brakuje myślników przy elementach listy (ale mogę się mylić), jeśli encje utworzą się prawidłowe, to będziesz miał z nich statystyki (w przyszłości).
Najpierw sprawdzaj encje w narzędziach deweloperskich - mają mieć atrybuty, takie jak wskazał @macek potem się będziesz martwił statystykami.
Moim zdaniem powienieś mieć jeszcze state_class: measurement
ale ostatnio poluzowano wymagania statystyk, więc nie mam pewności czy klasa stanu nadal musi być.

Tak to u mnie wygląda, jak napisał @szopen

Z poniższego komunikatu wnioskuję, że atrybut state_class jest nie tylko zbędny, ale wręcz zakazany.

Po usunięciu tego atrybutu natychmiast się zazieleniło:
image

Raczej nie jest zakazana, pewnie masz złą składnię

Przeanalizowałem składnię, ale wciąż nie radzę sobie ze znalezieniem błędu…

W głownym pliku konfiguracyjnym configuration.yaml mam m.in. wpis:
template: !include templates.yaml

Dodawany w konfiguracji plik templates.yaml zaczyna się następująco:


- sensor:
     
  # Odczyt danych pogodowych NORWAY Intitue of Meteorology
    - name: "Pogoda Temperatura"
      unique_id: pogoda_temperatura
      state: "{{ state_attr('weather.home', 'temperature') }}"
      device_class: temperature
      unit_of_measurement: "°C"
      state_class: measurement

Zatem wydaje się, że składnia jest jak najbardziej ‘koszerna’ ale w samym edytorze widzę jednak dwa dziwne, identycznie brzmiące komunikaty na czerwono: Unable to load schema…

  • w pliku templates.yaml:

  • w pliku configuration.yaml:

Być może to właśnie te komunikaty pokazują faktyczną przyczynę problemu, nie mam jednak bladego pojęcia jak sobie z tym poradzić…

A co masz jeszcze w tym pliku templates.yaml

Moja konfiguracja:

template: !include_dir_merge_list templates

Screenshot - 14.05.2023 , 20_45_42

Przykładowy plik template_sensor_drukarka_power.yaml


###############################################################################
## Template - Sensor
###############################################################################

- sensor:
    - name: "Drukarka power [W]"
      state: "{{state_attr('sensor.drukarka_power', 'power')}}"
      unique_id: drukarka_power_use_w
      icon: mdi:lightning-bolt
      device_class: power
      state_class: measurement
      unit_of_measurement: W