From a298d0ad6d192a442307dcfee9a37b52a6be8fa3 Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Thu, 6 Mar 2025 13:41:19 +0100 Subject: [PATCH] Added timer for netatmo valves when swithced off --- packages/netatmo/netatmo_main.yaml | 20 +++- packages/netatmo/netatmo_on_off.yaml | 151 ++++++++++++++++++++++++++- 2 files changed, 169 insertions(+), 2 deletions(-) diff --git a/packages/netatmo/netatmo_main.yaml b/packages/netatmo/netatmo_main.yaml index b89e9736..5fda7b60 100644 --- a/packages/netatmo/netatmo_main.yaml +++ b/packages/netatmo/netatmo_main.yaml @@ -12,7 +12,7 @@ homeassistant: package.netatmo: customize: &customize package: 'netatmo' - version: 1.2.0 + version: 1.3.0 ###################################################################### # Netatmo Package - Main - Entities @@ -66,6 +66,8 @@ homeassistant: <<: *customize automation.termosifoni_spegnimento: <<: *customize + automation.termosifoni_scadenza_timeout_impostazione_manuale: + <<: *customize input_boolean.boost_valvola_zona_giorno: <<: *customize input_boolean.boost_valvola_cucina: @@ -80,6 +82,22 @@ homeassistant: <<: *customize input_boolean.boost_valvola_camera: <<: *customize + input_number.netatmo_manual_temperature: + <<: *customize + timer.valvola_zona_giorno: + <<: *customize + timer.valvola_cucina: + <<: *customize + timer.valvola_sala: + <<: *customize + timer.valvola_studio: + <<: *customize + timer.valvola_bagno_piccolo: + <<: *customize + timer.valvola_bagno_grande: + <<: *customize + timer.valvola_camera: + <<: *customize automation.termosifoni_attivazione_boost: <<: *customize automation.termosifoni_disattivazione_boost: diff --git a/packages/netatmo/netatmo_on_off.yaml b/packages/netatmo/netatmo_on_off.yaml index 805c8054..4e8eba26 100644 --- a/packages/netatmo/netatmo_on_off.yaml +++ b/packages/netatmo/netatmo_on_off.yaml @@ -32,6 +32,56 @@ input_boolean: initial: on icon: mdi:thermometer +###################################################################### +# Netatmo Package - On/Off Engine - Input Number +###################################################################### + +# Input number for manual temperature set (in minutes) +input_number: + netatmo_manual_temperature: + name: "Durata impostazioni manuali" + initial: 180 + min: 5 + max: 720 + step: 1 + mode: slider + icon: mdi:timer-edit-outline + +###################################################################### +# Netatmo Package - On/Off Engine - Timer +###################################################################### + +timer: + # Timer for manual set (10800 sec = 3 hour) + valvola_zona_giorno: + name: Valvola Zona Giorno + duration: 10800 + icon: mdi:timer-edit-outline + valvola_cucina: + name: Valvola Cucina + duration: 10800 + icon: mdi:timer-edit-outline + valvola_sala: + name: Valvola Sala + duration: 10800 + icon: mdi:timer-edit-outline + valvola_studio: + name: Valvola Studio + duration: 10800 + icon: mdi:timer-edit-outline + valvola_bagno_piccolo: + name: Valvola Bagno Piccolo + duration: 10800 + icon: mdi:timer-edit-outline + valvola_bagno_grande: + name: Valvola Bagno Grande + duration: 10800 + icon: mdi:timer-edit-outline + valvola_camera: + name: Valvola Camera + duration: 10800 + icon: mdi:timer-edit-outline + ###################################################################### # Netatmo Package - On/Off Engine - Automations ###################################################################### @@ -54,7 +104,7 @@ automation: input_boolean.valvola_camera to: 'on' - action: + actions: - action: climate.turn_on data_template: entity_id: > @@ -73,6 +123,24 @@ automation: {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} climate.camera {% endif %} + - action: timer.cancel + data_template: + entity_id: > + {% if trigger.entity_id == 'input_boolean.valvola_zona_giorno' %} + timer.valvola_zona_giorno + {% elif trigger.entity_id == 'input_boolean.valvola_cucina' %} + timer.valvola_cucina + {% elif trigger.entity_id == 'input_boolean.valvola_sala' %} + timer.valvola_sala + {% elif trigger.entity_id == 'input_boolean.valvola_studio' %} + timer.valvola_studio + {% elif trigger.entity_id == 'input_boolean.valvola_bagno_piccolo' %} + timer.valvola_bagno_piccolo + {% elif trigger.entity_id == 'input_boolean.valvola_bagno_grande' %} + timer.valvola_bagno_grande + {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} + timer.valvola_camera + {% endif %} ###################################################################### # Switch Off Valve @@ -110,3 +178,84 @@ automation: {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} climate.camera {% endif %} + - action: timer.start + data_template: + entity_id: > + {% if trigger.entity_id == 'input_boolean.valvola_zona_giorno' %} + timer.valvola_zona_giorno + {% elif trigger.entity_id == 'input_boolean.valvola_cucina' %} + timer.valvola_cucina + {% elif trigger.entity_id == 'input_boolean.valvola_sala' %} + timer.valvola_sala + {% elif trigger.entity_id == 'input_boolean.valvola_studio' %} + timer.valvola_studio + {% elif trigger.entity_id == 'input_boolean.valvola_bagno_piccolo' %} + timer.valvola_bagno_piccolo + {% elif trigger.entity_id == 'input_boolean.valvola_bagno_grande' %} + timer.valvola_bagno_grande + {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} + timer.valvola_camera + {% endif %} + duration: "{{ (states('input_number.netatmo_manual_temperature')) | int // 60}}:{{(states('input_number.netatmo_manual_temperature')) | int % 60}}:0" + + ###################################################################### + # Automation triggered after manual temperature set timeout elapsed + ###################################################################### + - alias: "Termosifoni: Scadenza timeout impostazione manuale" + id: "termosifoni_scadenza_timeout_impostazione_manuale" + mode: parallel + + triggers: + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_zona_giorno + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_cucina + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_sala + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_studio + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_bagno_piccolo + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_bagno_grande + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.valvola_camera + + actions: + - action: input_boolean.turn_on + data_template: + entity_id: > + {% if trigger.event.data.entity_id == 'timer.valvola_zona_giorno' %} + input_boolean.valvola_zona_giorno + {% elif trigger.event.data.entity_id == 'timer.valvola_cucina' %} + input_boolean.valvola_cucina + {% elif trigger.event.data.entity_id == 'timer.valvola_sala' %} + input_boolean.valvola_sala + {% elif trigger.event.data.entity_id == 'timer.valvola_studio' %} + input_boolean.valvola_studio + {% elif trigger.event.data.entity_id == 'timer.valvola_bagno_piccolo' %} + input_boolean.valvola_bagno_piccolo + {% elif trigger.event.data.entity_id == 'timer.valvola_bagno_grande' %} + input_boolean.valvola_bagno_grande + {% elif trigger.event.data.entity_id == 'timer.valvola_camera' %} + input_boolean.valvola_camera + {% endif %} + - action: script.notify_all + data_template: + title: "Home Assistant - Termosifoni" + message: "Il termosifone {{ trigger.event.data.entity_id | replace('timer.valvola_', '') | replace('_', ' ') }} si è riacceso" + destination: all -- 2.47.3