En este tutorial en Home Assistant es muy útil para configurar automatizaciones que se activen en determinados días de la semana de manera dinámica. Por ejemplo, podrías programar el encendido del aire acondicionado, la calefacción o el riego según tus necesidades específicas para cada día de la semana.
Lo primero es crear el sensor.día_de_la_semana:
1 2 3 4 5 6 7 |
sensor: - platform: template sensors: dia_de_la_semana: value_template: " {{ ['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo'][now().weekday()] }}" entity_id: sensor.time |
Lo siguiente es crear los input_select de cada día o los input_boolean según lo que necesitemos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
input_select: lunes: name: Lunes options: - Libre - Lunes martes: name: Martes options: - Libre - Martes miercoles: name: Miercoles options: - Libre - Miercoles jueves: name: Jueves options: - Libre - Jueves viernes: name: Viernes options: - Libre - Viernes sabado: name: Sabado options: - Libre - Sabado domingo: name: Domingo options: - Libre - Domingo |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
input_boolean: lunes: name: Lunes martes: name: Martes miercoles: name: Miercoles jueves: name: Jueves viernes: name: Viernes sabado: name: Sabado domingo: name: Domingo |
Ahora solo nos falta añadir una condición en el automation correspondiente, este ejemplo es con input_select:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
- alias: 'Encender Yeelight' initial_state: true hide_entity: false trigger: platform: mqtt topic: 'zigbee2mqtt/0x00158d0001f9c4f1' condition: - condition: template value_template: "{{ 'single' == trigger.payload_json.click }}" - condition: template ##Condition necesaria para el programador value_template: > {%- if (states.sensor.dia_de_la_semana.state == states.input_select.lunes.state) or (states.sensor.dia_de_la_semana.state == states.input_select.martes.state) or (states.sensor.dia_de_la_semana.state == states.input_select.miercoles.state) or (states.sensor.dia_de_la_semana.state == states.input_select.jueves.state) or (states.sensor.dia_de_la_semana.state == states.input_select.viernes.state) or (states.sensor.dia_de_la_semana.state == states.input_select.sabado.state) or (states.sensor.dia_de_la_semana.state == states.input_select.domingo.state) %} True {% else %} False {% endif %} action: - service_template: >- {%- if is_state( 'light.yeelight_salon', 'off') %} script.yeelight_on {%- elif is_state( 'light.yeelight_salon', 'on') %} script.yeelight_off {% endif %} entity_id: light.yeelight_salon |
Y aquí utilizando input_boolean:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
- alias: 'Encender Yeelight' initial_state: true hide_entity: false trigger: platform: mqtt topic: 'zigbee2mqtt/0x00158d0001f9c4f1' condition: - condition: template value_template: "{{ 'single' == trigger.payload_json.click }}" - condition: template value_template: > {%- if (states.sensor.dia_de_la_semana.state == 'Lunes' and states.input_boolean.lunes.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Martes' and states.input_boolean.martes.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Miercoles' and states.input_boolean.miercoles.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Jueves' and states.input_boolean.jueves.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Viernes' and states.input_select.viernes.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Sabado' and states.input_select.sabado.state == 'on') or (states.sensor.dia_de_la_semana.state == 'Domingo' and states.input_select.domingo.state == 'on') %} True {% else %} False {% endif %} action: - service_template: >- {%- if is_state( 'light.yeelight_salon', 'off') %} script.yeelight_on {%- elif is_state( 'light.yeelight_salon', 'on') %} script.yeelight_off {% endif %} entity_id: light.yeelight_salon |
Para activar o desactivar un día es suficiente con declarar los input_select o boolean en una card de lovelace y luego seleccionar el día de la semana que corresponda.
Para añadir otro programador que no coincida en días activos con el que ya tenemos habrá que duplicar los input de los días y declararlos según el nuevo nombre que le designemos.