From: Giorgio Ravera Date: Wed, 7 Jan 2026 16:44:52 +0000 (+0100) Subject: Used a map to improve netatmo package X-Git-Url: http://git.giorgioravera.it/?a=commitdiff_plain;h=cd6098ea77595fd8232062487d18cfa28de57e48;p=homeassistant.git Used a map to improve netatmo package --- diff --git a/packages/netatmo/netatmo_log.yaml b/packages/netatmo/netatmo_log.yaml index 5df08740..76cdd7aa 100644 --- a/packages/netatmo/netatmo_log.yaml +++ b/packages/netatmo/netatmo_log.yaml @@ -20,6 +20,7 @@ logbook: - sensor.valvola_bagno_grande_state - sensor.valvola_camera_state - select.netatmo_casa_ravera_testa + - sensor.netatmo_valve_map ###################################################################### # Netatmo Package - Recorder @@ -43,3 +44,4 @@ recorder: - sensor.valvola_bagno_grande_state - sensor.valvola_camera_state - select.netatmo_casa_ravera_testa + - sensor.netatmo_valve_map diff --git a/packages/netatmo/netatmo_main.yaml b/packages/netatmo/netatmo_main.yaml index 1093be18..b22527b1 100644 --- a/packages/netatmo/netatmo_main.yaml +++ b/packages/netatmo/netatmo_main.yaml @@ -62,6 +62,9 @@ homeassistant: sensor.valvola_camera_state: friendly_name: "Stato Valvola Camera" <<: *customize + sensor.netatmo_valve_map: + friendly_name: "Mappa Valvole Netatmo" + <<: *customize input_boolean.valvola_zona_giorno: <<: *customize input_boolean.valvola_cucina: diff --git a/packages/netatmo/netatmo_maps.yaml b/packages/netatmo/netatmo_maps.yaml new file mode 100644 index 00000000..177b7f26 --- /dev/null +++ b/packages/netatmo/netatmo_maps.yaml @@ -0,0 +1,35 @@ +###################################################################### +# Netatmo Package - Netatmo Valve Map +###################################################################### + +template: + - sensor: + - name: "Netatmo Valve Map" + state: "ok" + attributes: + boolean_to_climate: > + {"input_boolean.valvola_zona_giorno":"climate.zona_giorno", + "input_boolean.valvola_cucina":"climate.cucina", + "input_boolean.valvola_sala":"climate.sala", + "input_boolean.valvola_studio":"climate.studio", + "input_boolean.valvola_bagno_piccolo":"climate.bagno_piccolo", + "input_boolean.valvola_bagno_grande":"climate.bagno_grande", + "input_boolean.valvola_camera":"climate.camera"} + + boolean_to_timer: > + {"input_boolean.valvola_zona_giorno":"timer.valvola_zona_giorno", + "input_boolean.valvola_cucina":"timer.valvola_cucina", + "input_boolean.valvola_sala":"timer.valvola_sala", + "input_boolean.valvola_studio":"timer.valvola_studio", + "input_boolean.valvola_bagno_piccolo":"timer.valvola_bagno_piccolo", + "input_boolean.valvola_bagno_grande":"timer.valvola_bagno_grande", + "input_boolean.valvola_camera":"timer.valvola_camera"} + + timer_to_boolean: > + {"timer.valvola_zona_giorno":"input_boolean.valvola_zona_giorno", + "timer.valvola_cucina":"input_boolean.valvola_cucina", + "timer.valvola_sala":"input_boolean.valvola_sala", + "timer.valvola_studio":"input_boolean.valvola_studio", + "timer.valvola_bagno_piccolo":"input_boolean.valvola_bagno_piccolo", + "timer.valvola_bagno_grande":"input_boolean.valvola_bagno_grande", + "timer.valvola_camera":"input_boolean.valvola_camera"} diff --git a/packages/netatmo/netatmo_on_off.yaml b/packages/netatmo/netatmo_on_off.yaml index 9cb3a53d..b35df873 100644 --- a/packages/netatmo/netatmo_on_off.yaml +++ b/packages/netatmo/netatmo_on_off.yaml @@ -92,171 +92,95 @@ automation: # Switch On Valve ###################################################################### - alias: "Termosifoni: Accensione" - id: "termosifoni_accensione" + id: termosifoni_accensione trigger: - trigger: state - entity_id: input_boolean.valvola_zona_giorno, - input_boolean.valvola_cucina, - input_boolean.valvola_sala, - input_boolean.valvola_studio, - input_boolean.valvola_bagno_piccolo, - input_boolean.valvola_bagno_grande, - input_boolean.valvola_camera - to: 'on' + - trigger: state + entity_id: + - input_boolean.valvola_zona_giorno + - input_boolean.valvola_cucina + - input_boolean.valvola_sala + - input_boolean.valvola_studio + - input_boolean.valvola_bagno_piccolo + - input_boolean.valvola_bagno_grande + - input_boolean.valvola_camera + to: "on" - actions: + action: - action: climate.turn_on - data_template: + data: entity_id: > - {% if trigger.entity_id == 'input_boolean.valvola_zona_giorno' %} - climate.zona_giorno - {% elif trigger.entity_id == 'input_boolean.valvola_cucina' %} - climate.cucina - {% elif trigger.entity_id == 'input_boolean.valvola_sala' %} - climate.sala - {% elif trigger.entity_id == 'input_boolean.valvola_studio' %} - climate.studio - {% elif trigger.entity_id == 'input_boolean.valvola_bagno_piccolo' %} - climate.bagno_piccolo - {% elif trigger.entity_id == 'input_boolean.valvola_bagno_grande' %} - climate.bagno_grande - {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} - climate.camera - {% endif %} + {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }} + - action: timer.cancel - data_template: + data: 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 %} + {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }} + ###################################################################### # Switch Off Valve ###################################################################### - alias: "Termosifoni: Spegnimento" - id: "termosifoni_spegnimento" + id: termosifoni_spegnimento - trigger: - trigger: state - entity_id: input_boolean.valvola_zona_giorno, - input_boolean.valvola_cucina, - input_boolean.valvola_sala, - input_boolean.valvola_studio, - input_boolean.valvola_bagno_piccolo, - input_boolean.valvola_bagno_grande, - input_boolean.valvola_camera - to: 'off' + triggers: + - trigger: state + entity_id: + - input_boolean.valvola_zona_giorno + - input_boolean.valvola_cucina + - input_boolean.valvola_sala + - input_boolean.valvola_studio + - input_boolean.valvola_bagno_piccolo + - input_boolean.valvola_bagno_grande + - input_boolean.valvola_camera + to: "off" - action: + actions: - action: climate.turn_off - data_template: + data: entity_id: > - {% if trigger.entity_id == 'input_boolean.valvola_zona_giorno' %} - climate.zona_giorno - {% elif trigger.entity_id == 'input_boolean.valvola_cucina' %} - climate.cucina - {% elif trigger.entity_id == 'input_boolean.valvola_sala' %} - climate.sala - {% elif trigger.entity_id == 'input_boolean.valvola_studio' %} - climate.studio - {% elif trigger.entity_id == 'input_boolean.valvola_bagno_piccolo' %} - climate.bagno_piccolo - {% elif trigger.entity_id == 'input_boolean.valvola_bagno_grande' %} - climate.bagno_grande - {% elif trigger.entity_id == 'input_boolean.valvola_camera' %} - climate.camera - {% endif %} + {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }} + - action: timer.start - data_template: + data: 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" + {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }} + duration: "{{ states('input_number.netatmo_manual_temperature') | int * 60 }}" ###################################################################### # Automation triggered after manual temperature set timeout elapsed ###################################################################### - alias: "Termosifoni: Scadenza timeout impostazione manuale" - id: "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 + entity_id: + - timer.valvola_zona_giorno + - timer.valvola_cucina + - timer.valvola_sala + - timer.valvola_studio + - timer.valvola_bagno_piccolo + - timer.valvola_bagno_grande + - timer.valvola_camera actions: - action: input_boolean.turn_on - data_template: + data: 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 %} + {{ (state_attr('sensor.netatmo_valve_map', 'timer_to_boolean') | from_json)[trigger.event.data.entity_id] }} + - action: script.notify_all - data_template: + data: title: "Home Assistant - Termosifoni" - message: "Il termosifone {{ trigger.event.data.entity_id | replace('timer.valvola_', '') | replace('_', ' ') }} si è riacceso" + message: > + Il termosifone {{ + trigger.event.data.entity_id + | replace('timer.valvola_', '') + | replace('_', ' ') + }} si è riacceso destination: all