forked from Flo-R1der/ambientika-smart_4_home-assistant
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautomation.yaml
203 lines (201 loc) · 8.11 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
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
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_lightsensor_level
id: mode_changed
condition:
- condition: template
value_template: >-
{{ now() > as_datetime(this.attributes.last_triggered, today_at("00:00")) + timedelta(seconds=2) }}
action:
- choose:
- conditions:
- condition: trigger
id:
- change_mode
sequence:
- service: rest_command.ambientika_change_mode
data:
serial: !secret serial_device-1
mode: '"{{ states("input_select.ambientika_1_mode") }}"'
fan: "{{ states('input_number.ambientika_1_fanSpeed')|int - 1 }}"
humidity: "{{ states('input_number.ambientika_1_humidityLevel')|int - 1 }}"
light: "{{ states('input_number.ambientika_1_lightLevel')|int - 1 }}"
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- service: homeassistant.update_entity
data: {}
target:
entity_id: sensor.ambientika_1_operating_mode
- conditions:
- condition: trigger
id:
- mode_changed
- condition: template
value_template:
"{{ states('sensor.ambientika_1_operating_mode') not in ['unavailable', 'unknown'] and
states('sensor.ambientika_1_fan_speed') not in ['unavailable', 'unknown'] and
states('sensor.ambientika_1_humidity_level') not in ['unavailable', 'unknown'] and
states('sensor.ambientika_1_lightsensor_level') not in ['unavailable', 'unknown'] }}"
sequence:
- action: input_select.select_option
target:
entity_id: input_select.ambientika_1_mode
data:
option: "{{ states('sensor.ambientika_1_operating_mode') }}"
- variables:
fanspeed:
"{% if states('sensor.ambientika_1_fan_speed') == 'Low' %} 1
{% elif states('sensor.ambientika_1_fan_speed') == 'Medium' %} 2
{% elif states('sensor.ambientika_1_fan_speed') == 'High' %} 3
{% else %} {{ states('input_number.ambientika_1_fanspeed') }}
{% endif %}"
humiditylevel:
"{% if states('sensor.ambientika_1_humidity_level') == 'Dry' %} 1
{% elif states('sensor.ambientika_1_humidity_level') == 'Normal' %} 2
{% elif states('sensor.ambientika_1_humidity_level') == 'Moist' %} 3
{% else %} {{ states('input_number.ambientika_1_humiditylevel') }}
{% endif %}"
lightsensorlevel:
"{% if states('sensor.ambientika_1_lightsensor_level') == 'NotAvailable' %} 1
{% if states('sensor.ambientika_1_lightsensor_level') == 'Off' %} 2
{% elif states('sensor.ambientika_1_lightsensor_level') == 'Low' %} 3
{% elif states('sensor.ambientika_1_lightsensor_level') == 'Medium' %} 4
{% else %} {{ states('input_number.ambientika_1_lightlevel') }}
{% endif %}"
- action: input_number.set_value
target:
entity_id: input_number.ambientika_1_fanspeed
data:
value: "{{ fanspeed|float }}"
- action: input_number.set_value
target:
entity_id: input_number.ambientika_1_humiditylevel
data:
value: "{{ humiditylevel|float }}"
- action: input_number.set_value
target:
entity_id: input_number.ambientika_1_lightlevel
data:
value: "{{ lightsensorlevel|float }}"
- 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.