From 1e71bc5372db445887f6bfbfd92306a31521fb99 Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Thu, 19 Mar 2026 19:02:05 +0100 Subject: [PATCH] feat(roborock): add mobile notifications for cleaning start, stop, and failure - Send push notification on successful auto-start of cleaning - Include elapsed empty-house time in start notification - Add failure notification if robot fails to start after retries - Notify when cleaning is stopped due to someone arriving home - Ensure notifications only trigger on actual state outcomes (not attempts) --- include/automations/roborock.yaml | 58 +++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/include/automations/roborock.yaml b/include/automations/roborock.yaml index ee3119e..c4d7a60 100644 --- a/include/automations/roborock.yaml +++ b/include/automations/roborock.yaml @@ -36,41 +36,37 @@ mode: single trigger: - # Tjek løbende mens huset er tomt - platform: time_pattern minutes: "/5" condition: - # Huset er tomt - condition: state entity_id: binary_sensor.family_presence state: "off" - # Har været tomt i 30 min (robust) - condition: template value_template: > {{ states('input_datetime.house_became_empty') not in ['unknown','unavailable',''] and (as_timestamp(now()) - as_timestamp(states('input_datetime.house_became_empty'))) > 1800 }} - # Max 2 gange dagligt - condition: numeric_state entity_id: input_number.roborock_auto_runs_today below: 2 - # Støvsuger klar (robust state check) - condition: template value_template: > {{ states('vacuum.roborock_s8_pro_ultra') in ['docked','idle','charging'] }} - # Batteri OK - condition: numeric_state entity_id: vacuum.roborock_s8_pro_ultra attribute: battery_level above: 20 action: - - alias: "Start cleaning (retry op til 3 gange)" - repeat: + - variables: + started: false + + - repeat: count: 3 sequence: - service: button.press @@ -79,14 +75,43 @@ - delay: "00:00:20" - - condition: state - entity_id: vacuum.roborock_s8_pro_ultra - state: "cleaning" + - if: + - condition: state + entity_id: vacuum.roborock_s8_pro_ultra + state: "cleaning" + then: + - variables: + started: true + - stop: "Cleaning started" - - service: input_number.increment - target: - entity_id: input_number.roborock_auto_runs_today + - choose: + # ✅ SUCCESS → send notifikation + - conditions: + - condition: template + value_template: "{{ started }}" + sequence: + - service: input_number.increment + target: + entity_id: input_number.roborock_auto_runs_today + + - service: notify.mobile_app_clausiphone15 + data: + title: "🧹 Roborock startet" + message: > + Rengøring startet automatisk. + Hus har været tomt i {{ ((as_timestamp(now()) - as_timestamp(states('input_datetime.house_became_empty'))) / 60) | int }} min. + + # ❌ FAIL → send fejl-notifikation + - conditions: + - condition: template + value_template: "{{ not started }}" + sequence: + - service: notify.mobile_app_clausiphone15 + data: + title: "⚠️ Roborock start fejlede" + message: "Automation forsøgte 3 gange uden succes." + - id: roborock_stop_when_home alias: Roborock Stop When Someone Comes Home mode: restart @@ -105,3 +130,8 @@ - service: vacuum.return_to_base target: entity_id: vacuum.roborock_s8_pro_ultra + + - service: notify.mobile_app_clausiphone15 + data: + title: "🏠 Roborock stoppet" + message: "Rengøring stoppet fordi nogen er kommet hjem."