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:
@@ -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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user