{"id":13336,"date":"2021-09-23T10:26:38","date_gmt":"2021-09-23T10:26:38","guid":{"rendered":"https:\/\/www.rjt.org.uk\/home\/?post_type=home_assistant_tip&#038;p=13336"},"modified":"2021-09-25T09:34:42","modified_gmt":"2021-09-25T09:34:42","slug":"getting-nice-messages-from-anniversary","status":"publish","type":"home_assistant_tip","link":"https:\/\/www.rjt.org.uk\/home\/archives\/home-assistant-tip\/getting-nice-messages-from-anniversary\/","title":{"rendered":"Getting nice messages from &#8220;Anniversary&#8221;"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.rjt.org.uk\/home\/wp-content\/uploads\/2021\/09\/2021-09-25_103343.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"179\" src=\"https:\/\/www.rjt.org.uk\/home\/wp-content\/uploads\/2021\/09\/2021-09-25_103343.jpg\" alt=\"\" class=\"wp-image-13339\" srcset=\"https:\/\/www.rjt.org.uk\/home\/wp-content\/uploads\/2021\/09\/2021-09-25_103343.jpg 505w, https:\/\/www.rjt.org.uk\/home\/wp-content\/uploads\/2021\/09\/2021-09-25_103343-300x106.jpg 300w, https:\/\/www.rjt.org.uk\/home\/wp-content\/uploads\/2021\/09\/2021-09-25_103343-150x53.jpg 150w\" sizes=\"auto, (max-width: 505px) 100vw, 505px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Using &#8220;<a href=\"https:\/\/github.com\/amaximus\/anniversary\" data-type=\"URL\" data-id=\"https:\/\/github.com\/amaximus\/anniversary\">Anniversary sensor for upcoming events for Home Assistant<\/a>&#8221; it&#8217;s possible to get a list of events in the attributes.  It is configured in the sensors yaml file.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> platform: anniversary\n  name: events\n  multiple: true\n  items: 3\n  anniversaries:\n    - event: 'Jane'\n      date: '2099-01-01'\n      icon: mdi:cake-variant\n      type: birthday<\/pre>\n\n\n\n<p>To get a nice sentence based result for Alexa speak announcements I use:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"md\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{%- macro ex(n) -%}\n{%- set e = n |string %}\n{%- set e = e [-1]%}\n{%- if n in [11,12,13,14,15,16,17,18,19] %}\n{%- set ex = 'th' %}\n{%- elif e == '1' %}\n{%- set ex = 'st' %}\n{%- elif e == '2' %}\n{%- set ex = 'nd' %}\n{%- elif e == '3' %}\n{%- set ex = 'rd' %}\n{%- else %}\n{%- set ex = 'th' %}\n{%- endif %}{{ex}}\n{%- endmacro %}\n{%- macro indays(d) %}\n{%- set dn = d | float%}\n{%- if dn | float == 1 %}\n{%- set t = 'tomorrow' %}\n{%- elif dn == 0 %}{%- set t = 'today' %}\n{%- else %}\n{%- set t = 'in ' + d + ' days' %}\n{%- endif %}{{ t}}\n{%- endmacro -%}\n{%- for state in state_attr('sensor.events','events')|list %}\n{%- if state.event_in | float &lt; 30 %}\n{%- endif %}{{- state.event }}'s {{state.anniversary}}{{ex(state.anniversary)}} {{state.type}} {{indays(state.event_in)}}  \n{%- endif %}\n{% endfor %}<\/pre>\n\n\n\n<p>This provides a readable output using 1st or 2nd rather than just a simple number for the age\/anniversary number.<\/p>\n\n\n\n<p>To add icons and limit to events in the next month this can be used in a panel.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"md\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{%- macro ex(n) -%}\n{%- set e = n |string %}\n{%- set e = e [-1]%}\n{%- if n in [11,12,13,14,15,16,17,18,19] %}\n{%- set ex = 'th' %}\n{%- elif e == '1' %}\n{%- set ex = 'st' %}\n{%- elif e == '2' %}\n{%- set ex = 'nd' %}\n{%- elif e == '3' %}\n{%- set ex = 'rd' %}\n{%- else %}\n{%- set ex = 'th' %}\n{%- endif %}{{ex}}\n{%- endmacro %}\n{%- macro indays(d) %}\n{%- set dn = d | float%}\n{%- if dn | float == 1 %}\n{%- set t = 'tomorrow' %}\n{%- elif dn == 0 %}{%- set t = 'today' %}\n{%- else %}\n{%- set t = 'in ' + d + ' days' %}\n{%- endif %}{{ t}}\n{%- endmacro -%}\n{%- for state in state_attr('sensor.events','events')|list %}\n{%- if state.event_in | float &lt; 30 %}\n{%- if state.type == 'birthday' %}\n{%- set icon = 'mdi:cake' %}\n{%- else %}\n{%- set icon = 'mdi:bell' %}\n{%- endif %}&lt;ha-icon icon=\"{{icon}}\">&lt;\/ha-icon>&amp;nbsp; {{- state.event }}'s {{state.anniversary}}{{ex(state.anniversary)}} {{state.type}} {{indays(state.event_in)}}  \n{%- endif %}\n{% endfor %}<\/pre>\n","protected":false},"template":"","class_list":["post-13336","home_assistant_tip","type-home_assistant_tip","status-publish","hentry","comments-off"],"_links":{"self":[{"href":"https:\/\/www.rjt.org.uk\/home\/wp-json\/wp\/v2\/home_assistant_tip\/13336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rjt.org.uk\/home\/wp-json\/wp\/v2\/home_assistant_tip"}],"about":[{"href":"https:\/\/www.rjt.org.uk\/home\/wp-json\/wp\/v2\/types\/home_assistant_tip"}],"wp:attachment":[{"href":"https:\/\/www.rjt.org.uk\/home\/wp-json\/wp\/v2\/media?parent=13336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}