Uptime No Longer Working

@KameDomotics,
@AcidSleeper

12 d, 5 h, 35 m format.

          {%- set up_time = as_timestamp(now())-as_timestamp(states('sensor.hassio_drifttid_dagar')) %}

          {%- macro phrase(name, divisor, mod=None) %}
            {%- set value = ((up_time // divisor) % (mod if mod else divisor)) | int %}
            {{- '{} {}'.format(value, name) if value | int > 0 else '' }}
          {%- endmacro %}
          
          {%- set values = [ 
                     phrase('w', 60*60*24*7), 
                     phrase('d', 60*60*24, 7),
                     phrase('h', 60*60, 24),
                     phrase('m', 60), 
                     phrase('s', 1, 60) 
                 ] | select('!=','') | list %}
                        
          {{ values | join(', ') }}

Any Language

Replace the English words with the proper word in your langauge.

          {%- set word_for_and = 'and' %}
          {%- set up_time = as_timestamp(now())-as_timestamp(states('sensor.hassio_drifttid_dagar')) %}

          {%- macro phrase(name, plural_name, divisor, mod=None) %}
            {%- set value = ((up_time // divisor) % (mod if mod else divisor)) | int %}
            {%- set name = plural_name if value > 1 else name %}
            {{- '{} {}'.format(value, name) if value | int > 0 else '' }}
          {%- endmacro %}
          
          {%- set values = [ 
                     phrase('week', 'weeks', 60*60*24*7), 
                     phrase('day', 'days', 60*60*24, 7),
                     phrase('hour', 'hours', 60*60, 24),
                     phrase('minute', 'minutes', 60), 
                     phrase('second', 'seconds', 1, 60) 
                 ] | select('!=','') | list %}
                        
          {{ values[:-1] | join(', ') ~ ' ' ~ word_for_and ~ ' ' ~ values[-1] if values | length > 1 else values | first  | default }}

Any Language with duration entities (requires availability template)

template:
  - sensor:
      - name: "Daily Furnace Runtime"
        state: >
          {%- set word_for_and = 'and' %}
          {%- set up_time = (states('sensor.daily_furnace_uptime') | as_timedelta).seconds %}

          {%- macro phrase(name, plural_name, divisor, mod=None) %}
            {%- set value = ((up_time // divisor) % (mod if mod else divisor)) | int %}
            {%- set name = plural_name if value > 1 else name %}
            {{- '{} {}'.format(value, name) if value | int > 0 else '' }}
          {%- endmacro %}
          
          {%- set values = [ 
                     phrase('week', 'weeks', 60*60*24*7), 
                     phrase('day', 'days', 60*60*24, 7),
                     phrase('hour', 'hours', 60*60, 24),
                     phrase('minute', 'minutes', 60), 
                     phrase('second', 'seconds', 1, 60)
                 ] | select('!=','') | list %}
                        
          {{ values[:-1] | join(', ') ~ ' ' ~ word_for_and ~ ' ' ~ values[-1] if values | length > 1 else values | first  }}
        availability: "{{ states('sensor.daily_furnace_uptime') | as_timedelta is not none }}"
7 Likes