Ive done it with a HS110 as well. Ended up having an input_select which contain states like idle/rinse/wash/spin and then using automations to allow the cycle to progress in that order (only in that order). Then notify me only when it gets back to idle from spin.
state_washingmachine:
name: Washing Machine state
options:
- Switched Off
- Powered Down
- Idle
- Rinse / Spin
- Wash
icon: mdi:tumble-dryer
- id: washingmachine_switchedoff
alias: 'Washing Machine - Change State Switched Off'
trigger:
- platform: state
entity_id: switch.washing_machine
to: 'off'
action:
- service: input_select.select_option
data:
entity_id: input_select.state_washingmachine
option: 'Switched Off'
- id: washingmachine_powereddown
alias: 'Washing Machine - Change State Powered Down'
trigger:
- platform: state
entity_id: switch.washing_machine
to: 'on'
- platform: numeric_state
entity_id: sensor.washingmachine_powerdraw
below: 1
for: '00:01:00'
condition:
- condition: state
entity_id: switch.washing_machine
state: 'on'
action:
- service: input_select.select_option
data:
entity_id: input_select.state_washingmachine
option: 'Powered Down'
- id: washingmachine_idle
alias: 'Washing Machine - Change State Idle'
trigger:
- platform: numeric_state
entity_id: sensor.washingmachine_powerdraw
above: 1
below: 4
for: '00:01:00'
condition:
- condition: state
entity_id: switch.washing_machine
state: 'on'
- condition: or
conditions:
- condition: state
entity_id: input_select.state_washingmachine
state: 'Powered Down'
- condition: state
entity_id: input_select.state_washingmachine
state: 'Rinse / Spin'
action:
- service: input_select.select_option
data:
entity_id: input_select.state_washingmachine
option: 'Idle'
- id: washingmachine_rinsespin
alias: 'Washing Machine - Change State Rinse Spin'
trigger:
- platform: numeric_state
entity_id: sensor.washingmachine_powerdraw
above: 10
below: 550
for: '00:01:00'
condition:
- condition: state
entity_id: switch.washing_machine
state: 'on'
- condition: or
conditions:
- condition: state
entity_id: input_select.state_washingmachine
state: 'Powered Down'
- condition: state
entity_id: input_select.state_washingmachine
state: 'Idle'
- condition: state
entity_id: input_select.state_washingmachine
state: 'Wash'
action:
- service: input_select.select_option
data:
entity_id: input_select.state_washingmachine
option: 'Rinse / Spin'
- id: washingmachine_wash
alias: 'Washing Machine - Change State Wash'
trigger:
- platform: numeric_state
entity_id: sensor.washingmachine_powerdraw
above: 1000
for: '00:01:00'
condition:
- condition: state
entity_id: switch.washing_machine
state: 'on'
- condition: or
conditions:
- condition: state
entity_id: input_select.state_washingmachine
state: 'Powered Down'
- condition: state
entity_id: input_select.state_washingmachine
state: 'Idle'
- condition: state
entity_id: input_select.state_washingmachine
state: 'Rinse / Spin'
action:
- service: input_select.select_option
data:
entity_id: input_select.state_washingmachine
option: 'Wash'