Postać stanu encji

Proszę o pomoc w rozwikłaniu pewnego problemu.
Dlaczego dzieje się tak i jaki ja mogę mieć na to wpływ, że stan encji jest pokazywany różnie w zależności od wyboru rodzaju karty.
Wygląda to tak:
gdy wybiorę kartę typu encje uzyskuję coś takiego:

01

gdy wybiorę kartę typu encja mam coś takiego:

02

Wyprzedzam od razu odpowiedzi typu zajrzyj do atrybutów encji, bo nie ma tam możliwości wyboru tego co mnie interesuje.

03

Wiem, że kluczowym elementem który może tu pomóc jest informacja device_class: timestamp, ale jak tego użyć żeby niezależnie od wyboru rodzaju karty uzyskać zawsze stan encji w postaci przedziału czasu jaki upłynął od poprzedniego rozruchu a nie w postaci daty jego wykonania.

Skorzystaj z template np:

- platform: template
  sensors:
  ostatni_restart_ha:
      friendly_name: "Ostatni restart HA"
      value_template: >-
        {% set up_time =  as_timestamp(now()) - as_timestamp(states('sensor.ha_czas_dzialania')) %}
        {% if up_time == 0 %}
          Właśnie uruchomiony ponownie...
        {% else %}
          {% set minutes = (up_time // 60) | int %}
          {% set hours = (minutes // 60) %}
          {% set days = (hours // 24) %}
          {% set weeks = (days // 7) %}
          {% set minutes = (minutes % 60) %}
          {% set hours =  (hours % 24) %}
          {% set days = (days % 7) %}
          {% macro phrase(value, name) %}
                    {%- set value = value %}
                    {%- set end = '' if value > 1 else '' %}
                    {{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
          {%- endmacro %}
          {% set text = [ phrase(weeks, 'tyg'), phrase(days, 'dn'), phrase(hours, 'godz'), phrase(minutes, 'min') ] | select('!=','') | list | join(', ') %}
          {% set last_comma = text.rfind(',') %}
          {% if last_comma != -1 %}
          {% set text = text[:last_comma] + '' + text[last_comma + 1:] %}
          {% endif %}
        {{ text }}
        {% endif %}

podstaw Swoją encję.

3 Likes

Wielkie dzięki :+1:
Drobna kosmetyka i uzyskałem dokładnie to na czym mi zależało:

04

poprzedni_rozruch_nas:
        friendly_name: "Poprzedni rozruch"
        value_template: >-
          {% set up_time =  as_timestamp(now()) - as_timestamp(states('sensor.dysksieciowy_last_boot')) %}
          {% if up_time == 0 %}
            Właśnie teraz
          {% else %}
            {% set minutes = (up_time // 60) | int %}
            {% set hours = (minutes // 60) %}
            {% set days = (hours // 24) %}
            {% set minutes = (minutes % 60) %}
            {% set hours =  (hours % 24) %}
            {% macro phrase(value, name) %}
                      {%- set value = value %}
                      {%- set end = '' if value > 1 else '' %}
                      {{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
            {%- endmacro %}
            {% macro phrase1(value, name) %}
                      {%- set value = value %}
                      {%- set end = 'ni' if value > 1 else 'zień' %}
                      {{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
            {%- endmacro %}
            {% set text = [ phrase1(days, 'd'), phrase(hours, 'godz'), phrase(minutes, 'min'),'temu' ] | select('!=','') | list | join(' ') %}
            {% set last_comma = text.rfind(',') %}
            {% if last_comma != -1 %}
            {% set text = text[:last_comma] + '' + text[last_comma + 1:] %}
            {% endif %}
          {{ text }}
          {% endif %}