MariuszT
(Mariusz)
June 26, 2021, 8:52am
#1
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:
gdy wybiorę kartę typu encja mam coś takiego:
Wyprzedzam od razu odpowiedzi typu zajrzyj do atrybutów encji, bo nie ma tam możliwości wyboru tego co mnie interesuje.
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.
rafkan
(Rafał Kania)
June 26, 2021, 9:55am
#3
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
MariuszT
(Mariusz)
June 26, 2021, 11:23am
#4
Wielkie dzięki
Drobna kosmetyka i uzyskałem dokładnie to na czym mi zależało:
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 %}