Zum Inhalt

đŸ€– Arnold Schwarzensauger - Automationen

Kategorie: Saugroboter\ Anzahl Automationen: 4\ Status: ✅ Aktiv\ Letzte Aktualisierung: 2026-01-10 (Bugfix: WohlfĂŒhlzone)

← ZurĂŒck zur Übersicht

Übersicht

Arnold Schwarzensauger ist der Saugroboter im System. Die Automationen steuern verschiedene Reinigungsmodi (Wischen + Saugen vs. nur Saugen) und benachrichtigen bei Problemen.

Zusammenhang

  • Wischen & Saugen: Mo/Mi/Fr mit intensiver Reinigung
  • Nur Saugen: Di/Do/Sa/So ohne Wischfunktion
  • Fehlerbenachrichtigung: Bei Heimkehr oder nach Laden
  • Button-Aktionen: Reminder-System und Wasserwechsel-Tracking

Automationen

1. Wischen und Saugen (Mo/Mi/Fr)

ID: 1754487053437\ Beschreibung: Startet Arnold an Montag, Mittwoch und Freitag mit intensiver Reinigung (Turbo + Deep Mopping).

Trigger

triggers:
  # 1. Zeitbasiert: Um 10:00 Uhr
1. trigger: time
    at: "10:00:00"

  # 2. Bei Abwesenheit (Anatol)
1. trigger: state
    entity_id: device_tracker.z_fold7_von_anatol
    from: home
    to: not_home
    for:
      minutes: 10

  # 3. Bei Abwesenheit (Hase)
1. trigger: state
    entity_id: device_tracker.iphone_17_pro
    from: home
    to: not_home
    for:
      minutes: 10

Conditions

conditions:
1. condition: and
    conditions:
    # Nur zwischen 10:00 und 18:00 Uhr
  1. condition: time
      after: "10:00:00"
      before: "18:00:00"

    # Nur Mo/Mi/Fr
  1. condition: template
      value_template: "![]( now().strftime('%A') in ['Monday', 'Wednesday', 'Friday'] )"

    # Noch nicht heute gelaufen
  1. condition: state
      entity_id: input_boolean.arnie_heute_gelaufen
      state: 'off'

    # Beide Personen seit 9+ Minuten abwesend
  1. condition: state
      entity_id: device_tracker.z_fold7_von_anatol
      state: not_home
      for:
        minutes: 9
  1. condition: state
      entity_id: device_tracker.iphone_17_pro
      state: not_home
      for:
        minutes: 9

Actions

actions:
  # Schritt 1: Fan Speed auf Turbo
1. target:
      entity_id: vacuum.arnold_schwarzensauger
    data:
      fan_speed: turbo
    action: vacuum.set_fan_speed
1. delay: 00:00:05

  # Schritt 2: Mop Modus auf Deep
1. target:
      entity_id: select.arnold_schwarzensauger_mop_modus
    data:
      option: deep
    action: select.select_option
1. delay: 00:00:05

  # Schritt 3: Wisch-IntensitÀt auf Intense
1. target:
      entity_id: select.arnold_schwarzensauger_wisch_intensitat
    data:
      option: intense
    action: select.select_option
1. delay: 00:00:05

  # Schritt 4: Saugen starten
1. target:
      entity_id: vacuum.arnold_schwarzensauger
    action: vacuum.start

  # Schritt 5: Boolean setzen (verhindert mehrfaches Fahren)
1. target:
      entity_id: input_boolean.arnie_heute_gelaufen
    action: input_boolean.turn_on

  # Schritt 6: Script-Benachrichtigung
1. data: {}
    action: script.arnie_wischen

Tipp: Das Script arnie_wischen sendet eine BestÀtigungs-Benachrichtigung: "Arnie hod mid da Hocken augfongt!" (= Arnie hat mit dem Wischen angefangen)


2. Nur Saugen (Di/Do/Sa/So)

ID: 1754487519051\ Beschreibung: Startet Arnold an Dienstag, Donnerstag, Samstag und Sonntag mit leichter Reinigung (Balanced, kein Wischen).

Trigger

Identisch mit "Wischen und Saugen" (siehe oben).

Conditions

conditions:
1. condition: and
    conditions:
    # Nur zwischen 10:00 und 18:00 Uhr
  1. condition: time
      after: "10:00:00"
      before: "18:00:00"

    # Nur Di/Do/Sa/So
  1. condition: template
      value_template: "![]( now().strftime('%A') in ['Tuesday', 'Thursday', 'Saturday', 'Sunday'] )"

    # Noch nicht heute gelaufen
  1. condition: state
      entity_id: input_boolean.arnie_heute_gelaufen
      state: 'off'

    # Beide Personen seit 9+ Minuten abwesend
  1. condition: state
      entity_id: device_tracker.z_fold7_von_anatol
      state: not_home
      for:
        minutes: 9
  1. condition: state
      entity_id: device_tracker.iphone_17_pro
      state: not_home
      for:
        minutes: 9

Actions

actions:
  # Schritt 1: Fan Speed auf Balanced
1. target:
      entity_id: vacuum.arnold_schwarzensauger
    data:
      fan_speed: balanced
    action: vacuum.set_fan_speed
1. delay: 00:00:05

  # Schritt 2: Mop Modus auf Standard
1. target:
      entity_id: select.arnold_schwarzensauger_mop_modus
    data:
      option: standard
    action: select.select_option
1. delay: 00:00:05

  # Schritt 3: Wisch-IntensitÀt auf OFF
1. target:
      entity_id: select.arnold_schwarzensauger_wisch_intensitat
    data:
      option: 'off'
    action: select.select_option
1. delay: 00:00:05

  # Schritt 4: Saugen starten
1. target:
      entity_id: vacuum.arnold_schwarzensauger
    action: vacuum.start

  # Schritt 5: Boolean setzen
1. target:
      entity_id: input_boolean.arnie_heute_gelaufen
    action: input_boolean.turn_on

  # Schritt 6: Script-Benachrichtigung
1. data: {}
    action: script.arnie_saugen

Info: Das Script arnie_saugen sendet: "Arnie hod mid'm Saugen augfongt!" (= Arnie hat mit dem Saugen angefangen)


3. Ankunft: Arnies WohlfĂŒhlzone

ID: 1759183019494\ Beschreibung: Benachrichtigt bei Heimkehr oder nach Laden, wenn Arnold Probleme hat (Dock-Fehler, Vakuum-Fehler).

🔧 Bugfix 2026-01-10:\ Top-level Condition wurde entfernt. FrĂŒher wurde die gesamte Automation gestoppt, wenn Arnold zum Zeitpunkt des Triggers KEINEN Fehler hatte (z.B. Sensor = 'unknown'). Jetzt lĂ€uft die Automation immer durch und prĂŒft in den Actions, ob ein Fehler vorliegt → ZuverlĂ€ssigere Benachrichtigungen!

Trigger

triggers:
  # 1. Heimkehr
1. id: home_arrival
    trigger: state
    entity_id: device_tracker.z_fold7_von_anatol
    from: not_home
    to: home

  # 2. Handy vom kabellosen LadegerÀt genommen
1. id: wireless_to_none
    trigger: state
    entity_id: sensor.z_fold_7_charger_type
    from: wireless
    to: none

Actions

actions:
  # Bei wireless_to_none: Warte 30 Minuten
1. choose:
  1. conditions:
    1. condition: trigger
        id: wireless_to_none
      sequence:
    1. delay: 00:30:00

  # Variablen setzen
1. variables:
      dock_state: '![]( states("sensor.arnold_schwarzensauger_dock_fehler") )'
      vac_state: '![]( states("sensor.arnold_schwarzensauger_staubsauger_fehler") )'
      refill_age: |
        {% set dt = states('input_datetime.last_water_refill') %}
        {% if dt in ['unknown','unavailable',''] %}
          unbekannt
        {% else %}
          {% set delta = (as_timestamp(now()) - as_timestamp(dt)) | int %}
          {% if delta < 3600 %}
            ![]( (delta // 60) ) M
          {% elif delta < 86400 %}
            ![]( (delta // 3600) ) H
          {% elif delta < 604800 %}
            ![]( (delta // 86400) ) D
          {% else %}
            ![]( (delta // 604800) ) W
          {% endif %}
        {% endif %}
      arnie_is_docked: '![]( is_state("vacuum.arnold_schwarzensauger", "docked") )'
      arnie_room: '![]( states("sensor.arnold_schwarzensauger_aktueller_raum") )'

  # Nur benachrichtigen wenn Fehler vorliegt
1. choose:
  1. conditions:
    1. condition: template
        value_template: |
          {% set dock = states('sensor.arnold_schwarzensauger_dock_fehler') %}
          {% set vac  = states('sensor.arnold_schwarzensauger_staubsauger_fehler') %}
          ![]( dock not in ['ok','unknown','unavailable','none'] or
             vac  not in ['ok','unknown','unavailable','none'] )
      sequence:
      # Benachrichtigung senden
    1. data:
          title: Arnies WohlfĂŒhlzone
          message: |
            (Komplexe Fehler-Mapping-Logik mit Dock- und Vakuum-Fehlern)
          data:
            tag: arnie_arrival_status
            actions:
            - action: REMIND_30
              title: In 30 min
            - action: REMIND_120
              title: In 2 h
            - action: WATER_CHANGED
              title: Wasser gewechselt
        action: notify.mobile_app_z_fold_7

Funktionsweise:\ 1. Automation wird bei jedem Trigger ausgefĂŒhrt (Heimkehr oder Handy vom LadegerĂ€t) 1. FehlerprĂŒfung erfolgt in den Actions (nicht als top-level Condition) 1. Benachrichtigung wird nur gesendet, wenn tatsĂ€chlich ein Fehler vorliegt 1. Verhindert verpasste Benachrichtigungen bei transienten Sensor-ZustĂ€nden

Erkannte Fehler

Dock-Fehler: - duct_blockage → Luftkanal blockiert - water_empty → Wischwasser leer - waste_water_tank_full → Schmutzwassertank voll - maintenance_brush_jammed → WartungsbĂŒrste blockiert - dirty_tank_latch_open → Schmutzwassertank-Verschluss offen - no_dustbin → Kein StaubbehĂ€lter eingesetzt

Vakuum-Fehler: - lidar_blocked → Lidar blockiert - bumper_stuck → StoßfĂ€nger blockiert - wheels_suspended → RĂ€der hĂ€ngen in der Luft - main_brush_jammed → HauptbĂŒrste blockiert - side_brush_jammed → SeitenbĂŒrste blockiert - robot_trapped → Roboter festgefahren - low_battery → Akkustand niedrig - ... und viele weitere (siehe automations.yaml:1084-1136)


4. Ankunfts-Buttons (Reminder & Wasser gewechselt)

ID: arrival_buttons_actions\ Beschreibung: Verarbeitet Button-Aktionen aus der Benachrichtigung: Reminder (30 min / 2h) und Wasserwechsel-Tracking.

Trigger

triggers:
1. event_type: mobile_app_notification_action
    event_data:
      action: REMIND_30
    trigger: event

1. event_type: mobile_app_notification_action
    event_data:
      action: REMIND_120
    trigger: event

1. event_type: mobile_app_notification_action
    event_data:
      action: WATER_CHANGED
    trigger: event

Actions

actions:
1. choose:
    # Option 1: Reminder in 30 Minuten
  1. conditions:
    1. condition: template
        value_template: "![]( trigger.event.data.action == 'REMIND_30' )"
      sequence:
    1. delay: 00:30:00
    1. target:
          entity_id: automation.ankunft_arnies_wohlfuehlzone
        data:
          skip_condition: false
        action: automation.trigger

    # Option 2: Reminder in 2 Stunden
  1. conditions:
    1. condition: template
        value_template: "![]( trigger.event.data.action == 'REMIND_120' )"
      sequence:
    1. delay: 02:00:00
    1. target:
          entity_id: automation.ankunft_arnies_wohlfuehlzone
        data:
          skip_condition: false
        action: automation.trigger

    # Option 3: Wasserwechsel bestÀtigt
  1. conditions:
    1. condition: template
        value_template: "![]( trigger.event.data.action == 'WATER_CHANGED' )"
      sequence:
      # Counter erhöhen
    1. target:
          entity_id: counter.water_refills
        action: counter.increment

      # Zeitstempel speichern
    1. target:
          entity_id: input_datetime.last_water_refill
        data:
          datetime: "![]( now().strftime('%Y-%m-%d %H:%M:%S') )"
        action: input_datetime.set_datetime

      # BestÀtigung senden
    1. data:
          title: Arnies WohlfĂŒhlzone
          message: ✅ Wasserwechsel gespeichert.
          data:
            tag: arnie_arrival_status
        action: notify.mobile_app_z_fold_7

Tipp: Der Wasserwechsel wird sowohl im Counter water_refills gezÀhlt als auch mit Timestamp in last_water_refill gespeichert.

Verwendete Helper & Entities

| Helper | Typ | Zweck | | input_boolean.arnie_heute_gelaufen | Boolean | Verhindert mehrfaches Fahren pro Tag | | input_datetime.last_water_refill | DateTime | Zeitpunkt des letzten Wasserwechsels | | counter.water_refills | Counter | Anzahl der Wasserwechsel | | vacuum.arnold_schwarzensauger | Vacuum | HauptentitÀt des Saugroboters | | sensor.arnold_schwarzensauger_dock_fehler | Sensor | Dock-Fehlerzustand | | sensor.arnold_schwarzensauger_staubsauger_fehler | Sensor | Vakuum-Fehlerzustand |

Changelog

2026-01-10: Bugfix WohlfĂŒhlzone

  • Problem: Automation "Ankunft: Arnies WohlfĂŒhlzone" triggerte nicht zuverlĂ€ssig
  • Ursache: Top-level Condition prĂŒfte Fehlerzustand zum Zeitpunkt des Triggers. Wenn Sensoren 'unknown' oder 'ok' meldeten, wurde die Automation komplett gestoppt
  • Lösung: Top-level Condition entfernt, FehlerprĂŒfung erfolgt jetzt in den Actions innerhalb eines choose-Blocks
  • Ergebnis: Automation lĂ€uft immer durch, Benachrichtigung nur bei tatsĂ€chlichem Fehler → ZuverlĂ€ssigere Alerts!

Siehe auch


← ZurĂŒck zur Übersicht