Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- input_number:
- ritardo_notifiche_finestre_min:
- name: Ritardo notifiche finestre aperte (min)
- min: 1
- max: 60
- step: 1
- mode: slider
- icon: mdi:timer-outline
- ritardo_notifiche_finestre_seguenti_min:
- name: Ritardo tra una notifica finestra aperta e l'altra (min)
- min: 1
- max: 30
- step: 1
- mode: slider
- icon: mdi:timer-sand
- binary_sensor:
- - platform: group
- name: "Finestre mansarda"
- device_class: opening
- unique_id: 719f1a3c-b07d-4ebc-afb6-5898d08836fd
- entities:
- - binary_sensor.finestra_cameretta_erica_contact
- - binary_sensor.finestra_mansarda_pc_contact
- - binary_sensor.lucernario_pc_sx_contact
- - binary_sensor.lucernario_cameretta_erica_contact
- - platform: group
- name: "Finestre pian terreno"
- device_class: opening
- unique_id: dad0d5ec-10dc-4ba7-949f-4de5bb8c3c09
- entities:
- - binary_sensor.porta_ingresso_contact
- - binary_sensor.finestra_cucina_contact
- - binary_sensor.portafinestra_cucina_contact
- - binary_sensor.finestra_soggiorno_lato_scala_contact
- - binary_sensor.finestra_soggiorno_lato_cucina_contact
- - platform: group
- name: "Finestre camera"
- device_class: opening
- unique_id: 7a4288e2-2794-4078-9726-1a88abde638d
- entities:
- - binary_sensor.finestra_camera_contact
- - binary_sensor.portafinestra_camera_contact
- - platform: group
- name: "Finestre cameretta"
- device_class: opening
- unique_id: 3b4e15f8-5996-42dd-a442-768801f41999
- entities:
- - binary_sensor.finestra_cameretta_contact
- - binary_sensor.portafinestra_cameretta_contact
- - platform: group
- name: "Finestre corridoio"
- device_class: opening
- unique_id: cf58a846-fee0-483e-9ec9-c42218808f21
- entities:
- - binary_sensor.finestra_corridoio_contact
- - binary_sensor.finestra_scala_contact
- # Automazione che gestisce l'apertura delle finestre di una stanza e attende fino alla chiusura, con ripristino riscaldamento
- # Funziona per qualunque stanza, basta aggiungere nei trigger il relativo gruppo (da creare qui sopra) che VA INSERITO NELL'AREA CORRETTA TRAMITE UI!
- automation:
- - id: 0277ec57-1cdb-473a-beaa-41f15b7e0561
- alias: "Clima - Azione - Finestre aperte"
- mode: parallel
- trigger:
- - platform: state
- entity_id:
- - binary_sensor.finestre_mansarda
- - binary_sensor.finestre_pian_terreno
- - binary_sensor.finestre_camera
- - binary_sensor.finestre_cameretta
- - binary_sensor.finestra_bagno_contact
- - binary_sensor.lucernario_bagno_mansarda_contact
- - binary_sensor.finestre_corridoio
- for: "00:00:30"
- to: "on"
- condition:
- - condition: state
- entity_id: input_boolean.estate
- state: "off"
- action:
- - variables:
- source_entity_id: "{{ trigger.entity_id }}"
- source_area_id: "{{ area_id(source_entity_id) }}"
- source_area_name: "{{ area_name(source_area_id) }}"
- climate_entity_id: "{{ expand(states.climate) | selectattr('entity_id', 'in', area_entities(source_area_id)) | selectattr('attributes.hvac_modes', 'eq', ['off', 'auto', 'heat']) | map(attribute='entity_id') | list | first | default('') }}"
- #TODO: Rilevare se il source_entity_id non appartiene ad alcuna area e dare un messaggio specifico interrompendo l'automazione
- # Se configurato di spegnere il riscaldamento dopo un tot che è aperta lo faccio
- - if: "{{ climate_entity_id != '' and is_state('input_boolean.spegnimento_riscaldamento_finestre', 'on') }}"
- then:
- - service: script.spegni_riscaldamento
- data:
- entity: "{{climate_entity_id}}"
- # Attendo un delay e loop notifiche finchè ancora aperta
- - wait_template: "{{is_state(trigger.entity_id, 'off')}}"
- timeout:
- minutes: "{{ states('input_number.ritardo_notifiche_finestre_min') | int}}"
- - repeat:
- while:
- - "{{is_state(trigger.entity_id, 'on')}}"
- sequence:
- - if: "{{ is_state('input_boolean.notifiche_finestre', 'on') }}"
- then:
- - service: script.multinotify
- data:
- title: "Finestre {{source_area_name}} aperte troppo a lungo"
- message: >
- {% set minuti = ((now().timestamp()-as_timestamp(trigger.to_state.last_changed)) / 60)|round(0) %}
- {{[ source_area_name ~ " ha le finestre aperte da " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>etciù</say-as>, i pinguini scorazzano liberamente in " ~ source_area_name ~ " ormai da " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>brrr</say-as>, il ghiaccio sta prendendo il sopravvento da " ~ minuti ~ " minuti, in " ~ source_area_name ~ "!",
- "<say-as interpret-as='interjection'>brrr</say-as>, fa freschino in " ~ source_area_name ~ ", le finestre sono aperte da " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>hey</say-as>, io dico che dopo " ~ minuti ~ " minuti di cambio aria puoi chiudere le finestre di " ~ source_area_name ~ "!",
- "Secondo me " ~ minuti ~ " minuti di finestre aperte possono bastare in " ~ source_area_name ~ "!",
- "<say-as interpret-as='interjection'>hey</say-as>, che ne dici di chiudere le finestre di " ~ source_area_name ~ "? " ~ minuti ~ " minuti di cambio aria sono abbastanza!",
- "<say-as interpret-as='interjection'>accipicchia</say-as>, che freddo che fa in " ~ source_area_name ~ ": dopo " ~ minuti ~ " minuti è davvero ora di chiudere le finestre!",
- "<say-as interpret-as='interjection'>brrr</say-as> in " ~ source_area_name ~ " si gela dopo " ~ minuti ~ " minuti di finestre aperte!",
- "<say-as interpret-as='interjection'>buu</say-as> a chi ha lasciato le finestre in " ~ source_area_name ~ " aperte da " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>cavolo</say-as> i pinguini che ho visto in " ~ source_area_name ~ " stanno iniziando a ghiacciare, dopo " ~ minuti ~ " minuti di finestre aperte...",
- "<say-as interpret-as='interjection'>caspita</say-as> che freddo che fa in " ~ source_area_name ~ "! Chiudi le finestre, dai!",
- "Stiamo risparmiando metano... Ah, no, <say-as interpret-as='interjection'>come non detto</say-as>. Le finestre aperte in " ~ source_area_name ~ " da " ~ minuti ~ " minuti stanno vanificando gli sforzi.",
- "<say-as interpret-as='interjection'>coraggio</say-as>, vai in " ~ source_area_name ~ " e chiudi le finestre, che sono aperte da ben " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>eh già</say-as>. Perchè mai risparmiare metano! Lasciamo le finestre aperte in " ~ source_area_name ~ " finchè non ci si trasferisce l'uomo delle nevi!",
- "<say-as interpret-as='interjection'>etciù</say-as>. Mi sto ammalando, vista la temperatura artica in " ~ source_area_name ~ " dopo " ~ minuti ~ " minuti di finestre aperte. <say-as interpret-as='interjection'>etciù</say-as>",
- "Perchè lasciare le finestre aperte in " ~ source_area_name ~ " per ben " ~ minuti ~ " minuti? <say-as interpret-as='interjection'>mistero</say-as>",
- "<say-as interpret-as='interjection'>tic-toc</say-as>. Il tempo passa. Sono già " ~ minuti ~ " minuti che le finestre in " ~ source_area_name ~ " sono aperte!",
- "Le finestre in " ~ source_area_name ~ " sono aperte da ben " ~ minuti ~ " minuti. <say-as interpret-as='interjection'>vabbè</say-as>, anche oggi si risparmia domani.",
- "<say-as interpret-as='interjection'>wow</say-as>, che belle le stallattiti di ghiaccio che si sono formate in " ~ source_area_name ~ " dopo " ~ minuti ~ " minuti di finestre aperte!",
- "<say-as interpret-as='interjection'>uffa</say-as>, voi umani aprite le finestre e non vi accorgete del tempo che passa. In " ~ source_area_name ~ " sono già passati " ~ minuti ~ " minuti!",
- "<say-as interpret-as='interjection'>oh no</say-as>, Elsa sta completando il ghiaccio che hai iniziato a produrre in " ~ source_area_name ~ " dopo " ~ minuti ~ " minuti di finestre aperte!",
- "Chiudere le finestre in " ~ source_area_name ~ "? <say-as interpret-as='interjection'>magari</say-as>, dopo " ~ minuti ~ " minuti direi che è il caso."] | random}}
- notify_app:
- - notify.all_android_devices
- channel: warning
- tag: open_window_warning
- alexa_target: media_player.piani_inferiori
- # tts_target: media_player.google_mansarda
- - wait_template: "{{is_state(trigger.entity_id, 'off')}}"
- timeout:
- minutes: "{{ states('input_number.ritardo_notifiche_finestre_seguenti_min') | int}}"
- - wait_template: "{{is_state(trigger.entity_id, 'off')}}"
- - if: "{{climate_entity_id != ''}}"
- then:
- - service: script.imposta_riscaldamento
- data:
- entity: "{{climate_entity_id}}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement