📳 Appliance Notifications & Actions - Washing Machine - Clothes Dryer - Dish Washer - ETC

@ellull

I have written the code so your End Notify Options and your End Custom Actions will run together at the same time. This allows you to build your End Custom Actions so it keeps reminding you that your clothes are in the washing machine until you open the door.

If your unsure how to do this provide you YAML of your automation notifying your Echo in a custom action and I see if I can assist you further.

Blacky :grinning:

I’ve tried your blueprint and the Start Notify of my washing mashine + dryer is successful but somehow it will never trigger the end notify.

Any idea why?

alias: Waschmaschine Start & Stop
description: ""
use_blueprint:
  path: Blackshome/appliance-notifications.yaml
  input:
    power_sensor: sensor.lsc_smart_power_plug_waschmaschine_leistung_2
    start_appliance_power: 20
    include_start_notify: enable_start_notify_options
    start_notify_device:
      - f3f15a4d8e2da793a31aa8c55e8bdddf
    start_title: Waschmaschine
    start_notify_tag: washing-clothes
    start_notify_icon: mdi:washing-machine
    include_end_notify: enable_end_notify_options
    end_notify_device:
      - f3f15a4d8e2da793a31aa8c55e8bdddf
    end_message_title: Waschmaschine
    end_message: Yippee the washing machine is finished!
    end_notify_tag: washing-clothes
    end_notify_icon: mdi:washing-machine
    include_power_tracking: disable_power_tracking
    include_runtime_tracking: enable_runtime_tracking_and_notify
    start_custom_actions:
      - action: telegram_bot.send_message
        metadata: {}
        data:
          message: "Waschmaschine wurde gestartet "
          config_entry_id: 01K8RS5T5T6287DXB8PSV0V7GC
    end_custom_actions:
      - action: telegram_bot.send_message
        metadata: {}
        data:
          message: Waschmaschine ist fertig
          config_entry_id: 01K8RS5T5T6287DXB8PSV0V7GC
    power_consumption_sensor: sensor.lsc_smart_power_plug_waschmaschine_daily_consumption
    running_dead_zone: 40
    include_custom_actions:
      - enable_start_custom_actions
      - enable_end_custom_actions
    include_run_status: run_status_disabled
    end_time_delay: 2

Does this mean, the End Custom action is only working while End Notify Option is enabled? At the moment I have a setup with only the power sensor and custom end action (which is a custom notification) that is never triggered. That said, it would explain why it is not working anymore.

@smarmas

Welcome to the community.

In the Time Tracking you have enabled Use the Runtime Tracking Option so you need to select your Runtime Tracking - Text Helper. If you don’t have one you can disable this option or when selecting your text helper down the bottom of the selection you have an option to create one. Once you selected your text helper you should be all good to go.

Blacky :grinning:

1 Like

@thesainthell

No it means that they will run in parallel so it wont wait for one to be executed before the next one starts. They run simultaneously so if you don’t have an End Notify Option it wont matter.

If you would like me to look at your settings could you please provide us your YAML of the automation? This YAML code are the settings you have selected in the automation so I can help. To do this go into your automation, top right 3 dots, Edit in YAML, copy all the code, come back to the forum and in your reply at the top tool bar click on “</>” and paste code in there.

Blacky :grinning:

No problem, but please be forgiving of my childish messages and AI task descriptions :sweat_smile:

alias: Spülmaschine Überwachung
description: ""
use_blueprint:
  path: Blackshome/appliance-notifications.yaml
  input:
    power_sensor: sensor.spulmaschine_power
    start_appliance_power: 10
    start_time_delay: 1
    end_appliance_power: 10
    end_time_delay: 5
    include_end_notify: disable_end_notify_options
    end_notify_device:
      - 70f54a3176decce65ffb4709ebb15754
      - 2003a769a3526bf84a6c56d3ed8b76d3
    end_message_title: Der Geschirrdrache schläft wieder
    end_message: >-
      Der uralte Geschirrdrache „Spül’Thalax“ hat seinen Zorn entladen.
      Seifensturm, Heißwasserodem und die Schleimnova wurden entfesselt. Die
      tapferen Helden (Teller, Tassen & Co.) haben überlebt – sauberer denn je.
      Jetzt ist es an dir, Abenteurer: Ăśffne die Klappe und birg den Schatz.
    include_power_tracking: enable_start_end_helpers
    power_consumption_sensor: sensor.spulmaschine_energy
    end_message_kwh: Verbrauch
    end_message_cost: Kosten ca €
    cost_per_kwh: input_number.strompreis_aktuell
    start_power_consumption: input_number.spulmaschine_verbrauch_start
    end_power_consumption: input_number.spulmaschine_verbrauch_ende
    include_runtime_tracking: enable_runtime_tracking
    runtime_tracking_helper: input_text.spulmaschine_laufzeit_helper
    runtime_tracking_end_message: Gesamtlaufzeit
    end_message_duration_tracking: Laufzeit
    end_notify_sound: Spell.caf
    include_duration_tracking: enable_duration_tracking
    end_notify_interruption_level: time-sensitive
    end_repeat_count: 2
    include_custom_actions:
      - enable_end_custom_actions
    end_custom_actions:
      - sequence:
          - action: ai_task.generate_data
            metadata: {}
            data:
              entity_id: ai_task.openai_ai_task
              task_name: Witzige Message fĂźr SpĂźlmaschine
              instructions: >-
                Du sollst eine Nachricht bestehend aus Titel und Nachricht
                erstellen um die Fertigstellung eines SpĂźlmaschinenvorgangs auf
                humoristische Weise anzukĂźndigen.

                Wähle hierzu aus den Kategorien nerdig, mittelalterlich und
                popkultur.

                Dabei muss ein Name fßr die Spßlmaschine gewählt werden der dann
                wieder im Titel auftaucht.

                Der Titel muss kurz gehalten werden.

                Die Nachricht darf maximal 130 Zeichen lang sein.
              structure:
                title:
                  description: >-
                    Der Titel muss kurz und im Kontext der gewählten Kategorie
                    gehalten werden.
                  required: true
                  selector:
                    text: null
                message:
                  description: >-
                    Die Nachricht darf maximal 130 Zeichen lang sein und muss im
                    selben Stil/Kontext wie der title gehalten werden
                  required: true
                  selector:
                    text: null
            response_variable: result
          - action: notify.companiniondevices
            metadata: {}
            data:
              title: "{{result.data.title}}"
              message: "{{result.data.message}}"
              data:
                tag: trockner

I hadn’t thought of this solution. There will be some logic/configuration duplication between the automation and the End Custom Action but I think it’s manageable.

Thanks.

@thesainthell

All good… Thanks for your YAML.

  1. In power settings you have set the End - Repeat Count to 2. This means that the energy sensor must go from above 10 W to below 10 W for 5 min twice. Is this what your after… if not try using a End - Repeat Count of 1.
  2. I did not check your custom action but maybe you could try disabling this action first and then try to just turn ON a light. This will confirm the automation is working first and then enable the custom action again. If you would like to test your end custom action fast you could drag and drop it into the Custom Actions - Start then you can use the Run Action but you have to enable and disable the automation each time you run it.

Blacky :grinning:

@ellull

Yeah I know but there are so many custom action that could be included and even just announcement will be many different ways.

Blacky :grinning:

Hi there,
I have the problem that the end notification is not triggered.

Does someone have an idea what I have to change and more importantly, can explain why I have to do it? That would be perfect.

id: '1763110197408'
alias: Waschmaschine Benachrichtigung
description: Benachrichtigung Ăźber Waschmaschinen Status
use_blueprint:
  path: Blackshome/appliance-notifications.yaml
  input:
    power_sensor: sensor.0xa085e3fffeb885d4_power
    include_start_notify: enable_start_notify_options
    start_notify_device:
      - c31a91a344e209dc9b4e6d891d866009

Hi Blacky,
After your reply, I dug a little deeper and found that the problem is that the response_variable from the AI task cannot be accessed in the Custom Actions block.

ERROR (MainThread) [homeassistant.helpers.template] Template variable error: ‘resultTest’ is undefined when rendering ‘{{ resultTest.data }}’

I then converted the blueprint into an automation (take control). This results in a converted part with all the choose elements (and also the AI task) and the “old” part in the variables block.

When I remove start_custom_actions from the variables block, the automation in the converted part runs successfully.

Do you have any idea how I can access template variables in the custom action?

@thesainthell

I don’t use AI so with that said.

The error is looking for {{ resultTest.data }} and I can’t see that in your YAML you shared. You only have result.

Try this.

    end_custom_actions:
      - sequence:
          - action: ai_task.generate_data
            data:
              entity_id: ai_task.openai_ai_task
              task_name: "Witzige Message fĂźr SpĂźlmaschine"
              instructions: >-
                Du sollst eine Nachricht bestehend aus Titel und Nachricht
                erstellen um die Fertigstellung eines SpĂźlmaschinenvorgangs auf
                humoristische Weise anzukĂźndigen.

                Wähle hierzu aus den Kategorien nerdig, mittelalterlich und
                popkultur.

                Dabei muss ein Name fßr die Spßlmaschine gewählt werden der dann
                wieder im Titel auftaucht.

                Der Titel muss kurz gehalten werden.

                Die Nachricht darf maximal 130 Zeichen lang sein.
              structure:
                title:
                  description: "Titel der Nachricht"
                  required: true
                  selector:
                    text: {}
                message:
                  description: "Nachrichtentext"
                  required: true
                  selector:
                    text: {}
            response_variable: ai_response
          - variables:
              washer_message_title: >
                {{ ai_response.data.title if ai_response is defined else 'SpĂźlmaschine fertig!' }}
              washer_message_text: >
                {{ ai_response.data.message if ai_response is defined else 'Die SpĂźlmaschine ist fertig.' }}
          - action: notify.companion_devices
            data:
              title: "{{ washer_message_title }}"
              message: "{{ washer_message_text }}"
              data:
                tag: trockner

Blacky :grinning:

resultData was from a test setup, so that was not the problem. BUT, you gave me the right tip with the variable definition inside the custom action block.

Thank you so much :smiley:

Edit: There seems to be a deeper problem with the AI task itself. There is an async in the response. If I add a wait of, for example, 5 seconds, the problem is mitigated. Nevertheless, the problem itself is solved and Blacky’s blueprint does exactly what it’s supposed to do!

@thesainthell

Nice one glad you sorted it out! Thanks for letting us know.

Blacky :grinning:

AMAZING! works like a charm. thanks :slight_smile:

Hello,
In principle, everything works fine for me here. I always receive notifications about the start and end of the wash cycle on all desired channels.
But what has never worked: notifications about energy consumption and costs, even though I have activated them. The same applies to the washing time.
The settings are:

alias: Die Waschmaschine ist fertig - Blacks BP
description: ""
use_blueprint:
  path: Blackshome/appliance-notifications.yaml
  input:
    power_sensor: sensor.waschmaschine_power
    start_appliance_power: 2
    start_time_delay: 0.25
    end_appliance_power: 2
    end_time_delay: 0.25
    include_start_notify: enable_start_notify_options
    include_custom_actions:
      - enable_start_custom_actions
      - enable_end_custom_actions
    start_custom_actions:
      - action: notify.knudtelegram
        metadata: {}
        data:
          message: Waschmaschine läuft mal wieder!!!!  :-)
      - action: python_script.set_state
        data:
          entity_id: binary_sensor.waschmaschine
          state: "on"
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: Waschmaschine Gestartet
    include_cycle_counter: enable_cycle_counter_and_notify
    cycle_counter_helper: counter.waschmaschine_anzahl_waschen
    runtime_tracking_helper: input_text.waschmaschine_waschdauer_total
    include_duration_tracking: enable_duration_tracking
    include_runtime_tracking: enable_runtime_tracking_and_notify
    end_custom_actions:
      - action: notify.knudtelegram
        metadata: {}
        data:
          message: Waschmaschine scheint fertig zu sein!
      - action: notify.send_message
        metadata: {}
        data:
          message: Die Waschmaschine ist fertig.
        target:
          entity_id: notify.ls_gruppe_f_wama_durchsagen
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: Waschmaschine Fertig
      - data:
          entity_id: binary_sensor.waschmaschine
          state: "off"
        action: python_script.set_state
    start_notify_device:
      - d0e0489f15a90d249a5c5cfa5cc8c049
    start_title: Waschmaschine
    start_message: Läuft schon wieder, sehr gut! :-)
    start_notify_data:
      - channel
      - icon
    start_notify_channel: Allgemein
    include_end_notify: enable_end_notify_options
    end_notify_device:
      - d0e0489f15a90d249a5c5cfa5cc8c049
    end_message_title: Waschmaschine
    end_message: Die Waschmaschine ist wohl fertig, kannst sie ausräumen! :-)
    end_notify_data:
      - channel
      - icon
      - high_priority
      - sticky
    end_notify_channel: VibrationUndSound
    include_power_tracking: enable_power_tracking_and_cost
    power_consumption_sensor: sensor.waschmaschine_energy
    end_message_kwh: Stromverbrauch Waschmaschine
    end_message_cost: Kosten etwa €
    runtime_tracking_end_message: Waschdauer Total
    end_message_duration_tracking: Dauer des Waschzyklus
    cycle_counter_end_message: Totale Anzahl Wäschen
    cost_per_kwh: input_number.strompreis_zahlenhelfer
    start_power_consumption: input_number.wama_energy_tracking_start_number_helper
    end_power_consumption: input_number.wama_energy_tracking_stop_number_helper

And here are the traces:

{
  "trace": {
    "last_step": "action/12/parallel/1/sequence/0/choose/0/sequence/2/choose/0/conditions/0",
    "run_id": "a24d6c9e22d598a9bcaeeb9776656e52",
    "state": "stopped",
    "script_execution": "finished",
    "timestamp": {
      "start": "2025-11-15T19:40:47.296597+00:00",
      "finish": "2025-11-15T19:54:03.262198+00:00"
    },
    "domain": "automation",
    "item_id": "1760175767909",
    "trigger": "numeric state of sensor.waschmaschine_power",
    "trace": {
      "trigger/0": [
        {
          "path": "trigger/0",
          "timestamp": "2025-11-15T19:40:47.299575+00:00",
          "changed_variables": {
            "this": {
              "entity_id": "automation.diw_waschmaschine_ist_fertig_blacks_bp",
              "state": "on",
              "attributes": {
                "id": "1760175767909",
                "last_triggered": "2025-11-15T12:10:13.995063+00:00",
                "mode": "single",
                "current": 0,
                "friendly_name": "Die Waschmaschine ist fertig - Blacks BP"
              },
              "last_changed": "2025-11-15T08:20:19.881756+00:00",
              "last_reported": "2025-11-15T14:55:52.225732+00:00",
              "last_updated": "2025-11-15T14:55:52.225732+00:00",
              "context": {
                "id": "01KA407XD1KV415K5HPPJSD45P",
                "parent_id": null,
                "user_id": null
              }
            },
            "trigger": {
              "id": "t0",
              "idx": "0",
              "alias": null,
              "platform": "numeric_state",
              "entity_id": "sensor.waschmaschine_power",
              "below": 24000,
              "above": 2,
              "from_state": {
                "entity_id": "sensor.waschmaschine_power",
                "state": "0",
                "attributes": {
                  "state_class": "measurement",
                  "unit_of_measurement": "W",
                  "device_class": "power",
                  "friendly_name": "Waschmaschine Leistung"
                },
                "last_changed": "2025-11-15T14:55:36.857854+00:00",
                "last_reported": "2025-11-15T14:55:36.857854+00:00",
                "last_updated": "2025-11-15T14:55:36.857854+00:00",
                "context": {
                  "id": "01KA407ECSNMFZTNMS303H8DA8",
                  "parent_id": null,
                  "user_id": null
                }
              },
              "to_state": {
                "entity_id": "sensor.waschmaschine_power",
                "state": "68",
                "attributes": {
                  "state_class": "measurement",
                  "unit_of_measurement": "W",
                  "device_class": "power",
                  "friendly_name": "Waschmaschine Leistung"
                },
                "last_changed": "2025-11-15T19:40:32.294894+00:00",
                "last_reported": "2025-11-15T19:40:32.294894+00:00",
                "last_updated": "2025-11-15T19:40:32.294894+00:00",
                "context": {
                  "id": "01KA4GH5560H2FC1M45QNVM9WY",
                  "parent_id": null,
                  "user_id": null
                }
              },
              "for": {
                "__type": "<class 'datetime.timedelta'>",
                "total_seconds": 15
              },
              "description": "numeric state of sensor.waschmaschine_power"
            },
            "power_sensor": "sensor.waschmaschine_power",
            "start_appliance_power": 2,
            "start_time_delay": 0.25,
            "end_appliance_power": 2,
            "end_time_delay": 0.25,
            "end_repeat_count": 1,
            "include_start_notify": "enable_start_notify_options",
            "start_notify_device": [
              "d0e0489f15a90d249a5c5cfa5cc8c049"
            ],
            "start_title": "Waschmaschine",
            "start_message": "Läuft schon wieder, sehr gut! :-)",
            "start_notify_tag": [],
            "start_notify_interruption_level": "active",
            "start_notify_sound": [],
            "start_notify_data": [
              "channel",
              "icon"
            ],
            "start_notify_channel": "Allgemein",
            "start_notify_icon": "mdi:washing-machine",
            "start_notify_icon_colour": [
              41,
              121,
              255
            ],
            "running_dead_zone": 0,
            "include_end_notify": "enable_end_notify_options",
            "end_notify_device": [
              "d0e0489f15a90d249a5c5cfa5cc8c049"
            ],
            "end_message_title": "Waschmaschine",
            "end_message": "Die Waschmaschine ist wohl fertig, kannst sie ausräumen! :-)",
            "end_notify_tag": [],
            "end_notify_interruption_level": "active",
            "end_notify_sound": [],
            "end_notify_data": [
              "channel",
              "icon"
            ],
            "end_notify_channel": "Allgemein",
            "end_notify_icon": "mdi:washing-machine",
            "end_notify_icon_colour": [
              0,
              200,
              83
            ],
            "end_reminder_notification": "disable_reminder_notification",
            "end_reminder_notification_entity": [],
            "end_reminder_notification_message": "Hey! Your fresh laundry is ready, don't leave it hanging!",
            "end_reminder_notification_time_delay": 10,
            "end_reminder_notification_max_count": 2,
            "end_attended_notification_message": "YES! Fresh laundry on the move, let the drying begin!",
            "include_run_status": "run_status_disabled",
            "run_status_entity": [],
            "run_status_start": [],
            "run_status_watchdog": [],
            "run_status_end": [],
            "run_status_end_reminder": [],
            "run_status_end_attended": [],
            "include_time": "time_disabled",
            "after_time": "00:00:00",
            "before_time": "00:00:00",
            "weekday_options": [
              "mon",
              "tue",
              "wed",
              "thu",
              "fri",
              "sat",
              "sun"
            ],
            "include_power_tracking": "enable_power_tracking_and_cost",
            "power_consumption_sensor": "sensor.waschmaschine_energy",
            "end_message_kwh": "Stromverbrauch Waschmaschine",
            "end_message_cost": "Kosten etwa €",
            "cost_per_kwh": "input_number.strompreis_zahlenhelfer",
            "start_power_consumption": "input_number.wama_energy_tracking_start_number_helper",
            "end_power_consumption": "input_number.wama_energy_tracking_stop_number_helper",
            "start_time": 1763235647.297101,
            "include_runtime_tracking": "enable_runtime_tracking_and_notify",
            "runtime_tracking_helper": "input_text.waschmaschine_waschdauer_total",
            "runtime_tracking_end_message": "Waschdauer Total",
            "include_duration_tracking": "enable_duration_tracking",
            "end_message_duration_tracking": "Dauer des Waschzyklus",
            "include_cycle_counter": "enable_cycle_counter_and_notify",
            "cycle_counter_helper": "counter.waschmaschine_anzahl_waschen",
            "cycle_counter_end_message": "Totale Anzahl Wäschen",
            "include_service_reminder": "disable_service_reminder",
            "service_reminder_counter_helper": [],
            "service_reminder_cycles": 30,
            "service_reminder_end_message": "⚠️ It's time to clean the filter!",
            "include_time_service_reminder": "disable_time_service_reminder",
            "service_reminder_time_helper": [],
            "service_reminder_time_threshold": {
              "hours": 0,
              "minutes": 0,
              "seconds": 0
            },
            "service_reminder_time_end_message": "⚠️ It's time to clean the filter!",
            "include_watchdog": "disable_watchdog",
            "watchdog_timeframe": "00:00:00",
            "watchdog_notify_device": [],
            "watchdog_title": "⚠️ Appliance Watchdog",
            "watchdog_message": "Uh-oh! Time to check the washing machine.",
            "watchdog_notify_tag": [],
            "watchdog_notify_interruption_level": "active",
            "watchdog_notify_sound": [],
            "watchdog_notify_data": [],
            "watchdog_notify_channel": [],
            "watchdog_notify_icon": "mdi:washing-machine-alert",
            "watchdog_notify_icon_colour": [
              244,
              67,
              54
            ],
            "include_device_tracker": [],
            "notify_zone": [],
            "include_custom_actions": [
              "enable_start_custom_actions",
              "enable_end_custom_actions"
            ],
            "start_custom_actions": [
              {
                "action": "notify.knudtelegram",
                "metadata": {},
                "data": {
                  "message": "Waschmaschine läuft mal wieder!!!!  :-)"
                }
              },
              {
                "action": "python_script.set_state",
                "data": {
                  "entity_id": "binary_sensor.waschmaschine",
                  "state": "on"
                }
              },
              {
                "action": "notify.persistent_notification",
                "metadata": {},
                "data": {
                  "message": "Waschmaschine Gestartet"
                }
              }
            ],
            "watchdog_custom_actions": [],
            "end_custom_actions": [
              {
                "action": "notify.knudtelegram",
                "metadata": {},
                "data": {
                  "message": "Waschmaschine scheint fertig zu sein!"
                }
              },
              {
                "action": "notify.send_message",
                "metadata": {},
                "data": {
                  "message": "Die Waschmaschine ist fertig."
                },
                "target": {
                  "entity_id": "notify.ls_gruppe_f_wama_durchsagen"
                }
              },
              {
                "action": "notify.persistent_notification",
                "metadata": {},
                "data": {
                  "message": "Waschmaschine Fertig"
                }
              },
              {
                "data": {
                  "entity_id": "binary_sensor.waschmaschine",
                  "state": "off"
                },
                "action": "python_script.set_state"
              }
            ],
            "global_conditions": [],
            "start_message_data": {
              "push": {
                "interruption-level": "active"
              },
              "channel": "Allgemein",
              "notification_icon": "mdi:washing-machine",
              "color": "

I tried to read that, but I don’t understand it and can’t find my mistake. Blacky, I need your help… :slightly_smiling_face:

@dpy22101

Thanks Dino, really nice to get these ones!

Enjoy

Blacky :grinning:

@knuti1960

Are you talking about in your custom end actions. If so I have defined the variable for you using the blueprint inputs and updated your message for the UI. I use {{ message }} now. Have a look how I did it… you can try this in your other notifications using {{ message }}

alias: Die Waschmaschine ist fertig - Blacks BP
description: ""
use_blueprint:
  path: Blackshome/appliance-notifications.yaml
  input:
    power_sensor: sensor.waschmaschine_power
    start_appliance_power: 2
    start_time_delay: 0.25
    end_appliance_power: 2
    end_time_delay: 0.25
    include_start_notify: enable_start_notify_options
    include_custom_actions:
      - enable_start_custom_actions
      - enable_end_custom_actions
    start_custom_actions:
      - action: notify.knudtelegram
        metadata: {}
        data:
          message: Waschmaschine läuft mal wieder!!!!  :-)
      - action: python_script.set_state
        data:
          entity_id: binary_sensor.waschmaschine
          state: "on"
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: Waschmaschine Gestartet
    include_cycle_counter: enable_cycle_counter_and_notify
    cycle_counter_helper: counter.waschmaschine_anzahl_waschen
    runtime_tracking_helper: input_text.waschmaschine_waschdauer_total
    include_duration_tracking: enable_duration_tracking
    include_runtime_tracking: enable_runtime_tracking_and_notify
    end_custom_actions:
      - variables:
          message: >-
            {% set message = namespace(text='') %} {% if
            include_service_reminder == 'enable_service_reminder_and_notify' %}
              {% set service_count = states(service_reminder_counter_helper) | int(0) %}
              {% set service_threshold = service_reminder_cycles | int %}
              {% if service_count >= service_threshold %}
                {% set message.text = message.text + service_reminder_end_message + '\n' %}
              {% endif %}
            {% endif %} {% if include_time_service_reminder ==
            'enable_time_service_reminder_and_notify' %}
              {% set service_reminder_helper_value = states(service_reminder_time_helper) %}
              {% if ':' in service_reminder_helper_value %}
                {% set time = service_reminder_helper_value.split(':') %}
                {% set service_reminder_helper_seconds = (time[0] | int * 3600) + (time[1] | int * 60) + (time[2] | int) %}
              {% else %}
                {% set service_reminder_helper_seconds = 0 %}
              {% endif %}
              {% set service_reminder_time_threshold_seconds =
                (service_reminder_time_threshold.hours | int * 3600) +
                (service_reminder_time_threshold.minutes | int * 60) +
                (service_reminder_time_threshold.seconds | int)
              %}
              {% if service_reminder_helper_seconds >= service_reminder_time_threshold_seconds %}
                {% set message.text = message.text + service_reminder_time_end_message + '\n' %}
              {% endif %}
            {% endif %} {% set message.text = message.text + end_message %} {%
            if include_power_tracking == 'enable_power_tracking' %}
              {% set kwh = (states(end_power_consumption) | float - states(start_power_consumption) | float) %}
              {% set message.text = message.text + '\n' + end_message_kwh + ' ' + (kwh | round(2) | string) + ' kWh' %}
            {% endif %} {% if include_power_tracking ==
            'enable_power_tracking_and_cost' %}
              {% set kwh = (states(end_power_consumption) | float - states(start_power_consumption) | float) %}
              {% set cost = kwh * (states(cost_per_kwh) | float) %}
              {% set message.text = message.text + '\n' + end_message_kwh + ' ' + (kwh | round(2) | string) + ' kWh' %}
              {% set message.text = message.text + '\n' + end_message_cost + (cost | round(2) | string) %}
            {% endif %} {% if include_runtime_tracking ==
            'enable_runtime_tracking_and_notify' %}
              {% set run_time = states(runtime_tracking_helper) %}
              {% set message.text = message.text + '\n' + runtime_tracking_end_message + ' ' + run_time %}
            {% endif %} {% if include_duration_tracking == '     
            enable_duration_tracking' %}
              {% set end_time = now().timestamp() %}
              {% set duration = (end_time - start_time) | int %}
              {% set hours = (duration // 3600) %}
              {% set minutes = ((duration % 3600) // 60) %}
              {% set seconds = (duration % 60) %}
              {% set message.text = message.text + '\n' + end_message_duration_tracking + ' ' + '%02d:%02d:%02d' | format(hours, minutes, seconds) %}
            {% endif %} {% if include_cycle_counter ==
            'enable_cycle_counter_and_notify' %}
              {% set cycle_count = states(cycle_counter_helper) | int(0) %}
              {% set message.text = message.text + '\n' + cycle_counter_end_message + ' ' + (cycle_count | string) %}
            {% endif %} {{ message.text }}
      - action: notify.knudtelegram
        metadata: {}
        data:
          message: Waschmaschine scheint fertig zu sein!
      - action: notify.send_message
        metadata: {}
        data:
          message: Die Waschmaschine ist fertig.
        target:
          entity_id: notify.ls_gruppe_f_wama_durchsagen
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: "{{ message }}"
      - data:
          entity_id: binary_sensor.waschmaschine
          state: "off"
        action: python_script.set_state
    start_notify_device:
      - d0e0489f15a90d249a5c5cfa5cc8c049
    start_title: Waschmaschine
    start_message: Läuft schon wieder, sehr gut! :-)
    start_notify_data:
      - channel
      - icon
    start_notify_channel: Allgemein
    include_end_notify: enable_end_notify_options
    end_notify_device:
      - d0e0489f15a90d249a5c5cfa5cc8c049
    end_message_title: Waschmaschine
    end_message: Die Waschmaschine ist wohl fertig, kannst sie ausräumen! :-)
    end_notify_data:
      - channel
      - icon
      - high_priority
      - sticky
    end_notify_channel: VibrationUndSound
    include_power_tracking: enable_power_tracking_and_cost
    power_consumption_sensor: sensor.waschmaschine_energy
    end_message_kwh: Stromverbrauch Waschmaschine
    end_message_cost: Kosten etwa €
    runtime_tracking_end_message: Waschdauer Total
    end_message_duration_tracking: Dauer des Waschzyklus
    cycle_counter_end_message: Totale Anzahl Wäschen
    cost_per_kwh: input_number.strompreis_zahlenhelfer
    start_power_consumption: input_number.wama_energy_tracking_start_number_helper
    end_power_consumption: input_number.wama_energy_tracking_stop_number_helper

Blacky :grinning:

Thank you very much, Blacky! That looks like a lot of work you’ve put into that… :slightly_smiling_face:
Unfortunately, my knowledge of HA is limited. Should I copy the YAML code you posted and use it myself? I tried that, but the blueprint remains unchanged in the GUI. Shouldn’t it change in the GUI? I don’t quite understand what to do with the code.

My original request for help did not relate to custom end actions. :slightly_smiling_face: I understood the explanations in the first post here and elsewhere to mean that you automatically receive “end notifications” for cycle duration, power consumption (on the defined mobile device) if this is checked in the blueprint and all necessary helpers have been created.

But that just doesn’t work for me, and I’m looking for my mistake. Or maybe I completely misunderstood the description quoted. :upside_down_face:

@knuti1960

I just tested it here using a Android device as it looks like that is what you have.

What I noticed is along the top you have a green icon with the name Home Assistant then the time and a green down arrow. Click on the green down arrow and you should see it.

The updated code I gave you is for the persistent notification in your custom action. If you look in your notifications in the UI in home assistant you should see what you have on your device.

Blacky :grinning: