Quantcast
Channel: Configuration - Home Assistant Community
Viewing all articles
Browse latest Browse all 95294

Reuse value_template

$
0
0

@basvankuijck wrote:

I currently have this sensor:

---
platform: template
sensors:
  garbage_paper:
    friendly_name: 'Papier'
    entity_id: sensor.time, sensor.afval
    value_template: >-
      {% set date = strptime(state_attr('sensor.afval', 'paper'), '%Y-%m-%dT%H:%M:%S%z') %}
      {% set diff = as_timestamp(date) - as_timestamp(strptime(states.sensor.date_time.state, "%Y-%m-%d, %H:%M")) %}      
      {% set days = diff | timestamp_custom("%j") | int %}
      {% set hours = (diff / 3600) | int %}
      {% if days == 1 %}Morgen{% elif days == 2 %}Overmorgen{% elif days > 0 %}Over {{ days }} dagen{% elif hours > 0 %}Over {{ hours }} uur{% else %}Zometeen{% endif %}
      
  garbage_organic:
    friendly_name: 'GFT'
    entity_id: sensor.time, sensor.afval
    value_template: >-
      {% set date = strptime(state_attr('sensor.afval', 'organic'), '%Y-%m-%dT%H:%M:%S%z') %}
      {% set diff = as_timestamp(date) - as_timestamp(strptime(states.sensor.date_time.state, "%Y-%m-%d, %H:%M")) %}      
      {% set days = diff | timestamp_custom("%j") | int %}
      {% set hours = (diff / 3600) | int %}
      {% if days == 1 %}Morgen{% elif days == 2 %}Overmorgen{% elif days > 0 %}Over {{ days }} dagen{% elif hours > 0 %}Over {{ hours }} uur{% else %}Zometeen{% endif %}

  garbage_other:
    friendly_name: 'Rest + Plastic'
    entity_id: sensor.time, sensor.afval
    value_template: >-
      {% set date = strptime(state_attr('sensor.afval', 'other'), '%Y-%m-%dT%H:%M:%S%z') %}
      {% set diff = as_timestamp(date) - as_timestamp(strptime(states.sensor.date_time.state, "%Y-%m-%d, %H:%M")) %}      
      {% set days = diff | timestamp_custom("%j") | int %}
      {% set hours = (diff / 3600) | int %}
      {% if days == 1 %}Morgen{% elif days == 2 %}Overmorgen{% elif days > 0 %}Over {{ days }} dagen{% elif hours > 0 %}Over {{ hours }} uur{% else %}Zometeen{% endif %}

Which parses pickup dates for my garbage bins into readable date formats (in Dutch).

As you can see the value_template for each sensor is almost identical (apart from the attribute definition; paper, organic, other). It all works well, but I’m not happy with the duplication of the ‘code’.

Isn’t there a way this can be improved so I can only have one place that handles the parsing of these dates.

Maybe in the lovelace card itself? Any ideas are welcome.

Posts: 3

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 95294

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>