| 
					
				 | 
			
			
				@@ -0,0 +1,128 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Callback script when anyone presses «Send SMS». 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+script: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  birthday_wishes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mode: parallel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sequence: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - variables: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          blang: "{{ lang if lang is defined else none }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          bname: "{{ name|lower|title }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          bage: "{{ age|string + {1: 'st', 2: 'nd', 3: 'rd'}.get(4 if 10 <= age|int % 100 < 20 else age|int % 10, 'th') }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - service: "{{ notify_device }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          message: command_activity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            intent_action: "android.intent.action.SENDTO" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            intent_uri: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              sms:{{ number }}?body={{- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "🎼 «Hurra for deg som fyller ditt år, ja - deg vil jeg gratulere» 🎶 🎉 \n\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }}{%- if blang == 'no_nb' -%} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Gratulere med {{ age|default('') }}årsdagen, {{ bname }}! 🎂🎁 Håpe du får en fin dag 🥳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {%- else -%} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Happy {{ bage ~ ' ' if age else '' }}birthday, {{ bname }}! 🎂🎁 Hope'll get a beautiful day 🥳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {%- endif -%} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Require: https://github.com/jmgiaever/home-assistant-public-config/blob/master/General/notify_device.yaml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+automation: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  - alias: "Birthday: Notify on birthday!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    trigger:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - platform: calendar 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        event: start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        entity_id: calendar.ical_birthdays 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        offset: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          hours: 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    action:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - variables: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          birthdays: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {% set birthday = namespace(calendars=[]) %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {% for ical in integration_entities('ical') if  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ical.startswith('sensor.ical_birthdays_event') and not is_state(ical, 'unavailable') and  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              state_attr(ical, 'start').strftime('%d%m%y') == now().strftime('%d%m%y')  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            %}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {% set birthday.calendars = birthday.calendars + [ ical ] %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {% endfor %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ birthday.calendars }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rexp_phone: '(?:(?<=phone)|(?<=\d,)):?\s?(\+?\d[ \d]+\d)' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rexp_born: '.*?born:?\s*([\d]{2,4})' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rexp_lang: '.*?lang:?\s*([a-zA-Z\_]+)' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          langs: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            no_nb: '+47' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          notify_devices: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ state_attr('group.owners_notify_devices', 'entity_id')|list }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      - repeat: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          for_each: "{{ birthdays }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          sequence: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            - variables: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name: "{{ (states(repeat.item).split('-')[:-1]|join('-')|trim).split(' ')[0]|lower|title }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                details: '{{ state_attr(repeat.item, "description")|striptags }}' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                phones: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {{ details|regex_findall(rexp_phone, ignorecase=true) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                born: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {{ details|regex_findall_index(rexp_born, ignorecase=true) if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    details is match(rexp_born, ignorecase=true) else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  false }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lang: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {% set lang = namespace(lang=false) %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {% set lang.lang = details|regex_findall_index(rexp_lang, ignorecase=true) if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    details is match(rexp_lang, ignorecase=true) else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {% if lang.lang is false %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {% for klang in langs.keys() %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {% for phone in phones if phone.startswith(langs[klang]) %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        {% set lang.lang = klang %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {% endfor %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {% endfor %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {% endif %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {{ lang.lang if lang.lang else 'eng' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                age: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {{ false if born is false else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    100 + now().strftime('%y')|int - born if born <= 100 else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    now().strftime('%Y')|int - born|int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                index: "{{ repeat.index }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  title: "It is {{ name }}'s birthday. 🎁" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  message: >- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {% if age is not false %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {{ name }} is turning {{ age }} today. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {% else %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {{ name }} is getting one year older today. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {% endif %} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Send your congratulations 🎉 to let him/her 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    know that you appreciate them. 🥳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    actions: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      - action: SEND_SMS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        title: Send SMS 💌 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      - action: DISMISS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        title: Dismiss 💩 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: '#ebb1bb' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    group: "birthday-notifications" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    channel: "Birthdays" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    importance: high 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    icon_url: /local/icons/notifications/cake.png 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    notification_icon: "mdi:cake" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            - repeat: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for_each: "{{ notify_devices }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sequence: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  service: script.turn_on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  target: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    entity_id: script.notify_device 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    variables: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      notify_device: "{{ repeat.item }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      index: "{{ index }}-{{ repeat.index }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      timeout: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        hours: 14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      data: "{{ data }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      action_scripts: # Callback handles for «data.actions» 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        SEND_SMS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          script: script.birthday_wishes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          variables: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            lang: "{{ lang }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            name: "{{ name }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            age: "{{ age }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            notify_device: "{{ repeat.item }}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            number: "{{ phones|join(',') }}" 
			 |