Files
N22/include/automations/vinduer.yaml
T
claus aa6413ea79 Aqara vinduesensorer: automationer, vedligehold og rum-views
- Varme slukker automatisk når vindue åbnes (andreas, daniel, soveværelse, lille bad)
- Notifikation ved åbent vindue når ingen er hjemme
- Notifikation når alle forlader huset med åbne vinduer
- Ventilation: påmindelse om udluftning ved høj CO2/fugt (kl 6-22)
- Påmindelse om at lukke vindue efter 15 min udluftning
- 6 vinduesensor-batterier tilføjet til vedligehold-view og maintenance template
- Vinduesensor tilføjet til andreas, daniel og soveværelse room views
2026-04-17 14:12:40 +02:00

252 lines
9.5 KiB
YAML

##################################################
# Vindue-automationer (Aqara vinduesensorer)
##################################################
### Varme: Sluk varme når vindue åbnes, tænd igen når det lukkes
### Rum-mapping: andreas, daniel, sovevaerelse, lille_bad
- alias: "Varme - sluk ved åbent vindue"
id: varme_sluk_ved_aabent_vindue
description: "Slukker varme i rummet når vinduet åbnes og genstarter når det lukkes"
mode: parallel
max: 4
trigger:
- platform: state
entity_id:
- binary_sensor.andreas_vindue
- binary_sensor.daniel_vindue
- binary_sensor.sovevaerelse_vindue
- binary_sensor.lille_bad_vindue
to: "on"
action:
- variables:
room_map:
binary_sensor.andreas_vindue: climate.andreas
binary_sensor.daniel_vindue: climate.daniel
binary_sensor.sovevaerelse_vindue: climate.sovev_prelse
binary_sensor.lille_bad_vindue: climate.lille_bad
climate_entity: "{{ room_map[trigger.entity_id] }}"
current_temp: "{{ state_attr(climate_entity, 'temperature') | float(20) }}"
current_mode: "{{ states(climate_entity) }}"
- service: scene.create
data:
scene_id: "vindue_varme_{{ trigger.entity_id.split('.')[1] }}"
snapshot_entities:
- "{{ climate_entity }}"
- service: climate.set_hvac_mode
target:
entity_id: "{{ climate_entity }}"
data:
hvac_mode: "off"
- wait_for_trigger:
- platform: state
entity_id: "{{ trigger.entity_id }}"
to: "off"
timeout: "04:00:00"
continue_on_timeout: true
- service: scene.turn_on
target:
entity_id: "scene.vindue_varme_{{ trigger.entity_id.split('.')[1] }}"
### Notifikation: Vindue åbner og ingen er hjemme
- alias: "Vindue åbent - ingen hjemme"
id: vindue_aabent_ingen_hjemme
description: "Send notifikation til Claus hvis et vindue åbner og ingen er hjemme"
trigger:
- platform: state
entity_id:
- binary_sensor.andreas_vindue
- binary_sensor.daniel_vindue
- binary_sensor.sovevaerelse_vindue
- binary_sensor.badevaerelse_vindue
- binary_sensor.lille_bad_vindue
- binary_sensor.terrassedor
to: "on"
condition:
- condition: state
entity_id: binary_sensor.family_presence
state: "off"
action:
- variables:
vindue_navne:
binary_sensor.andreas_vindue: "Andreas' værelse"
binary_sensor.daniel_vindue: "Daniels værelse"
binary_sensor.sovevaerelse_vindue: "Soveværelset"
binary_sensor.badevaerelse_vindue: "Badeværelset"
binary_sensor.lille_bad_vindue: "Lille badeværelse"
binary_sensor.terrassedor: "Terrassedøren"
vindue_navn: "{{ vindue_navne[trigger.entity_id] }}"
- service: notify.mobile_app_claus_iphone_15pro
data:
title: "⚠️ Vindue åbnet - ingen hjemme"
message: "{{ vindue_navn }} er blevet åbnet, men der er ingen hjemme!"
data:
push:
sound:
name: default
critical: 0
### Notifikation: Sidste person forlader huset med åbent vindue
- alias: "Forlader huset - vindue åbent"
id: forlader_huset_vindue_aabent
description: "Send notifikation hvis family_presence slår fra og vinduer er åbne"
trigger:
- platform: state
entity_id: binary_sensor.family_presence
from: "on"
to: "off"
condition:
- condition: or
conditions:
- condition: state
entity_id: binary_sensor.andreas_vindue
state: "on"
- condition: state
entity_id: binary_sensor.daniel_vindue
state: "on"
- condition: state
entity_id: binary_sensor.sovevaerelse_vindue
state: "on"
- condition: state
entity_id: binary_sensor.badevaerelse_vindue
state: "on"
- condition: state
entity_id: binary_sensor.lille_bad_vindue
state: "on"
- condition: state
entity_id: binary_sensor.terrassedor
state: "on"
action:
- variables:
aabne_vinduer: >-
{% set vinduer = [] %}
{% if is_state('binary_sensor.andreas_vindue', 'on') %}
{% set vinduer = vinduer + ["Andreas' værelse"] %}
{% endif %}
{% if is_state('binary_sensor.daniel_vindue', 'on') %}
{% set vinduer = vinduer + ["Daniels værelse"] %}
{% endif %}
{% if is_state('binary_sensor.sovevaerelse_vindue', 'on') %}
{% set vinduer = vinduer + ["Soveværelset"] %}
{% endif %}
{% if is_state('binary_sensor.badevaerelse_vindue', 'on') %}
{% set vinduer = vinduer + ["Badeværelset"] %}
{% endif %}
{% if is_state('binary_sensor.lille_bad_vindue', 'on') %}
{% set vinduer = vinduer + ["Lille badeværelse"] %}
{% endif %}
{% if is_state('binary_sensor.terrassedor', 'on') %}
{% set vinduer = vinduer + ["Terrassedøren"] %}
{% endif %}
{{ vinduer | join(', ') }}
- service: notify.mobile_app_claus_iphone_15pro
data:
title: "🏠 Åbne vinduer - alle er væk"
message: "Alle har forladt huset, men disse vinduer er åbne: {{ aabne_vinduer }}"
data:
push:
sound:
name: default
critical: 1
volume: 1.0
### Ventilation: Luft ud ved høj CO2 eller luftfugtighed (kl 6-22)
- alias: "Ventilation - luft ud påmindelse"
id: ventilation_luft_ud_paamindelse
description: "Send notifikation om at lufte ud ved høj CO2 eller luftfugtighed"
trigger:
- platform: numeric_state
entity_id: sensor.sovevaerelse_stue_carbon_dioxide
above: 1000
id: andreas_co2
- platform: numeric_state
entity_id: sensor.sovevaerelse_daniel_carbon_dioxide
above: 1000
id: daniel_co2
- platform: numeric_state
entity_id: sensor.sovevaerelse_carbon_dioxide
above: 1000
id: sovevaerelse_co2
- platform: numeric_state
entity_id: sensor.sovevaerelse_stue_luftfugtighed
above: 70
id: andreas_fugt
- platform: numeric_state
entity_id: sensor.sovevaerelse_daniel_luftfugtighed
above: 70
id: daniel_fugt
- platform: numeric_state
entity_id: sensor.sovevaerelse_luftfugtighed
above: 70
id: sovevaerelse_fugt
condition:
- condition: time
after: "06:00:00"
before: "22:00:00"
action:
- variables:
rum_navne:
andreas_co2: "Andreas' værelse (CO₂)"
andreas_fugt: "Andreas' værelse (luftfugtighed)"
daniel_co2: "Daniels værelse (CO₂)"
daniel_fugt: "Daniels værelse (luftfugtighed)"
sovevaerelse_co2: "Soveværelset (CO₂)"
sovevaerelse_fugt: "Soveværelset (luftfugtighed)"
rum_navn: "{{ rum_navne[trigger.id] }}"
- service: notify.mobile_app_claus_iphone_15pro
data:
title: "🌬️ Luft ud"
message: "{{ rum_navn }} har for høj værdi. Åbn vinduet for at lufte ud."
- alias: "Ventilation - luk vindue efter 15 min"
id: ventilation_luk_vindue_efter_15_min
description: "Påmind om at lukke vinduet 15 minutter efter det blev åbnet for udluftning"
mode: parallel
max: 3
trigger:
- platform: state
entity_id:
- binary_sensor.andreas_vindue
- binary_sensor.daniel_vindue
- binary_sensor.sovevaerelse_vindue
to: "on"
condition:
- condition: time
after: "06:00:00"
before: "22:00:00"
- condition: or
conditions:
- condition: template
value_template: >-
{{ trigger.entity_id == 'binary_sensor.andreas_vindue' and
(states('sensor.sovevaerelse_stue_carbon_dioxide') | float(0) > 1000 or
states('sensor.sovevaerelse_stue_luftfugtighed') | float(0) > 70) }}
- condition: template
value_template: >-
{{ trigger.entity_id == 'binary_sensor.daniel_vindue' and
(states('sensor.sovevaerelse_daniel_carbon_dioxide') | float(0) > 1000 or
states('sensor.sovevaerelse_daniel_luftfugtighed') | float(0) > 70) }}
- condition: template
value_template: >-
{{ trigger.entity_id == 'binary_sensor.sovevaerelse_vindue' and
(states('sensor.sovevaerelse_carbon_dioxide') | float(0) > 1000 or
states('sensor.sovevaerelse_luftfugtighed') | float(0) > 70) }}
action:
- variables:
vindue_navne:
binary_sensor.andreas_vindue: "Andreas' værelse"
binary_sensor.daniel_vindue: "Daniels værelse"
binary_sensor.sovevaerelse_vindue: "Soveværelset"
vindue_navn: "{{ vindue_navne[trigger.entity_id] }}"
- delay: "00:15:00"
- condition: state
entity_id: "{{ trigger.entity_id }}"
state: "on"
- service: notify.mobile_app_claus_iphone_15pro
data:
title: "🪟 Luk vinduet"
message: "Vinduet i {{ vindue_navn }} har været åbent i 15 minutter. Husk at lukke det igen."