Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ce888204db | |||
| 0311447d91 |
@@ -2,7 +2,8 @@
|
||||
alias: Garage auto Claus
|
||||
description: >
|
||||
Åbn garage ved ankomst i bil, luk ved afrejse.
|
||||
Trigger på både telefon og bil-tracker for at fange begge signaler.
|
||||
Bruger input_boolean.left_home_by_car til at huske at afrejsen var i bil,
|
||||
så ankomst-logikken ikke afhænger af at Tesla-trackeren opdaterer hurtigt.
|
||||
|
||||
trigger:
|
||||
# Telefon ankommer hjem (debounce 10s mod GPS-flimmer)
|
||||
@@ -13,11 +14,11 @@
|
||||
seconds: 10
|
||||
id: arriving
|
||||
|
||||
# Bil ankommer hjem (fanger tilfælde hvor telefon allerede var "home" via WiFi)
|
||||
# Bil ankommer hjem (backup hvis telefon allerede var "home" via WiFi)
|
||||
- platform: state
|
||||
entity_id: device_tracker.snowywhite_location_tracker
|
||||
to: "home"
|
||||
id: arriving
|
||||
id: car_arriving
|
||||
|
||||
# Telefon forlader hjemmet (debounce 10s mod GPS-flimmer)
|
||||
- platform: state
|
||||
@@ -35,7 +36,7 @@
|
||||
action:
|
||||
- choose:
|
||||
|
||||
# ÅBN: garage lukket + telefon hjemme + bil netop ankommet
|
||||
# ÅBN via telefon: garage lukket + forlod hjemmet i bil
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id: arriving
|
||||
@@ -44,31 +45,54 @@
|
||||
entity_id: binary_sensor.garageport
|
||||
state: "off"
|
||||
|
||||
# Telefon skal være hjemme
|
||||
# Vi ved at brugeren kørte hjemmefra
|
||||
- condition: state
|
||||
entity_id: device_tracker.claus_iphone_15pro
|
||||
state: "home"
|
||||
|
||||
# Bil skal være hjemme
|
||||
- condition: state
|
||||
entity_id: device_tracker.snowywhite_location_tracker
|
||||
state: "home"
|
||||
|
||||
# Bilen skal have skiftet til "home" for nylig (< 5 min)
|
||||
# Forhindrer åbning hvis du går hjem og bilen allerede stod i garagen
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ (now() - states.device_tracker.snowywhite_location_tracker.last_changed).total_seconds() < 300 }}
|
||||
entity_id: input_boolean.left_home_by_car
|
||||
state: "on"
|
||||
|
||||
sequence:
|
||||
- service: cover.toggle
|
||||
target:
|
||||
entity_id: cover.anne
|
||||
|
||||
- service: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.left_home_by_car
|
||||
|
||||
- service: notify.mobile_app_claus_iphone_15pro
|
||||
data:
|
||||
message: "Garage åbnet (ankomst i bil)"
|
||||
|
||||
# ÅBN via bil-tracker: telefon allerede hjemme + forlod i bil
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id: car_arriving
|
||||
|
||||
- condition: state
|
||||
entity_id: binary_sensor.garageport
|
||||
state: "off"
|
||||
|
||||
- condition: state
|
||||
entity_id: device_tracker.claus_iphone_15pro
|
||||
state: "home"
|
||||
|
||||
- condition: state
|
||||
entity_id: input_boolean.left_home_by_car
|
||||
state: "on"
|
||||
|
||||
sequence:
|
||||
- service: cover.toggle
|
||||
target:
|
||||
entity_id: cover.anne
|
||||
|
||||
- service: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.left_home_by_car
|
||||
|
||||
- service: notify.mobile_app_claus_iphone_15pro
|
||||
data:
|
||||
message: "Garage åbnet (bil-tracker ankomst)"
|
||||
|
||||
# LUK: garage åben + forlader hjemmet + bil kører
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
@@ -78,12 +102,17 @@
|
||||
entity_id: binary_sensor.garageport
|
||||
state: "on"
|
||||
|
||||
# Bil skal faktisk have fart (> 0), ikke bare "speed eksisterer"
|
||||
# Bil skal faktisk have fart (> 0)
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ (state_attr('device_tracker.snowywhite_location_tracker', 'speed') | float(0)) > 0 }}
|
||||
|
||||
sequence:
|
||||
# Markér at vi kørte hjemmefra (bruges ved ankomst)
|
||||
- service: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.left_home_by_car
|
||||
|
||||
- delay: "00:00:30"
|
||||
|
||||
# Dobbelttjek at garagen stadig er åben efter forsinkelsen
|
||||
|
||||
@@ -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 }}%.
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
left_home_by_car:
|
||||
name: Forlod hjemmet i bil
|
||||
icon: mdi:car
|
||||
initial: false
|
||||
+32
-16
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user