From ce888204db816ddc8374328c8081d288727e36bf Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Sun, 19 Apr 2026 20:58:11 +0200 Subject: [PATCH] Fix Roborock wake timing, update kontekst.txt - Roborock: wait for vacuum+battery != unknown/unavailable (2min timeout) - Roborock: recompute variables AFTER wait_template, not at trigger time - Roborock: block start if vacuum in error state (e.g. dock water refill) - kontekst.txt: add device/integration details (TTS, garage, Roborock, Shelly, etc.) --- include/automations/roborock.yaml | 25 ++++++++++------ kontekst.txt | 48 ++++++++++++++++++++----------- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/include/automations/roborock.yaml b/include/automations/roborock.yaml index 6d9a0c9..ff5b266 100644 --- a/include/automations/roborock.yaml +++ b/include/automations/roborock.yaml @@ -52,20 +52,25 @@ for: "00:05:00" variables: - roborock_family_away: "{{ is_state('binary_sensor.family_presence', 'off') }}" - roborock_auto_runs: "{{ states('input_number.roborock_auto_runs_today') | int(0) }}" - roborock_is_cleaning: "{{ is_state('vacuum.roborock_s8_pro_ultra', 'cleaning') }}" - roborock_battery: "{{ states('sensor.roborock_s8_pro_ultra_batteri') | int(0) }}" - roborock_state: "{{ states('vacuum.roborock_s8_pro_ultra') }}" - roborock_status: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'status') | default('ukendt', true) }}" - roborock_error: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'error') | default('ingen', true) }}" roborock_cleaned_area: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'cleaned_area') | default('ukendt', true) }}" roborock_cleaning_time: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'cleaning_time') | default('ukendt', true) }}" action: # Vent til Roborock er vækket og rapporterer tilstand - - wait_template: "{{ states('sensor.roborock_s8_pro_ultra_batteri') != 'unknown' }}" - timeout: "00:00:30" + - wait_template: > + {{ states('vacuum.roborock_s8_pro_ultra') not in ['unknown', 'unavailable'] + and states('sensor.roborock_s8_pro_ultra_batteri') not in ['unknown', 'unavailable'] }} + timeout: "00:02:00" + + # Genberegn variabler EFTER Roborock er vågnet + - variables: + roborock_family_away: "{{ is_state('binary_sensor.family_presence', 'off') }}" + roborock_auto_runs: "{{ states('input_number.roborock_auto_runs_today') | int(0) }}" + roborock_is_cleaning: "{{ is_state('vacuum.roborock_s8_pro_ultra', 'cleaning') }}" + roborock_battery: "{{ states('sensor.roborock_s8_pro_ultra_batteri') | int(0) }}" + roborock_state: "{{ states('vacuum.roborock_s8_pro_ultra') }}" + roborock_status: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'status') | default('ukendt', true) }}" + roborock_error: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'error') | default('ingen', true) }}" - choose: - conditions: @@ -75,6 +80,7 @@ roborock_family_away and roborock_auto_runs < 2 and not roborock_is_cleaning + and roborock_state not in ['error', 'unknown', 'unavailable'] and roborock_battery > 20 }} sequence: @@ -129,6 +135,7 @@ Familie hjemme: {{ not roborock_family_away }}. Auto-kørsler i dag: {{ roborock_auto_runs }}. Kører allerede: {{ roborock_is_cleaning }}. + State: {{ roborock_state }}. Batteri: {{ roborock_battery }}%. diff --git a/kontekst.txt b/kontekst.txt index b50baff..2b44cae 100644 --- a/kontekst.txt +++ b/kontekst.txt @@ -1,31 +1,47 @@ Jeg arbejder med Home Assistant version 2026.3.3. -Min konfiguration er 100% YAML-baseret og opdelt via !include_dir_merge_* og !include i en struktureret mappestruktur (templates, sensors, automations, binary_sensors, input_*, osv.). Jeg forventer løsninger, der respekterer denne opdeling og er direkte kompatible med en splittet konfiguration. +Min konfiguration er 100% YAML-baseret og opdelt via !include_dir_merge_* og !include i en struktureret mappestruktur (templates, sensors, automations, binary_sensors, input_*, osv.). Jeg forventer loesninger, der respekterer denne opdeling og er direkte kompatible med en splittet konfiguration. -Jeg bruger standard Lovelace (YAML mode) – ikke UI editor og ikke Dwains Dashboard. Alle dashboards skal derfor leveres som valid Lovelace YAML. +Jeg bruger standard Lovelace (YAML mode) - ikke UI editor og ikke Dwains Dashboard. Alle dashboards skal derfor leveres som valid Lovelace YAML. -Antag følgende: +Antag foelgende: - Jeg er erfaren HA-bruger -- Jeg ønsker robuste, produktionsegnet løsninger -- Jeg prioriterer stabilitet over “smart hacks” -- Jeg vil undgå unknown/unavailable states og template-fejl -- Jeg vil have korrekt datatype-håndtering (float/int/string) +- Jeg oensker robuste, produktionsegnet loesninger +- Jeg prioriterer stabilitet over "smart hacks" +- Jeg vil undgaa unknown/unavailable states og template-fejl +- Jeg vil have korrekt datatype-haandtering (float/int/string) - Jeg vil minimere race conditions og edge cases -Når du svarer: +Naar du svarer: - Giv altid copy-paste klar YAML - Indiker hvor filer skal placeres (fx include/sensors/xxx.yaml) -- Brug defensive templates (default værdier, checks for unknown/unavailable) -- Undgå deprecated eller UI-only features -- Optimer for performance (undgå unødvendige loops / tunge templates) -- Forklar kort hvorfor løsningen er korrekt – men vær præcis og teknisk +- Brug defensive templates (default vaerdier, checks for unknown/unavailable) +- Undgaa deprecated eller UI-only features +- Optimer for performance (undgaa unoedvendige loops / tunge templates) +- Forklar kort hvorfor loesningen er korrekt - men vaer praecis og teknisk Hvis relevant: -- Foreslå forbedringer i arkitektur (ikke kun fixes) -- Identificér potentielle fejl før de opstår -- Prioritér simplicity + robustness over kompleksitet +- Foreslaa forbedringer i arkitektur (ikke kun fixes) +- Identificer potentielle fejl foer de opstaar +- Prioriter simplicity + robustness over kompleksitet -Kort sagt: agér som en Home Assistant arkitekt/debugger og optimer min opsætning. +Kort sagt: ager som en Home Assistant arkitekt/debugger og optimer min opsaetning. Skriv en commit besked som jeg kan bruge til git. +Vigtige detaljer om min opsaetning: +- Docker-baseret Home Assistant, config paa /Volumes/homeassistant +- MQTT broker: 10.0.0.142:1883 (bruges af Shelly-enheder) +- Tesla (Snowywhite): device_tracker.snowywhite_location_tracker, sensor.snowywhite_battery, m.fl. +- TTS: Brug tts.speak med tts.google_ai_tts (IKKE google_translate - den provider findes ikke) +- Garage: cover.anne (GoGoGate2) + binary_sensor.garageport (rigtig sensor, GoGoGate2 sensor er upaalidelig) + - Brug altid cover.toggle (ikke open/close) da GoGoGate2 ikke kender sin tilstand + - input_boolean.left_home_by_car bruges til at tracke om afrejse var i bil +- Roborock S8 Pro Ultra: vacuum.roborock_s8_pro_ultra + - Sover ofte - vent paa state != unknown/unavailable foer brug af variabler + - Beregn variabler EFTER wait_template, ikke ved trigger-tidspunkt + - Tjek for error-state (fx dock-fejl) inden start +- Shelly Button 1 enheder via MQTT: fordoer (C45BBE6A5696), bagdoer (98CDAC1E5F42) +- Telefoner: notify.mobile_app_claus_iphone_15pro, notify.mobile_app_annes_iphone_14_pro +- Sonos hoejtalere: media_player.alrum, media_player.lille_badevaerelse, m.fl. +- Git repo: gitea.anneclaus.synology.me (SSH)