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.)
This commit is contained in:
2026-04-19 20:58:11 +02:00
parent 0311447d91
commit ce888204db
2 changed files with 48 additions and 25 deletions
+16 -9
View File
@@ -52,20 +52,25 @@
for: "00:05:00" for: "00:05:00"
variables: 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_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) }}" roborock_cleaning_time: "{{ state_attr('vacuum.roborock_s8_pro_ultra', 'cleaning_time') | default('ukendt', true) }}"
action: action:
# Vent til Roborock er vækket og rapporterer tilstand # Vent til Roborock er vækket og rapporterer tilstand
- wait_template: "{{ states('sensor.roborock_s8_pro_ultra_batteri') != 'unknown' }}" - wait_template: >
timeout: "00:00:30" {{ 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: - choose:
- conditions: - conditions:
@@ -75,6 +80,7 @@
roborock_family_away roborock_family_away
and roborock_auto_runs < 2 and roborock_auto_runs < 2
and not roborock_is_cleaning and not roborock_is_cleaning
and roborock_state not in ['error', 'unknown', 'unavailable']
and roborock_battery > 20 and roborock_battery > 20
}} }}
sequence: sequence:
@@ -129,6 +135,7 @@
Familie hjemme: {{ not roborock_family_away }}. Familie hjemme: {{ not roborock_family_away }}.
Auto-kørsler i dag: {{ roborock_auto_runs }}. Auto-kørsler i dag: {{ roborock_auto_runs }}.
Kører allerede: {{ roborock_is_cleaning }}. Kører allerede: {{ roborock_is_cleaning }}.
State: {{ roborock_state }}.
Batteri: {{ roborock_battery }}%. Batteri: {{ roborock_battery }}%.
+32 -16
View File
@@ -1,31 +1,47 @@
Jeg arbejder med Home Assistant version 2026.3.3. 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 er erfaren HA-bruger
- Jeg ønsker robuste, produktionsegnet løsninger - Jeg oensker robuste, produktionsegnet loesninger
- Jeg prioriterer stabilitet over smart hacks - Jeg prioriterer stabilitet over "smart hacks"
- Jeg vil undgå unknown/unavailable states og template-fejl - Jeg vil undgaa unknown/unavailable states og template-fejl
- Jeg vil have korrekt datatype-håndtering (float/int/string) - Jeg vil have korrekt datatype-haandtering (float/int/string)
- Jeg vil minimere race conditions og edge cases - Jeg vil minimere race conditions og edge cases
Når du svarer: Naar du svarer:
- Giv altid copy-paste klar YAML - Giv altid copy-paste klar YAML
- Indiker hvor filer skal placeres (fx include/sensors/xxx.yaml) - Indiker hvor filer skal placeres (fx include/sensors/xxx.yaml)
- Brug defensive templates (default værdier, checks for unknown/unavailable) - Brug defensive templates (default vaerdier, checks for unknown/unavailable)
- Undgå deprecated eller UI-only features - Undgaa deprecated eller UI-only features
- Optimer for performance (undgå unødvendige loops / tunge templates) - Optimer for performance (undgaa unoedvendige loops / tunge templates)
- Forklar kort hvorfor løsningen er korrekt men vær præcis og teknisk - Forklar kort hvorfor loesningen er korrekt - men vaer praecis og teknisk
Hvis relevant: Hvis relevant:
- Foreslå forbedringer i arkitektur (ikke kun fixes) - Foreslaa forbedringer i arkitektur (ikke kun fixes)
- Identificér potentielle fejl før de opstår - Identificer potentielle fejl foer de opstaar
- Prioritér simplicity + robustness over kompleksitet - 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. 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)