-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathautomation.yaml
224 lines (222 loc) · 8.56 KB
/
automation.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
automation:
- id: automation.ambientika_authenticate
alias: Ambientika Authenticate
description: ""
mode: single
trigger:
- platform: homeassistant
event: start
- platform: numeric_state
entity_id:
- sensor.ambientika_token_remaining_days
below: 5
condition: []
action:
- service: rest_command.ambientika_authenticate
metadata: {}
data:
username: !secret ambientika_username
password: !secret ambientika_password
response_variable: response
- service: input_text.set_value
metadata: {}
data:
value: "{{ response.content.jwtToken }}"
target:
entity_id: input_text.ambientika_access_token
- service: homeassistant.update_entity
target:
entity_id: sensor.ambientika_token_remaining_days
- id: automation.ambientika_1_change_mode
alias: Ambientika 1 Change-Mode
description: ""
mode: single
variables:
input_operatingmode: input_select.ambientika_1_mode
input_fanspeed: input_number.ambientika_1_fanspeed
input_humiditylevel: input_number.ambientika_1_humiditylevel
input_lightlevel: input_number.ambientika_1_lightlevel
sensor_operatingmode: sensor.ambientika_1_operating_mode
sensor_fanspeed: sensor.ambientika_1_fan_speed
sensor_humiditylevel: sensor.ambientika_1_humidity_level
sensor_lightsensor: sensor.ambientika_1_light_sensor
trigger:
- platform: state
entity_id:
- input_select.ambientika_1_mode
- input_number.ambientika_1_fanspeed
- input_number.ambientika_1_humiditylevel
- input_number.ambientika_1_lightlevel
id: change_mode
- platform: state
entity_id:
- sensor.ambientika_1_operating_mode
- sensor.ambientika_1_fan_speed
- sensor.ambientika_1_humidity_level
- sensor.ambientika_1_light_sensor
id: mode_changed
condition:
- condition: template
value_template: >-
{{ now() > as_datetime(this.attributes.last_triggered, today_at("00:00")) + timedelta(seconds=2) }}
action:
- if:
- condition: trigger
id:
- mode_changed
then:
- condition: template
alias: Check if any sensor is in 'unavailable' or 'unknown'
value_template: >-
{{ states(sensor_operatingmode) not in ['unavailable', 'unknown'] and
states(sensor_fanspeed) not in ['unavailable', 'unknown'] and
states(sensor_humiditylevel) not in ['unavailable', 'unknown'] and
states(sensor_lightsensor) not in ['unavailable', 'unknown'] }}
- variables:
fanspeed: >-
{% if states(sensor_fanspeed) == 'Low' %} 1
{% elif states(sensor_fanspeed) == 'Medium' %} 2
{% elif states(sensor_fanspeed) == 'High' %} 3
{% else %} {{ states(input_fanspeed) }}
{% endif %}
humiditylevel: >-
{% if states(sensor_humiditylevel) == 'Dry' %} 1
{% elif states(sensor_humiditylevel) == 'Normal' %} 2
{% elif states(sensor_humiditylevel) == 'Moist' %} 3
{% else %} {{ states(input_humiditylevel) }}
{% endif %}
lightsensorlevel: >-
{% if states(sensor_lightsensor) == 'NotAvailable' %} 0
{% elif states(sensor_lightsensor) == 'Off' %} 0
{% elif states(sensor_lightsensor) == 'Low' %} 1
{% elif states(sensor_lightsensor) == 'Medium' %} 2
{% else %} {{ states(input_lightlevel) }}
{% endif %}
- action: input_number.set_value
target:
entity_id: "{{ input_fanspeed }}"
data:
value: "{{ fanspeed|float }}"
- action: input_number.set_value
target:
entity_id: "{{ input_humiditylevel }}"
data:
value: "{{ humiditylevel|float }}"
- action: input_number.set_value
target:
entity_id: "{{ input_lightlevel }}"
data:
value: "{{ lightsensorlevel|float }}"
- condition: template
alias: Check if "Operating-Mode" is 'Off'
value_template: "{{ states(sensor_operatingmode) != 'Off' }}"
- action: input_select.select_option
target:
entity_id: "{{ input_operatingmode }}"
data:
option: "{{ states(sensor_operatingmode) }}"
else:
- variables:
operatingmode: >-
{## if trigger.to_state is not defined, assuming switch as trigger ##}
{% if trigger.to_state is not defined and is_state('switch.ambientika_1', 'on') %} Off
{% else %} {{ states(input_operatingmode) }}
{% endif %}
fanspeed: >-
{{ states(input_fanspeed)|int - 1 }}
humiditylevel: >-
{{ states(input_humiditylevel)|int - 1 }}
lightlevel: >-
{% if is_state(sensor_lightsensor, 'NotAvailable') %} 0
{% else %} {{ states(input_lightlevel)|int + 1 }}
{% endif %}
- action: rest_command.ambientika_change_mode
data:
serial: !secret serial_device-1
mode: "\"{{ operatingmode }}\""
fan: "{{ fanspeed }}"
humidity: "{{ humiditylevel }}"
light: "{{ lightlevel }}"
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- action: homeassistant.update_entity
target:
entity_id: "{{ sensor_operatingmode }}"
- id: automation.ambientika_1_filter_notification
alias: Ambientika 1 Filter Notification
description: ""
mode: single
trigger:
- platform: state
entity_id:
- sensor.ambientika_1_filter_status
to: Bad
id: bad_filter
- platform: event
event_type: mobile_app_notification_action
event_data:
action: RESET_FILTER_1
id: reset_filter
condition: []
action:
- choose:
- conditions:
- condition: trigger
id:
- bad_filter
sequence:
- variables:
area: "{{ area_name(trigger.entity_id) }}"
short_name: >-
Ambientika {{ state_attr(trigger.entity_id,
'friendly_name').split(' ')[1] }}
message: >-
The filter of your <b>{{short_name}}</b> is in bad condition.
<b>Please clean</b> it and reset the working hours.
- action: notify.notify
data:
title: Ambiantika Filter
message: "{{ message}}"
data:
tag: "{{ trigger.entity_id }}"
visibility: public
sticky: "true"
notification_icon: mdi:air-filter
actions:
- action: RESET_FILTER_1
title: Reset Filter
- conditions:
- condition: trigger
id:
- reset_filter
sequence:
- variables:
device_serial: "{{ state_attr(trigger.event.data.tag, 'device_serial') }}"
- action: rest_command.ambientika_reset_filter
metadata: {}
data:
rest_url: >-
{{ 'https://app.ambientika.eu:4521/device/reset-filter' ~
'?deviceSerialNumber=' ~ device_serial }}
response_variable: result
- if:
- condition: template
value_template: "{{ result.status == 200 }}"
then:
- action: notify.notify
metadata: {}
data:
message: clear_notification
data:
tag: "{{ trigger.event.data.tag }}"
else:
- action: notify.notify
metadata: {}
data:
title: ⚠️ Ambientika Filter-Reset failed
message: >-
Automatic filter reset failed. Please use the official app
to reset the filter status.