Files
N22/include/automations/vinduer.yaml
T

261 lines
10 KiB
YAML

##################################################
# Vindue-automationer (Aqara vinduesensorer)
##################################################
### Varme: Genberegn ved vindue-ændring (åbner og lukker)
### Script slukker klimaenhed hvis vindue er åbent, tænder igen ved lukning
- alias: "Varme - vindue åbner eller lukker"
id: varme_vindue_trigger
description: "Kalder varme_recalculate når et vindue eller terrassedøren skifter tilstand"
mode: queued
max: 10
trigger:
- platform: state
entity_id:
- binary_sensor.andreas_vindue
- binary_sensor.daniel_vindue
- binary_sensor.sovevaerelse_vindue
- binary_sensor.lille_bad_vindue
- binary_sensor.badevaerelse_vindue
- binary_sensor.terrassedor
to:
- "on"
- "off"
for: "00:00:05"
action:
- service: script.varme_recalculate
### 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(', ') }}
- variables:
# Find den person der sidst skiftede væk fra home
sidste_person: >-
{% set people = [
('person.claus_dethlefsen', 'notify.mobile_app_claus_iphone_15pro'),
('person.anne_schusler_dethlefsen', 'notify.mobile_app_annes_iphone_14_pro'),
('person.andreas_schusler_dethlefsen', 'notify.mobile_app_andreas_iphone_12'),
('person.daniel_schusler_dethlefsen', 'notify.mobile_app_daniels_iphone_13_mini')
] %}
{% set ns = namespace(latest='2000-01-01T00:00:00+00:00', svc='notify.mobile_app_claus_iphone_15pro') %}
{% for person_id, notify_svc in people %}
{% set changed = states[person_id].last_changed | string %}
{% if changed > ns.latest %}
{% set ns.latest = changed %}
{% set ns.svc = notify_svc %}
{% endif %}
{% endfor %}
{{ ns.svc }}
# Altid send til Claus
- 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
# Send også til den der sidst forlod huset (hvis det ikke er Claus)
- condition: template
value_template: "{{ sidste_person != 'notify.mobile_app_claus_iphone_15pro' }}"
- service: "{{ sidste_person }}"
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: template
value_template: "{{ is_state(trigger.entity_id, '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."