Home Assistant Template
Using “Anniversary sensor for upcoming events for Home Assistant” it’s possible to get a list of events in the attributes. It is configured in the sensors yaml file.
platform: anniversary name: events multiple: true items: 3 anniversaries: - event: 'Jane' date: '2099-01-01' icon: mdi:cake-variant type: birthday
To get a nice sentence based result for Alexa speak announcements I use:
{%- macro ex(n) -%} {%- set e = n |string %} {%- set e = e [-1]%} {%- if n in [11,12,13,14,15,16,17,18,19] %} {%- set ex = 'th' %} {%- elif e == '1' %} {%- set ex = 'st' %} {%- elif e == '2' %} {%- set ex = 'nd' %} {%- elif e == '3' %} {%- set ex = 'rd' %} {%- else %} {%- set ex = 'th' %} {%- endif %}{{ex}} {%- endmacro %} {%- macro indays(d) %} {%- set dn = d | float%} {%- if dn | float == 1 %} {%- set t = 'tomorrow' %} {%- elif dn == 0 %}{%- set t = 'today' %} {%- else %} {%- set t = 'in ' + d + ' days' %} {%- endif %}{{ t}} {%- endmacro -%} {%- for state in state_attr('sensor.events','events')|list %} {%- if state.event_in | float < 30 %} {%- endif %}{{- state.event }}'s {{state.anniversary}}{{ex(state.anniversary)}} {{state.type}} {{indays(state.event_in)}} {%- endif %} {% endfor %}
This provides a readable output using 1st or 2nd rather than just a simple number for the age/anniversary number.
To add icons and limit to events in the next month this can be used in a panel.
{%- macro ex(n) -%} {%- set e = n |string %} {%- set e = e [-1]%} {%- if n in [11,12,13,14,15,16,17,18,19] %} {%- set ex = 'th' %} {%- elif e == '1' %} {%- set ex = 'st' %} {%- elif e == '2' %} {%- set ex = 'nd' %} {%- elif e == '3' %} {%- set ex = 'rd' %} {%- else %} {%- set ex = 'th' %} {%- endif %}{{ex}} {%- endmacro %} {%- macro indays(d) %} {%- set dn = d | float%} {%- if dn | float == 1 %} {%- set t = 'tomorrow' %} {%- elif dn == 0 %}{%- set t = 'today' %} {%- else %} {%- set t = 'in ' + d + ' days' %} {%- endif %}{{ t}} {%- endmacro -%} {%- for state in state_attr('sensor.events','events')|list %} {%- if state.event_in | float < 30 %} {%- if state.type == 'birthday' %} {%- set icon = 'mdi:cake' %} {%- else %} {%- set icon = 'mdi:bell' %} {%- endif %}<ha-icon icon="{{icon}}"></ha-icon> {{- state.event }}'s {{state.anniversary}}{{ex(state.anniversary)}} {{state.type}} {{indays(state.event_in)}} {%- endif %} {% endfor %}