sensor.porta_casa_voltage:
friendly_name: 'Tensione'
-# Spare Door Sensor
-binary_sensor.spare_door_contact:
- friendly_name: 'Spare Door'
-sensor.spare_door_battery:
+# Bedroom French Door Sensor
+binary_sensor.portafinestra_sala_contact:
+ friendly_name: 'Portafinestra Sala'
+sensor.portafinestra_sala_battery:
friendly_name: 'Batteria'
-sensor.spare_door_device_temperature:
+sensor.portafinestra_sala_device_temperature:
friendly_name: 'Temperatura'
-sensor.spare_door_linkquality:
+sensor.portafinestra_sala_linkquality:
friendly_name: 'Link'
-sensor.spare_door_voltage:
+sensor.portafinestra_sala_voltage:
+ friendly_name: 'Tensione'
+
+# Bedroom French Door Sensor
+binary_sensor.portafinestra_camera_contact:
+ friendly_name: 'Portafinestra Camera'
+sensor.portafinestra_camera_battery:
+ friendly_name: 'Batteria'
+sensor.portafinestra_camera_device_temperature:
+ friendly_name: 'Temperatura'
+sensor.portafinestra_camera_linkquality:
+ friendly_name: 'Link'
+sensor.portafinestra_camera_voltage:
friendly_name: 'Tensione'
# Front Balcony Temperature Sensor
id: termosifoni_attivazione_boost
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.boost_valvola_zona_giorno
to: "on"
variables:
- climate_entity: >
+ climate_id: >
{{
(state_attr('sensor.netatmo_valve_map', 'boost_boolean_to_climate')
| default('{}') | from_json).get(trigger.entity_id)
}}
- action:
+ conditions:
+ - condition: template
+ value_template: "{{ climate_id is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_id) not in ['unknown','unavailable','none',''] }}"
+
+ actions:
#- action: climate.set_preset_mode
# data_template:
# entity_id: "{{ entity_id }}"
# preset_mode: boost
- action: climate.set_temperature
data_template:
- entity_id: "{{ climate_entity }}"
+ entity_id: "{{ climate_id }}"
temperature: 30
- delay: "00:05:00"
- action: climate.turn_on
data_template:
- entity_id: "{{ climate_entity }}"
+ entity_id: "{{ climate_id }}"
- action: input_boolean.turn_off
data_template:
entity_id: "{{ trigger.entity_id }}"
id: termosifoni_disattivazione_boost
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.boost_valvola_zona_giorno
event: start
variables:
- climate_entity: >
+ climate_id: >
{{
(state_attr('sensor.netatmo_valve_map', 'boost_boolean_to_climate')
| default('{}') | from_json).get(trigger.entity_id)
}}
- action:
+ conditions:
+ - condition: template
+ value_template: "{{ climate_id is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_id) not in ['unknown','unavailable','none',''] }}"
+
+ actions:
# home assistant start
- choose:
- conditions: "{{ trigger.platform == 'homeassistant' }}"
default:
- action: climate.turn_on
data_template:
- entity_id: "{{ climate_entity }}"
+ entity_id: "{{ climate_id }}"
- action: input_boolean.turn_off
data_template:
entity_id: "{{ trigger.entity_id }}"
package.netatmo:
customize: &customize
package: 'netatmo'
- version: 1.4.0
+ version: 1.5.0
######################################################################
# Netatmo Package - Main - Entities
state: "ok"
attributes:
boolean_to_climate: >
- {"input_boolean.valvola_zona_giorno":"climate.zona_giorno",
+ { "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"}
+ "input_boolean.valvola_camera":"climate.camera" }
boolean_to_timer: >
- {"input_boolean.valvola_zona_giorno":"timer.valvola_zona_giorno",
+ { "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"}
+ "input_boolean.valvola_camera":"timer.valvola_camera" }
timer_to_boolean: >
- {"timer.valvola_zona_giorno":"input_boolean.valvola_zona_giorno",
+ { "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"}
+ "timer.valvola_camera":"input_boolean.valvola_camera" }
boost_boolean_to_climate: >
- {"input_boolean.boost_valvola_zona_giorno":"climate.zona_giorno",
+ { "input_boolean.boost_valvola_zona_giorno":"climate.zona_giorno",
"input_boolean.boost_valvola_cucina":"climate.cucina",
"input_boolean.boost_valvola_sala":"climate.sala",
"input_boolean.boost_valvola_studio":"climate.studio",
"input_boolean.boost_valvola_bagno_piccolo":"climate.bagno_piccolo",
"input_boolean.boost_valvola_bagno_grande":"climate.bagno_grande",
- "input_boolean.boost_valvola_camera":"climate.camera"}
+ "input_boolean.boost_valvola_camera":"climate.camera" }
+
+ sensors_to_climate: >
+ { "binary_sensor.portafinestra_sala":"input_boolean.valvola_sala",
+ "binary_sensor.portafinestra_camera_contact":"input_boolean.valvola_camera" }
- alias: "Termosifoni: Accensione"
id: termosifoni_accensione
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.valvola_zona_giorno
- input_boolean.valvola_camera
to: "on"
- action:
+ variables:
+ climate_id: "{{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }}"
+ timer_id: "{{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }}"
+
+ conditions:
+ - condition: template
+ value_template: "{{ climate_id is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_id) not in ['unknown','unavailable','none',''] }}"
+ - condition: template
+ value_template: "{{ timer_id is not none }}"
+
+ actions:
- action: climate.turn_on
data:
entity_id: >
- {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }}
+ {{ climate_id }}
- action: timer.cancel
data:
entity_id: >
- {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }}
+ {{ timer_id }}
######################################################################
- input_boolean.valvola_camera
to: "off"
+ variables:
+ climate_id: "{{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }}"
+ timer_id: "{{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }}"
+
+ conditions:
+ - condition: template
+ value_template: "{{ climate_id is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_id) not in ['unknown','unavailable','none',''] }}"
+ - condition: template
+ value_template: "{{ timer_id is not none }}"
+
actions:
- action: climate.turn_off
data:
entity_id: >
- {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_climate') | from_json)[trigger.entity_id] }}
+ {{ climate_id }}
- action: timer.start
data:
entity_id: >
- {{ (state_attr('sensor.netatmo_valve_map', 'boolean_to_timer') | from_json)[trigger.entity_id] }}
+ {{ timer_id }}
duration: "{{ states('input_number.netatmo_manual_temperature') | int * 60 }}"
######################################################################
- timer.valvola_bagno_grande
- timer.valvola_camera
+ variables:
+ mappa_sensori: "{{ state_attr('sensor.netatmo_valve_map','timer_to_boolean') | from_json }}"
+ climate_input_boolean: "{{ mappa_sensori.get(trigger.entity_id) }}"
+
+ conditions:
+ - condition: template
+ value_template: "{{ climate_input_boolean is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_input_boolean) not in ['unknown','unavailable','none',''] }}"
+
actions:
- action: input_boolean.turn_on
data:
entity_id: >
- {{ (state_attr('sensor.netatmo_valve_map', 'timer_to_boolean') | from_json)[trigger.event.data.entity_id] }}
+ {{ climate_input_boolean }}
- action: script.notify_all
data:
| replace('_', ' ')
}} si รจ riacceso
destination: all
+
+ ######################################################################
+ # Automation triggered after window open to switch off the valve
+ ######################################################################
+ - alias: "Termosifoni: Spegnimento con Finestra Aperta"
+ id: termosifoni_spegnimento_con_finestra_aperta
+ mode: parallel
+
+ triggers:
+ - trigger: state
+ entity_id:
+ - binary_sensor.portafinestra_sala_contact
+ - binary_sensor.portafinestra_camera_contact
+ to: 'on'
+
+ variables:
+ mappa_sensori: "{{ state_attr('sensor.netatmo_valve_map','sensors_to_climate') | from_json }}"
+ climate_input_boolean: "{{ mappa_sensori.get(trigger.entity_id) }}"
+
+ conditions:
+ - condition: template
+ value_template: "{{ climate_input_boolean is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_input_boolean) not in ['unknown','unavailable','none',''] }}"
+
+ actions:
+ - action: input_boolean.turn_off
+ data:
+ entity_id: >
+ {{ climate_input_boolean }}
+
+ ######################################################################
+ # Automation triggered after window close to switch on the valve
+ ######################################################################
+ - alias: "Termosifoni: Riaccensione con Finestra Chiusa"
+ id: termosifoni_riaccensione_con_finestra_chiusa
+ mode: parallel
+
+ triggers:
+ - trigger: state
+ entity_id:
+ - binary_sensor.portafinestra_sala_contact
+ - binary_sensor.portafinestra_camera_contact
+ to: 'off'
+
+ variables:
+ mappa_sensori: "{{ state_attr('sensor.netatmo_valve_map','sensors_to_climate') | from_json }}"
+ climate_input_boolean: "{{ mappa_sensori.get(trigger.entity_id) }}"
+
+ conditions:
+ - condition: template
+ value_template: "{{ climate_input_boolean is not none }}"
+ - condition: template
+ value_template: "{{ states(climate_input_boolean) not in ['unknown','unavailable','none',''] }}"
+
+ actions:
+ - action: input_boolean.turn_on
+ data:
+ entity_id: >
+ {{ climate_input_boolean }}