Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Home Assistant Blueprint: Notify or do something when an appliance like a dishwasher or washing machine finishes
blueprint:
name: Appliance has finished
description: Do something when an appliance (like a washing machine or dishwasher)
has finished as detected by a power sensor.
domain: automation
input:
power_sensor:
name: Power Sensor
description: Power sensor entity (e.g. from a smart plug device).
selector:
entity:
domain: sensor
starting_threshold:
name: Starting power threshold
description: Power threshold above which we assume the appliance has started.
default: 5
selector:
number:
min: 1.0
max: 100.0
unit_of_measurement: W
mode: slider
step: 1.0
starting_hysteresis:
name: Starting hysteresis
description: Time duration the power measurement has to stay above the starting
power threshold.
default: 5
selector:
number:
min: 0.25
max: 60.0
unit_of_measurement: min
mode: slider
step: 0.25
finishing_threshold:
name: Finishing power threshold
description: Power threshold below which we assume the appliance has finished.
default: 5
selector:
number:
min: 1.0
max: 100.0
unit_of_measurement: W
mode: slider
step: 1.0
finishing_hysteresis:
name: Finishing hysteresis
description: Time duration the power measurement has to stay below the finishing
power threshold.
default: 5
selector:
number:
min: 0.25
max: 60.0
unit_of_measurement: min
mode: slider
step: 0.25
actions:
name: Actions
description: Actions (e.g. pushing a notification, TTS announcement, ...)
selector:
action: {}
pre_actions:
name: Actions
description: Actions when starting threshhold is crossed
selector:
action: {}
source_url: https://gist.github.com/sbyx/6d8344d3575c9865657ac51915684696
trigger:
- platform: numeric_state
entity_id: !input 'power_sensor'
for:
minutes: !input 'starting_hysteresis'
above: !input 'starting_threshold'
condition: []
action:
- choose: []
default: !input 'pre_actions'
- wait_for_trigger:
- platform: numeric_state
entity_id: !input 'power_sensor'
below: !input 'finishing_threshold'
for:
minutes: !input 'finishing_hysteresis'
- choose: []
default: !input 'actions'
mode: single
max_exceeded: silent
@realjax
Copy link

realjax commented Apr 13, 2022

not working for me, it says 'Message malformed: Missing input pre_actions'

@popy2k14
Copy link

popy2k14 commented Apr 13, 2022

Here is mine which works really good with SonOff POW2:

For starting:

alias: Bad Trockner Gestartet
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.trockner_durchschnittsleistung
    above: '30'
    for:
      hours: 0
      minutes: 0
      seconds: 0
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.dryer_running
            state: 'off'
        sequence:
          - service: script.alexa_announce
            data_template:
              alexa_device: media_player.badezimmer
              alexa_service: notify.alexa_media_badezimmer
              alexa_volume_speak: 0.3
              alexa_message: Trockner gestartet!
    default: []
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id:
        - input_boolean.dryer_running
mode: single

for checking finished:

alias: Bad Trockner Fertig?
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.trockner_durchschnittsleistung
    below: '30'
    for:
      hours: 0
      minutes: 1
      seconds: 0
condition:
  - condition: state
    entity_id: input_boolean.dryer_running
    state: 'on'
action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id:
        - input_boolean.dryer_running
  - service: input_number.set_value
    data:
      value: 5
    target:
      entity_id:
        - input_number.dryer_notifications_left
  - service: automation.trigger
    data: {}
    target:
      entity_id:
        - automation.bad_trockner_notification
mode: single

Notification:

alias: Bad Trockner Notification
description: ''
trigger:
  - platform: time
    at: input_datetime.dryer_next_notification
condition:
  - condition: numeric_state
    entity_id: input_number.dryer_notifications_left
    above: '0'
action:
  - choose:
      - conditions:
          - type: is_open
            condition: device
            device_id: 9a7fe1a5534744bc449e99f04fa69755
            entity_id: binary_sensor.trockner_ture
            domain: binary_sensor
        sequence:
          - service: input_number.set_value
            data:
              value: 0
            target:
              entity_id:
                - input_number.dryer_notifications_left
    default: []
  - type: is_not_open
    condition: device
    device_id: 9a7fe1a5534744bc449e99f04fa69755
    entity_id: binary_sensor.trockner_ture
    domain: binary_sensor
  - service: input_number.decrement
    data: {}
    target:
      entity_id:
        - input_number.dryer_notifications_left
  - service: script.turn_on
    target:
      entity_id: script.notify_devices
    data:
      variables:
        speakvolume: 0.35
        speaktext: Trockner ist fertig, bitte ausräumen!
        tvtext: Trockner ist fertig, bitte ausräumen!
        tvicon: http://192.168.0.8:8123/local/trockner.png
  - service: input_datetime.set_datetime
    data:
      time: '{{ (now() + timedelta( minutes = 10 )).strftime("%H:%M") }}'
    target:
      entity_id: input_datetime.dryer_next_notification
mode: single

PS.: this automation's are repeating the notfications until the door is opened or motion is detected in the bath. There the count is reseted to 0 to stop the loop.

Have fun
pOpY

@businescat
Copy link

businescat commented Jun 11, 2022

errors on lines 63 and 68 automation wont save properly if you dont need or want to use the starting action and doesnt seem to work very reliably at all when trying to work around these issues, cant recomend this unless the owner comes and updates it for 2022

@popy2k14
Copy link

popy2k14 commented Jun 12, 2022

As stated above.
My previously compltly other approach is working without any issue (at least with my sonoff pow r2's) on 3x devices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment