6823 lines
178 KiB
YAML
6823 lines
178 KiB
YAML
- alias: event_android_alarm
|
|
id: event_android_alarm
|
|
triggers:
|
|
- trigger: event
|
|
event_type: android_alarm
|
|
actions:
|
|
- action: timer.start
|
|
entity_id: timer.post_android_alarm
|
|
data:
|
|
duration: '{{states.input_number.post_android_alarm.state|int}}'
|
|
- action: logbook.log
|
|
data:
|
|
name: ha_alarm
|
|
message: timer arm {{states.input_number.post_android_alarm.state}} seconds
|
|
- alias: post_android_alarm
|
|
id: post_android_alarm
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.post_android_alarm
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n not is_state('media_player.bedroom_speaker', 'playing')\n\
|
|
\ }}"
|
|
actions:
|
|
- action: script.android_post_alarm
|
|
- id: bed_light
|
|
alias: bed_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 60
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
cfg: '{% from ''tools.jinja'' import light_cfg %} {{ light_cfg(is_state(''binary_sensor.night_mode'',
|
|
''off'')) | from_json }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.bed
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.bed
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
transition: '{{ cfg.transition }}'
|
|
color_temp: '{{ cfg.temp }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.bed
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.bed
|
|
transition: '{{ cfg.transition }}'
|
|
- id: other_bed_light
|
|
alias: other_bed_light
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.bed_motion
|
|
- binary_sensor.night_mode_ctrl
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 120
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
to: 'off'
|
|
id: light_ctrl_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_ctrl_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: light.shutter_bed
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.shutter_bed
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.shutter_bed
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_bed
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_ctrl_off
|
|
- condition: state
|
|
entity_id: light.shutter_bed
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_bed
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.bed_wardrobe
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.bed_wardrobe
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.bed_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.bed_wardrobe
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.bed_wardrobe
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_ctrl_off
|
|
- condition: state
|
|
entity_id: light.bed_wardrobe
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.bed_wardrobe
|
|
- alias: motion_light_extend
|
|
id: motion_light_extend
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.home_light_extend
|
|
to: 'on'
|
|
for:
|
|
seconds: 5
|
|
actions:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id: script.lumi_double_switch_on
|
|
- alias: change_pressure
|
|
id: change_pressure
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.change_pressure
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ states(''sensor.change_pressure'') | float(0) | abs > states(''input_number.pressure_speed'')
|
|
| float(0) }}'
|
|
- condition: template
|
|
value_template: "{%- if state_attr('automation.change_pressure', 'last_triggered')\
|
|
\ = None -%}\n {{\n now() - state_attr('automation.change_pressure', 'last_triggered')\
|
|
\ >\n timedelta(hours=1)\n }}\n{%- else -%}\n True\n{%- endif -%}"
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: '{{state_attr(''sensor.change_pressure'', ''icon'').split('':'')[1]}}'
|
|
tit: pressure change
|
|
msg: '{{states(''sensor.change_pressure'')}}'
|
|
- alias: weather_alert
|
|
id: weather_alert
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.w_alert
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{trigger.from_state.state = trigger.to_state.state}}'
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: weather-cloudy-alert
|
|
tit: weather
|
|
msg: "{%- if is_state('binary_sensor.w_alert', 'on') -%}\n {{ state_attr('binary_sensor.w_alert',\
|
|
\ 'awareness_type').split(';')[1] }} -{{ state_attr('binary_sensor.w_alert',\
|
|
\ 'awareness_level').split(';')[1] }}\n {{ state_attr('binary_sensor.w_alert',\
|
|
\ 'expires') }}\n{% else %}\n alert expired\n{% endif %}"
|
|
- alias: temp_vent_notify
|
|
id: temp_vent_notify
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.temp_ventilaton
|
|
actions:
|
|
- variables:
|
|
tit: '{{ states(''sensor.temp_out'', with_unit=True) }} out'
|
|
msg: "{%-\n set val = {\n 'on': 'open window',\n 'off': 'close\
|
|
\ window',\n }\n -%}\n{{ val[states('binary_sensor.temp_ventilaton')]\
|
|
\ }}"
|
|
- action: logbook.log
|
|
data:
|
|
name: '{{ tit }}'
|
|
message: '{{ msg }}'
|
|
- action: persistent_notification.create
|
|
data_template:
|
|
title: '{{ tit }}'
|
|
message: '{{ msg }}'
|
|
- if:
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: playing
|
|
then:
|
|
- action: notify.kodi
|
|
data:
|
|
data:
|
|
icon: info
|
|
displaytime: 15000
|
|
title: '{{ tit }}'
|
|
message: '{{ msg }}'
|
|
else:
|
|
- action: notify.gmail
|
|
data_template:
|
|
title: '{{ tit }}'
|
|
message: '{{ msg }}'
|
|
- alias: hall_light
|
|
id: hall_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: "{%- if int(states('counter.hall_motion'), 30) > 6 -%}\n 90\n{%- elif\
|
|
\ int(states('counter.hall_motion'), 30) > 3 -%}\n 45\n{%- else -%}\n 30\n\
|
|
{%- endif -%}"
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.hall
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: null
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.hall
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.hall
|
|
state: 'on'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.hall
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
sequence:
|
|
- action: counter.increment
|
|
data:
|
|
entity_id:
|
|
- counter.hall_motion
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
sequence:
|
|
- action: counter.reset
|
|
data:
|
|
entity_id:
|
|
- counter.hall_motion
|
|
- alias: home_motion_detect
|
|
id: home_motion_detect
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: input_boolean.home_motion
|
|
to: 'off'
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n not (\n is_state('device_tracker.root', 'home')\
|
|
\ or\n states.device_tracker.root == None\n )\n\n }}"
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
entity_id: input_boolean.home_motion
|
|
- alias: notify_record
|
|
id: notify_record
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.video_rec
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: record-rec
|
|
tit: video rec
|
|
msg: "{%- if states.sensor.video_rec -%}\n dur: {{ state_attr('sensor.video_rec',\
|
|
\ 'duration') }}\n size: {{ states('sensor.video_rec') }}\n edl: {{ state_attr('sensor.video_rec',\
|
|
\ 'edl') }}\n name: {{ state_attr('sensor.video_rec', 'fname') }}\n date:\
|
|
\ {{ state_attr('sensor.video_rec', 'date') }}\n{% else %}\n err record\n\
|
|
{% endif %}"
|
|
- alias: in_call
|
|
id: in_call
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.in_call
|
|
actions:
|
|
- service_template: "{%-\n set scr = {\n 'off': 'script.in_call_off',\n\
|
|
\ 'on': 'script.in_call_on'\n }\n -%}\n{{ scr[trigger.to_state.state]\
|
|
\ }}"
|
|
- alias: kitchen_light
|
|
id: kitchen_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.kitchen_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.kitchen_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: "{%- if int(states('counter.kitchen_motion'), 30) > 14 -%}\n 120\n\
|
|
{%- elif int(states('counter.kitchen_motion'), 30) > 10 -%}\n 90\n{%- elif\
|
|
\ int(states('counter.kitchen_motion'), 30 ) > 6 -%}\n 60\n{%- else -%}\n\
|
|
\ 15\n{%- endif -%}"
|
|
id: kitchen_light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
brightness_pct: "{%- if is_state('binary_sensor.night_mode', 'off') -%}\n {{\
|
|
\ range(80, 90, 1) | random }}\n{%- else -%}\n {{ range(30, 40, 1) | random\
|
|
\ }}\n{%- endif -%}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.kitchen_led
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen_led
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen_led
|
|
data:
|
|
brightness_pct: '{{ brightness_pct }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- kitchen_light_off
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.kitchen_led
|
|
state: 'on'
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.kitchen_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen_led
|
|
data:
|
|
brightness_pct: 15
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
sequence:
|
|
- action: counter.increment
|
|
data:
|
|
entity_id:
|
|
- counter.kitchen_motion
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- kitchen_light_off
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.kitchen_occupancy
|
|
state: 'off'
|
|
sequence:
|
|
- action: counter.reset
|
|
data:
|
|
entity_id:
|
|
- counter.kitchen_motion
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'off'
|
|
sequence:
|
|
- event: kitchen_light_1
|
|
event_data:
|
|
ctrl: kitchen_on
|
|
brightness_pct: '{{ range(85, 95, 2) | random }}'
|
|
temp: '{{ 4000 }}'
|
|
transition: '{{ 1 }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- kitchen_light_off
|
|
sequence:
|
|
- event: kitchen_light_1
|
|
event_data:
|
|
ctrl: kitchen_off
|
|
transition: '{{ 1 }}'
|
|
- alias: kitchen_light_1
|
|
id: kitchen_light_1
|
|
initial_state: true
|
|
triggers:
|
|
- trigger: event
|
|
event_type: kitchen_light_1
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.ctrl == ''kitchen_on'' }}'
|
|
- condition: numeric_state
|
|
entity_id: sensor.living_window_lux
|
|
value_template: '{{ float(state.state, 20) }}'
|
|
below: 30
|
|
- condition: state
|
|
entity_id: binary_sensor.night_mode
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ not is_state_attr(''light.kitchen'', ''color_temp_kelvin'',
|
|
4000) }}'
|
|
sequence:
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
brightness_pct: 1
|
|
transition: 0
|
|
color_temp_kelvin: '{{ trigger.event.data.temp }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
brightness_pct: '{{ trigger.event.data.brightness_pct }}'
|
|
transition: '{{ trigger.event.data.transition }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.ctrl == ''living_on'' }}'
|
|
- condition: numeric_state
|
|
entity_id: sensor.living_window_lux
|
|
value_template: '{{ float(state.state, 10) }}'
|
|
below: 20
|
|
- condition: state
|
|
entity_id: binary_sensor.night_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.kitchen
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'off'
|
|
sequence:
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
brightness_pct: 1
|
|
transition: 0
|
|
color_temp_kelvin: '{{ trigger.event.data.temp }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
brightness_pct: '{{ trigger.event.data.brightness_pct }}'
|
|
transition: '{{ trigger.event.data.transition }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.ctrl == ''kitchen_off'' }}'
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'off'
|
|
- condition: numeric_state
|
|
entity_id: sensor.living_window_lux
|
|
value_template: '{{ float(state.state, 20) }}'
|
|
below: 30
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
transition: 3
|
|
brightness: '{{ state_attr(''light.living'', ''brightness'') | int(220)
|
|
}}'
|
|
color_temp_kelvin: '{{ state_attr(''light.living'', ''color_temp_kelvin'')
|
|
| int(3000) }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.event.data.ctrl in ['kitchen_off', 'living_off']\
|
|
\ or\n trigger.id == 'light_off'\n }}"
|
|
- condition: state
|
|
entity_id: light.kitchen
|
|
state: 'on'
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n not is_state ('binary_sensor.living_occupancy',\
|
|
\ 'on')\n }}"
|
|
- condition: numeric_state
|
|
entity_id: counter.kitchen_motion
|
|
below: 1
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.kitchen
|
|
data:
|
|
transition: 5
|
|
- alias: kodi sleep timer
|
|
id: kodi_sleep_timer
|
|
triggers:
|
|
- trigger: event
|
|
event_type: kodi_sleep_timer
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.tv_cec
|
|
state: 'on'
|
|
actions:
|
|
- action: switch.turn_off
|
|
entity_id: switch.tv_cec
|
|
- delay:
|
|
seconds: 100
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
volume_level: 1.0
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: kodi
|
|
tit: kodi
|
|
msg: restore volume
|
|
- alias: tv ctrl
|
|
id: tv_ctrl
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.kodi_screen_saver
|
|
to: 'off'
|
|
id: tv_on
|
|
for:
|
|
seconds: 1
|
|
- trigger: state
|
|
entity_id: binary_sensor.kodi_screen_saver
|
|
to: 'on'
|
|
for:
|
|
seconds: 30
|
|
id: tv_off
|
|
- trigger: state
|
|
entity_id: media_player.livingtv
|
|
to: playing
|
|
for:
|
|
seconds: 1
|
|
id: play
|
|
- trigger: state
|
|
entity_id: media_player.livingtv
|
|
from: playing
|
|
for:
|
|
seconds: 1
|
|
id: pause
|
|
- trigger: state
|
|
entity_id: media_player.livingtv
|
|
to: paused
|
|
for:
|
|
seconds: 3
|
|
id: pause_long
|
|
- trigger: event
|
|
event_type: tv_ctrl
|
|
event_data:
|
|
data: tv_off
|
|
id: tv_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- tv_on
|
|
- tv_off
|
|
sequence:
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: XBMC.GetInfoBooleans
|
|
booleans:
|
|
- System.IdleTime(60)
|
|
- delay:
|
|
milliseconds: 500
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- tv_on
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
- condition: state
|
|
entity_id: switch.tv_cec
|
|
state: 'off'
|
|
sequence:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: Sparks
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- tv_on
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_idle
|
|
state: 'off'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
state: playing
|
|
then:
|
|
- action: media_player.turn_off
|
|
data:
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
else:
|
|
- action: shell_command.sound_bar_on
|
|
- delay:
|
|
seconds: 5
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- tv_on
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
- condition: state
|
|
entity_id: switch.tv_cec
|
|
state: 'off'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_idle
|
|
state: 'off'
|
|
then:
|
|
- action: switch.turn_on
|
|
entity_id: switch.tv_cec
|
|
- wait_template: "{{\n is_state('switch.tv_cec', 'on')\n }}"
|
|
timeout:
|
|
seconds: 30
|
|
continue_on_timeout: true
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.is_hdmi1
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.as_hdmi1
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.tv_hdmi1_audio
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.as_hdmi1
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.tv_hdmi1_audio
|
|
- action: script.state_kodi
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.as_hdmi1
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.tv_hdmi1_audio
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.light_extend_clear
|
|
- action: songpal.set_sound_setting
|
|
data:
|
|
entity_id: media_player.soundbar
|
|
name: subwooferLevel
|
|
value: 6
|
|
- action: songpal.set_sound_setting
|
|
data:
|
|
entity_id: media_player.soundbar
|
|
name: voice
|
|
value: type2
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.soundbar
|
|
volume_level: 0.24
|
|
- action: notify.kodi
|
|
data:
|
|
title: cec on
|
|
message: sequnce finised
|
|
data:
|
|
icon: info
|
|
displaytime: 5000
|
|
- event: tv_cec_control_done
|
|
event_data:
|
|
cec: 'on'
|
|
else:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: television
|
|
tit: living tv
|
|
msg: skip on
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- tv_off
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
- condition: state
|
|
entity_id: switch.tv_cec
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
entity_id: switch.tv_cec
|
|
- wait_template: "{{\n is_state('switch.tv_cec', 'off')\n }}"
|
|
timeout:
|
|
seconds: 20
|
|
continue_on_timeout: true
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: switch.tv_cec
|
|
state: 'on'
|
|
sequence:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: Police Lights Solid
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: television
|
|
tit: living tv
|
|
msg: restart
|
|
- delay:
|
|
seconds: 30
|
|
- action: script.living_tv_reboot
|
|
default:
|
|
- delay:
|
|
seconds: 5
|
|
- action: script.radio_on
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: Matrix
|
|
- event: tv_cec_control_done
|
|
event_data:
|
|
cec: 'off'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- pause
|
|
sequence:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: Lights
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- play
|
|
sequence:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.light_extend_clear
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: None
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- pause_long
|
|
sequence:
|
|
- action: script.state_kodi
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: Addons.ExecuteAddon
|
|
addonid: plugin.program.braviacontrol
|
|
params: VolumeDown
|
|
- delay:
|
|
seconds: 1
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: Addons.ExecuteAddon
|
|
addonid: plugin.program.braviacontrol
|
|
params: VolumeUp
|
|
- alias: kodi_clear_tv_db
|
|
id: kodi_clear_tv_db
|
|
triggers:
|
|
- trigger: event
|
|
event_type: tv_cec_control_done
|
|
event_data:
|
|
cec: 'off'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
actions:
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: Addons.SetAddonEnabled
|
|
addonid: pvr.hts
|
|
enabled: false
|
|
- delay:
|
|
seconds: 5
|
|
- action: shell_command.tv_cleardb
|
|
- delay:
|
|
seconds: 5
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: Addons.SetAddonEnabled
|
|
addonid: pvr.hts
|
|
enabled: true
|
|
- delay:
|
|
seconds: 10
|
|
- action: kodi.call_method
|
|
data:
|
|
entity_id: media_player.livingtv
|
|
method: VideoLibrary.Clean
|
|
- alias: update_video_db
|
|
id: update_video_db
|
|
triggers:
|
|
- trigger: event
|
|
event_type: tv_cec_control_done
|
|
event_data:
|
|
cec: 'on'
|
|
- trigger: state
|
|
entity_id: media_player.livingtv
|
|
to: idle
|
|
for:
|
|
seconds: 10
|
|
- trigger: state
|
|
entity_id: media_player.livingtv
|
|
to: paused
|
|
for:
|
|
seconds: 10
|
|
actions:
|
|
- action: script.update_video_db
|
|
- action: logbook.log
|
|
data_template:
|
|
name: videodb
|
|
message: trigger update
|
|
- action: automation.turn_off
|
|
entity_id: automation.update_video_db
|
|
- alias: sonarr_radarr_db
|
|
id: sonarr_radarr_db
|
|
triggers:
|
|
- trigger: event
|
|
event_type: update_video_db
|
|
mode: queued
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: download-outline
|
|
tit: "{{\n trigger.event.data.name\n }}"
|
|
msg: "{{\n trigger.event.data.eventtype\n }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.event.data.eventtype in ['Download', 'Rename']\n\
|
|
\ }}"
|
|
sequence:
|
|
- action: automation.turn_on
|
|
entity_id: automation.update_video_db
|
|
- alias: bazarr_subs
|
|
id: bazarr_subs
|
|
triggers:
|
|
- trigger: event
|
|
event_type: bazarr_subs
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: subtitles-outline
|
|
tit: bazarr
|
|
msg: '{{trigger.event.data.message}}'
|
|
- alias: living_light
|
|
id: living_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 60
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.light_video_pause
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.light_video_pause
|
|
to: 'off'
|
|
id: light_off_video
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
cfg: "{% from 'tools.jinja' import light_cfg %} {{ light_cfg(\n is_state('binary_sensor.night_mode',\
|
|
\ 'off') and\n is_state('binary_sensor.light_video_pause', 'off')\n\
|
|
\ ) | from_json\n }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
- condition: numeric_state
|
|
entity_id: sensor.living_lux
|
|
value_template: '{{ float(state.state, 30) }}'
|
|
below: 40
|
|
sequence:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.living
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
transition: '{{ cfg.transition }}'
|
|
color_temp: '{{ cfg.temp }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.light_video_pause
|
|
state: 'off'
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.living_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_active
|
|
state: 'on'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.living
|
|
transition: '{{ cfg.transition }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off_video
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'on'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.living
|
|
transition: '{{ cfg.transition }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
sequence:
|
|
- event: kitchen_light_1
|
|
event_data:
|
|
ctrl: living_on
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
temp: "{%- if is_state('light.living', 'on') -%}\n {{ state_attr('light.living',\
|
|
\ 'color_temp_kelvin') }}\n{%- else -%}\n {{ cfg.temp }}\n{%- endif -%}"
|
|
transition: '{{ cfg.transition }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
sequence:
|
|
- event: kitchen_light_1
|
|
event_data:
|
|
ctrl: living_off
|
|
transition: '{{ cfg.transition }}'
|
|
- alias: other_living_light
|
|
id: other_living_light
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.living_motion
|
|
- binary_sensor.night_mode_ctrl
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 120
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
to: 'off'
|
|
id: light_ctrl_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_ctrl_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.living_occupancy
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: light.shutter_living
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.shutter_living
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.living_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.shutter_living
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_living
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_ctrl_off
|
|
- condition: state
|
|
entity_id: light.shutter_living
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_living
|
|
- alias: n0ll_not_home
|
|
id: n0ll_not_home
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.n0ll
|
|
to: not_home
|
|
for:
|
|
seconds: 90
|
|
actions:
|
|
- action: script.sound_bar_go_sleep
|
|
- alias: root_not_home
|
|
id: root_not_home
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: leave
|
|
actions:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.light_extend_clear
|
|
- action: media_player.turn_off
|
|
entity_id:
|
|
- media_player.ht_mt500_501_b34d6a
|
|
- media_player.bedroom_speaker
|
|
- action: script.kodi_turn_off
|
|
- action: automation.turn_off
|
|
entity_id:
|
|
- automation.just_home
|
|
- alias: home_away
|
|
id: home_away
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.home_root_distance
|
|
above: 15
|
|
id: away
|
|
- trigger: state
|
|
entity_id: input_boolean.away_skip
|
|
for:
|
|
seconds: 3
|
|
id: away_skip
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- away
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- away_skip
|
|
- condition: state
|
|
entity_id: input_boolean.away_skip
|
|
state: 'off'
|
|
- condition: numeric_state
|
|
entity_id: sensor.home_root_distance
|
|
above: 15
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.away_skip
|
|
state: 'off'
|
|
then:
|
|
- action: notify.gmail
|
|
data:
|
|
message: home away trigger
|
|
title: hass
|
|
- action: script.turn_on
|
|
target:
|
|
entity_id:
|
|
- script.doors_full_lock
|
|
- action: switch.turn_off
|
|
entity_id:
|
|
- switch.living_tv
|
|
- switch.bed_switch_1
|
|
- action: automation.turn_on
|
|
entity_id: automation.home_near
|
|
- action: automation.turn_off
|
|
entity_id: automation.home_away
|
|
else:
|
|
- action: script.all_notify
|
|
data:
|
|
tit: home_away
|
|
msg: skip
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- away_skip
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
tit: home_away
|
|
msg: "{%- set _map = {\n 'on': 'disabled',\n 'off': 'enabled'\n\
|
|
\ }\n -%}\nis {{ _map[states('input_boolean.away_skip')] }}"
|
|
- alias: office_light
|
|
id: office_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 60
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
cfg: '{% from ''tools.jinja'' import light_cfg %} {{ light_cfg(is_state(''binary_sensor.night_mode'',
|
|
''off'')) | from_json }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.office
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id:
|
|
- input_boolean.office_enter_dummy
|
|
state: 'off'
|
|
then:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.office
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
transition: '{{ cfg.transition }}'
|
|
color_temp: '{{ cfg.temp }}'
|
|
else:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.office_desk
|
|
ctrl_all: false
|
|
brightness_pct: 70
|
|
transition: 5
|
|
color_temp: 4000
|
|
- action: input_boolean.turn_off
|
|
entity_id:
|
|
- input_boolean.office_enter_dummy
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.office
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.office
|
|
transition: '{{ cfg.transition }}'
|
|
- alias: other_office_light
|
|
id: other_office_light
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.office_motion
|
|
- binary_sensor.night_mode_ctrl
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 120
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
to: 'off'
|
|
id: light_ctrl_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_ctrl_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.night_mode_ctrl
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: light.shutter_office
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.shutter_office
|
|
- condition: state
|
|
entity_id: input_boolean.office_enter_dummy
|
|
state: 'on'
|
|
- action: input_boolean.turn_off
|
|
entity_id:
|
|
- input_boolean.office_enter_dummy
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.shutter_office
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_office
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_ctrl_off
|
|
- condition: state
|
|
entity_id: light.shutter_office
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.shutter_office
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.office_wardrobe
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.office_wardrobe
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: binary_sensor.office_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.office_wardrobe
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.office_wardrobe
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_ctrl_off
|
|
- condition: state
|
|
entity_id: light.office_wardrobe
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.office_wardrobe
|
|
- id: bath_heating
|
|
alias: bath_heating
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: switch.climate_control
|
|
for:
|
|
minutes: 3
|
|
id: on_off
|
|
- trigger: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
to: 'on'
|
|
for:
|
|
minutes: 3
|
|
id: bed_off
|
|
- trigger: time
|
|
at: 06:30:00
|
|
id: time_on
|
|
- trigger: time
|
|
at: 00:15:00
|
|
id: time_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_on
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
- condition: state
|
|
entity_id: climate.bath_tvr
|
|
state:
|
|
- heat
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
hvac_mode: heat
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_preset_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
preset_mode: manual
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
temperature: 22.5
|
|
- delay:
|
|
seconds: 3
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id: switch.bath_tvr_boost
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_off
|
|
- bed_off
|
|
- condition: state
|
|
entity_id: climate.bath_tvr
|
|
state:
|
|
- heat
|
|
sequence:
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
temperature: 19.5
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- on_off
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state: heating
|
|
- condition: state
|
|
entity_id: climate.bath_tvr
|
|
state:
|
|
- 'off'
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
hvac_mode: heat
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_preset_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
preset_mode: manual
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
temperature: 20.5
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- on_off
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state: heating
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state: cooling
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: climate.bath_tvr
|
|
state:
|
|
- heat
|
|
- condition: numeric_state
|
|
entity_id: climate.bath_tvr
|
|
attribute: temperature
|
|
above: 10.5
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
hvac_mode: heat
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_preset_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
preset_mode: manual
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
temperature: 10.5
|
|
- delay:
|
|
seconds: 3
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
hvac_mode: 'off'
|
|
default:
|
|
- action: logbook.log
|
|
data:
|
|
name: bath_heating
|
|
data_template:
|
|
message: 'check automation using default - Id: {{trigger.id}} Idx: {{ trigger.idx
|
|
}}'
|
|
- id: bath_light
|
|
alias: bath_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_motion
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: "{%- if int(states('counter.bath_motion'), 30) > 14 -%}\n 120\n{%-\
|
|
\ elif int(states('counter.bath_motion'), 30) > 10 -%}\n 90\n{%- elif int(states('counter.bath_motion'),\
|
|
\ 30) > 6 -%}\n 60\n{%- elif int(states('counter.bath_motion'), 30) > 3 -%}\n\
|
|
\ 45\n{%- else -%}\n 30\n{%- endif -%}"
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.bath
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.bath
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.bath
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.bath_occupancy
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.lights_off
|
|
data:
|
|
ctrl_light: light.bath
|
|
- id: bath_fan
|
|
alias: bath_fan
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_fan
|
|
to: 'on'
|
|
id: fan_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_fan
|
|
to: 'off'
|
|
id: fan_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.showering
|
|
id: shower
|
|
to: null
|
|
- trigger: state
|
|
entity_id: input_boolean.fan_bath_time
|
|
to: 'on'
|
|
id: manual_on
|
|
- trigger: state
|
|
entity_id: input_boolean.fan_bath_time
|
|
to: 'on'
|
|
for:
|
|
minutes: "{{\n int(states('input_number.fan_bath_time'), 1)\n }}"
|
|
id: manual_off
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: manual_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_motion
|
|
to: 'on'
|
|
id: motion
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: "{%- if int(states('counter.bath_motion'), 30) > 12 -%}\n 90\n{%-\
|
|
\ elif int(states('counter.bath_motion'), 30) > 8 -%}\n 70\n{%- elif int(states('counter.bath_motion'),\
|
|
\ 30) > 4 -%}\n 50\n{%- else -%}\n 30\n{%- endif -%}"
|
|
id: no_motion
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower
|
|
- condition: state
|
|
entity_id: binary_sensor.showering
|
|
state: 'on'
|
|
- condition: trigger
|
|
id:
|
|
- fan_on
|
|
- manual_on
|
|
- condition: state
|
|
entity_id: switch.bath_fan
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.bath_fan
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower
|
|
- manual_off
|
|
- fan_off
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- manual_off
|
|
- condition: state
|
|
entity_id: input_boolean.fan_bath_time
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.bath_fan
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.showering
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: switch.bath_fan
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.bath_fan
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower
|
|
- manual_off
|
|
- condition: state
|
|
entity_id: input_boolean.fan_bath_time
|
|
state: 'on'
|
|
sequence:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id:
|
|
- input_boolean.fan_bath_time
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- motion
|
|
sequence:
|
|
- action: counter.increment
|
|
data:
|
|
entity_id:
|
|
- counter.bath_motion
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- no_motion
|
|
sequence:
|
|
- action: counter.reset
|
|
data:
|
|
entity_id:
|
|
- counter.bath_motion
|
|
- id: in_shower
|
|
alias: in_shower
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_motion_1
|
|
to: 'on'
|
|
id: resume
|
|
- trigger: state
|
|
entity_id: binary_sensor.bath_motion_2
|
|
to: 'on'
|
|
id: pause
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.showering
|
|
state: 'on'
|
|
mode: single
|
|
max_exceeded: silent
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- pause
|
|
- condition: state
|
|
entity_id:
|
|
- automation.water_city_1
|
|
- automation.bath_light
|
|
state: 'on'
|
|
sequence:
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id:
|
|
- automation.water_city_1
|
|
- automation.bath_light
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- resume
|
|
- condition: state
|
|
entity_id:
|
|
- automation.water_city_1
|
|
- automation.bath_light
|
|
state: 'off'
|
|
sequence:
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.water_city_1
|
|
- automation.bath_light
|
|
- alias: in_bed
|
|
id: in_bed
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bed_in
|
|
to: 'on'
|
|
id: trigger_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_motion
|
|
to: 'on'
|
|
id: trigger_off
|
|
- trigger: state
|
|
entity_id: device_tracker.n0ll
|
|
to: home
|
|
id: trigger_off
|
|
- trigger: event
|
|
event_type: android_alarm
|
|
id: trigger_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
- condition: template
|
|
value_template: '{{ not is_state(''media_player.livingtv'', ''playing'') }}'
|
|
- condition: state
|
|
entity_id: device_tracker.n0ll
|
|
state: not_home
|
|
- condition: time
|
|
after: '23:00:00'
|
|
before: 07:00:00
|
|
sequence:
|
|
- action: script.light_extend_clear
|
|
- wait_template: "{{\n is_state('timer.lumi_double_switch_1_timer', 'idle')\n\
|
|
\ }}"
|
|
timeout:
|
|
seconds: 30
|
|
continue_on_timeout: true
|
|
- action: input_boolean.turn_on
|
|
data:
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.bed_light
|
|
- delay:
|
|
seconds: 3
|
|
- action: timer.start
|
|
entity_id: timer.dummy_in_bed
|
|
data:
|
|
duration: 00:00:45
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
sequence:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id: automation.bed_light
|
|
- alias: in_bed_light
|
|
id: in_bed_light
|
|
triggers:
|
|
- trigger: event
|
|
event_type:
|
|
- timer.finished
|
|
- timer.restarted
|
|
- timer.started
|
|
event_data:
|
|
entity_id: timer.dummy_in_bed
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n is_state('binary_sensor.day', 'off') or\n is_state('light.bed',\
|
|
\ 'on')\n }}"
|
|
actions:
|
|
- variables:
|
|
cfg: '{% from ''tools.jinja'' import light_cfg %} {{ light_cfg(is_state(''binary_sensor.night_mode'',
|
|
''off'')) | from_json }}'
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id: "{%-\n set scr = {\n 'timer.finished': 'script.lights_off',\n\
|
|
\ 'timer.started': 'script.lights_on',\n 'timer.restarted': 'script.lights_on'\n\
|
|
\ }\n -%}\n{{ scr[trigger.event.event_type] }}"
|
|
variables:
|
|
ctrl_light: light.bed
|
|
ctrl_all: '{{ is_state(''binary_sensor.night_mode'', ''off'') }}'
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
transition: '{{ cfg.transition }}'
|
|
color_temp: '{{ cfg.temp }}'
|
|
- alias: bed_charger
|
|
id: bed_charger
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: enter
|
|
id: home_enter
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: leave
|
|
id: home_exit
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pixel_6a_battery_level
|
|
below: 10
|
|
id: charge_start
|
|
- trigger: time
|
|
at: 05:50:00
|
|
id: time_start
|
|
- trigger: state
|
|
entity_id: sensor.pixel_6a_charger_type
|
|
to: none
|
|
id: charge_stop
|
|
for:
|
|
seconds: 30
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_start
|
|
- condition: and
|
|
conditions:
|
|
- condition: numeric_state
|
|
entity_id: sensor.pixel_6a_battery_level
|
|
below: 5
|
|
- condition: trigger
|
|
id:
|
|
- home_enter
|
|
- charge_start
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
- condition: state
|
|
entity_id: switch.bed_switch_2
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
entity_id:
|
|
- switch.bed_switch_2
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- charge_stop
|
|
- condition: numeric_state
|
|
entity_id: sensor.pixel_6a_battery_level
|
|
above: 95
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- home_exit
|
|
- condition: state
|
|
entity_id: sensor.pixel_6a_charger_type
|
|
state: none
|
|
- condition: state
|
|
entity_id: switch.bed_switch_2
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
entity_id:
|
|
- switch.bed_switch_2
|
|
- alias: ligth_city_2
|
|
id: ligth_city_2
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_city_2
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: light.city_2
|
|
to: 'on'
|
|
for:
|
|
minutes: 5
|
|
seconds: 30
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_city_2
|
|
to: 'off'
|
|
for:
|
|
seconds: 90
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'off'
|
|
- condition: sun
|
|
after: sunset
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
brightness_pct: 90
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
color_temp_kelvin: 3300
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.motion_city_2
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.city_2
|
|
- alias: remote_city_2
|
|
id: remote_city_2
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: tele/zha-bridge-city/054B/SENSOR
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 0\n}}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.city_2
|
|
- condition: state
|
|
entity_id: automation.ligth_city_2
|
|
state: 'off'
|
|
- action: automation.turn_on
|
|
target:
|
|
entity_id: automation.ligth_city_2
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 0\n}}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: automation.ligth_city_2
|
|
state: 'on'
|
|
sequence:
|
|
- action: automation.turn_off
|
|
target:
|
|
entity_id: automation.ligth_city_2
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
brightness_pct: 95
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
color_temp_kelvin: 2850
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 1\n}}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
color_temp_kelvin: "{% from 'tools.jinja' import to_temp %} {%- set var\
|
|
\ = state_attr('light.city_2', 'color_temp') | float(0) + ((454 - 250)\
|
|
\ / 8) -%} {%- if var > 454 -%}\n {%- set var = 250 -%}\n{%- endif -%}\
|
|
\ {{ to_temp(var) }}"
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 2\n }}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
brightness: "{%- set var = state_attr('light.city_2', 'brightness') | float(0)\
|
|
\ + ((254 - 1) / 8) -%} {%- if var > 254 -%}\n {%- set var = 1 -%}\n\
|
|
{%- endif -%} {{ var | int(0) }}"
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 1\n }}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
brightness_pct: 85
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 2\n}}"
|
|
- condition: state
|
|
entity_id: light.city_2
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.city_2
|
|
data:
|
|
brightness_pct: 1
|
|
- alias: heat_city_2
|
|
id: heat_city_2
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.city
|
|
event: enter
|
|
id: trigger_on
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.city
|
|
event: leave
|
|
id: trigger_off
|
|
- trigger: numeric_state
|
|
entity_id: sensor.city_root_distance
|
|
above: 15
|
|
id: trigger_auto_off
|
|
- trigger: time
|
|
at: '23:30:00'
|
|
id: trigger_off
|
|
- trigger: time
|
|
at: '10:45:00'
|
|
id: trigger_on
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.city
|
|
- condition: time
|
|
after: '10:45:00'
|
|
before: '23:50:00'
|
|
- condition: state
|
|
entity_id: climate.city_2
|
|
state: 'off'
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.city_2
|
|
hvac_mode: heat
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: state
|
|
entity_id: climate.city_2
|
|
state: heat
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.city_2
|
|
hvac_mode: 'off'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_auto_off
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.city_2
|
|
hvac_mode: 'off'
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.heat_city_2
|
|
- alias: waterheater_city
|
|
id: waterheater_city
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.city_root_distance
|
|
below: 25
|
|
id: trigger_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.city_root_distance
|
|
above: 45
|
|
id: trigger_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: state
|
|
entity_id: switch.waterheater_city_schedule
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id:
|
|
- switch.waterheater_city_schedule
|
|
- event: waterheater
|
|
event_data:
|
|
city: schedule_on
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: state
|
|
entity_id: switch.waterheater_city_schedule
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id:
|
|
- switch.waterheater_city_schedule
|
|
- event: waterheater
|
|
event_data:
|
|
city: schedule_off
|
|
- alias: waterheater_city_reheat
|
|
id: waterheater_city_reheat
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.waterheater_city
|
|
below: 19.5
|
|
id: trigger_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.waterheater_city
|
|
above: 35.5
|
|
id: trigger_off
|
|
- trigger: event
|
|
event_type: waterheater
|
|
event_data:
|
|
city: schedule_on
|
|
id: check_on
|
|
- trigger: event
|
|
event_type: waterheater
|
|
event_data:
|
|
city: trigger_off
|
|
id: check_off
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.waterheater_city_schedule
|
|
state: 'on'
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: time
|
|
after: 08:00:00
|
|
before: '20:30:00'
|
|
- condition: state
|
|
entity_id: switch.waterheater_city
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.waterheater_city
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: time
|
|
after: 08:00:00
|
|
- condition: state
|
|
entity_id: switch.waterheater_city
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.waterheater_city
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- check_on
|
|
- condition: time
|
|
after: '13:00:00'
|
|
before: '19:30:00'
|
|
- condition: numeric_state
|
|
entity_id: sensor.waterheater_city
|
|
below: 33
|
|
- condition: state
|
|
entity_id: switch.waterheater_city
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.waterheater_city
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- check_off
|
|
- condition: state
|
|
entity_id: switch.waterheater_city
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.waterheater_city
|
|
- alias: av_switch_city_1
|
|
id: av_switch_city_1
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.city
|
|
event: enter
|
|
id: trigger_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.city_root_distance
|
|
above: 45
|
|
id: trigger_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: state
|
|
entity_id: switch.switch_city_av
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.switch_city_av
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: state
|
|
entity_id: switch.switch_city_av
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.switch_city_av
|
|
- alias: cliamate_city1_swing_set
|
|
id: cliamate_city1_swing_set
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_select.cliamate_city1_swingv
|
|
id: trigger_v
|
|
- trigger: state
|
|
entity_id:
|
|
- input_select.cliamate_city1_swingh
|
|
id: trigger_h
|
|
mode: parallel
|
|
max: 2
|
|
max_exceeded: warning
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_v
|
|
sequence:
|
|
- action: tasmota_irhvac.set_swingv
|
|
data:
|
|
entity_id: climate.city_1
|
|
swingv: "{{\n states(trigger.entity_id)\n }}"
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_h
|
|
sequence:
|
|
- action: tasmota_irhvac.set_swingh
|
|
data:
|
|
entity_id: climate.city_1
|
|
swingh: "{{\n states(trigger.entity_id)\n }}"
|
|
- id: climate_night
|
|
alias: climate_night
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.climate_night
|
|
to: 'on'
|
|
id: to_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.climate_night
|
|
to: 'off'
|
|
id: to_off
|
|
- trigger: state
|
|
entity_id: switch.climate_control
|
|
to: 'off'
|
|
id: to_off
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.from_state.state not in ['unknown', 'unavailable']\n\
|
|
\ }}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'on'
|
|
sequence:
|
|
- action: scene.create
|
|
data:
|
|
scene_id: restore_night_mode
|
|
snapshot_entities:
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
- fan.living_climate
|
|
- climate.temp_bed
|
|
- climate.temp_office
|
|
- climate.temp_living
|
|
- number.temperature_control
|
|
- action: number.set_value
|
|
data:
|
|
entity_id:
|
|
- number.temperature_control
|
|
value: "{%-\n set val = {\n 'auto': state_attr('climate.pump', 'temperature'),\n\
|
|
\ 'heating': state_attr('climate.pump', 'temperature') - 1,\n \
|
|
\ 'cooling': state_attr('climate.pump', 'temperature') + 1,\n }\n\
|
|
-%} {{ val[states('select.operation_mode')] }}"
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.temp_living
|
|
temperature: "{%-\n set val = {\n 'auto': state_attr('climate.temp_living',\
|
|
\ 'temperature'),\n 'heating': state_attr('climate.temp_living',\
|
|
\ 'temperature') - 0.5,\n 'cooling': state_attr('climate.temp_living',\
|
|
\ 'temperature') + 0.5,\n }\n-%} {{ val[states('select.operation_mode')]\
|
|
\ }}"
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.temp_office
|
|
temperature: "{%-\n set val = {\n 'auto': state_attr('climate.temp_office',\
|
|
\ 'temperature'),\n 'heating': state_attr('climate.temp_office',\
|
|
\ 'temperature') - 0.5,\n 'cooling': state_attr('climate.temp_office',\
|
|
\ 'temperature') + 0.5,\n }\n-%} {{ val[states('select.operation_mode')]\
|
|
\ }}"
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id: climate.temp_bed
|
|
temperature: "{%-\n set val = {\n 'auto': state_attr('climate.temp_bed',\
|
|
\ 'temperature'),\n 'heating': state_attr('climate.temp_bed', 'temperature')\
|
|
\ - 0.5,\n 'cooling': state_attr('climate.temp_bed', 'temperature')\
|
|
\ + 0.5,\n }\n-%} {{ val[states('select.operation_mode')] }}"
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.office_climate
|
|
- fan.bed_climate
|
|
preset_mode: night
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_off
|
|
- condition: template
|
|
value_template: "{{\n states.scene.restore_night_mode.state is defined\n\
|
|
\ }}"
|
|
sequence:
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.restore_night_mode
|
|
- action: scene.delete
|
|
data:
|
|
entity_id: scene.restore_night_mode
|
|
- id: clima_max_restore_fans
|
|
alias: clima_max_restore_fans
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: not_home
|
|
to: home
|
|
for:
|
|
minutes: 10
|
|
id: to_home
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: home
|
|
to: not_home
|
|
for:
|
|
minutes: 10
|
|
id: to_away
|
|
- trigger: state
|
|
entity_id: input_boolean.clima_max
|
|
to: 'off'
|
|
for:
|
|
seconds: 5
|
|
id: to_timeout
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_home
|
|
- to_away
|
|
- to_timeout
|
|
sequence:
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.clima_max_mode_fan
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.clima_max_restore_fans
|
|
- id: clima_max_restore_temps
|
|
alias: clima_max_restore_temps
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: not_home
|
|
to: home
|
|
for:
|
|
minutes: 10
|
|
id: to_home
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: home
|
|
to: not_home
|
|
for:
|
|
minutes: 10
|
|
id: to_away
|
|
- trigger: state
|
|
entity_id: input_boolean.clima_max
|
|
to: 'off'
|
|
for:
|
|
seconds: 5
|
|
id: to_timeout
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_home
|
|
- to_away
|
|
- to_timeout
|
|
sequence:
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.clima_max_mode_temp
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.clima_max_restore_temps
|
|
- id: clima_max_restore_switch
|
|
alias: clima_max_restore_switch
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.clima_max
|
|
to: 'off'
|
|
for:
|
|
minutes: 20
|
|
id: turn_off
|
|
- trigger: state
|
|
entity_id: alert.clima_max_restore_switch
|
|
to: 'off'
|
|
id: cancel
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- turn_off
|
|
sequence:
|
|
- action: notify.gmail
|
|
data:
|
|
title: clima max
|
|
message: heat pump auto swiched off
|
|
- action: switch.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.climate_control
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- cancel
|
|
sequence:
|
|
- action: notify.gmail
|
|
data:
|
|
title: clima max
|
|
message: heat pump skip restore
|
|
- action: alert.turn_on
|
|
data:
|
|
entity_id:
|
|
- alert.clima_max_restore_switch
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id:
|
|
- automation.clima_max_restore_switch
|
|
- id: clima_sync
|
|
alias: clima_sync
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: select.operation_mode
|
|
for:
|
|
seconds: 10
|
|
id: mode
|
|
- trigger: state
|
|
entity_id:
|
|
- switch.climate_control
|
|
to: 'on'
|
|
for:
|
|
seconds: 10
|
|
id: state
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.pump_temp_on_off
|
|
to: 'on'
|
|
for:
|
|
seconds: 15
|
|
id: state_temp
|
|
- trigger: state
|
|
entity_id:
|
|
- switch.climate_control
|
|
to: 'off'
|
|
for:
|
|
minutes: 15
|
|
id: state
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.pump_temp_on_off
|
|
to: 'off'
|
|
for:
|
|
minutes: 15
|
|
id: state_temp
|
|
- trigger: homeassistant
|
|
event: start
|
|
id: start_up
|
|
- trigger: state
|
|
entity_id: automation.clima_max_restore_fans
|
|
to: 'off'
|
|
for:
|
|
seconds: 10
|
|
id: max_off
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.space_cooling
|
|
- binary_sensor.space_heating
|
|
id: thermostat_on_off
|
|
for:
|
|
seconds: 10
|
|
- trigger: state
|
|
entity_id: binary_sensor.thermostat_pump
|
|
to: 'on'
|
|
for:
|
|
seconds: 10
|
|
id: thermostat_on_off
|
|
conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.from_state.state not in ['unknown', 'unavailable']\
|
|
\ and\n trigger.to_state.state not in ['unknown', 'unavailable']\n }}"
|
|
- condition: trigger
|
|
id:
|
|
- start_up
|
|
- max_off
|
|
mode: queued
|
|
trace:
|
|
stored_traces: 20
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- mode
|
|
sequence:
|
|
- action: script.turn_on
|
|
target:
|
|
entity_id: "{%-\n set val = {\n 'auto': 'script.climate_auto',\n\
|
|
\ 'heating': 'script.climate_heat',\n 'cooling': 'script.climate_cool',\n\
|
|
\ }\n-%} {{ val[trigger.to_state.state] }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- state
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- state_temp
|
|
- condition: state
|
|
entity_id:
|
|
- switch.climate_control
|
|
state: 'on'
|
|
sequence:
|
|
- action: "{%-\n set val = {\n 'off': 'fan.turn_off',\n 'on': 'fan.turn_on'\n\
|
|
\ }\n -%}\n{{ val[trigger.to_state.state] }}"
|
|
target:
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id: start_up
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- state
|
|
- condition: state
|
|
entity_id:
|
|
- switch.climate_control
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id:
|
|
- automation.clima_max_restore_fans
|
|
state: 'off'
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- max_off
|
|
- condition: state
|
|
entity_id:
|
|
- automation.fans_speed_modulation
|
|
state: 'on'
|
|
sequence:
|
|
- delay:
|
|
seconds: 5
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
preset_mode: silent
|
|
- delay:
|
|
seconds: 5
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
preset_mode: auto
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- thermostat_on_off
|
|
- condition: state
|
|
entity_id: binary_sensor.space_heating
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: switch.pump_ctrl_heating
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
entity_id: switch.pump_ctrl_heating
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- thermostat_on_off
|
|
- condition: state
|
|
entity_id: binary_sensor.space_heating
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: switch.pump_ctrl_heating
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
entity_id: switch.pump_ctrl_heating
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- thermostat_on_off
|
|
- condition: state
|
|
entity_id: binary_sensor.space_cooling
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: switch.pump_ctrl_cooling
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
entity_id: switch.pump_ctrl_cooling
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- thermostat_on_off
|
|
- condition: state
|
|
entity_id: binary_sensor.space_cooling
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: switch.pump_ctrl_cooling
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
entity_id: switch.pump_ctrl_cooling
|
|
- id: clima_max
|
|
alias: clima_max
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.clima_max
|
|
to: 'on'
|
|
id: to_on
|
|
- trigger: state
|
|
entity_id: input_boolean.clima_max
|
|
to: 'on'
|
|
for:
|
|
minutes: '{{ states(''input_number.clima_max'') |int(10) }}'
|
|
id: to_timeout
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
pump_temp: "{%-\n set val = {\n 'auto': state_attr('climate.pump',\
|
|
\ 'temperature'),\n 'heating': state_attr('climate.pump', 'temperature')\
|
|
\ + 1,\n 'cooling': state_attr('climate.pump', 'temperature') - 1,\n\
|
|
\ }\n -%}\n{{\n max(\n [\n min(\n [\n \
|
|
\ val[states('select.operation_mode')],\n state_attr('climate.pump',\
|
|
\ 'max_temp')\n ]\n ),\n state_attr('climate.pump',\
|
|
\ 'min_temp')\n ]\n )\n }}\n"
|
|
clima_temp: "{%-\n set val = {\n 'auto': state_attr('climate.temp_living',\
|
|
\ 'temperature'),\n 'heating': state_attr('climate.temp_living', 'temperature')\
|
|
\ + 1.5,\n 'cooling': state_attr('climate.temp_living', 'temperature')\
|
|
\ - 1.5,\n }\n -%}\n{{\n max(\n [\n min(\n \
|
|
\ [\n val[states('select.operation_mode')],\n \
|
|
\ state_attr('climate.temp_living', 'max_temp')\n ]\n \
|
|
\ ),\n state_attr('climate.temp_living', 'min_temp')\n \
|
|
\ ]\n )\n }}\n"
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id:
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
- fan.living_climate
|
|
state: 'off'
|
|
then:
|
|
- action: fan.turn_on
|
|
data:
|
|
entity_id:
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
- fan.living_climate
|
|
- action: scene.create
|
|
data:
|
|
scene_id: clima_max_mode_fan
|
|
snapshot_entities:
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
- fan.living_climate
|
|
- if:
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state:
|
|
- cooling
|
|
- auto
|
|
then:
|
|
- action: scene.create
|
|
data:
|
|
scene_id: clima_max_mode_temp
|
|
snapshot_entities:
|
|
- climate.temp_bed
|
|
- climate.temp_office
|
|
- climate.temp_living
|
|
- number.temperature_control
|
|
- if:
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state: heating
|
|
then:
|
|
- action: scene.create
|
|
data:
|
|
scene_id: clima_max_mode_temp
|
|
snapshot_entities:
|
|
- climate.temp_bed
|
|
- climate.temp_office
|
|
- climate.temp_living
|
|
- climate.bath_tvr
|
|
- number.temperature_control
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.office_climate
|
|
- fan.bed_climate
|
|
preset_mode: max
|
|
- if:
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state:
|
|
- cooling
|
|
- auto
|
|
then:
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id:
|
|
- climate.temp_bed
|
|
- climate.temp_living
|
|
- climate.temp_office
|
|
temperature: '{{ clima_temp }}
|
|
|
|
'
|
|
- if:
|
|
- condition: state
|
|
entity_id: select.operation_mode
|
|
state: heating
|
|
then:
|
|
- action: climate.set_hvac_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
hvac_mode: heat
|
|
- delay:
|
|
milliseconds: 500
|
|
- action: climate.set_preset_mode
|
|
data:
|
|
entity_id: climate.bath_tvr
|
|
preset_mode: manual
|
|
- delay:
|
|
milliseconds: 500
|
|
- action: climate.set_temperature
|
|
data:
|
|
entity_id:
|
|
- climate.temp_bed
|
|
- climate.temp_living
|
|
- climate.temp_office
|
|
- climate.bath_tvr
|
|
temperature: '{{ clima_temp }}
|
|
|
|
'
|
|
- action: number.set_value
|
|
data:
|
|
entity_id:
|
|
- number.temperature_control
|
|
value: '{{ pump_temp }}'
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.clima_max_restore_fans
|
|
- automation.clima_max_restore_temps
|
|
- if:
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'off'
|
|
then:
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.clima_max_restore_switch
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.climate_control
|
|
else:
|
|
- action: notify.gmail
|
|
data:
|
|
title: clima max
|
|
message: heat pump skip auto swich off
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_timeout
|
|
sequence:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id:
|
|
- input_boolean.clima_max
|
|
- alias: fans_speed_modulation
|
|
id: fans_speed_modulation
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.speed_living_climate
|
|
- sensor.speed_office_climate
|
|
- sensor.speed_bed_climate
|
|
below: 1230
|
|
above: 1210
|
|
for:
|
|
minutes: 20
|
|
id: to_max
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.speed_living_climate
|
|
- sensor.speed_office_climate
|
|
- sensor.speed_bed_climate
|
|
below: 560
|
|
above: 540
|
|
for:
|
|
minutes: 10
|
|
id: to_max
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.speed_living_climate
|
|
- sensor.speed_office_climate
|
|
- sensor.speed_bed_climate
|
|
below: 100
|
|
id: to_max
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.speed_living_climate
|
|
- sensor.speed_office_climate
|
|
- sensor.speed_bed_climate
|
|
below: 690
|
|
above: 670
|
|
for:
|
|
minutes: 10
|
|
id: to_auto
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.speed_living_climate
|
|
- sensor.speed_office_climate
|
|
- sensor.speed_bed_climate
|
|
above: 1690
|
|
for:
|
|
minutes: 10
|
|
id: to_auto
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.climate_control
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id:
|
|
- fan.living_climate
|
|
- fan.bed_climate
|
|
- fan.office_climate
|
|
attribute: preset_mode
|
|
state:
|
|
- auto
|
|
- max
|
|
- condition: state
|
|
entity_id:
|
|
- automation.clima_max_restore_fans
|
|
state: 'off'
|
|
mode: parallel
|
|
max: 10
|
|
trace:
|
|
stored_traces: 30
|
|
actions:
|
|
- variables:
|
|
fan: "{%-\n set map = {\n 'sensor.speed_living_climate': 'fan.living_climate',\n\
|
|
\ 'sensor.speed_office_climate': 'fan.office_climate',\n 'sensor.speed_bed_climate':\
|
|
\ 'fan.bed_climate',\n }\n -%}\n{{ map[trigger.entity_id] }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_auto
|
|
- condition: template
|
|
value_template: "{{\n is_state_attr( fan, 'preset_mode', 'max' )\n }}"
|
|
sequence:
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id: "{{\n fan\n }}"
|
|
preset_mode: auto
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_max
|
|
- condition: template
|
|
value_template: "{{\n is_state_attr( fan, 'preset_mode', 'auto' )\n }}"
|
|
sequence:
|
|
- action: fan.set_preset_mode
|
|
data:
|
|
entity_id: "{{\n fan\n }}"
|
|
preset_mode: max
|
|
- alias: apply_offsets
|
|
id: apply_offsets
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_number.living_offset
|
|
- input_number.office_offset
|
|
- input_number.bed_offset
|
|
mode: parallel
|
|
max: 10
|
|
trace:
|
|
stored_traces: 20
|
|
max_exceeded: warning
|
|
actions:
|
|
- action: modbus.write_register
|
|
data:
|
|
hub: gw_rs485
|
|
slave: "{%-\n set map = {\n 'input_number.living_offset': 10,\n \
|
|
\ 'input_number.office_offset': 30,\n 'input_number.bed_offset':\
|
|
\ 20,\n }\n -%}\n{{ map[trigger.entity_id] }}"
|
|
address: 242
|
|
value: "{{\n (states(trigger.entity_id) | float(0) * 10) | int (0) |\n \
|
|
\ pack('>h') | unpack('>H')\n }}"
|
|
- delay:
|
|
milliseconds: 10000
|
|
- action: homeassistant.update_entity
|
|
data:
|
|
entity_id: "{%-\n set map = {\n 'input_number.living_offset': 'climate.temp_living',\n\
|
|
\ 'input_number.office_offset': 'climate.temp_office',\n 'input_number.bed_offset':\
|
|
\ 'climate.temp_bed',\n }\n -%}\n{{ map[trigger.entity_id] }}"
|
|
- id: climate_offset
|
|
alias: climate_offset
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- switch.climate_control
|
|
to: 'on'
|
|
for:
|
|
seconds: 10
|
|
id: to_on
|
|
variables:
|
|
run: "{%- if state_attr('automation.climate_offset', 'last_triggered') -%}\n\
|
|
\ {{\n now() - state_attr('automation.climate_offset', 'last_triggered')\
|
|
\ > timedelta(hours=20)\n }}\n{%- else -%}\n true\n{%- endif -%}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
sequence:
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{\n run\n }}"
|
|
then:
|
|
- action: input_number.set_value
|
|
data:
|
|
entity_id:
|
|
- input_number.living_offset
|
|
- input_number.office_offset
|
|
- input_number.bed_offset
|
|
value: 0.0
|
|
- wait_for_trigger:
|
|
- trigger: state
|
|
entity_id:
|
|
- automation.apply_offsets
|
|
attribute: current
|
|
to: 0
|
|
for:
|
|
seconds: 15
|
|
timeout:
|
|
seconds: 30
|
|
continue_on_timeout: true
|
|
- delay:
|
|
seconds: '{{ wait.remaining }}'
|
|
- variables:
|
|
living: '{{ (states(''sensor.temp_living'') | float - state_attr(''climate.temp_living'',
|
|
''current_temperature'')) | round(1, ''ceil'') }}'
|
|
office: '{{ (states(''sensor.office_temp'') | float - state_attr(''climate.temp_office'',
|
|
''current_temperature'')) | round(1, ''ceil'') }}'
|
|
bed: '{{ (states(''sensor.bed_temp'') | float - state_attr(''climate.temp_bed'',
|
|
''current_temperature'')) | round(1, ''ceil'') }}'
|
|
- action: persistent_notification.create
|
|
data:
|
|
title: temp diff
|
|
message: 'living: {{ living }} office: {{ office }} bed: {{ bed }}'
|
|
- action: input_number.set_value
|
|
data:
|
|
entity_id:
|
|
- input_number.living_offset
|
|
value: '{{ living }}'
|
|
- action: input_number.set_value
|
|
data:
|
|
entity_id:
|
|
- input_number.office_offset
|
|
value: '{{ office }}'
|
|
- action: input_number.set_value
|
|
data:
|
|
entity_id:
|
|
- input_number.bed_offset
|
|
value: '{{ bed }}'
|
|
else:
|
|
- action: logbook.log
|
|
data_template:
|
|
name: climate_offset
|
|
message: skipped
|
|
- alias: tariff_switch
|
|
id: tariff_switch
|
|
triggers:
|
|
- trigger: time
|
|
at: 06:00:00
|
|
id: peak
|
|
variables:
|
|
s: win
|
|
- trigger: time
|
|
at: 07:00:00
|
|
id: peak
|
|
variables:
|
|
s: sum
|
|
- trigger: time
|
|
at: '22:00:00'
|
|
id: offpeak
|
|
variables:
|
|
s: win
|
|
- trigger: time
|
|
at: '23:00:00'
|
|
id: offpeak
|
|
variables:
|
|
s: sum
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{%- set data = {\n 'win' : [1, 2, 3, 11, 12],\n \
|
|
\ 'sum' : [4, 5, 6, 7, 8, 9, 10],\n }\n -%}\n{{ now().month in data[s]\
|
|
\ }}"
|
|
mode: restart
|
|
actions:
|
|
- action: select.select_option
|
|
target:
|
|
entity_id:
|
|
- select.monthly_energy
|
|
- select.daily_energy
|
|
data:
|
|
option: '{{ trigger.id }}'
|
|
- alias: n0ll_home
|
|
id: n0ll_home
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.n0ll
|
|
from: not_home
|
|
to: home
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
sequence:
|
|
- action: "{%-\n set scr = {\n 'off': 'shell_command.kodi_screensaver',\n\
|
|
\ 'on': 'script.radio_on'\n }\n -%}\n{{ scr[states('binary_sensor.kodi_screen_saver')]\
|
|
\ }}"
|
|
- condition: state
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
state: playing
|
|
- action: timer.pause
|
|
entity_id: timer.sound_bar
|
|
- alias: home_near
|
|
id: home_near
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.home_root_distance
|
|
below: 35
|
|
- trigger: numeric_state
|
|
entity_id: sensor.home_root_distance
|
|
below: 10
|
|
mode: restart
|
|
actions:
|
|
- action: notify.gmail
|
|
data:
|
|
message: home near trigger
|
|
title: hass
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.home_away
|
|
- automation.living_tv
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.living_tv
|
|
- switch.bed_switch_1
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.home_near
|
|
- alias: root_home
|
|
id: root_home
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: enter
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.from_state != None\n }}"
|
|
actions:
|
|
- action: automation.turn_on
|
|
entity_id: automation.just_home
|
|
- alias: just_home
|
|
id: just_home
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.living_motion
|
|
to: 'on'
|
|
- trigger: state
|
|
entity_id: binary_sensor.door
|
|
to: 'on'
|
|
mode: single
|
|
max_exceeded: silent
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
entity_id: input_boolean.home_motion
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: media_player.livingtv
|
|
state: idle
|
|
sequence:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.radio_on
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.lumi_double_switch_1
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.turn_on
|
|
target:
|
|
entity_id: script.lumi_all_lights_on
|
|
data:
|
|
variables:
|
|
bri_t: 85
|
|
time_t: '{{ (states(''input_number.just_home_light_timer'') | float(2)
|
|
* 60.0) | int(60) }}'
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id:
|
|
- automation.just_home
|
|
- alias: living_tv
|
|
id: living_tv
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.livingtv
|
|
to: home
|
|
for:
|
|
seconds: 45
|
|
actions:
|
|
- action: notify.gmail
|
|
data:
|
|
message: living near trigger
|
|
title: hass
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id: automation.living_tv
|
|
- alias: reload_homeconect
|
|
id: reload_homeconect
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- device_tracker.washer
|
|
- device_tracker.dryer
|
|
- device_tracker.dishwasher
|
|
to: home
|
|
for:
|
|
seconds: 15
|
|
actions:
|
|
- action: button.press
|
|
data:
|
|
entity_id: button.home_connect_refresh
|
|
- alias: auto_lock
|
|
id: auto_lock
|
|
trace:
|
|
stored_traces: 20
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.door
|
|
from: 'on'
|
|
to: 'off'
|
|
id: lock_on_door
|
|
for:
|
|
seconds: 30
|
|
- trigger: state
|
|
entity_id: lock.building
|
|
to: locked
|
|
for:
|
|
minutes: 1
|
|
id: lock_on_building
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: enter
|
|
id: lock_off
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.home
|
|
event: leave
|
|
id: lock_on
|
|
- trigger: state
|
|
entity_id: input_boolean.in_bed_dummy_switch
|
|
to: 'on'
|
|
for:
|
|
minutes: 1
|
|
id: lock_on
|
|
- trigger: mqtt
|
|
topic: nuki/opener/trigger
|
|
payload: button
|
|
id: lock_off_building
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.from_state != None\n }}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_on_door
|
|
- condition: state
|
|
entity_id: lock.door
|
|
state: unlocked
|
|
- condition: state
|
|
entity_id: input_boolean.auto_lock
|
|
state: 'on'
|
|
sequence:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.door
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_on
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_on_building
|
|
- condition: state
|
|
entity_id:
|
|
- device_tracker.root
|
|
state: not_home
|
|
- condition: state
|
|
entity_id: lock.door
|
|
state: unlocked
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.door
|
|
state: 'off'
|
|
then:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.door
|
|
else:
|
|
- action: notify.gmail
|
|
data:
|
|
title: front door
|
|
message: "{%-\n set door = {\n 'on': 'open',\n 'off': 'close'\n\
|
|
\ }\n -%}\nis {{ door[states('binary_sensor.door')]}}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_on
|
|
- condition: state
|
|
entity_id: lock.building
|
|
state: unlocked
|
|
sequence:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.building
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_off
|
|
- condition: state
|
|
entity_id: lock.building
|
|
state: locked
|
|
sequence:
|
|
- action: script.turn_on
|
|
target:
|
|
entity_id: script.doors_full_unlock
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- lock_off_building
|
|
- condition: state
|
|
entity_id: lock.building
|
|
state: unlocked
|
|
- condition: state
|
|
entity_id: lock.door
|
|
state: locked
|
|
sequence:
|
|
- action: lock.unlock
|
|
target:
|
|
entity_id: lock.door
|
|
- alias: ring_notify
|
|
id: ring_notify
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.building_ring
|
|
to: 'on'
|
|
mode: single
|
|
max_exceeded: silent
|
|
actions:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: door
|
|
tit: ring
|
|
msg: door
|
|
- delay:
|
|
seconds: 60
|
|
- alias: shutter_wind
|
|
id: shutter_wind
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.shutters_vibration
|
|
above: 2.5
|
|
id: notify
|
|
- trigger: numeric_state
|
|
entity_id: sensor.shutters_vibration
|
|
above: 0
|
|
id: detected
|
|
- trigger: numeric_state
|
|
entity_id: sensor.shutters_vibration
|
|
above: 5.5
|
|
id: move_first
|
|
- trigger: numeric_state
|
|
entity_id: sensor.shutters_vibration
|
|
above: 10.5
|
|
id: move_second
|
|
- trigger: numeric_state
|
|
entity_id: sensor.wind_vibration
|
|
above: 15.0
|
|
id: move_tilt
|
|
- trigger: template
|
|
value_template: "{{\n (\n float(state_attr('sensor.shutters_open_speed_wind',\
|
|
\ 'speed_open'), 5) >\n float(states('sensor.local_wind_speed'), 6)\n\
|
|
\ ) and\n (\n float(states('sensor.local_wind_speed'), 5) >\n\
|
|
\ float(states('sensor.local_forecast_wind_speed'), 6)\n ) and\n\
|
|
\ (\n float(state_attr('sensor.shutters_open_speed_wind', 'forecast_speed_open'),\
|
|
\ 5) >\n float(states('sensor.local_forecast_wind_speed'), 6)\n \
|
|
\ ) and\n (\n float(states('sensor.wind_vibration'), 6) < 3.0\n\
|
|
\ )\n }}"
|
|
id: move_restore
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: start
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n ( trigger.from_state is defined and\n trigger.from_state.state\
|
|
\ not in ['unknown', 'unavailable'] and\n trigger.to_state.state not\
|
|
\ in ['unknown', 'unavailable']\n ) or\n trigger.id == 'start'\n \
|
|
\ }}"
|
|
mode: queued
|
|
trace:
|
|
stored_traces: 30
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- notify
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_tilt_position
|
|
below: 80
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutters
|
|
msg: detected vibration
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: notify
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- detected
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_tilt_position
|
|
above: 80
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_position
|
|
above: 30
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutters
|
|
msg: detected vibration while opned
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: detected
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- move_second
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
above: 0.0
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_position
|
|
below: 30
|
|
sequence:
|
|
- action: cover.open_cover
|
|
data:
|
|
entity_id: cover.shutters
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: open
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: open
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- move_first
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
above: 0.0
|
|
sequence:
|
|
- if:
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_tilt_position
|
|
below: 80
|
|
then:
|
|
- action: cover.open_cover_tilt
|
|
data:
|
|
entity_id: cover.shutters
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: tilt open
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: tilt_open_shutters
|
|
else:
|
|
- action: cover.open_cover
|
|
data:
|
|
entity_id: cover.shutters
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: open
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: open
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- move_restore
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
above: 0.0
|
|
- condition: numeric_state
|
|
entity_id: sensor.wind_vibration
|
|
below: 3.0
|
|
sequence:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- open
|
|
sequence:
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{\n states.scene.shutter_restore_pre.state is defined\
|
|
\ and\n states.scene.shutter_restore_post.state is defined\n\
|
|
\ }}"
|
|
then:
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.shutter_restore_pre
|
|
- delay:
|
|
milliseconds: 750
|
|
- wait_template: "{{\n states('cover.shutters') not in ['closing',\
|
|
\ 'openopening']\n }}"
|
|
timeout:
|
|
seconds: 120
|
|
continue_on_timeout: true
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.shutter_restore_post
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: restore
|
|
else:
|
|
- action: script.turn_on
|
|
entity_id:
|
|
- script.shutters_position_1
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: pos 1
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- tilt_open_wind
|
|
- tilt_open_shutters
|
|
sequence:
|
|
- action: cover.set_cover_tilt_position
|
|
data:
|
|
entity_id: cover.shutters
|
|
tilt_position: "{{\n states('input_number.shutters_tilt_position_1')\
|
|
\ | int(20)\n }}"
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: pos tilt
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: close
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{\n states.scene.shutter_restore_pre.state is defined\
|
|
\ and\n states.scene.shutter_restore_post.state\n }}"
|
|
then:
|
|
- action: scene.delete
|
|
data:
|
|
entity_id:
|
|
- scene.shutter_restore_pre
|
|
- scene.shutter_restore_post
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- move_tilt
|
|
- condition: state
|
|
entity_id: input_boolean.shutter_wind_vibration_en
|
|
state: 'on'
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
above: 0.0
|
|
- condition: state
|
|
entity_id: sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- close
|
|
sequence:
|
|
- action: cover.open_cover_tilt
|
|
data:
|
|
entity_id: cover.shutters
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: tilt open
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: tilt_open_wind
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- move_second
|
|
- move_first
|
|
- move_restore
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
below: 0.0
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutters
|
|
data_template:
|
|
msg: temp low {{ trigger.id }}
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- notify
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_tilt_position
|
|
below: 80
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_position
|
|
below: 30
|
|
sequence:
|
|
- action: scene.create
|
|
data:
|
|
scene_id: shutter_restore_post
|
|
snapshot_entities:
|
|
- cover.living_1
|
|
- cover.living_2
|
|
- cover.bed
|
|
- cover.office
|
|
- action: scene.create
|
|
data:
|
|
scene_id: shutter_restore_pre
|
|
entities:
|
|
cover.living_1:
|
|
current_position: '{{ int(state_attr(''cover.living_1'', ''current_position''))
|
|
}}'
|
|
current_tilt_position: 100
|
|
state: open
|
|
cover.living_2:
|
|
current_position: '{{ int(state_attr(''cover.living_2'', ''current_position''))
|
|
}}'
|
|
current_tilt_position: 100
|
|
state: open
|
|
cover.bed:
|
|
current_position: '{{ int(state_attr(''cover.bed'', ''current_position''))
|
|
}}'
|
|
current_tilt_position: 100
|
|
state: open
|
|
cover.office:
|
|
current_position: '{{ int(state_attr(''cover.office'', ''current_position''))
|
|
}}'
|
|
current_tilt_position: 100
|
|
state: open
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutter
|
|
msg: store position
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- start
|
|
- condition: numeric_state
|
|
entity_id: sensor.temp_out
|
|
value_template: '{{ float( float(state.state, states(''sensor.local_temperature'')),
|
|
-1) }}'
|
|
above: 0.0
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_tilt_position
|
|
above: 80
|
|
- condition: numeric_state
|
|
entity_id: cover.bed
|
|
attribute: current_position
|
|
above: 30
|
|
- condition: template
|
|
value_template: "{{\n (\n float(state_attr('sensor.shutters_open_speed_wind',\
|
|
\ 'speed_open'), 5) >\n float(states('sensor.local_wind_speed'),\
|
|
\ 6)\n ) and\n (\n float(states('sensor.local_wind_speed'),\
|
|
\ 5) >\n float(states('sensor.local_forecast_wind_speed'), 6)\n\
|
|
\ ) and\n (\n float(state_attr('sensor.shutters_open_speed_wind',\
|
|
\ 'forecast_speed_open'), 5) >\n float(states('sensor.local_forecast_wind_speed'),\
|
|
\ 6)\n )\n }}"
|
|
- condition: numeric_state
|
|
entity_id: sensor.shutters_vibration
|
|
below: 2.5
|
|
- condition: numeric_state
|
|
entity_id: sensor.wind_vibration
|
|
below: 3.0
|
|
- condition: state
|
|
entity_id: sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- open
|
|
- tilt_open_wind
|
|
- tilt_open_shutters
|
|
sequence:
|
|
- action: script.turn_on
|
|
entity_id:
|
|
- script.shutters_position_1
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: window-shutter-alert
|
|
tit: shutters
|
|
data_template:
|
|
msg: move to pos 1 wind {{ states('sensor.local_wind_speed') }}
|
|
- event: shutter_event
|
|
event_data:
|
|
wind: close
|
|
- alias: shutter_position_ctrl
|
|
id: shutter_position_ctrl
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- cover.living_2
|
|
- cover.office
|
|
attribute: current_position
|
|
above: 30
|
|
id: open
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- cover.living_2
|
|
- cover.office
|
|
attribute: current_position
|
|
below: 30
|
|
id: close
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.from_state.state not in ['unknown', 'unavailable']\
|
|
\ and\n trigger.from_state.attributes.current_position != 50 and\n \
|
|
\ trigger.to_state.attributes.current_position != 50\n }}"
|
|
mode: queued
|
|
actions:
|
|
- variables:
|
|
_map: "{%-\n set _map = {\n 'cover.office': 'input_boolean.shutter_position_office',\n\
|
|
\ 'cover.living_2': 'input_boolean.shutter_position_living_2',\n \
|
|
\ }\n -%}\n{{ _map }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- open
|
|
- condition: state
|
|
entity_id:
|
|
- sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- close
|
|
- condition: template
|
|
value_template: '{{ is_state(_map[trigger.entity_id], ''on'') }}'
|
|
sequence:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id: '{{ _map[trigger.entity_id] }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- close
|
|
- condition: state
|
|
entity_id:
|
|
- sensor.shutters_open_speed_wind
|
|
attribute: state_shutters
|
|
state:
|
|
- close
|
|
- condition: template
|
|
value_template: '{{ is_state(_map[trigger.entity_id], ''off'') }}'
|
|
sequence:
|
|
- action: input_boolean.turn_on
|
|
data:
|
|
entity_id: '{{ _map[trigger.entity_id] }}'
|
|
- alias: track_merge
|
|
id: track_merge
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: device_tracker.ffeeddccbbaa
|
|
- trigger: state
|
|
entity_id: device_tracker.google_maps_107209225675467950565
|
|
actions:
|
|
- action: python_script.device_tracker_merge
|
|
data_template:
|
|
device_name: root
|
|
master_device: device_tracker.ffeeddccbbaa
|
|
slave_device: device_tracker.google_maps_107209225675467950565
|
|
trigger_id: '{{trigger.entity_id}}'
|
|
time: '{{ states(''input_number.tracker_delay'') | float(0) * 60 }}'
|
|
force_update: '{{ states(''input_number.tracker_force_update'') | float(0) *
|
|
60 }}'
|
|
accuracy: '{{ states(''input_number.tracker_accuracy'') | float(0) * 1000 }}'
|
|
distance: '{{ distance(states.device_tracker.ffeeddccbbaa, states.device_tracker.google_maps_107209225675467950565)
|
|
}}'
|
|
- alias: track_merge_startup
|
|
id: track_merge_startup
|
|
triggers:
|
|
- trigger: homeassistant
|
|
event: start
|
|
actions:
|
|
- action: python_script.device_tracker_merge
|
|
data_template:
|
|
device_name: root
|
|
master_device: device_tracker.google_maps_107209225675467950565
|
|
slave_device: device_tracker.google_maps_107209225675467950565
|
|
trigger_id: device_tracker.google_maps_107209225675467950565
|
|
time: '{{ states(''input_number.tracker_delay'') | float(0) * 60 }}'
|
|
force_update: '{{ states(''input_number.tracker_force_update'') | float(0) *
|
|
60 }}'
|
|
accuracy: '{{ states(''input_number.tracker_accuracy'') | float(0) * 1000 }}'
|
|
distance: '{{ distance(states.device_tracker.google_maps_107209225675467950565,
|
|
states.device_tracker.google_maps_107209225675467950565) }}'
|
|
- delay:
|
|
seconds: 5
|
|
- action: automation.turn_on
|
|
entity_id: automation.track_merge
|
|
- alias: auto_clean
|
|
id: auto_clean
|
|
triggers:
|
|
- trigger: time
|
|
at: 08:00:00
|
|
id: time_check
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: home
|
|
to: not_home
|
|
for:
|
|
minutes: 5
|
|
id: clean_notify
|
|
- trigger: state
|
|
entity_id: device_tracker.root
|
|
from: home
|
|
to: not_home
|
|
for:
|
|
minutes: 15
|
|
id: clean_run
|
|
conditions:
|
|
- condition: time
|
|
weekday:
|
|
- wed
|
|
- sat
|
|
- condition: template
|
|
value_template: "{%- if state_attr('script.all_clean', 'last_triggered') -%}\n\
|
|
\ {{\n now() - state_attr('script.all_clean', 'last_triggered') > timedelta(hours=24)\n\
|
|
\ }}\n{%- else -%}\n true\n{%- endif -%}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_check
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
sequence:
|
|
- action: notify.gmail
|
|
data:
|
|
title: rockrobo
|
|
message: check wash door
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.clean_vacuum
|
|
state: 'on'
|
|
then:
|
|
- delay:
|
|
seconds: 5
|
|
- action: notify.gmail
|
|
data:
|
|
title: rockrobo
|
|
message: bin full not clean
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- clean_notify
|
|
- condition: state
|
|
entity_id: binary_sensor.wash_door
|
|
state: 'on'
|
|
sequence:
|
|
- action: notify.gmail
|
|
data:
|
|
title: rockrobo
|
|
message: clean in 10 min
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- clean_run
|
|
- condition: state
|
|
entity_id: binary_sensor.clean_vacuum
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.wash_door
|
|
state: 'on'
|
|
sequence:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.all_clean
|
|
default:
|
|
- action: logbook.log
|
|
data:
|
|
name: auto_clean
|
|
message: 'check automation using default - Id: {{trigger.id}}'
|
|
- alias: reset_bin_counter
|
|
id: reset_bin_counter
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.rockrobo_dustbin
|
|
from: 'off'
|
|
to: 'on'
|
|
mode: restart
|
|
actions:
|
|
- action: counter.reset
|
|
entity_id: counter.clean_counter
|
|
- alias: ligth_village_1
|
|
id: ligth_village_1
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_1
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_1
|
|
to: 'off'
|
|
for:
|
|
seconds: 90
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: light.village_1
|
|
to: 'on'
|
|
for:
|
|
minutes: 5
|
|
seconds: 30
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.village_1
|
|
state: 'off'
|
|
- condition: sun
|
|
after: sunset
|
|
after_offset: -00:20:00
|
|
- condition: time
|
|
before: '23:15:00'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_1
|
|
data:
|
|
brightness_pct: 100
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_1
|
|
data:
|
|
color_temp_kelvin: 3300
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.village_1
|
|
state: 'off'
|
|
- condition: or
|
|
conditions:
|
|
- condition: sun
|
|
before: sunrise
|
|
before_offset: -00:20:00
|
|
- condition: time
|
|
after: '23:15:00'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_1
|
|
data:
|
|
brightness_pct: 10
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_1
|
|
data:
|
|
color_temp_kelvin: 2500
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.village_1
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.motion_village_1
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_1
|
|
data:
|
|
brightness_pct: 10
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.village_1
|
|
- alias: ligth_top_1
|
|
id: ligth_top_1
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_top_1
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_top_1
|
|
to: 'off'
|
|
for:
|
|
seconds: 90
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: light.village_top_1
|
|
to: 'on'
|
|
for:
|
|
minutes: 5
|
|
seconds: 30
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.village_top_1
|
|
state: 'off'
|
|
- condition: sun
|
|
after: sunset
|
|
after_offset: -00:20:00
|
|
- condition: time
|
|
before: '23:15:00'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_top_1
|
|
data:
|
|
brightness_pct: 100
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_top_1
|
|
data:
|
|
color_temp_kelvin: 3300
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.village_top_1
|
|
state: 'off'
|
|
- condition: or
|
|
conditions:
|
|
- condition: sun
|
|
before: sunrise
|
|
before_offset: -00:20:00
|
|
- condition: time
|
|
after: '23:15:00'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_top_1
|
|
data:
|
|
brightness_pct: 10
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_top_1
|
|
data:
|
|
color_temp_kelvin: 2500
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.village_top_1
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.motion_village_top_1
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_top_1
|
|
data:
|
|
brightness_pct: 10
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.village_top_1
|
|
- alias: ligth_village_out
|
|
id: ligth_village_out
|
|
triggers:
|
|
- trigger: sun
|
|
event: sunset
|
|
offset: +00:00:00
|
|
id: sunset_on
|
|
- trigger: sun
|
|
event: sunset
|
|
offset: +01:30:00
|
|
id: light_off
|
|
- trigger: sun
|
|
event: sunrise
|
|
offset: +00:10:00
|
|
id: light_off
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.village
|
|
event: enter
|
|
id: presence_on
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.village
|
|
event: leave
|
|
id: presence_off
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
brightness: '{{ range(45, 65, 2) | random }}'
|
|
color_temp: '{{ range(300, 350, 10) | random }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- sunset_on
|
|
- condition: state
|
|
entity_id: binary_sensor.village_presence
|
|
state: 'on'
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- presence_on
|
|
- condition: or
|
|
conditions:
|
|
- condition: sun
|
|
before: sunrise
|
|
before_offset: +00:30:00
|
|
- condition: sun
|
|
after: sunset
|
|
after_offset: -00:30:00
|
|
- condition: state
|
|
entity_id: light.village_out
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_out
|
|
data:
|
|
brightness_pct: '{{ brightness }}'
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_out
|
|
data:
|
|
color_temp_kelvin: '{{ color_temp }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- presence_off
|
|
- condition: state
|
|
entity_id: light.village_out
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.village_out
|
|
- alias: ligth_garage
|
|
id: ligth_garage
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_garage
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.village
|
|
event: enter
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.motion_village_garage
|
|
to: 'off'
|
|
for:
|
|
seconds: 90
|
|
id: light_off
|
|
- trigger: sun
|
|
event: sunrise
|
|
offset: +00:10:00
|
|
id: light_off
|
|
- trigger: zone
|
|
entity_id: device_tracker.root
|
|
zone: zone.village
|
|
event: leave
|
|
id: presence_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: light.village_garage
|
|
state: 'off'
|
|
- condition: or
|
|
conditions:
|
|
- condition: sun
|
|
before: sunrise
|
|
before_offset: +00:30:00
|
|
- condition: sun
|
|
after: sunset
|
|
after_offset: -00:30:00
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_garage
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- presence_off
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.village_garage
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.motion_village_garage
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.village_garage
|
|
- alias: waterheater_village
|
|
id: waterheater_village
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.village_presence
|
|
to: 'on'
|
|
id: trigger_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.village_presence
|
|
to: 'off'
|
|
for:
|
|
minutes: 15
|
|
id: trigger_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: state
|
|
entity_id: switch.waterheater_village_schedule
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.waterheater_village_schedule
|
|
- event: waterheater
|
|
event_data:
|
|
village: schedule_on
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: state
|
|
entity_id: switch.waterheater_village_schedule
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.waterheater_village_schedule
|
|
- event: waterheater
|
|
event_data:
|
|
village: schedule_off
|
|
- alias: waterheater_village_reheat
|
|
id: waterheater_village_reheat
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.waterheater_village
|
|
below: 19.5
|
|
id: trigger_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.waterheater_village
|
|
above: 35.5
|
|
id: trigger_off
|
|
- trigger: event
|
|
event_type: waterheater
|
|
event_data:
|
|
village: schedule_on
|
|
id: check_on
|
|
- trigger: event
|
|
event_type: waterheater
|
|
event_data:
|
|
village: trigger_off
|
|
id: check_off
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.waterheater_village_schedule
|
|
state: 'on'
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_on
|
|
- condition: time
|
|
after: 08:00:00
|
|
before: '19:30:00'
|
|
- condition: state
|
|
entity_id: switch.waterheater_village
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.waterheater_village
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- trigger_off
|
|
- condition: time
|
|
after: 08:00:00
|
|
- condition: state
|
|
entity_id: switch.waterheater_village
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.waterheater_village
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- check_on
|
|
- condition: time
|
|
after: '13:00:00'
|
|
before: '19:30:00'
|
|
- condition: numeric_state
|
|
entity_id: sensor.waterheater_village
|
|
below: 33
|
|
- condition: state
|
|
entity_id: switch.waterheater_village
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.waterheater_village
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- check_off
|
|
- condition: state
|
|
entity_id: switch.waterheater_village
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.waterheater_village
|
|
- alias: village_remote_1
|
|
id: village_remote_1
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: tele/zha-bridge-city/A79A/SENSOR
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 0\n}}"
|
|
- condition: state
|
|
entity_id: light.village_out
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_out
|
|
data:
|
|
brightness_pct: 95
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.village_out
|
|
data:
|
|
color_temp_kelvin: 2850
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.payload_json.ZbReceived[\"0x054B\"] is defined\
|
|
\ and\n trigger.payload_json.ZbReceived[\"0x054B\"].Power == 0\n}}"
|
|
- condition: state
|
|
entity_id: light.village_out
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.village_out
|
|
- alias: lumi_switch_double_trigger_1
|
|
id: lumi_switch_double_trigger_1
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/living-cube
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: shake
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/bed-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: shake
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.lumi_double_switch_1_timer
|
|
actions:
|
|
- action: "{%-\n set scr = {\n 'on': 'script.lumi_double_switch_off',\n\
|
|
\ 'off': 'script.lumi_double_switch_on'\n }\n -%}\n{{ scr[states('input_boolean.lumi_double_switch_1')]\
|
|
\ }}\n"
|
|
- alias: down_lumi_switch_double_trigger_1
|
|
id: down_lumi_switch_double_trigger_1
|
|
triggers:
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: stop
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.lumi_double_switch_1
|
|
state: 'on'
|
|
actions:
|
|
- action: script.lumi_double_switch_off
|
|
- alias: office_switch
|
|
id: office_switch
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/office-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: single
|
|
id: switch_low
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/office-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: double
|
|
id: switch_high
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/office-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: long
|
|
id: switch_off_hold
|
|
- trigger: state
|
|
entity_id: device_tracker.n0ll
|
|
to: not_home
|
|
for:
|
|
seconds: 30
|
|
id: switch_off_pc
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- switch_high
|
|
- switch_low
|
|
- condition: state
|
|
entity_id: automation.office_light
|
|
state: 'on'
|
|
sequence:
|
|
- action: automation.turn_off
|
|
target:
|
|
entity_id:
|
|
- automation.office_light
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- switch_high
|
|
- switch_low
|
|
- condition: state
|
|
entity_id: light.office_window
|
|
state: 'on'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.office_window
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- switch_high
|
|
- switch_low
|
|
sequence:
|
|
- action: script.lights_on
|
|
data:
|
|
ctrl_light: light.office_desk
|
|
ctrl_all: true
|
|
brightness_pct: "{%- set br = {\n 'switch_low': 5,\n 'switch_high':\
|
|
\ 90,\n }\n -%}\n{{ br[trigger.id] }}"
|
|
transition: 3
|
|
color_temp: 4000
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: automation.office_light
|
|
state: 'off'
|
|
- condition: trigger
|
|
id:
|
|
- switch_off_pc
|
|
- switch_off_hold
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.office
|
|
data:
|
|
effect: okay
|
|
- action: automation.turn_on
|
|
target:
|
|
entity_id:
|
|
- automation.office_light
|
|
- delay:
|
|
milliseconds: 750
|
|
- event: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: automation.office_light
|
|
state: 'on'
|
|
- condition: trigger
|
|
id:
|
|
- switch_off_hold
|
|
sequence:
|
|
- action: automation.turn_off
|
|
target:
|
|
entity_id:
|
|
- automation.office_light
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.office
|
|
data:
|
|
effect: okay
|
|
- delay:
|
|
milliseconds: 550
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.bed
|
|
- light.wash
|
|
- light.kitchen
|
|
- light.bath
|
|
- delay:
|
|
milliseconds: 550
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
- light.living
|
|
- light.hall
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.office
|
|
data:
|
|
transition: 20
|
|
- wait_for_trigger:
|
|
- trigger: state
|
|
entity_id:
|
|
- light.office
|
|
to: 'off'
|
|
timeout:
|
|
seconds: 30
|
|
- delay:
|
|
seconds: '{{ wait.remaining }}'
|
|
- action: input_boolean.turn_on
|
|
entity_id:
|
|
- input_boolean.office_enter_dummy
|
|
- action: automation.turn_on
|
|
target:
|
|
entity_id:
|
|
- automation.office_light
|
|
- alias: night_light_switch
|
|
id: night_light_switch
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/bed-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: single
|
|
id: single
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/bed-button
|
|
value_template: '{{ value_json.action | default(None) }}'
|
|
payload: double
|
|
id: double
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
cfg: '{% from ''tools.jinja'' import light_cfg %} {{ light_cfg(is_state(''binary_sensor.night_mode'',
|
|
''off'')) | from_json }}'
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- single
|
|
sequence:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id: "{%-\n set scr = {\n 'on': 'script.lights_off',\n \
|
|
\ 'off': 'script.lights_on'\n }\n -%}\n{{ scr[states('light.bed')]\
|
|
\ }}"
|
|
variables:
|
|
ctrl_light: light.bed
|
|
brightness_pct: '{{ cfg.brightness }}'
|
|
transition: '{{ cfg.transition }}'
|
|
color_temp: '{{ cfg.temp }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- double
|
|
- condition: state
|
|
entity_id:
|
|
- automation.bed_light
|
|
state: 'on'
|
|
sequence:
|
|
- action: automation.turn_off
|
|
entity_id:
|
|
- automation.bed_light
|
|
- action: light.turn_off
|
|
entity_id:
|
|
- light.bed
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- double
|
|
- condition: state
|
|
entity_id:
|
|
- automation.bed_light
|
|
state: 'off'
|
|
sequence:
|
|
- action: automation.turn_on
|
|
entity_id:
|
|
- automation.bed_light
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.bed
|
|
data:
|
|
effect: okay
|
|
- alias: kitchen_switch
|
|
id: kitchen_switch
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/kitchen-button
|
|
variables:
|
|
action: '{{ trigger.payload_json.action | default(None) }}'
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n action != None and\n action != 'release'\n }}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ action in [''double'', ''single''] }}'
|
|
- condition: state
|
|
entity_id:
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
state: 'on'
|
|
sequence:
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id:
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
- choose:
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ action in [''double'', ''single''] }}'
|
|
- condition: state
|
|
entity_id:
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
state: 'off'
|
|
sequence:
|
|
- variables:
|
|
brightness_pct: "{%- set br = {\n 'single': 5,\n 'double': 90,\n \
|
|
\ }\n -%}\n{{ br[action] }}"
|
|
color_temp: 4000
|
|
transition: 1
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: 20
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: '{{ max(brightness_pct, 30) }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
color_temp_kelvin: '{{ color_temp }}'
|
|
brightness_pct: 1
|
|
transition: 0
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
brightness_pct: '{{ brightness_pct }}'
|
|
transition: '{{ transition }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ action == ''hold'' }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
effect: okay
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
- delay:
|
|
milliseconds: 750
|
|
- event: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
- alias: living_switch
|
|
id: living_switch
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/living-cube
|
|
variables:
|
|
action: '{{ trigger.payload_json.action | default(None) }}'
|
|
side: '{{ trigger.payload_json.side | default(-1) }}'
|
|
action_angle: '{{ trigger.payload_json.action_angle | default(0) | abs }}'
|
|
action_from_side: '{{ trigger.payload_json.action_from_side | default(-1) }}'
|
|
action_side: '{{ trigger.payload_json.action_side | default(-1) }}'
|
|
action_to_side: '{{ trigger.payload_json.action_to_side | default(-1) }}'
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ action != None }}'
|
|
mode: restart
|
|
actions:
|
|
- variables:
|
|
transition: 1
|
|
- choose:
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: automation.living_light
|
|
state: 'on'
|
|
- condition: template
|
|
value_template: '{{ action == ''flip90'' }}'
|
|
- condition: template
|
|
value_template: '{{ action_from_side == 0 }}'
|
|
- condition: template
|
|
value_template: '{{ action_side == 1 }}'
|
|
- condition: template
|
|
value_template: '{{ action_to_side == 1 }}'
|
|
sequence:
|
|
- variables:
|
|
brightness_pct: "{%- if is_state('binary_sensor.night_mode', 'on') -%}\n\
|
|
\ 30\n{%- elif is_state('media_player.livingtv', 'playing') -%}\n 50\n\
|
|
{%- else -%}\n 90\n{%- endif -%}"
|
|
color_temp: 4000
|
|
- action: automation.turn_off
|
|
data:
|
|
entity_id:
|
|
- automation.living_light
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living
|
|
data:
|
|
color_temp_kelvin: '{{ color_temp }}'
|
|
brightness_pct: 1
|
|
transition: 0
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living
|
|
data:
|
|
brightness_pct: '{{ brightness_pct }}'
|
|
transition: '{{ transition }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: '{{ max(brightness_pct, 30) }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
color_temp_kelvin: '{{ color_temp }}'
|
|
brightness_pct: 1
|
|
transition: 0
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
brightness_pct: '{{ brightness_pct }}'
|
|
transition: '{{ transition }}'
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: automation.living_light
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ action == ''flip90'' }}'
|
|
- condition: template
|
|
value_template: '{{ action_from_side == 1 }}'
|
|
- condition: template
|
|
value_template: '{{ action_side == 0 }}'
|
|
- condition: template
|
|
value_template: '{{ action_to_side == 0 }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living
|
|
- light.kitchen
|
|
data:
|
|
effect: okay
|
|
- action: automation.turn_on
|
|
data:
|
|
entity_id:
|
|
- automation.living_light
|
|
- automation.kitchen_light
|
|
- automation.kitchen_light_1
|
|
- delay:
|
|
milliseconds: 750
|
|
- event: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: automation.living_light
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ action == ''rotate_left'' }}'
|
|
- condition: template
|
|
value_template: '{{ side == 1 }}'
|
|
sequence:
|
|
- variables:
|
|
step: "{%- if action_angle > 60 -%}\n {{ -10}}\n{%- else -%}\n {{ -5 }}\n\
|
|
{%- endif -%}"
|
|
kitchen_pct: "{{\n (state_attr('light.kitchen_led', 'brightness') * 100)\
|
|
\ / 254\n }}"
|
|
led_pct: "{{\n int(min(max(kitchen_pct + step, 25), 90))\n }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living
|
|
data:
|
|
brightness_pct: '{{ int(min(max(((state_attr(''light.living'', ''brightness'')
|
|
* 100) / 254) + step, 10), 90)) }}'
|
|
transition: '{{ transition }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
brightness_pct: '{{ int(min(max(((state_attr(''light.kitchen'', ''brightness'')
|
|
* 100) / 254) + step, 10), 90)) }}'
|
|
transition: '{{ transition }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: "{{\n min(led_pct - 5 , 20)\n }}"
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: '{{ led_pct }}'
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.living
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: automation.living_light
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ action == ''rotate_right'' }}'
|
|
- condition: template
|
|
value_template: '{{ side == 1 }}'
|
|
sequence:
|
|
- variables:
|
|
step: "{%- if action_angle > 60 -%}\n {{ 10 }}\n{%- else -%}\n {{ 5 }}\n\
|
|
{%- endif -%}"
|
|
kitchen_pct: "{{\n (state_attr('light.kitchen_led', 'brightness') * 100)\
|
|
\ / 254\n }}"
|
|
led_pct: "{{\n int(min(max(kitchen_pct + step, 25), 90))\n }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.living
|
|
data:
|
|
brightness_pct: '{{ int(min(max(((state_attr(''light.living'', ''brightness'')
|
|
* 100) / 254) + step, 10), 90)) }}'
|
|
transition: '{{ transition }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen
|
|
data:
|
|
brightness_pct: '{{ int(min(max(((state_attr(''light.kitchen'', ''brightness'')
|
|
* 100) / 254) + step, 10), 90)) }}'
|
|
transition: '{{ transition }}'
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: "{{\n min(led_pct - 5 , 20)\n }}"
|
|
- delay:
|
|
milliseconds: "{{\n states('input_number.ctrl_delay') | int (100)\n \
|
|
\ }}"
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_led
|
|
data:
|
|
brightness_pct: '{{ led_pct }}'
|
|
- alias: sound_bar_music
|
|
id: sound_bar_music
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
from: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: to_on
|
|
- trigger: state
|
|
entity_id: input_select.select_sound_bar
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
- none
|
|
id: to_on
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: start
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.sound_bar
|
|
id: to_stop
|
|
- trigger: state
|
|
entity_id: binary_sensor.sound_bar_active
|
|
to: 'off'
|
|
id: to_off
|
|
- trigger: state
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
to: 'off'
|
|
for:
|
|
seconds: 5
|
|
id: timer_clear
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
- condition: state
|
|
entity_id: binary_sensor.kodi_screen_saver
|
|
state: 'on'
|
|
sequence:
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_sleep
|
|
state: 'on'
|
|
then:
|
|
- action: timer.start
|
|
entity_id: timer.sound_bar
|
|
data_template:
|
|
duration: 00:{{states('input_number.sound_bar_music_timer') | int}}:00
|
|
- action: media_player.play_media
|
|
data_template:
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
media_content_type: audio/mp3
|
|
media_content_id: '{% from ''tools.jinja'' import name_to_url %} {{ name_to_url(''input_select.select_sound_bar'')
|
|
}}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_stop
|
|
sequence:
|
|
- action: media_player.turn_off
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_off
|
|
sequence:
|
|
- action: script.sound_bar_off
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- start
|
|
sequence:
|
|
- action: input_select.set_options
|
|
target:
|
|
entity_id: input_select.select_sound_bar
|
|
data:
|
|
options: '{% from ''tools.jinja'' import radio_names %} {{ radio_names()
|
|
}}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- timer_clear
|
|
- condition: state
|
|
entity_id: timer.sound_bar
|
|
state:
|
|
- active
|
|
- paused
|
|
sequence:
|
|
- action: timer.cancel
|
|
entity_id: timer.sound_bar
|
|
- alias: sound_bar_input_sleep_on
|
|
id: sound_bar_input_sleep_on
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_boolean.enable_sleep
|
|
conditions:
|
|
- condition: state
|
|
entity_id: media_player.ht_mt500_501_b34d6a
|
|
state: playing
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_sleep
|
|
state: 'off'
|
|
sequence:
|
|
- action: timer.cancel
|
|
entity_id: timer.sound_bar
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_sleep
|
|
state: 'on'
|
|
sequence:
|
|
- action: timer.start
|
|
entity_id: timer.sound_bar
|
|
data_template:
|
|
duration: 00:05:00
|
|
- choose:
|
|
- conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_sleep
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: device_tracker.n0ll
|
|
state: home
|
|
sequence:
|
|
- action: timer.pause
|
|
entity_id: timer.sound_bar
|
|
- alias: bed_sleep_on_spot
|
|
id: bed_sleep_on_spot
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bedmusic
|
|
to: 'on'
|
|
actions:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.select_spotify
|
|
option: sleep
|
|
- action: script.spot_bed
|
|
- wait_template: "{{\n is_state('media_player.bedroom_speaker', 'playing')\n\
|
|
\ }}"
|
|
timeout:
|
|
seconds: 60
|
|
continue_on_timeout: true
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.bedroom_speaker
|
|
volume_level: 0.14
|
|
- action: timer.start
|
|
entity_id: timer.bed_music
|
|
data:
|
|
duration: 00:45:00
|
|
- alias: bed_sleep_on
|
|
id: bed_sleep_on
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.bedmusic
|
|
to: 'on'
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n not is_state('media_player.bedroom_speaker', 'playing')\n\
|
|
\ }}"
|
|
actions:
|
|
- action: input_select.select_option
|
|
data_template:
|
|
entity_id: input_select.select_sleep_sound
|
|
option: '{%- set c = states(''input_select.select_sleep_sound'') -%} {%- set
|
|
a = state_attr(''input_select.select_sleep_sound'', ''options'') -%} {{ (((a
|
|
| join("|")) | regex_replace(c, replace='''')) | regex_replace(''\|\|'', replace=''|'')).split(''|'')
|
|
| random }}'
|
|
- alias: bed_sleep_on_select
|
|
id: bed_sleep_on_select
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_select.select_sleep_sound
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{trigger.from_state.state != trigger.to_state.state}}'
|
|
actions:
|
|
- action: script.bed_sleep_on
|
|
- alias: bed_music
|
|
id: bed_music
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: media_player.bedroom_speaker
|
|
from: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: to_on
|
|
- trigger: state
|
|
entity_id: input_select.select_radio_bed
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
- none
|
|
id: to_on
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: start
|
|
- trigger: state
|
|
entity_id: binary_sensor.bedmusic
|
|
to: 'off'
|
|
id: to_off
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.bed_music
|
|
id: to_off
|
|
- trigger: state
|
|
entity_id: media_player.bedroom_speaker
|
|
to: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: timer_clear
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
- condition: template
|
|
value_template: "{{\n ('input_select.select_radio_bed' == trigger.entity_id)\
|
|
\ or\n not is_state('media_player.bedroom_speaker', 'playing')\n }}"
|
|
- condition: state
|
|
entity_id:
|
|
- script.bed_sleep_on
|
|
- script.spot_bed
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.bed_music_on
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_off
|
|
- condition: template
|
|
value_template: "{{\n now() - (\n state_attr('automation.event_android_alarm',\
|
|
\ 'last_triggered') |\n default(now() - timedelta(minutes=16), true)\n\
|
|
\ ) >\n timedelta(minutes=15)\n }}"
|
|
sequence:
|
|
- action: media_player.turn_off
|
|
entity_id: media_player.bedroom_speaker
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- timer_clear
|
|
- condition: template
|
|
value_template: '{{ not is_state(''timer.bed_music'', ''idle'') }}'
|
|
sequence:
|
|
- action: media_player.turn_off
|
|
entity_id: media_player.bedroom_speaker
|
|
- action: timer.cancel
|
|
entity_id: timer.bed_music
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- start
|
|
sequence:
|
|
- action: input_select.set_options
|
|
target:
|
|
entity_id: input_select.select_radio_bed
|
|
data:
|
|
options: '{% from ''tools.jinja'' import radio_names %} {{ radio_names()
|
|
}}'
|
|
- alias: auto_reboot_all
|
|
id: auto_reboot_all
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.isp_conn
|
|
to: 'off'
|
|
for:
|
|
minutes: 6
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n now() - (\n state_attr('automation.mydelay', 'last_triggered')\
|
|
\ |\n default(now()-timedelta(minutes=61), true)\n ) >\n timedelta(minutes=60)\n\
|
|
\ }}"
|
|
actions:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: restart-alert
|
|
tit: reboot all
|
|
msg: "{%- if states('sensor.ping_isp') | float(-1) < 0 -%}\n cant ping isp\n\
|
|
{%- else -%}\n high isp ping {{states('sensor.ping_isp') }} ms\n{%- endif\
|
|
\ -%}"
|
|
- action: script.reboot_all
|
|
- alias: open_ports
|
|
id: open_ports
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.ext_port
|
|
to: 'off'
|
|
for:
|
|
minutes: 11
|
|
actions:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: router-network-wireless
|
|
tit: router
|
|
msg: open ports
|
|
- alias: isp_notify
|
|
id: isp_notify
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.village_conn
|
|
- binary_sensor.city_conn
|
|
- binary_sensor.main_conn
|
|
- binary_sensor.city_waterheater_conn
|
|
- binary_sensor.village_pump_conn
|
|
- binary_sensor.village_waterheater_conn
|
|
to: null
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
for:
|
|
minutes: 1
|
|
mode: parallel
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: connection
|
|
tit: '{{ trigger.to_state.name }}'
|
|
msg: "{%-\n set sts = {\n 'on': 'up',\n 'off': 'down',\n \
|
|
\ }\n -%}\n{{ sts[trigger.to_state.state] }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.to_state.state == 'on'\n }}"
|
|
sequence:
|
|
- action: script.turn_on
|
|
data:
|
|
entity_id:
|
|
- script.startup_mqtt
|
|
- alias: change_current_theme
|
|
id: change_current_theme
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_select.current_theme
|
|
actions:
|
|
- action: frontend.set_theme
|
|
data_template:
|
|
name: '{{ states(''input_select.current_theme'') }}'
|
|
- alias: theme_switch
|
|
id: theme_switch
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.day
|
|
- trigger: homeassistant
|
|
event: start
|
|
actions:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.current_theme
|
|
data_template:
|
|
option: '{%- set _map = {''on'': ''default'', ''off'': ''midnight''} -%} {{
|
|
_map[states(''binary_sensor.day'')] }}'
|
|
- alias: updates_notify
|
|
id: updates_notify
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.docker_hub_update_available
|
|
to: 'on'
|
|
for:
|
|
seconds: 60
|
|
id: hass
|
|
- trigger: numeric_state
|
|
entity_id: sensor.hacs
|
|
value_template: "{{\n expand(states.update)\n | selectattr('state', 'eq',\
|
|
\ 'on')\n | map(attribute='entity_id')\n | map('device_attr', 'identifiers')\n\
|
|
\ | map('contains', 'hacs')\n | list\n | count\n }}"
|
|
above: 0
|
|
for:
|
|
seconds: 60
|
|
id: hacs
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- hass
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: update
|
|
tit: Update
|
|
data_template:
|
|
msg: '{{trigger.id}}: {{ states(''sensor.docker_hub'') }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- hacs
|
|
sequence:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: update
|
|
tit: Update
|
|
data_template:
|
|
msg: '{{trigger.id}}: {{ trigger.to_state.state }}'
|
|
- alias: once_week_reboot
|
|
id: once_week_reboot
|
|
triggers:
|
|
- trigger: time
|
|
at: 03:00:00
|
|
conditions:
|
|
- condition: time
|
|
weekday:
|
|
- tue
|
|
actions:
|
|
- action: script.roborock_reboot
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: restart-alert
|
|
tit: weekly
|
|
msg: reboot
|
|
- alias: ligths_auto_off
|
|
id: ligths_auto_off
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.village_conn
|
|
to: 'on'
|
|
for:
|
|
seconds: 30
|
|
id: village_lights_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.city_conn
|
|
to: 'on'
|
|
for:
|
|
seconds: 30
|
|
id: city_lights_off
|
|
mode: parallel
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- village_lights_off
|
|
sequence:
|
|
- repeat:
|
|
for_each:
|
|
- light.village_1
|
|
- light.village_garage
|
|
- light.village_out
|
|
- light.village_top_1
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: "{{\n repeat.item\n }}"
|
|
- delay:
|
|
milliseconds: 500
|
|
- delay:
|
|
seconds: 20
|
|
- repeat:
|
|
for_each:
|
|
- light.village_1
|
|
- light.village_garage
|
|
- light.village_out
|
|
- light.village_top_1
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: "{{\n repeat.item\n }}"
|
|
- delay:
|
|
milliseconds: 500
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- city_lights_off
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.city_2
|
|
- delay:
|
|
seconds: 20
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.city_2
|
|
- alias: transmission_notify
|
|
id: transmission_notify
|
|
triggers:
|
|
- trigger: event
|
|
event_type: transmission
|
|
actions:
|
|
- action: script.all_notify
|
|
data_template:
|
|
icon_notify: pipe
|
|
tit: '{{ trigger.event.data.file }}'
|
|
msg: finished
|
|
- alias: transmission_idle
|
|
id: transmission_idle
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.download_active
|
|
to: 'off'
|
|
from: 'on'
|
|
actions:
|
|
- action: script.all_notify
|
|
data:
|
|
icon_notify: pipe-disconnected
|
|
tit: transmission
|
|
msg: download is idle
|
|
- alias: timer_startup
|
|
id: timer_startup
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.start_up_delay
|
|
conditions:
|
|
condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_select.power_down_restart
|
|
state: pending
|
|
actions:
|
|
- action: homeassistant.restart
|
|
- alias: restart
|
|
id: restart
|
|
triggers:
|
|
- trigger: event
|
|
event_type: call_service
|
|
event_data:
|
|
domain: homeassistant
|
|
service: restart
|
|
conditions:
|
|
condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_select.power_down_restart
|
|
state: 'on'
|
|
actions:
|
|
- event: up_down_my
|
|
event_data:
|
|
data: stop
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.power_down_restart
|
|
option: 'off'
|
|
- action: logbook.log
|
|
data_template:
|
|
name: restart
|
|
message: power down restart off
|
|
- alias: startup
|
|
id: startup
|
|
triggers:
|
|
- trigger: homeassistant
|
|
event: start
|
|
actions:
|
|
- action: "{%-\n set scr = {\n 'off': 'script.startup',\n 'on': 'script.restart',\n\
|
|
\ 'pending': 'script.powerup'\n }\n -%}\n{{ scr[states('input_select.power_down_restart')]\
|
|
\ }}\n"
|
|
- alias: wash_light
|
|
id: wash_light
|
|
initial_state: false
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.hall_motion
|
|
- binary_sensor.wash_door
|
|
to: 'on'
|
|
id: light_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.hall_occupancy
|
|
to: 'off'
|
|
for:
|
|
seconds: 45
|
|
id: light_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.wash_door
|
|
to: 'off'
|
|
for:
|
|
seconds: 3
|
|
id: light_off
|
|
- trigger: event
|
|
event_type: lights_check
|
|
event_data:
|
|
light: turn_off
|
|
id: light_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_on
|
|
- condition: state
|
|
entity_id: binary_sensor.wash_door
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: light.wash
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.wash
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- light_off
|
|
- condition: state
|
|
entity_id: light.wash
|
|
state: 'on'
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.hall_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.wash_door
|
|
state: 'off'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.wash
|
|
- alias: wash_fan
|
|
id: wash_fan
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.wash_fan
|
|
to: 'on'
|
|
id: dryer_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.wash_fan
|
|
to: 'off'
|
|
id: dryer_off
|
|
- trigger: numeric_state
|
|
entity_id: sensor.bath_hum_change
|
|
above: 10.0
|
|
id: shower_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.showering
|
|
to: 'off'
|
|
id: shower_off
|
|
- trigger: state
|
|
entity_id: input_boolean.fan_wash_time
|
|
to: 'on'
|
|
id: manual_on
|
|
- trigger: state
|
|
entity_id: input_boolean.fan_wash_time
|
|
to: 'on'
|
|
for:
|
|
minutes: "{{\n states('input_number.fan_wash_time') | int(0)\n }}"
|
|
id: manual_off
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: manual_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower_on
|
|
- dryer_on
|
|
- manual_on
|
|
- condition: state
|
|
entity_id: switch.wash_fan
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.wash_fan
|
|
- conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower_off
|
|
- dryer_off
|
|
- manual_off
|
|
- condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.showering
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.wash_fan
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: switch.wash_fan
|
|
state: 'on'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.wash_fan
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- shower
|
|
- manual_off
|
|
- condition: state
|
|
entity_id: input_boolean.fan_wash_time
|
|
state: 'on'
|
|
sequence:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id:
|
|
- input_boolean.fan_wash_time
|
|
- id: water_boiler
|
|
alias: water_boiler
|
|
triggers:
|
|
- trigger: time
|
|
at: 05:05:00
|
|
id: time_heat
|
|
variables:
|
|
s: win
|
|
- trigger: time
|
|
at: 06:05:00
|
|
id: time_heat
|
|
variables:
|
|
s: sum
|
|
- trigger: time
|
|
at: 04:45:00
|
|
id: time_clean
|
|
variables:
|
|
s: win
|
|
- trigger: time
|
|
at: 05:00:00
|
|
id: time_clean
|
|
variables:
|
|
s: sum
|
|
- trigger: time
|
|
at: 06:35:00
|
|
id: time_off
|
|
variables:
|
|
s: win
|
|
- trigger: time
|
|
at: 07:35:00
|
|
id: time_off
|
|
variables:
|
|
s: sum
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{%- set data = {\n 'win' : [1, 2, 3, 11, 12],\n \
|
|
\ 'sum' : [4, 5, 6, 7, 8, 9, 10],\n }\n -%}\n{{ now().month in data[s]\
|
|
\ }}"
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_heat
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
- condition: numeric_state
|
|
entity_id: climate.hot_water
|
|
attribute: current_temperature
|
|
below: 39.0
|
|
- condition: state
|
|
entity_id: climate.hot_water
|
|
state: 'off'
|
|
sequence:
|
|
- action: climate.set_temperature
|
|
target:
|
|
entity_id: climate.hot_water
|
|
data:
|
|
hvac_mode: heat
|
|
temperature: 45
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_clean
|
|
- condition: time
|
|
weekday:
|
|
- wed
|
|
- condition: state
|
|
entity_id: climate.hot_water
|
|
state: 'off'
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: climate.hot_water
|
|
data:
|
|
hvac_mode: heat
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- time_off
|
|
- condition: state
|
|
entity_id: climate.hot_water
|
|
state: heat
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: climate.hot_water
|
|
data:
|
|
hvac_mode: 'off'
|
|
- id: water_city_1
|
|
alias: water_city_1
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.water_motion
|
|
- binary_sensor.water_wash
|
|
to: 'on'
|
|
id: water_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.water_occupancy
|
|
to: 'off'
|
|
id: water_off
|
|
for:
|
|
seconds: "{%- if int(states('counter.water_motion'), 5) > 50 -%}\n 300\n{%-\
|
|
\ elif int(states('counter.water_motion'), 5) > 30 -%}\n 180\n{%- elif int(states('counter.water_motion'),\
|
|
\ 5 ) > 10 -%}\n 120\n{%- else -%}\n 60\n{%- endif -%}"
|
|
- trigger: state
|
|
entity_id: binary_sensor.water_wash
|
|
to: 'off'
|
|
id: water_off
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: water_off
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- water_on
|
|
sequence:
|
|
- action: counter.increment
|
|
data:
|
|
entity_id:
|
|
- counter.water_motion
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- water_off
|
|
sequence:
|
|
- action: counter.reset
|
|
data:
|
|
entity_id:
|
|
- counter.water_motion
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- water_on
|
|
- condition: state
|
|
entity_id: switch.water_valve
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_on
|
|
data:
|
|
entity_id: switch.water_valve
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- water_off
|
|
- condition: state
|
|
entity_id: switch.water_valve
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.water_occupancy
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.water_wash
|
|
state: 'off'
|
|
sequence:
|
|
- action: switch.turn_off
|
|
data:
|
|
entity_id: switch.water_valve
|
|
- alias: wled_lights
|
|
id: wled_lights
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.wled_living
|
|
to: 'on'
|
|
id: to_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.wled_living
|
|
to: 'off'
|
|
id: to_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.wled_living
|
|
from: unavailable
|
|
for:
|
|
seconds: 45
|
|
id: from_off
|
|
- trigger: state
|
|
entity_id:
|
|
- light.living
|
|
- light.hall
|
|
to: 'off'
|
|
id: after_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.wled_ambient
|
|
to: 'on'
|
|
id: to_ambient
|
|
- trigger: state
|
|
entity_id: binary_sensor.wled_ambient
|
|
to: 'off'
|
|
id: from_ambient
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: stop
|
|
id: to_off
|
|
- trigger: state
|
|
entity_id: binary_sensor.day
|
|
to: 'off'
|
|
- trigger: event
|
|
event_type: up_down_my
|
|
event_data:
|
|
data: start
|
|
id: to_start
|
|
- trigger: state
|
|
entity_id: device_tracker.n0ll
|
|
to: not_home
|
|
for:
|
|
seconds: 95
|
|
id: to_start
|
|
- trigger: event
|
|
event_type: kodi_living_startup
|
|
id: to_start
|
|
mode: restart
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_ambient
|
|
sequence:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: SN=0
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: T=0
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: "{{\n 'A=%d' | format( states('input_number.wled_video_brightness')\
|
|
\ | int(64))\n }}"
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_on
|
|
sequence:
|
|
- variables:
|
|
data: A=200&FP=51&FX=112&NL=0
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_off
|
|
- condition: state
|
|
entity_id: binary_sensor.wled_ambient
|
|
state: 'off'
|
|
sequence:
|
|
- variables:
|
|
data: NL=1&NF=2&A=200&PL=1
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- from_off
|
|
- condition: state
|
|
entity_id: binary_sensor.wled_ambient
|
|
state: 'off'
|
|
sequence:
|
|
- variables:
|
|
data: "{%- if is_state('binary_sensor.wled_living', 'on') -%}\n A=200&FP=51&FX=112&NL=0\n\
|
|
{%- else -%}\n A=200&FP=15&FX=38&NL=5&NF=2\n{%- endif -%}"
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- after_off
|
|
- condition: state
|
|
entity_id: binary_sensor.wled_living
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.wled_ambient
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
sequence:
|
|
- variables:
|
|
data: A=200&PL=3&NL=3&NF=2
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- to_start
|
|
- condition: state
|
|
entity_id: binary_sensor.day
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.wled_living
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: device_tracker.root
|
|
state: home
|
|
sequence:
|
|
- variables:
|
|
data: A=200&FP=15&FX=43&NL=1&NF=2
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- conditions:
|
|
- condition: trigger
|
|
id:
|
|
- from_ambient
|
|
sequence:
|
|
- variables:
|
|
data: A=200&FP=15&FX=112&NL=1&NF=2
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload: '{{ data }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-window/api
|
|
payload: '{{ data }}'
|
|
- alias: hyperion_clear_effects
|
|
id: hyperion_clear_effects
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.hyperion_effect_timer
|
|
actions:
|
|
- action: input_select.select_option
|
|
data:
|
|
entity_id: input_select.hyperion_select_effect
|
|
option: None
|
|
- alias: send_effect_hyperion
|
|
id: send_effect_hyperion
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_select.hyperion_select_effect
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{\n trigger.to_state.state != 'None'\n }}"
|
|
- condition: template
|
|
value_template: "{{\n now() - (\n state_attr('automation.tv_ctrl', 'last_triggered')\
|
|
\ |\n default(now() - timedelta(seconds=31), true)\n ) >\n \
|
|
\ timedelta(seconds=30) or\n is_state('binary_sensor.day', 'off')\n }}"
|
|
actions:
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "'{\n \"command\":\"componentstate\",\n \"componentstate\": {\n \
|
|
\ \"component\": \"LEDDEVICE\",\n \"state\": false\n }\n}'"
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "'{\n \"command\": \"effect\",\n \"priority\": {{ 105 | int(0)\
|
|
\ }},\n \"duration\": {{ (states('input_number.slider_effect_time') | float(0)\
|
|
\ * 60000) | int(0) }},\n \"effect\": { \"name\" : \"{{ states('input_select.hyperion_select_effect')\
|
|
\ }}\"}\n }'"
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "'{\n \"command\":\"componentstate\",\n \"componentstate\": {\n \
|
|
\ \"component\": \"LEDDEVICE\",\n \"state\": true\n }\n}'"
|
|
- action: timer.start
|
|
entity_id: timer.hyperion_effect_timer
|
|
data_template:
|
|
duration: '{{ (states(''input_number.slider_effect_time'') | float(0) * 60)
|
|
| int(0) }}'
|
|
- alias: video_grabber
|
|
id: video_grabber
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.grabber_living
|
|
- trigger: event
|
|
event_type: kodi_living_startup
|
|
actions:
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "{%-\n set cmd = {\n 'command': 'componentstate',\n \
|
|
\ 'componentstate': {\n 'component': 'GRABBER',\n 'state':\
|
|
\ is_state('binary_sensor.grabber_living', 'on')\n }\n }\n -%}\n\
|
|
'{{ cmd | to_json }}'"
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "{%-\n set cmd = {\n 'command': 'componentstate',\n \
|
|
\ 'componentstate': {\n 'component': 'LEDDEVICE',\n 'state':\
|
|
\ false\n }\n }\n -%}\n'{{ cmd | to_json }}'"
|
|
- delay:
|
|
milliseconds: 250
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: "{%-\n set cmd = {\n 'command': 'componentstate',\n \
|
|
\ 'componentstate': {\n 'component': 'LEDDEVICE',\n 'state':\
|
|
\ true\n }\n }\n -%}\n'{{ cmd | to_json }}'"
|
|
- alias: send_effect_hyperion_none
|
|
id: send_effect_hyperion_none
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_select.hyperion_select_effect
|
|
to: None
|
|
for:
|
|
seconds: 3
|
|
actions:
|
|
- action: shell_command.hyperion_cmd
|
|
data_template:
|
|
value: '''{"command": "clear", "priority": {{ 105 | int(0) }}}'''
|
|
- action: timer.cancel
|
|
entity_id: timer.hyperion_effect_timer
|
|
- alias: led_scheme_send
|
|
id: led_scheme_send
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_select.wled_colors_palette
|
|
- trigger: state
|
|
entity_id: input_select.wled_effects
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.wled_living
|
|
state: 'on'
|
|
actions:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload_template: '{{states(''input_select.wled_effects'')}}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: wled/wled-living/api
|
|
payload_template: '{{states(''input_select.wled_colors_palette'')}}'
|
|
- alias: zigbee2mqtt_start
|
|
id: zigbee2mqtt_start
|
|
triggers:
|
|
- trigger: mqtt
|
|
topic: zigbee2mqtt/bridge/state
|
|
actions:
|
|
- repeat:
|
|
for_each:
|
|
- device: bed-light-1
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-2
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-3
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-4
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-5
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-6
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-7
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: bed-light-8
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-1
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-2
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-3
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-4
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-5
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-6
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-7
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: office-light-8
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-1
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-2
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-3
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-4
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-5
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-6
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-light-7
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-1
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-2
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-3
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-4
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-5
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-6
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: living-light-7
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
color_temp: ''
|
|
- device: kitchen-led
|
|
payload:
|
|
state: ''
|
|
brightness: ''
|
|
- device: hall-light
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: bath-light
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: bath-mirror
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: wash-switch
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: bath-mirror
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: office-wardrobe
|
|
payload:
|
|
state: ''
|
|
- device: bed-wardrobe
|
|
payload:
|
|
state: ''
|
|
- device: bath-water
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: wash-switch
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
- device: living-switch-tv
|
|
payload:
|
|
state: ''
|
|
- device: bed-switch-1
|
|
payload:
|
|
state_l1: ''
|
|
state_l2: ''
|
|
sequence:
|
|
- action: mqtt.publish
|
|
data_template:
|
|
topic: zigbee2mqtt/{{ repeat.item.device }}/get
|
|
payload: '{{ repeat.item.payload | to_json }}'
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: zigbee2mqtt/bath-tvr/set
|
|
payload: '{"online": "on"}'
|
|
- delay:
|
|
seconds: 1
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: zigbee2mqtt/bath-tvr/set
|
|
payload: '{"online": "off"}'
|