################################################## # 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] }}" window_entity: "{{ trigger.entity_id }}" - service: climate.set_hvac_mode target: entity_id: "{{ climate_entity }}" data: hvac_mode: "off" - wait_template: "{{ is_state(window_entity, 'off') }}" timeout: "04:00:00" continue_on_timeout: true # Genberegn korrekt temperatur (nat/væk/komfort) efter vindue lukkes - 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."