AutomationDataset/guibrazlima/guibrazlima_automations.yaml

2974 lines
81 KiB
YAML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

- id: '1755254428695'
alias: 🏊🏻 Piscina - Arranque com excedente FV
description: ''
triggers:
- entity_id: binary_sensor.piscina_excedente_fv_bomba
to: 'on'
for: 00:02:00
trigger: state
conditions:
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
actions:
- target:
entity_id:
- switch.bomba_piscina
- switch.bomba_piscina_switch_0
action: switch.turn_on
data: {}
mode: single
- id: '1755259008848'
alias: Piscina - Manual terminou (desligar e sair do override)
description: ''
triggers:
- event_type: timer.finished
event_data:
entity_id: timer.piscina_manual
trigger: event
conditions: []
actions:
- target:
entity_id:
- switch.bomba_piscina_switch_0
action: switch.turn_off
data: {}
- target:
entity_id: input_boolean.piscina_override_manual
action: input_boolean.turn_off
data: {}
mode: single
- id: '1755339332285'
alias: 🏊🏻 Piscina - Watchdog arranque FV (*/2min) v2
description: ''
triggers:
- minutes: /2
trigger: time_pattern
conditions:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: state
state: 'off'
entity_id: switch.bomba_piscina_switch_0
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
state: 'on'
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
actions:
- target:
entity_id: switch.bomba_piscina_switch_0
action: switch.turn_on
data: {}
mode: single
- id: '1755339342740'
alias: 🏊🏻 Piscina - Watchdog arranque FV (*/2min) v2
description: ''
triggers:
- minutes: /2
trigger: time_pattern
conditions:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: state
state: 'off'
entity_id: switch.bomba_piscina_switch_0
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
state: 'on'
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
actions:
- target:
entity_id: switch.bomba_piscina_switch_0
action: switch.turn_on
data: {}
mode: single
- id: '1755339343598'
alias: 🏊🏻 Piscina - Watchdog arranque FV (*/2min) v2
description: ''
triggers:
- minutes: /2
trigger: time_pattern
conditions:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: state
state: 'off'
entity_id: switch.bomba_piscina_switch_0
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
state: 'on'
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
actions:
- target:
entity_id: switch.bomba_piscina_switch_0
action: switch.turn_on
data: {}
mode: single
- id: '1717785108600'
alias: SpeedTests
description: ''
trigger:
- platform: time
at: 06:30:00
- platform: time
at: '18:30:00'
- event: sunrise
offset: -00:35:00
platform: sun
condition: []
action:
- service: homeassistant.update_entity
data: {}
target:
entity_id: sensor.speedtest_download
mode: single
- id: '1717785145333'
alias: '[🏡] Callback to open gate from action'
description: ''
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: ABRIR_PORTAO
condition: []
action:
- service: cover.open_cover
data: {}
target:
entity_id:
- cover.gate
mode: restart
- id: '1717785168033'
alias: '[💡🏡] Garage light on when gate opens/closes'
description: ''
trigger:
- platform: state
entity_id:
- cover.gate
from: closed
to: open
for:
hours: 0
minutes: 0
seconds: 2
- platform: state
entity_id:
- cover.gate
from: open
to: closed
for:
hours: 0
minutes: 0
seconds: 2
condition:
- condition: state
entity_id: sun.sun
state: below_horizon
action:
- if:
- condition: state
entity_id: cover.gate
state: open
then:
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.exterior
- if:
- condition: state
entity_id: cover.gate
state: closed
for:
hours: 0
minutes: 5
seconds: 0
then:
- service: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.exterior
mode: single
- id: '1717785178989'
alias: '[💡🏡]Notificação para ligar o carro ao carregador'
description: ''
triggers:
- trigger: time_pattern
minutes: /15
conditions:
- condition: numeric_state
entity_id: sensor.i4_edrive40_remaining_battery_percent
below: 46
- condition: state
entity_id: device_tracker.i4_edrive40
state: home
actions:
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- repeat:
sequence:
- parallel:
- if:
- condition: state
entity_id: binary_sensor.hk_presence_cmouta
state: 'on'
then:
- metadata: {}
data:
title: 🔋🚗⚡🔌BMW i4
message: Amor, não te esqueças de ligar o carro ao carregador! ❤️😘
action: notify.mobile_app_iphone_de_cristina_3
- if:
- condition: state
entity_id: binary_sensor.hk_presence_gblima
state: 'on'
then:
- metadata: {}
data:
message: O i4 não está ligado ao carregador!
title: 🔋🚗⚡🔌BMW i4
action: notify.notify
- delay:
hours: 0
minutes: 15
seconds: 0
milliseconds: 0
while:
- condition: state
entity_id: device_tracker.i4_edrive40
state: home
for:
hours: 0
minutes: 0
seconds: 0
- condition: numeric_state
entity_id: sensor.i4_edrive40_remaining_battery_percent
below: 70
- condition: state
entity_id: binary_sensor.i4_edrive40_connection_status
state: 'off'
for:
hours: 0
minutes: 0
seconds: 0
- condition: template
value_template: '{{ repeat.index <= 8 }}'
mode: single
- id: '1717786183938'
alias: '[📣🏡] Envia notificação para abrir o portão quando chega a casa'
description: ''
trigger:
- platform: numeric_state
entity_id:
- sensor.home_glima_distance
below: 50
id: glima1
- platform: numeric_state
entity_id:
- sensor.home_cmouta_distance
below: 50
id: cmouta1
condition: []
action:
- if:
- condition: trigger
id:
- glima1
then:
- service: notify.mobile_app_glphone
metadata: {}
data:
message: Queres abrir o portão de casa?
title: 🏡 🔑 Bem-Vindo a casa Guilherme!
data:
tag: open-home-gate
actions:
- action: ABRIR_PORTAO
title: Sim
authenticationRequired: true
activationMode: background
icon: sfsymbols:door.garage.closed
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- service: notify.mobile_app_glphone
metadata: {}
data:
data:
tag: open-home-gate
message: clear_notification
- if:
- condition: trigger
id:
- cmouta1
then:
- service: notify.mobile_app_iphone_de_cristina_3
metadata: {}
data:
message: Queres abrir o portão de casa?
title: 🏡 🔑 Bem-Vinda a casa Cristina!
data:
tag: open-home-gate
actions:
- action: ABRIR_PORTAO
title: Sim
authenticationRequired: true
activationMode: background
icon: sfsymbols:door.garage.closed
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- service: notify.mobile_app_iphone_de_cristina_3
metadata: {}
data:
message: clear_notification
data:
tag: open-home-gate
mode: single
- id: '1717786217050'
alias: '[📣🏡] Notify when garage door was left open for too long'
description: ''
triggers:
- entity_id:
- cover.gate
to: open
for:
hours: 0
minutes: 5
seconds: 0
from: closed
trigger: state
conditions: []
actions:
- repeat:
sequence:
- action: camera.snapshot
metadata: {}
data:
filename: /config/www/camera_snapshots/mysnap_portao.jpg
target:
entity_id: camera.patio_exterior_hd_stream
- action: telegram_bot.send_message
metadata: {}
data:
message: Está aberto a mais de 5 minutos. Fechar?
title: 🚙🚨 Portão de casa aberto!🚨
- action: telegram_bot.send_photo
metadata: {}
data:
authentication: digest
file: /config/www/camera_snapshots/mysnap_portao.jpg
- data:
title: 🚙 Portão de casa aberto!
message: Está aberto a mais de 5 minutos. Fechar?
action: notify.notify
enabled: true
- delay:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
while:
- condition: state
entity_id: cover.gate
state: open
- action: camera.snapshot
metadata: {}
data:
filename: /config/www/camera_snapshots/mysnap_portao.jpg
target:
entity_id: camera.patio_exterior_hd_stream
- action: telegram_bot.send_message
metadata: {}
data:
message: O portão está fechado.
title: 🚙✅Portão de casa fechado.✅
- action: telegram_bot.send_photo
metadata: {}
data:
authentication: digest
file: /config/www/camera_snapshots/mysnap_portao.jpg
- data:
title: 🚙✅Portão de casa fechado.✅
message: O portão está fechado.
action: notify.notify
enabled: true
mode: single
- id: '1717786230999'
alias: '[📣📲] Callback notification to open garage'
description: ''
trigger:
- platform: event
event_type: ios.action_fired
event_data:
actionID: 06BE95EF-F583-440C-9BED-C5FEB7684C15
context:
user_id:
- fc76053283b948f39e0979158ba02875
alias: gblima
id: gblima2
- platform: event
event_type: ios.action_fired
event_data:
actionID: EA13513A-5C16-44C1-B9ED-8AEC747DC1D0
context:
user_id:
- 7df539210ca3465e9ca91c3e2f1bd7e0
alias: cmouta
id: cmouta2
condition: []
action:
- service: cover.open_cover
data: {}
target:
entity_id:
- cover.gate
- delay:
hours: 0
minutes: 2
seconds: 0
milliseconds: 0
- alias: gblima notificações
if:
- condition: and
conditions:
- condition: trigger
id:
- gblima2
- condition: state
entity_id: cover.gate
state: closed
- condition: state
entity_id: input_boolean.gblima_present
state: 'off'
then:
- service: notify.mobile_app_glphone
metadata: {}
data:
message: O portão está fechado.✅🔒
title: 🚗 Ate Logo! 🙂
data:
tag: open-home-gate
- delay:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- service: notify.mobile_app_glphone
metadata: {}
data:
message: clear_notification
data:
tag: open-home-gate
else:
- if:
- condition: and
conditions:
- condition: trigger
id:
- gblima2
- condition: state
entity_id: input_boolean.gblima_present
state: 'off'
then:
- service: notify.mobile_app_glphone
metadata: {}
data:
message: O portão não fechou!!!⚠️🔓
data:
push:
interruption-level: critical
title: '------------'
- alias: cmouta notificações
if:
- condition: and
conditions:
- condition: trigger
id:
- cmouta2
- condition: state
entity_id: cover.gate
state: closed
- condition: state
entity_id: input_boolean.cmouta_present
state: 'off'
then:
- service: notify.mobile_app_iphone_de_cristina_3
data:
data:
tag: open-home-gate
message: O portão está fechado.✅🔒
title: 🚗 Ate Logo! 🙂
- delay:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- service: notify.mobile_app_iphone_de_cristina_3
metadata: {}
data:
message: clear_notification
data:
tag: open-home-gate
else:
- if:
- condition: and
conditions:
- condition: trigger
id:
- cmouta2
- condition: state
entity_id: input_boolean.cmouta_present
state: 'off'
then:
- service: notify.mobile_app_iphone_de_cristina_3
data:
data:
push:
interruption-level: critical
message: O portão não fechou!!!⚠️🔓
title: '------------'
mode: single
- id: '1717786241528'
alias: 🏊🏻 Bomba Piscina Noite
description: ''
triggers:
- at: input_datetime.horario_piscina_noite
trigger: time
conditions:
- condition: and
conditions:
- condition: template
value_template: '{%- set filtragemdiaria = state_attr(''sensor.filtragem_piscina_historico_s'',
''today-1'') | int -%}
{%- set duration = states(''input_number.pool_pump_duration_lower_threshold'')
| int -%}
{%- set durationt = duration * 60 -%}
{{ filtragemdiaria < durationt }}'
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.media_de_cobertura_de_nuvens_10_00_18_00
above: 35
- condition: template
value_template: '{%- set filtragemdiaria = states(''sensor.filtragem_piscina_historico_s'')
| int -%}
{{ filtragemdiaria <= 3600 }}'
actions:
- if:
- condition: or
conditions:
- condition: state
entity_id: sensor.season
state: spring
- condition: state
entity_id: sensor.season
state: summer
then:
- metadata: {}
data: {}
target:
entity_id:
- switch.bomba_piscina_switch_0
action: switch.turn_on
- repeat:
sequence:
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- type: turn_on
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
while:
- condition: device
type: is_off
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- condition: template
value_template: '{{ repeat.index <= 10 }}'
- delay: '{{ [(states(''input_number.pool_pump_duration_lower_threshold'') | int)
* 60 - state_attr(''sensor.filtragem_piscina_historico_s'', ''today-1'') |
int(0),0] | max }}'
- target:
entity_id:
- switch.bomba_piscina_switch_0
data: {}
action: switch.turn_off
else:
- metadata: {}
data: {}
target:
entity_id:
- switch.bomba_piscina_switch_0
action: switch.turn_on
- repeat:
sequence:
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- type: turn_on
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
while:
- condition: device
type: is_off
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- condition: template
value_template: '{{ repeat.index <= 10 }}'
- delay: '{{ [(states(''input_number.pool_pump_duration_inverno'') | int) * 60
- state_attr(''sensor.filtragem_piscina_historico_s'', ''today-1'') | int(0),0]
| max }}'
- target:
entity_id:
- switch.bomba_piscina_switch_0
data: {}
action: switch.turn_off
mode: single
- id: '1717786251723'
alias: 🏊🏻 Cascata
description: Inicia ou para a Cascata na piscina com 1 click no botão shelly
triggers:
- device_id: 50eb20ac53472c3cc1b1da733634d1c8
domain: bthome
type: button
subtype: press
trigger: device
conditions: []
actions:
- type: toggle
device_id: ed7ccde197e708b2a6b6cd25ef2e60c5
entity_id: 44b25a719c3fa50cbbd4ebd6e57fcdb9
domain: switch
enabled: true
mode: single
- id: '1717786261877'
alias: 🏊🏻 Hidrojet
description: ''
trigger:
- platform: device
device_id: 50eb20ac53472c3cc1b1da733634d1c8
domain: bthome
type: button
subtype: double_press
condition: []
action:
- if:
- condition: device
type: is_off
device_id: 8be4eb1cd22d4bd03d7c70c99e84930b
entity_id: a282d1ef3a0591beb9ddf1392c8e3e42
domain: switch
then:
- type: turn_off
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- service: automation.turn_off
data:
stop_actions: true
target:
entity_id: automation.new_automation_3
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- type: turn_on
device_id: 8be4eb1cd22d4bd03d7c70c99e84930b
entity_id: a282d1ef3a0591beb9ddf1392c8e3e42
domain: switch
- repeat:
sequence:
- delay:
hours: 0
minutes: 0
seconds: 30
milliseconds: 0
while:
- condition: device
type: is_on
device_id: 8be4eb1cd22d4bd03d7c70c99e84930b
entity_id: a282d1ef3a0591beb9ddf1392c8e3e42
domain: switch
- service: automation.turn_on
data: {}
target:
entity_id: automation.new_automation_3
else:
- type: turn_off
device_id: 8be4eb1cd22d4bd03d7c70c99e84930b
entity_id: a282d1ef3a0591beb9ddf1392c8e3e42
domain: switch
- service: automation.turn_on
data: {}
target:
entity_id: automation.new_automation_3
mode: restart
- id: '1717786272132'
alias: 🏊🏻 Ligar/Desligar Automação Piscina
description: Liga e desliga a Wallbox
triggers:
- minutes: /5
trigger: time_pattern
conditions: []
actions:
- if:
- condition: and
conditions:
- condition: sun
after: sunrise
before: sunset
- condition: numeric_state
entity_id: sensor.duracao_filtragem_piscina_diario_em_segundos
above: 10800
- condition: state
entity_id: device_tracker.i4_edrive40
state: home
- condition: state
entity_id: binary_sensor.i4_edrive40_connection_status
state: 'on'
- condition: numeric_state
entity_id: sensor.i4_edrive40_remaining_battery_percent
below: 100
then:
- data:
stop_actions: true
target:
entity_id: automation.new_automation_3
action: automation.turn_off
- metadata: {}
data: {}
target:
entity_id:
- switch.bomba_piscina_switch_0
action: switch.turn_off
- metadata: {}
data: {}
target:
entity_id: switch.wallbox_charging_enabled
action: switch.turn_on
else:
- if:
- condition: time
after: 09:00:00
before: '18:00:00'
then:
- data: {}
target:
entity_id: automation.new_automation_3
action: automation.turn_on
- metadata: {}
data: {}
target:
entity_id: switch.wallbox_charging_enabled
enabled: false
action: switch.turn_off
- metadata: {}
data:
skip_condition: true
target:
entity_id: automation.new_automation_3
action: automation.trigger
else:
- data:
stop_actions: true
target:
entity_id: automation.new_automation_3
action: automation.turn_off
- target:
entity_id:
- switch.wallbox_charging_enabled
data: {}
enabled: false
action: switch.turn_on
mode: single
- id: '1717786282800'
alias: 🏊🏻 Variable Piscina timer
description: ''
triggers:
- at: 00:00:00
trigger: time
conditions: []
actions:
- metadata: {}
data:
replace_attributes: false
value: '{{ states(''sensor.duracao_filtragem_piscina_diario_em_segundos'') |
default(0) | int }}'
attributes:
today-1: '{{ states(''sensor.filtragem_piscina_historico_s'') | default(0)|
int }}'
today-2: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-1'')
| default(0) | int }}'
today-3: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-2'')
| default(0) | int }}'
today-4: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-3'')
| default(0) | int }}'
today-5: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-4'')
| default(0) | int }}'
today-6: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-5'')
| default(0) | int }}'
today-7: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-6'')
| default(0) | int }}'
today-8: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-7'')
| default(0) | int }}'
today-9: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-8'')
| default(0) | int }}'
today-10: '{{ state_attr(''sensor.filtragem_piscina_historico_s'',''today-9'')
| default(0) | int }}'
target:
entity_id: sensor.filtragem_piscina_historico_s
action: variable.update_sensor
mode: single
- id: '1717786439250'
alias: 🔋🚗⚡Change charge completion time
description: ''
trigger:
- platform: state
entity_id:
- sensor.ev_smart_charging_charging
attribute: raw_two_days
condition: []
action:
- if:
- condition: time
after: 00:00:00
before: 00:00:00
weekday:
- sat
- fri
then:
- service: select.select_option
metadata: {}
data:
option: None
target:
entity_id: select.ev_smart_charging_charge_completion_time
- service: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.ev_smart_charging_continuous_charging_preferred
else:
- service: select.select_option
metadata: {}
data:
option: 08:00
target:
entity_id: select.ev_smart_charging_charge_completion_time
- service: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.ev_smart_charging_continuous_charging_preferred
mode: single
- id: '1717786450595'
alias: 🔋🚗⚡Disable i4 Climate if not home
description: ''
trigger:
- platform: state
entity_id:
- switch.i4_edrive40_climate
from: 'off'
to: 'on'
condition:
- condition: device
device_id: 73087b9e1e3a0ceb0fc6d4024bd9ffe1
domain: device_tracker
entity_id: 17973f520f671f084cc637505d0c747d
type: is_not_home
- condition: time
after: 07:40:00
before: 08:00:00
weekday:
- mon
- tue
- wed
- thu
- fri
action:
- service: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.i4_edrive40_climate
mode: single
- id: '1717786462808'
alias: 🔋🚗⚡EV Connected to Charger
description: ''
triggers:
- entity_id:
- binary_sensor.i4_edrive40_connection_status
trigger: state
id: i4
- entity_id:
- sensor.ev_smart_charging_status_2
trigger: state
id: x1
conditions: []
actions:
- if:
- condition: and
conditions:
- condition: trigger
id:
- i4
- condition: state
entity_id: binary_sensor.i4_edrive40_connection_status
state: 'on'
then:
- data: {}
target:
entity_id: switch.ev_smart_charging_ev_connected
action: switch.turn_on
else:
- data: {}
target:
entity_id: switch.ev_smart_charging_ev_connected
action: switch.turn_off
- if:
- condition: and
conditions:
- condition: trigger
id:
- x1
- condition: state
entity_id: binary_sensor.x1_xdrive25e_connection_status
state: 'on'
then:
- data: {}
target:
entity_id:
- switch.ev_smart_charging_ev_connected_2
action: switch.turn_on
else:
- data: {}
target:
entity_id:
- switch.ev_smart_charging_ev_connected_2
action: switch.turn_off
mode: single
- id: '1717786472626'
alias: '🔋🚗⚡EV Set SOC to 80% '
description: sempre que chega a casa e é ligado ao carregador.
trigger:
- platform: device
device_id: 73087b9e1e3a0ceb0fc6d4024bd9ffe1
domain: device_tracker
entity_id: 17973f520f671f084cc637505d0c747d
type: enters
zone: zone.home
condition:
- condition: time
after: '18:00:00'
before: 08:00:00
weekday:
- sun
- mon
- tue
- wed
- thu
- fri
- sat
action:
- delay:
hours: 0
minutes: 5
seconds: 0
milliseconds: 0
- service: number.set_value
metadata: {}
data:
value: '80'
target:
entity_id: number.i4_edrive40_target_soc
mode: single
- id: '1717786483857'
alias: 🔋🚗⚡EV Set Target SOC Dia
description: ''
trigger:
- platform: time_pattern
minutes: /5
condition:
- condition: and
conditions:
- condition: time
after: 08:00:00
before: '18:00:00'
weekday:
- sun
- mon
- tue
- wed
- thu
- fri
- sat
- condition: state
entity_id: automation.new_automation_3
state: 'off'
- condition: state
entity_id: device_tracker.i4_edrive40
state: home
- condition: state
entity_id: binary_sensor.i4_edrive40_connection_status
state: 'on'
enabled: true
action:
- if:
- condition: and
conditions:
- condition: numeric_state
entity_id: number.i4_edrive40_target_soc
above: 79
- condition: numeric_state
entity_id: sensor.i4_edrive40_remaining_battery_percent
above: 79
enabled: true
then:
- service: number.set_value
metadata: {}
data:
value: '100'
target:
entity_id: number.i4_edrive40_target_soc
mode: single
- id: '1717786494527'
alias: 🔋🚗⚡EV Smart Charging - Start
description: ''
triggers:
- entity_id:
- sensor.ev_smart_charging_charging
from: 'Off'
to: 'On'
trigger: state
- entity_id:
- sensor.ev_smart_charging_charging_2
from: 'Off'
to: 'On'
trigger: state
conditions: []
actions:
- data: {}
target:
entity_id: switch.evse_admin_rules_inverted
action: switch.turn_on
mode: single
- id: '1717786503067'
alias: 🔋🚗⚡EV Smart Charging - Stop
description: ''
triggers:
- entity_id:
- sensor.ev_smart_charging_charging
from: 'On'
to: 'Off'
trigger: state
- entity_id:
- sensor.ev_smart_charging_charging_2
from: 'On'
to: 'Off'
trigger: state
conditions: []
actions:
- data: {}
target:
entity_id: switch.evse_admin_rules_inverted
action: switch.turn_off
mode: single
- id: '1717786511680'
alias: 🔋🚗⚡EV Smart Charging Set AC Current Limit
description: ''
trigger:
- platform: state
entity_id:
- binary_sensor.i4_edrive40_charging_status
from: null
to: 'on'
condition:
- condition: device
device_id: 73087b9e1e3a0ceb0fc6d4024bd9ffe1
domain: device_tracker
entity_id: 17973f520f671f084cc637505d0c747d
type: is_home
action:
- repeat:
sequence:
- service: select.select_option
metadata: {}
data:
option: '32'
target:
entity_id: select.i4_edrive40_ac_charging_limit
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
while:
- condition: numeric_state
entity_id: sensor.i4_edrive40_ac_current_limit
above: 5
below: 32
- condition: template
value_template: '{{ repeat.index <= 30 }}'
mode: single
- id: '1717786521476'
alias: 🔋🚗⚡Help for charging at home
description: ''
triggers:
- entity_id:
- sensor.ev_smart_charging_charging
to: 'on'
trigger: state
for:
hours: 0
minutes: 5
seconds: 0
id: i4
- entity_id:
- sensor.ev_smart_charging_charging_2
to: 'on'
trigger: state
for:
hours: 0
minutes: 5
seconds: 0
id: x1
conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: device_tracker.i4_edrive40
state: home
- condition: state
entity_id: binary_sensor.i4_edrive40_connection_status
state: 'on'
- condition: numeric_state
entity_id: sensor.wallbox_charging_power
below: 2
- condition: trigger
id:
- i4
- condition: and
conditions:
- condition: state
entity_id: device_tracker.x1_xdrive25e
state: Home
- condition: state
entity_id: binary_sensor.x1_xdrive25e_connection_status
state: 'on'
- condition: numeric_state
entity_id: sensor.wallbox_charging_power
below: 2
- condition: trigger
id:
- x1
actions:
- if:
- condition: trigger
id:
- i4
then:
- device_id: 73087b9e1e3a0ceb0fc6d4024bd9ffe1
domain: lock
entity_id: 4cad819e94c6b23041776358896b68a0
type: unlock
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- device_id: 73087b9e1e3a0ceb0fc6d4024bd9ffe1
domain: lock
entity_id: 4cad819e94c6b23041776358896b68a0
type: lock
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- action: button.press
metadata: {}
data: {}
target:
entity_id: button.ev_smart_charging_manually_start_charging
- if:
- condition: trigger
id:
- x1
then:
- device_id: d2b7376b62ba76e3cebf5d2479e76922
domain: lock
entity_id: 2574b858b69f29422a37da5a8a6db887
type: unlock
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- device_id: d2b7376b62ba76e3cebf5d2479e76922
domain: lock
entity_id: 2574b858b69f29422a37da5a8a6db887
type: lock
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- action: button.press
metadata: {}
data: {}
target:
entity_id: button.ev_smart_charging_manually_start_charging
mode: single
- id: '1717786531178'
alias: '🛋️ Sala: Baixar Estores Sunset'
description: Baixar os estores quando o sol se põe
trigger:
- platform: sun
event: sunset
offset: -00:15:00
condition: []
action:
- if:
- condition: state
entity_id: group.alguem_em_casa
state: home
then:
- service: cover.close_cover
metadata: {}
data: {}
target:
entity_id:
- cover.estore_3_estore_3
- service: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.candeeiros_sala_inferior
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: cover.close_cover
metadata: {}
data: {}
target:
entity_id: cover.estore_2_estore_2
else:
- service: cover.close_cover
metadata: {}
data: {}
target:
entity_id:
- cover.estore_3_estore_3
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: cover.close_cover
metadata: {}
data: {}
target:
entity_id: cover.estore_2_estore_2
mode: single
- id: '1717786542943'
alias: '🛋️ Sala: Subir estores manhã'
description: Subir os estores quando as 07:45
triggers:
- at: 07:45:00
trigger: time
conditions: []
actions:
- action: cover.open_cover
metadata: {}
data: {}
target:
entity_id: cover.estores
mode: single
- id: '1717786571925'
alias: Smart Grid Auto on
description: ''
trigger:
- platform: state
entity_id:
- sensor.template_coopernico_spot_price_bihorario
condition: []
action:
- if:
- condition: numeric_state
entity_id: sensor.template_coopernico_spot_price_bihorario
below: 76
then:
- type: turn_on
device_id: fdb41e98b294e9204d61b1a6320f6c91
entity_id: 812cfe69bc952bc3c627fef200856b27
domain: switch
else:
- type: turn_off
device_id: fdb41e98b294e9204d61b1a6320f6c91
entity_id: 812cfe69bc952bc3c627fef200856b27
domain: switch
mode: single
- id: '1717786590629'
alias: Status Portão
description: Status do portão de casa, para resolver o flapping do sensor e o switch
do shelly ter temporizador de 1 segundo.
trigger:
- platform: state
entity_id:
- switch.portao
from: 'off'
to: 'on'
condition: []
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.portao_status
data: {}
- delay:
hours: 0
minutes: 0
seconds: 50
milliseconds: 0
- service: input_boolean.turn_off
target:
entity_id: input_boolean.portao_status
data: {}
mode: single
- id: '1717929670853'
alias: Automatic Backups
description: ''
trigger:
- id: daily
platform: time
at: 01:00:00
- id: hourly
enabled: true
platform: time_pattern
hours: /12
condition: []
action:
- if:
- condition: trigger
id: daily
then:
- choose:
- conditions:
- condition: template
value_template: '{{ enable_yearly }}'
- condition: template
value_template: '{{ now().day == 1 and now().month == 1 }}'
sequence:
- variables:
backup_type: yearly
keep_days: 365
- variables:
name: "{{ backup_type | title }}Backup: {{\n now().strftime(\n \"\
%A, \"\n ~ iif(backup_type == \"hourly\", \"%-I:%M %p, \", \"\")\n\
\ ~ \"%B %-d, %Y\"\n )\n}}\n{# HourlyBackup: Monday, 3:04 PM, January\
\ 2, 2006 #}\n{# DailyBackup: Monday, January 2, 2006 #}\n"
backup_action:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
- if:
- condition: template
value_template: '{{ not use_action_hourly }}'
- condition: template
value_template: '{{ backup_action | length > 0 }}'
then:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
else:
- alias: Creating a full backup (default action)
service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
- conditions:
- condition: template
value_template: '{{ enable_monthly }}'
- condition: template
value_template: '{{ now().day == 1 }}'
sequence:
- variables:
backup_type: monthly
keep_days: 90
- variables:
name: "{{ backup_type | title }}Backup: {{\n now().strftime(\n \"\
%A, \"\n ~ iif(backup_type == \"hourly\", \"%-I:%M %p, \", \"\")\n\
\ ~ \"%B %-d, %Y\"\n )\n}}\n{# HourlyBackup: Monday, 3:04 PM, January\
\ 2, 2006 #}\n{# DailyBackup: Monday, January 2, 2006 #}\n"
backup_action:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
- if:
- condition: template
value_template: '{{ not use_action_hourly }}'
- condition: template
value_template: '{{ backup_action | length > 0 }}'
then:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
else:
- alias: Creating a full backup (default action)
service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
- conditions:
- condition: template
value_template: '{{ enable_weekly }}'
- condition: template
value_template: '{{ now().weekday() == 0 }}'
sequence:
- variables:
backup_type: weekly
keep_days: 30
- variables:
name: "{{ backup_type | title }}Backup: {{\n now().strftime(\n \"\
%A, \"\n ~ iif(backup_type == \"hourly\", \"%-I:%M %p, \", \"\")\n\
\ ~ \"%B %-d, %Y\"\n )\n}}\n{# HourlyBackup: Monday, 3:04 PM, January\
\ 2, 2006 #}\n{# DailyBackup: Monday, January 2, 2006 #}\n"
backup_action:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
- if:
- condition: template
value_template: '{{ not use_action_hourly }}'
- condition: template
value_template: '{{ backup_action | length > 0 }}'
then:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
else:
- alias: Creating a full backup (default action)
service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
- conditions:
- condition: template
value_template: '{{ enable_daily }}'
sequence:
- variables:
backup_type: daily
keep_days: 7
- variables:
name: "{{ backup_type | title }}Backup: {{\n now().strftime(\n \"\
%A, \"\n ~ iif(backup_type == \"hourly\", \"%-I:%M %p, \", \"\")\n\
\ ~ \"%B %-d, %Y\"\n )\n}}\n{# HourlyBackup: Monday, 3:04 PM, January\
\ 2, 2006 #}\n{# DailyBackup: Monday, January 2, 2006 #}\n"
backup_action:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
- if:
- condition: template
value_template: '{{ not use_action_hourly }}'
- condition: template
value_template: '{{ backup_action | length > 0 }}'
then:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
else:
- alias: Creating a full backup (default action)
service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
else:
- variables:
backup_type: hourly
keep_days: 1
- variables:
name: "{{ backup_type | title }}Backup: {{\n now().strftime(\n \"%A, \"\
\n ~ iif(backup_type == \"hourly\", \"%-I:%M %p, \", \"\")\n ~ \"\
%B %-d, %Y\"\n )\n}}\n{# HourlyBackup: Monday, 3:04 PM, January 2, 2006\
\ #}\n{# DailyBackup: Monday, January 2, 2006 #}\n"
backup_action:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
- if:
- condition: template
value_template: '{{ backup_action | length > 0 }}'
then:
- service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
else:
- alias: Creating a partial backup (default action)
service: auto_backup.backup
data:
name: '{{ name }}'
password: '{{ password }}'
keep_days: '{{ keep_days }}'
include_folders:
- config
mode: single
variables:
password: ''
enable_hourly: true
enable_daily: true
enable_weekly: true
enable_monthly: false
enable_yearly: false
use_action_hourly: true
- id: '1718129262036'
alias: 🏊🏻Bomba Piscina Dia
description: ''
use_blueprint:
path: PVExcessControl/pv_excess_control.yaml
input:
automation_id: automation.new_automation_3
grid_voltage: 230
pv_power: sensor.emoncms_solar
export_power: sensor.emoncms_export_power_positive
load_power: sensor.emoncms_use
actual_power: sensor.bomba_piscina_switch_0_power
power_toggle_margin: 10
appliance_switch: switch.bomba_piscina_switch_0
inverter_limit: 0
- id: '1718180786151'
alias: 💡Luz Corredor auto
description: ''
use_blueprint:
path: Blackshome/sensor-light.yaml
input:
motion_trigger:
- binary_sensor.bthome_sensor_9179_motion
- binary_sensor.corredor_superior_corredor_superior_motion_alarm
light_switch:
entity_id:
- light.shellyplus2pm_c82e180d5f10_switch_1
include_sun: sun_enabled
ambient_light_sensor: sensor.shelly_b_0114_illuminance
include_ambient: ambient_enabled
- id: '1718181298382'
alias: 💡Luz Exterior Auto
description: ''
use_blueprint:
path: Blackshome/sensor-light.yaml
input:
motion_trigger:
- binary_sensor.shelly_b_0114_window
light_switch:
entity_id: light.exterior
time_delay: 10
include_sun: sun_enabled
night_lights_conditions: []
- id: '1718533356578'
alias: Update Coopernico Prices
description: ''
trigger:
- platform: time_pattern
minutes: /5
condition: []
action:
- service: homeassistant.update_entity
data: {}
target:
entity_id: sensor.coopernico_prices
- service: homeassistant.update_entity
data: {}
target:
entity_id: sensor.coopernico_injection
mode: single
- id: '1718718997708'
alias: Solcast update
description: ''
trigger:
- platform: template
value_template: "{% set nr = as_datetime(state_attr('sun.sun','next_rising'))\
\ | as_local %} {% set ns = as_datetime(state_attr('sun.sun','next_setting'))\
\ | as_local %} {% set api_request_limit = 10 %} {% if nr > ns %}\n {% set\
\ nr = nr - timedelta(hours = 24) %} \n{% endif %} {% set hours_difference =\
\ (ns - nr) %} {% set interval_hours = hours_difference / api_request_limit\
\ %} {% set ns = namespace(match = false) %} {% for i in range(api_request_limit)\
\ %}\n {% set start_time = nr + (i * interval_hours) %}\n {% if ((start_time\
\ - timedelta(seconds=30)) <= now()) and (now() <= (start_time + timedelta(seconds=30)))\
\ %}\n {% set ns.match = true %}\n {% endif %}\n{% endfor %} {{ ns.match\
\ }}"
condition:
- condition: sun
before: sunset
after: sunrise
action:
- delay:
seconds: '{{ range(30, 360)|random|int }}'
- service: solcast_solar.update_forecasts
data: {}
mode: single
- id: '1718905487958'
alias: 💡Luz Escadas Superior Auto
description: ''
use_blueprint:
path: Blackshome/sensor-light.yaml
input:
light_switch:
entity_id: light.luzes_sala_superior_channel_1
motion_trigger:
- binary_sensor.motion_sensor_z_wave_plus_motion_sensor_z_wave_plus_motion_alarm
include_sun: sun_enabled
include_ambient: ambient_disabled
ambient_light_sensor: sensor.motion_sensor_z_wave_plus_motion_sensor_z_wave_plus_luminance
ambient_light_options: ambient_light_option_enabled
- id: '1728665169529'
alias: 🔋UPS - Notification
description: ''
triggers:
- entity_id:
- sensor.mclima_ups_informacao_do_estado
- sensor.net_ups_informacao_do_estado
id: battery
trigger: state
for:
hours: 0
minutes: 1
seconds: 0
to: OB DISCHRG
- entity_id:
- sensor.mclima_ups_informacao_do_estado
- sensor.net_ups_informacao_do_estado
to: OL CHRG
id: online
trigger: state
- entity_id:
- sensor.mclima_ups_informacao_do_estado
- sensor.net_ups_informacao_do_estado
id: replace_battery
trigger: state
for:
hours: 0
minutes: 5
seconds: 0
to: ALARM OL RB
- entity_id:
- sensor.mclima_ups_informacao_do_estado
- sensor.net_ups_informacao_do_estado
id: replace_battery
trigger: state
for:
hours: 0
minutes: 5
seconds: 0
to: ALARM OL CHRH RB
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: battery
sequence:
- action: notify.mobile_app_glphone
data:
message: A UPS está em modo de bateria!!! 🔋
title: 🚨Energia
data:
push:
interruption-level: time-sensitive
sound:
name: default
critical: 1
volume: 1
- conditions:
- condition: trigger
id: online
sequence:
- action: notify.mobile_app_glphone
data:
message: A UPS já está online.🔋⚡
title: ✅Energia
- conditions:
- condition: trigger
id:
- replace_battery
sequence:
- action: notify.mobile_app_glphone
data:
title: ❗Trocar baterias na UPS.❗
message: As baterias da UPS têm de ser substituías.
mode: single
- id: '1728983716594'
alias: Ventilador Cave Solar
description: ''
use_blueprint:
path: PVExcessControl/pv_excess_control.yaml
input:
automation_id: automation.ventilador_cave
appliance_priority: 2
pv_power: sensor.emoncms_solar
export_power: sensor.emoncms_export_power_positive
load_power: sensor.emoncms_use
appliance_switch: switch.ventilador_cave_switch
appliance_switch_interval: 2
actual_power: sensor.ventilador_cave_switch_0_power
defined_current: 0.2
- id: '1730368547136'
alias: ♨️ Bomba de Calor Power MQTT Publish
description: ''
triggers:
- trigger: time_pattern
seconds: /10
enabled: true
conditions: []
actions:
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/heating
payload: '"{{ states(''sensor.hpsu_can_heating_emoncms'') }}"'
- action: mqtt.publish
metadata: {}
data:
qos: '2'
topic: homeassistant/sensor/dhw
payload: '"{{ states(''sensor.hpsu_can_dhw_emoncms'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/t_outside
payload: '"{{ states(''sensor.hpsu_can_outside_temperature'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/target_room_temp
payload: '"{{ states(''sensor.hspu_can_target_room_emoncms'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/bomba_de_calor_flow_rate
payload: '"{{ states(''sensor.hpsu_can_flow_rate'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/thermal_power
payload: '"{{ states(''sensor.hpsu_can_thermal_power_2'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/flow_temperature_tv
payload: '"{{ states(''sensor.hpsu_can_flow_temperature_tv'') }}"'
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/flow_return_temperature_heating
payload: '"{{ states(''sensor.hpsu_can_return_temperature_heating'') }}"'
mode: single
- id: '1732289985472'
alias: MQTT Publish
description: ''
triggers:
- trigger: state
entity_id:
- sensor.bmw_x1_charging_w_2
id: '1'
- trigger: state
entity_id:
- sensor.bmw_i4_charging_w
id: '2'
conditions: []
actions:
- if:
- condition: trigger
id:
- '1'
then:
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/ev/bmwx1_charging_w
payload: '"{{ states(''sensor.bmw_x1_charging_w_2'') | float(0) | round(0)
}}"'
- if:
- condition: trigger
id:
- '2'
then:
- action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: '2'
topic: homeassistant/sensor/ev/bmwi4_charging_w
payload: '"{{ states(''sensor.bmw_i4_charging_w'') | float(0) | round(0) }}"'
mode: single
- id: '1742729233913'
alias: 'Telegram Bot: Conversation with Assist'
description: ''
use_blueprint:
path: marc-romu/telegram-bot--conversation.yaml
input:
conversation_agent: conversation.chatgpt
- id: '1742733934795'
alias: 'OpenAI Daily: Environmental Notification'
description: ''
triggers:
- at: 08:05:00
trigger: time
- at: '12:40:00'
trigger: time
- at: '18:30:00'
trigger: time
conditions: []
actions:
- alias: 'Call a service ''Weather: Get Forecast'''
action: weather.get_forecasts
target:
entity_id: weather.forecast_home
data:
type: daily
response_variable: daily_forecast
- data:
agent_id: conversation.chatgpt
text: '"Para esta tarefa, es um consultor meteorológico e es responsavel por
garantir a qualidade do ar no interior da casa. Please provide your thoughts
on our indoor air quality as it relates to the weather outside and our current
heating / cooling system settings. Podes e deves usar um tom humorista. Podes
usar emojis. Responde em portugues de portugal sem gerúndio. \_ Current time
{{now()}} Current thermostat setting {{states(''select.hpsu_can_target_room_1_temperature'')}}
Current Home temperature {{states(''sensor.emoncms_home_temperature'')}} °C
Current Home average temperature is {{states(''sensor.casa_temperatura_media'')}}
°C Current Home average humidity is {{states(''sensor.casa_humidade_media_relativa'')}}
% Exterior Weather Data Temperature is {{ states(''sensor.bthome_sensor_6a2b_temperature'')
}} °C Exterior Feels like temperature is {{ states(''sensor.home_temperatura_aparente'')
}} °C Exterior Weather Data Humidity is {{ states(''sensor.bthome_sensor_6a2b_humidity'')
}} % Current Rain Intensity {{ states(''sensor.home_precipitacao'') }} mm/h
Forecasted Conditions for Today {{states(''sensor.home_condicao_dia_0'')}}
Forecasted High Tempterature for Today {{states(''sensor.home_temperatura_max_realfeel_dia_0'')}}
°C Forecasted Low Temperature for Today {{states(''sensor.home_temperatura_min_realfeel_dia_0'')}}
°C'
language: pt-pt
enabled: true
response_variable: agent
action: conversation.process
- action: telegram_bot.send_message
metadata: {}
data:
title: Qualidade do Ar em Casa
message: '{{agent.response.speech.plain.speech}}'
mode: single
- id: '1744301274357'
alias: 🏊🏻 Automação Bomba Piscina
description: ''
triggers:
- trigger: numeric_state
entity_id:
- sensor.potencia_emonpi_import_export_media_5_minutos
below: -750
id: 'ON'
- trigger: numeric_state
entity_id:
- sensor.potencia_emonpi_import_export_media_5_minutos
id: 'OFF'
above: 750
conditions:
- condition: sun
after: sunrise
before: sunset
actions:
- if:
- condition: trigger
id:
- 'ON'
then:
- type: turn_on
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- type: turn_on
device_id: 1cb87651e79e117ef2610fc7e5c6a170
entity_id: d1b3ca4d6a019622064ef94336bbd650
domain: switch
- if:
- condition: trigger
id:
- 'OFF'
then:
- type: turn_off
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- type: turn_off
device_id: 1cb87651e79e117ef2610fc7e5c6a170
entity_id: d1b3ca4d6a019622064ef94336bbd650
domain: switch
mode: single
- id: '1744308459186'
alias: 🏊🏻 Bomba piscina botão
description: ''
triggers:
- device_id: e6ae30b2d7855ae2d2b83b4497674bfb
domain: bthome
type: button
subtype: press
trigger: device
conditions: []
actions:
- type: toggle
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
mode: single
- id: '1744915008704'
alias: 'OpenAI Daily: Piscina'
description: ''
triggers:
- at: '20:30:00'
trigger: time
conditions: []
actions:
- data:
agent_id: conversation.chatgpt
text: Para esta tarefa, es um consultor de piscinas e queres garantir sempre
que a piscina está limpa e pronta a usar. Mostra quando vai ser iniciada a
filtragem da noite. Calcula se a horas de filtragem são suficientes, usa os
dados que são enviados. Podes e deves usar um tom humorista. Podes usar emojis.
Responde em portugues de portugal sem gerúndio. \_ Current time {{now()}}
tempo que a bomba da piscina esteve a trabalhar em {{states('sensor.duracao_filtragem_piscina_diario')}}
tempo que o aquecimento da piscina esteve a funcionar {{states('sensor.duracao_aquecimento_piscina_diario')}} temperatura
da piscina {{states('sensor.bomba_piscina_temperature')}} tempo que falta
filtrar a piscina {{states('sensor.pool_pump_remaining_time')}} horario que
vai ser iniciada a filtragem de noite {{states('sensor.bomba_piscina_noite_horario')}} Quantidade
maxima em minutos que a piscina filtra por dia, tranforma em horas {{states('input_number.pool_pump_duration_lower_threshold')}} Energia
gasta pela bomba da piscina {{states('sensor.energia_emonpi_piscina_use_total_kwhd')}}
A bomba da piscina tem uma potencia de 1,5 CV. o volume da piscina é de 66
metros cubicos. calcula se a tempo de filtragem foi suficiente.
language: pt-pt
enabled: true
response_variable: agent
action: conversation.process
- action: telegram_bot.send_message
metadata: {}
data:
title: Piscina
message: '{{agent.response.speech.plain.speech}}'
mode: single
- id: '1744969812713'
alias: Pool Pump Solar Optimizationsdsdsd
description: Gerencia a bomba da piscina priorizando energia solar e garantindo
filtragem diária
triggers:
- minutes: /15
trigger: time_pattern
- entity_id: sensor.solar_power
trigger: state
- at: 08:00:00
trigger: time
- at: '22:00:00'
trigger: time
conditions:
- condition: template
value_template: '{{ not is_state(''binary_sensor.pool_pump_malfunction'', ''on'')
}}
'
actions:
- target:
entity_id: sensor.pool_pump_daily_runtime
action: homeassistant.update_entity
- choose:
- conditions:
- condition: time
after: 08:00:00
before: '22:00:00'
- condition: template
value_template: '{{ states(''sensor.solar_power'')|float > min_solar_power
}}
'
sequence:
- target:
entity_id: switch.pool_pump
action: switch.turn_on
- target:
entity_id: input_number.pool_pump_priority
data:
value: 1
action: input_number.set
- conditions:
- condition: time
after: '22:00:00'
before: 08:00:00
- condition: template
value_template: '{% set daily_runtime = states(''sensor.pool_pump_daily_runtime'')|float
%} {% set tomorrow_forecast = states(''sensor.tomorrow_solar_forecast'')|float
%} {{ daily_runtime < min_daily_hours and tomorrow_forecast < 0.7 }}
'
sequence:
- target:
entity_id: switch.pool_pump
action: switch.turn_on
- target:
entity_id: input_number.pool_pump_priority
data:
value: 2
action: input_number.set
default:
- target:
entity_id: switch.pool_pump
action: switch.turn_off
variables:
min_daily_hours: 5
min_solar_power: 1000
pump_power: 800
mode: restart
- id: '1745084857676'
alias: 💡Candeeiros Ligar/Desligar
description: ''
triggers:
- device_id: e8a6c706997d87b98183e26e7598ae8b
domain: shelly
type: single
subtype: button
trigger: device
- device_id: d686deeba13232cfa6ab008fa8c80dc0
domain: bthome
type: button_1
subtype: press
trigger: device
conditions: []
actions:
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: light.candeeiros_sala_inferior
mode: single
- id: '1745085627460'
alias: 🏡Botão Sala Portão
description: ''
triggers:
- device_id: e8a6c706997d87b98183e26e7598ae8b
domain: shelly
type: triple
subtype: button
trigger: device
- device_id: d686deeba13232cfa6ab008fa8c80dc0
domain: bthome
type: button_2
subtype: long_press
trigger: device
conditions: []
actions:
- type: toggle
device_id: c943a1b7851c56da555470902baf07a1
entity_id: 9e3a402090766bb2d314909658c4ee90
domain: switch
mode: single
- id: '1745085892451'
alias: 'Desligar tudo Sala '
description: ''
triggers:
- device_id: e8a6c706997d87b98183e26e7598ae8b
domain: shelly
type: long
subtype: button
trigger: device
- device_id: d686deeba13232cfa6ab008fa8c80dc0
domain: bthome
type: button_1
subtype: long_press
trigger: device
conditions: []
actions:
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id:
- light.sala_inferior
- action: media_player.turn_off
metadata: {}
data: {}
target:
device_id: a5dd3a6582b27b004323486771a64137
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.shellyplus2pm_c82e180d5f10_switch_1
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.shellyplus2pm_c82e180d5f10_switch_1
mode: single
- id: '1745225774697'
alias: ♨️ Heat Pump Error
description: ''
triggers:
- trigger: state
entity_id:
- sensor.hpsu_can_error_code
from: No Error
id: Error
- trigger: state
entity_id:
- sensor.hpsu_can_error_code
id: ok
to: No Error
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- Error
sequence:
- action: telegram_bot.send_message
metadata: {}
data:
message: 'A bomba de calor está em Erro.
*ERROR:* {{states(''sensor.hpsu_can_error_code'') }}
'
title: ❌ Error Bomba de Calor ❌
- conditions:
- condition: trigger
id:
- ok
sequence:
- action: telegram_bot.send_message
metadata: {}
data:
message: 'A bomba de calor está em {{states(''sensor.hpsu_can_error_code'')
}}
'
title: ✅ OK Bomba de Calor ✅
mode: single
- id: '1745483501867'
alias: ♨️ Hot Water Production Best price
description: ''
triggers:
- at: sensor.aquecimento_agua_noite
trigger: time
conditions:
- type: is_temperature
condition: device
device_id: dbbed3fc0849f129296b804033d10b74
entity_id: 869298e5bb3f09e40bb45c5ab1d10091
domain: sensor
below: 45
actions:
- device_id: dbbed3fc0849f129296b804033d10b74
domain: select
entity_id: aa534d8176126b2ad55749fb0cc47992
type: select_option
option: 'On'
mode: single
- id: '1745509795599'
alias: '[🏡] Botão shelly Abrir Portão'
description: ''
triggers:
- device_id: f3ec058f8ec36d128a8eaf0dd7286320
domain: bthome
type: button
subtype: press
trigger: device
conditions: []
actions:
- type: toggle
device_id: c943a1b7851c56da555470902baf07a1
entity_id: 9e3a402090766bb2d314909658c4ee90
domain: switch
mode: single
- id: '1745945849501'
alias: '🪟Botão Sala Estore1 '
description: ''
triggers:
- device_id: e8a6c706997d87b98183e26e7598ae8b
domain: shelly
type: double
subtype: button
trigger: device
conditions: []
actions:
- action: cover.toggle
metadata: {}
data: {}
target:
entity_id: cover.estore1_cover_0
mode: single
- id: '1746728025652'
alias: 🏊🏻Atualizar pH filtrado com bomba ligada
description: ''
triggers:
- entity_id:
- switch.bomba_piscina_switch_0
to: 'on'
trigger: state
id: bomba
from: 'off'
- entity_id: sensor.ph_corrigido
trigger: state
enabled: true
- trigger: time_pattern
minutes: /5
conditions:
- condition: state
entity_id: switch.bomba_piscina_switch_0
state: 'on'
for:
hours: 0
minutes: 10
seconds: 0
- condition: template
value_template: '{{ states(''sensor.ph_corrigido'') not in [''unavailable'', ''unknown'']
}}'
actions:
- target:
entity_id:
- input_number.ph_sensor_filtrado
data:
value: '{{ states(''sensor.ph_sensor'') | float(2) }}'
action: input_number.set_value
- target:
entity_id: input_number.ph_filtrado
data:
value: '{{ states(''sensor.ph_corrigido'') | float(2) }}'
action: input_number.set_value
mode: single
- id: '1746780173077'
alias: 🏊🏻Atualizar Temperatura Piscina filtrado com bomba de aquecimento ligada
description: ''
triggers:
- trigger: time_pattern
minutes: /5
conditions:
- condition: state
entity_id: switch.aquecimento_piscina_channel_1
state: 'on'
for:
hours: 0
minutes: 10
seconds: 0
- condition: template
value_template: '{{ states(''sensor.bomba_piscina_temperature'') not in [''unavailable'',
''unknown''] }}'
actions:
- target:
entity_id:
- input_number.temperatura_piscina_filtrado
data:
value: '{{ states(''sensor.bomba_piscina_temperature'') | float(2) }}'
action: input_number.set_value
mode: single
- id: '1747047245923'
alias: New automation
description: ''
triggers:
- trigger: time_pattern
seconds: '30'
conditions: []
actions:
- action: weather.get_forecasts
metadata: {}
data:
type: hourly
target:
entity_id: weather.forecast_home
response_variable: forecast_data
mode: single
- id: '1747047675015'
alias: Atualiza média de nuvens nas próximas 8h
description: ''
triggers:
- hours: /1
trigger: time_pattern
actions:
- target:
entity_id: weather.forecast
data:
type: hourly
response_variable: forecast
action: weather.get_forecasts
- variables:
clouds: "{{ forecast['weather.forecast']['forecast'][:8]\n | map(attribute='cloud_coverage')\n\
\ | reject('none')\n | list }}\n"
avg_clouds: "{% if clouds | length > 0 %}\n {{ (clouds | map('float') | sum\
\ / clouds | length)\n | round(1) }}\n{% else %}\n 0\n{% endif %}\n"
- data:
entity_id: input_number.average_cloud_cover
value: '{{ avg_clouds }}'
action: input_number.set_value
- id: '1747048335609'
alias: Atualiza média de nuvens entre as 10:00 e as 18:00
description: ''
triggers:
- hours: /1
trigger: time_pattern
conditions: []
actions:
- if:
- condition: time
after: 00:00:00
before: '19:00:00'
then:
- target:
entity_id: weather.forecast
data:
type: hourly
response_variable: forecast
action: weather.get_forecasts
- variables:
entries: '{{ forecast[''weather.forecast''][''forecast''] }}
'
start: '{{ utcnow().replace(hour=10, minute=0, second=0, microsecond=0).isoformat(sep=''T'')
}}
'
end: '{{ utcnow().replace(hour=18, minute=0, second=0, microsecond=0).isoformat(sep=''T'')
}}
'
clouds: "{{ entries\n | selectattr('datetime', '>=', start)\n | selectattr('datetime',\
\ '<=', end)\n | map(attribute='cloud_coverage')\n | reject('none')\n\
\ | list }}\n"
avg_clouds: "{% if clouds | length > 0 %}\n {{ (clouds | map('float') | sum\
\ / clouds | length) | round(1) }}\n{% else %}\n 0\n{% endif %}\n"
- data:
entity_id: input_number.average_cloud_cover_piscina
value: '{{ avg_clouds }}'
action: input_number.set_value
else:
- target:
entity_id: weather.forecast
data:
type: hourly
response_variable: forecast
action: weather.get_forecasts
- variables:
entries: '{{ forecast[''weather.forecast''][''forecast''] }}
'
start: '{{ (utcnow() + timedelta(days=1)).replace(hour=10, minute=0, second=0,
microsecond=0).isoformat(sep=''T'') }}
'
end: '{{ (utcnow() + timedelta(days=1)).replace(hour=18, minute=0, second=0,
microsecond=0).isoformat(sep=''T'') }}
'
clouds: "{{ entries\n | selectattr('datetime', '>=', start)\n | selectattr('datetime',\
\ '<=', end)\n | map(attribute='cloud_coverage')\n | reject('none')\n\
\ | list }}\n"
avg_clouds: "{% if clouds | length > 0 %}\n {{ (clouds | map('float') | sum\
\ / clouds | length) | round(1) }}\n{% else %}\n 0\n{% endif %}\n"
- data:
entity_id: input_number.average_cloud_cover_piscina
value: '{{ avg_clouds }}'
action: input_number.set_value
mode: single
- id: '1747216234443'
alias: 🏊🏻 Actualizar Horario Bomba Piscina Noite
description: ''
triggers:
- trigger: time_pattern
minutes: /30
hours: /1
- trigger: state
entity_id:
- sensor.bomba_piscina_noite_horario
conditions:
- condition: time
after: '13:00:00'
before: '21:00:00'
actions:
- action: input_datetime.set_datetime
metadata: {}
data:
datetime: "{% set horario = states('sensor.bomba_piscina_noite_horario') %}\n\
{% if horario not in ['unknown', 'unavailable', '', None] %}\n {{ as_datetime(horario).astimezone().isoformat()\
\ }}\n{% else %}\n {{ (now() + timedelta(days=1)).replace(hour=2, minute=0,\
\ second=0, microsecond=0).isoformat() }}\n{% endif %}"
target:
entity_id: input_datetime.horario_piscina_noite
mode: single
- id: '1747335289002'
alias: 🏊🏻Bomba Peristaltica
description: ''
triggers:
- trigger: state
entity_id:
- switch.bomba_piscina_switch_0
- trigger: time_pattern
minutes: /5
conditions:
- condition: device
type: is_on
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
actions:
- if:
- condition: device
type: is_on
device_id: e5f1b9b1d10308b32ef8f69bc0d20d74
entity_id: 43f5cd2f7257fed3e55788df58ce96de
domain: switch
- condition: numeric_state
entity_id: sensor.ph_corrigido_filtrado
above: 7.5
then:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id:
- switch.bomba_peristaltica_switch_0
else:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id:
- switch.bomba_peristaltica_switch_0
mode: single
- id: '1748274888683'
alias: 🪟Abrir Estore 1
description: ''
triggers:
- device_id: d686deeba13232cfa6ab008fa8c80dc0
domain: bthome
type: button_3
subtype: press
trigger: device
conditions: []
actions:
- if:
- condition: or
conditions:
- condition: device
device_id: cfd18037256cb019fa29781e93e644d7
domain: cover
entity_id: 8749320a26b0fe2753d119e46c5cba27
type: is_opening
- condition: device
device_id: cfd18037256cb019fa29781e93e644d7
domain: cover
entity_id: 8749320a26b0fe2753d119e46c5cba27
type: is_closing
then:
- action: cover.stop_cover
metadata: {}
data: {}
target:
entity_id: cover.estore1_cover_0
else:
- action: cover.open_cover
metadata: {}
data: {}
target:
entity_id: cover.estore1_cover_0
mode: single
- id: '1748276682652'
alias: 🪟Fechar Estore 1
description: ''
triggers:
- device_id: d686deeba13232cfa6ab008fa8c80dc0
domain: bthome
type: button_4
subtype: press
trigger: device
conditions: []
actions:
- if:
- condition: or
conditions:
- condition: device
device_id: cfd18037256cb019fa29781e93e644d7
domain: cover
entity_id: 8749320a26b0fe2753d119e46c5cba27
type: is_opening
- condition: device
device_id: cfd18037256cb019fa29781e93e644d7
domain: cover
entity_id: 8749320a26b0fe2753d119e46c5cba27
type: is_closing
then:
- action: cover.stop_cover
metadata: {}
data: {}
target:
entity_id: cover.estore1_cover_0
else:
- action: cover.close_cover
metadata: {}
data: {}
target:
entity_id: cover.estore1_cover_0
mode: single
- id: ev_gate_sem_starvation
alias: 🚗 EV (cFos) — Só depois da bomba + Vazio 22:0008:00
mode: single
trigger:
- platform: time
at: '22:00:00'
- platform: state
entity_id: switch.bomba_piscina_switch_0
to: 'on'
for: 00:01:00
- platform: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
below: 1
- platform: time
at: 08:00:00
- platform: state
entity_id: switch.bomba_piscina_switch_0
to: 'off'
for: 00:00:10
action:
- variables:
em_vazio: "{{ now().time() >= as_datetime(strptime('22:00:00','%H:%M:%S')).time()\n\
\ or now().time() < as_datetime(strptime('08:00:00','%H:%M:%S')).time()\
\ }}"
pump_on: '{{ is_state(''switch.bomba_piscina_switch_0'',''on'') }}'
pool_done: '{% set m = states(''input_number.piscina_filtracao_min_restantes'')
%} {{ m not in [''unknown'',''unavailable'',''''] and (m|float(0) <= 0) }}'
- choose:
- conditions: '{{ em_vazio or pump_on or pool_done }}'
sequence:
- service: switch.turn_on
target:
entity_id: switch.powerbrain_wallbox_enable_charging
- conditions: '{{ (not em_vazio) and (not pump_on) and (not pool_done) }}'
sequence:
- service: switch.turn_off
target:
entity_id: switch.powerbrain_wallbox_enable_charging
- id: ev_allow_at_22
alias: 🚗 EV (cFos) — Permitir às 22:00
trigger:
- platform: time
at: '22:00:00'
action:
- service: switch.turn_on
target:
entity_id: switch.wallbox_charging_enabled
- id: ev_reapply_gate_at_08
alias: 🚗 EV (cFos) — Reaplicar gate às 08:00
trigger:
- platform: time
at: 08:00:00
action:
- if:
- condition: template
value_template: '{% set pump_on = is_state(''switch.bomba_piscina_switch_0'',''on'')
%} {% set m = states(''input_number.piscina_filtracao_min_restantes'') %}
{% set pool_done = (m not in [''unknown'',''unavailable'',''''] and (m|float(0)
<= 0)) %} {{ not (pump_on or pool_done) }}'
then:
- service: switch.turn_off
target:
entity_id: switch.wallbox_charging_enabled
- id: piscina_cloro_tpo_seconds
alias: Piscina - Cloração TPO por Cobertura (segundos)
trigger:
- platform: time_pattern
seconds: /30
variables:
janela_min: '{{ states(''input_number.piscina_cloro_janela_min'') | int(10) }}'
janela_s: '{{ janela_min * 60 }}'
pct_aberta: '{{ states(''input_number.piscina_pct_cobertura_aberta'') | float(100)
}}'
pct_fechada: '{{ states(''input_number.piscina_pct_cobertura_fechada'') | float(30)
}}'
pct: "{{ pct_fechada if is_state('input_boolean.piscina_cobertura_fechada','on')\n\
\ else pct_aberta }}"
on_s: '{{ (pct/100 * janela_s) | int }}'
ciclo_s: '{{ (now().timestamp() | int) % janela_s }}'
condition:
- condition: state
entity_id: input_boolean.piscina_cloro_tpo_enable
state: 'on'
- condition: state
entity_id: switch.bomba_piscina_switch_0
state: 'on'
action:
- choose:
- conditions: '{{ pct >= 99 }}'
sequence:
- service: switch.turn_on
target:
entity_id: switch.piscina_cloro_permitir_producao
- conditions: '{{ pct <= 1 }}'
sequence:
- service: switch.turn_off
target:
entity_id: switch.piscina_cloro_permitir_producao
- conditions: '{{ ciclo_s < on_s }}'
sequence:
- service: switch.turn_on
target:
entity_id: switch.piscina_cloro_permitir_producao
- conditions: []
sequence:
- service: switch.turn_off
target:
entity_id: switch.piscina_cloro_permitir_producao
mode: single
- id: piscina_cloro_tpo_failsafe
alias: Piscina - Cloração TPO (failsafe OFF)
trigger:
- platform: state
entity_id: switch.bomba_piscina_switch_0
- platform: state
entity_id: input_boolean.piscina_cloro_tpo_enable
- platform: state
entity_id: input_boolean.piscina_cobertura_fechada
action:
- choose:
- conditions:
- condition: or
conditions:
- condition: state
entity_id: switch.bomba_piscina_switch_0
state: 'off'
- condition: state
entity_id: input_boolean.piscina_cloro_tpo_enable
state: 'off'
sequence:
- service: switch.turn_off
target:
entity_id: switch.piscina_cloro_permitir_producao
mode: restart
- id: piscina_vazio_start
alias: 🏊🏻 Piscina - Início vazio 22:00
trigger:
- platform: time
at: '22:00:00'
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
action:
- service: switch.turn_on
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_vazio_stop_por_objetivo
alias: 🏊🏻 Piscina - Paragem no vazio quando completar
trigger:
- platform: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
below: 1
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: time
after: '22:00:00'
before: 08:00:00
action:
- service: switch.turn_off
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_vazio_stop_08
alias: 🏊🏻 Piscina - Paragem às 08:00
trigger:
- platform: time
at: 08:00:00
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
action:
- service: switch.turn_off
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_reset_diario_minutos
alias: 🏊🏻 Piscina - Reset diário minutos (08:00:05)
trigger:
- platform: time
at: 08:00:06
action:
- service: input_number.set_value
target:
entity_id: input_number.piscina_filtracao_min_restantes
data:
value: '{{ states(''sensor.piscina_minutos_recomendados'') | int(480) }}'
- id: piscina_arranque_solar
alias: 🏊🏻 Piscina - Arranque com excedente FV
trigger:
- platform: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
to: 'on'
for: 00:05:00
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
action:
- service: switch.turn_on
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_paragem_solar
alias: 🏊🏻 Piscina - Paragem quando não há excedente ou objetivo cumprido
trigger:
- platform: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
to: 'off'
for: 00:05:00
- platform: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
below: 1
- platform: sun
event: sunset
offset: -00:10:00
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
action:
- service: switch.turn_off
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_arranque_solar_watchdog
alias: 🏊🏻 Piscina - Watchdog arranque FV (*/2min)
trigger:
- platform: time_pattern
minutes: /2
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
- condition: state
entity_id: switch.bomba_piscina_switch_0
state: 'off'
- condition: numeric_state
entity_id: input_number.piscina_filtracao_min_restantes
above: 0
- condition: state
entity_id: binary_sensor.piscina_excedente_fv_bomba
state: 'on'
- condition: sun
after: sunrise
after_offset: 00:15:00
before: sunset
before_offset: -00:15:00
action:
- service: switch.turn_on
target:
entity_id: switch.bomba_piscina_switch_0
- id: piscina_manual_finished
alias: 🏊🏻 Piscina - Manual terminou (voltar ao automático)
mode: single
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.piscina_manual
- platform: state
entity_id: timer.piscina_manual
from: active
to: idle
action:
- service: switch.turn_off
target:
entity_id: switch.bomba_piscina_switch_0
- service: input_boolean.turn_off
target:
entity_id: input_boolean.piscina_override_manual
- id: piscina_manual_watchdog
alias: 🏊🏻 Piscina - Watchdog manual (*/1min)
trigger:
- platform: time_pattern
minutes: /1
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'on'
- condition: not
conditions:
- condition: state
entity_id: timer.piscina_manual
state: active
action:
- service: switch.turn_off
target:
entity_id: switch.bomba_piscina_switch_0
- service: input_boolean.turn_off
target:
entity_id: input_boolean.piscina_override_manual
- id: piscina_sync_restantes_recomendado_menos_corridos
alias: 🏊🏻 Piscina - Restantes = Recomendado Corridos (auto)
trigger:
- platform: state
entity_id:
- sensor.piscina_minutos_recomendados
- sensor.piscina_minutos_on_08_08
- timer.piscina_manual
- platform: homeassistant
event: start
- platform: time
at: 08:00:05
condition:
- condition: state
entity_id: input_boolean.piscina_override_manual
state: 'off'
action:
- variables:
recomendado: '{{ states(''sensor.piscina_minutos_recomendados'') | int(0) }}'
corridos: '{{ states(''sensor.piscina_minutos_on_08_08'') | int(0) }}'
novos: '{{ [recomendado - corridos, 0] | max }}'
- service: input_number.set_value
target:
entity_id: input_number.piscina_filtracao_min_restantes
data:
value: '{{ [novos, 1440] | min }}'
- id: Sincronizar_bomba_piscina_com_bomba_peristaltica
alias: 🏊🏻 Piscina - Sincronizar bomba piscina com bomba peristaltica
description: Liga/Desliga o bomba piscina sempre que a bomba piscina mudar de estado
mode: restart
trigger:
- platform: state
entity_id: switch.bomba_piscina_switch_0
action:
- service: switch.turn_{{ trigger.to_state.state }}
target:
entity_id: switch.bomba_peristaltica_switch_0