-
Notifications
You must be signed in to change notification settings - Fork 4
/
garbage_collection_telegram.yaml
97 lines (91 loc) · 3.19 KB
/
garbage_collection_telegram.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# package_garbage_collection:
homeassistant:
customize:
package.node_anchors:
customize: &customize
Package: Garbage Collection
site: https://www.redfoxy.it
author: Massimo Cicci0'
version: 2.1
customize_glob:
"sensor.raccolta_*":
<<: *customize
"automation.garbage_collection_*":
<<: *customize
"input_datetime.garbage_collection_*":
<<: *customize
"input_number.garbage_collection_*":
<<: *customize
input_datetime:
garbage_collection_time:
name: Orario avviso raccolta differenziata
has_date: false
has_time: true
initial: "09:05"
input_number:
garbage_collection_days:
min: 0
max: 10
name: notifica
step: 1
mode: slider
# unit_of_measurement: giorni
automation:
- alias: "Garbage Collection Notifications"
# initial_state: true
max_exceeded: silent
# mode: restart
trigger:
- platform: homeassistant
event: start
- platform: time
at: input_datetime.garbage_collection_time
- platform: template
value_template: >
{{ states.sensor
| selectattr('attributes.days','defined')
| selectattr('attributes.device_class', '>=', 'garbage_collection')
| selectattr('attributes.days', '==', states('input_number.garbage_collection_days')|int)
| map(attribute='entity_id')|list|count != expand(states.group.garbage_collection)|list|count
}}
action:
- variables:
prefix_message: >-
{% set days = states('input_number.garbage_collection_days')|int %}
{% if days == 0 %}
Oggi ritirano
{% elif days == 1 %}
Domani ritirano
{% elif days == 2 %}
Dopodomani ritirano
{% else %}
Ricordati che tra {{days}} giorni ritirano
{% endif %}
- choose:
- conditions: "{{trigger is defined and not 'time' in trigger.platform}}"
sequence:
- service: group.set
data:
object_id: garbage_collection
entities: >-
{{ states.sensor
| selectattr('attributes.days','defined')
| selectattr('attributes.device_class', '>=', 'garbage_collection')
| selectattr('attributes.days', '==', states('input_number.garbage_collection_days')|int)
| map(attribute='entity_id')|list
}}
- conditions: "{{expand(states.group.garbage_collection)|list|count > 0}}"
sequence:
- service: notify.telegram
data:
title: >
Promemoria differenziata
message: >
{% set comma = joiner(', ') %}
{%- macro raccolta() -%}
{% for e in expand(states.group.garbage_collection) -%}
{{' e' if loop.last and not loop.first else comma()}}
{{e.name}}
{%- endfor %}
{%- endmacro -%}
{{ prefix_message ~ raccolta()}}