I’ve never been able to get it to run and I’ve tried all the different settings.
mode: restart
max_exceeded: silent
variables:
vac: vacuum.x40_master
map_ent: camera.x40_master_map
flag_cleaned: input_boolean.cleaned_today
presence_ent: zone.home
pres_val: '1'
robot_slug: '{{ vac.split(''.'')[1] }}'
cg_sel: select.{{ robot_slug }}_cleangenius
cm_sel: select.{{ robot_slug }}_cleaning_mode
m_on: true
m_time: '07:00:00'
m_days:
- mon
- fri
m_preset: genius
m_rooms: ''
e_on: false
e_time: '16:00:00'
e_days:
- mon
- fri
e_preset: genius
e_rooms: ''
a_on: false
a_time: '09:00:00'
a_days: []
a_preset: sweeping
a_rooms: ''
b_on: false
b_time: '10:30:00'
b_days: []
b_preset: mopping
b_rooms: ''
c_on: false
c_time: '15:00:00'
c_days: []
c_preset: genius
c_rooms: ''
d_on: false
d_time: '18:30:00'
d_days: []
d_preset: genius_deep
d_rooms: ''
triggers:
- platform: time
at: '23:59:00'
id: reset
- platform: time
at: '{{ m_time }}'
id: morning
- platform: time
at: '{{ e_time }}'
id: evening
- platform: time
at: '{{ a_time }}'
id: blockA
- platform: time
at: '{{ b_time }}'
id: blockB
- platform: time
at: '{{ c_time }}'
id: blockC
- platform: time
at: '{{ d_time }}'
id: blockD
actions:
- choose:
- conditions: '{{ trigger.id == ''reset'' }}'
sequence:
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_off
- conditions: |
{{ trigger.id == 'morning'
and m_on
and (m_days | count == 0 or now().isoweekday() in
[1 if 'mon' in m_days else 0,
2 if 'tue' in m_days else 0,
3 if 'wed' in m_days else 0,
4 if 'thu' in m_days else 0,
5 if 'fri' in m_days else 0,
6 if 'sat' in m_days else 0,
7 if 'sun' in m_days else 0]) }}
sequence:
- choose:
- conditions: >
{{ presence_ent != '' and pres_val != '' and
states(presence_ent) != pres_val }}
sequence: []
default:
- variables:
preset_now: '{{ m_preset }}'
rooms_now: '{{ m_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none']
}}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none']
}}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
- conditions: |
{{ trigger.id == 'evening'
and e_on
and (e_days | count == 0 or now().isoweekday() in
[1 if 'mon' in e_days else 0,
2 if 'tue' in e_days else 0,
3 if 'wed' in e_days else 0,
4 if 'thu' in e_days else 0,
5 if 'fri' in e_days else 0,
6 if 'sat' in e_days else 0,
7 if 'sun' in e_days else 0]) }}
sequence:
- choose:
- conditions: >
{{ presence_ent != '' and pres_val != '' and
states(presence_ent) != pres_val }}
sequence: []
default:
- variables:
preset_now: '{{ e_preset }}'
rooms_now: '{{ e_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none']
}}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none']
}}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
- conditions: >
{{ trigger.id == 'blockA' and a_on and (a_days | count == 0 or
now().isoweekday() in
[1 if 'mon' in a_days else 0,2 if 'tue' in a_days else 0,3 if 'wed' in a_days else 0,
4 if 'thu' in a_days else 0,5 if 'fri' in a_days else 0,6 if 'sat' in a_days else 0,
7 if 'sun' in a_days else 0]) }}
sequence:
- variables:
preset_now: '{{ a_preset }}'
rooms_now: '{{ a_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
- conditions: >
{{ trigger.id == 'blockB' and b_on and (b_days | count == 0 or
now().isoweekday() in
[1 if 'mon' in b_days else 0,2 if 'tue' in b_days else 0,3 if 'wed' in b_days else 0,
4 if 'thu' in b_days else 0,5 if 'fri' in b_days else 0,6 if 'sat' in b_days else 0,
7 if 'sun' in b_days else 0]) }}
sequence:
- variables:
preset_now: '{{ b_preset }}'
rooms_now: '{{ b_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
- conditions: >
{{ trigger.id == 'blockC' and c_on and (c_days | count == 0 or
now().isoweekday() in
[1 if 'mon' in c_days else 0,2 if 'tue' in c_days else 0,3 if 'wed' in c_days else 0,
4 if 'thu' in c_days else 0,5 if 'fri' in c_days else 0,6 if 'sat' in c_days else 0,
7 if 'sun' in c_days else 0]) }}
sequence:
- variables:
preset_now: '{{ c_preset }}'
rooms_now: '{{ c_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
- conditions: >
{{ trigger.id == 'blockD' and d_on and (d_days | count == 0 or
now().isoweekday() in
[1 if 'mon' in d_days else 0,2 if 'tue' in d_days else 0,3 if 'wed' in d_days else 0,
4 if 'thu' in d_days else 0,5 if 'fri' in d_days else 0,6 if 'sat' in d_days else 0,
7 if 'sun' in d_days else 0]) }}
sequence:
- variables:
preset_now: '{{ d_preset }}'
rooms_now: '{{ d_rooms }}'
- sequence:
- variables:
raw_rooms: '{{ rooms_now | string | trim }}'
seg_list: |
{% set txt = raw_rooms %} {% if txt == '' %}
[]
{% else %}
{% set parts = txt.split(',') | map('trim') | list %}
{% set rdict = state_attr(map_ent, 'rooms') or {} %}
{% set out = [] %}
{% for p in parts %}
{% if p|int|string == p %}
{% set out = out + [ p|int ] %}
{% else %}
{% set rid = (rdict|selectattr('1.name','equalto',p)|map(attribute='1.room_id')|list|first) %}
{% if rid is not none %}
{% set out = out + [ rid|int ] %}
{% endif %}
{% endif %}
{% endfor %}
{{ out }}
{% endif %}
- choose:
- conditions: >-
{{ preset_now in
['sweeping','mopping','sweeping_and_mopping','mopping_after_sweeping']
}}
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: 'off'
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['off','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ cm_sel }}'
data:
option: '{{ preset_now }}'
action: select.select_option
- wait_template: '{{ states(cm_sel) == preset_now }}'
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: routine_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['routine_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- conditions: '{{ preset_now == ''genius_deep'' }}'
sequence:
- target:
entity_id: '{{ cg_sel }}'
data:
option: deep_cleaning
action: select.select_option
- wait_template: >-
{{ states(cg_sel) in
['deep_cleaning','unknown','unavailable','none'] }}
timeout: '00:00:08'
continue_on_timeout: true
- target:
entity_id: '{{ vac }}'
data:
segments: '{{ seg_list }}'
action: dreame_vacuum.vacuum_clean_segment
- target:
entity_id: '{{ flag_cleaned }}'
action: input_boolean.turn_on
conditions: []
id: '1775291628828'
alias: Dreame Scheduled Cleaning With Mop
description: ''
Any ideas?