History_stats pytanie o zliczanie czasu

Witam, mam pytanie czy to normalne, że zlicza czas w formie 3,89h < proszę zwrócić uwagę na liczby po przecinku. Nie powinno to być w formie 3,60 (maksymalnie bo to mają być minuty?)

Atrybut “value” powstałej encji “podaje” czas w minutach i godzinach.

Odgrzeje kotleta…

Mam problem z history_stats… Mianowicie zrobiłem encję zliczającą czas i włączenia od początku, lecz codziennie o godz. 4 rano encja tak jakby sie cofała, czasu i kliknięć ubywa. Poniżej wykres encji i wpis w yaml:

image
image

Zgłoś issue, to teoretycznie powinno działać.

Edit: trochę się posunąłem za daleko :stuck_out_tongue:

If the duration exceeds the number of days of history stored by the recorder component (purge_keep_days), the history statistics sensor will not have all the information it needs to look at the entire duration. For example, if purge_keep_days is set to 7, a history statistics sensor with a duration of 30 days will only report a value based on the last 7 days of history.

#                           tv czas pracy
  - platform: history_stats
    name: tv czas pracy
    entity_id: media_player.tv
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0) }}"
    end: "{{ now() }}" 

ScreenShot_20211104203121

@krskrab Tak, to też mam, ale jako zliczanie dzienne.

Edit:
@szopen Myślisz, że da się wydłużyć jakoś recorder?

@Kamil5771 edytuj Swoje posty - nie pisz jednego pod drugim

Można ale nie należy tego robić (w szczególności na standardowej bazie danych) - 10 dni które mamy OOTB jest blisko górnej granicy rozsądku.
Przy okazji niedawnych zmian w HA a konkretnie panelu Energia są dostępne nowe możliwości przygotowywania długoterminowych statystyk, ale nie czuję się na siłach by to opisywać - po prostu poczytaj świeże wątki o pomiarze energii - tam są opisane metody przygotowania encji (nie wiem czy w każdej domenie to jest możliwe).

Oprócz (zamiast) tego można doinstalować dedykowaną bazę

Jeśli chcesz, aby wartość sensora prezentował ci w postaci atrybutu “value” trzeba dodać linijkę

attribute: value

przy sensorze - poniżej mój przykład:


jeśli zabraknie tej podkreślonej linijki informacja będzie wyświetlana wartość czyli:

może dla wielu do podstawa, ale niektórym sprawiło to nie lada problem :slight_smile:

3 Likes

Z History_stats zniknoł artybut value:

ktoś wie czy można go w jakiś inny sposób zastąpić tak aby wskazywał wartość stanu encji w formacie czasu (godziny:minuty) jak wcześniej robił to atrybut value?

Value w 2022.5 Zostało usunięte aby uniknąć zbyt wielu rekordów atrybutów w bazie danych.
Jeżeli się nie mylę zostało to zastąpione duration

https://www.home-assistant.io/integrations/history_stats/

https://www.home-assistant.io/integrations/history_stats/#type

Też tak myślałem. Nie znam zbyt dobrze angielskiego, ale niestety zamiast value
podstawienie duration nic nie daje :{
Tak jak na screenschocie z poprzedniego mojego posta https://forum.arturhome.pl/uploads/default/original/2X/9/9a550d242fafc05db51ed2d1d6bb64283adfb400.png widać. duration to atrybut device_class
co ciekawe stan określa wartość duration podane w wartości dziesiętnej, tak jak to było do tej pory.

Co ciekawe oglądając okno historii sensora widać wyraźnie że czas w formie hh:mm:ss jest dostępny:
image

Wskazania które Ci znikły do tej pory były w atrybucie encji “value” który został usunięty. Po zmianach w aktualizacji 2022.5 wystarczy Ci stan encji.

zgadzam się, ale chce go zamienić na czytelny format prezentacji w postaci HH:MM, tym bardziej że potrzebuje takiego formatu dodatkowo w Node-RED by wysyłać właściwie sformatowane dane dla formularza google, który “notuje mi” statystyki.
image

Musisz to chyba ogarnąć w ten sposób

start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"

Musisz ustalić start i end

U mnie na razie zrobiłem to jak poniżej:

{% set list = states('sensor.tv_w_kuchni_dzis').split('.') %}
{{ list[0] }}h {{ (60 * ('0.'~list[1]) | float (0)) | round(0) }}m

W szablonach wszystko ładnie się prezentuje…


ale jak dodaje do sensora history_stats to mi się rozjeżdża… od godziny pytam wujka google by nie zawracać Ci głowy takim podstawowym pytaniem, ale w którym miejscu dodałeś te dwie linijki że Ci się nie rozjechała wartość sensora.

{% set list = states('sensor.tv_dzis').split('.') %}
{{ list[0] }}h {{ (60 * ('0.'~list[1]) | float (0)) | round(0) }}m

Ja utworzyłem nową encję przez template:

czas_w_h:
  friendly_name: "Czas w godzinach"
  value_template: >-
    {% set list = states('sensor.tv_w_kuchni_dzis').split('.') %}
    {{ list[0] }}h {{ (60 * ('0.'~list[1]) | float (0)) | round(0) }}m

ale można też przez karty warunkowe.

1 Like

Poszukam coś więcej w Googlu…

Jako osobna encja jest ok, ale to osobna encja. Będę szukał sposobu by jednak jej wartość dodać jako atrybut do istniejącej:

@Marcin_Domański - poradziłeś sobie?
Ładnie mi kiedyś działało teraz nie moge nic zrobić.
potrzebuje czas żeby się wyświetlał ile czasu w ciągu dnia encja jest w stanie “włączony” nie ON tylko Włączony.

No cóż u mnie działa tak:
w pliku sensors.yaml podpiętym pod configuration.yaml

- platform: template
  sensors:
      tv_dzis_czas_w_h:
          friendly_name: "Czas w godzinach"
          value_template: >-
            {% set list = states('sensor.tv_dzis').split('.') %}
            {{ list[0] }}h {{ (60 * ('0.'~list[1]) | float (0)) | round(0) }}m

- platform: history_stats
  name: TV Dzis
  entity_id: media_player.tv_tv
  state: "on"
  type: time
  start: "{{ now().replace(hour=0, minute=0, second=0) }}"
  end: "{{ now() }}"

niestety innej metody nie znalazłem.