Boas malta, como já tinha prometido partilhar o meu projecto aqui vai ele, só não partilhei mais cedo por falta de disponibilidade, então cá vai. Eu escolhi o sonoff SV porque este pode ser alimentado desde os 5V ate aos 24v, que normalmente está na media de voltes que os comandos usam.
Então começamos por flashar o sonoff SV conforme tutorial do nosso membro @RodolfoVieira já explicou.
Depois disso vamos alterar o sonoff para dry contact. Vamos então eliminar os seguintes componentes…
https://drive.google.com/file/d/1iSvYaWoJrCBAcpLpG7XrrTXnhgRTYPgP/view?usp=sharing
https://drive.google.com/file/d/1z9imJT1vSEsST-ZLubWMAKGNiGiunlyW/view?usp=sharing
Depois disso temos de fazer um chante nos seguintes contactos.
https://drive.google.com/file/d/1j_63cbYUmsCSJSWmIFpMywcXIWbc0OkD/view?usp=sharing
https://drive.google.com/file/d/1bLlj_9gnzxYNIg_tPVr30_W-sgEz8fo7/view?usp=sharing
Agora temos de abrir o comando do portão e soldar 2 fios aos contactos do botão que queremos usar.
https://drive.google.com/file/d/1YITjlMGVXPemzfPVFMcdp0aAYDl_4mdw/view?usp=sharing
Após isso feito vamos ligar ao sonoff.
https://drive.google.com/file/d/1z20N_EUjRCeELGOCb5dBu2tEK5KRxDg4/view?usp=sharing
Quem quiser ligar um segundo botão ao sonoff que foi o meu caso acabei por seguir este fantastico tutorial do @RodolfoVieira que está cá no nosso forum. Não se esqueçam que também têm de configurar o pulsetime 1 10 que cria um impulso de 1 segundo que reflete o precionar do botão.
Ficando com este aspecto final. Não está muito bonito mas futuramente irei tentar criar uma caixa para ficar mais protegido.
https://drive.google.com/file/d/1iYM9FKGsYnBq5aDRwinqEHwCj6PbA1Ny/view?usp=sharing
Agora vamos as configurações por parte do HA, partindo do principio que já têm configurado o MQTT.
homeassistant:
###############################################################################
# #
# C U S T O M I Z E #
# #
###############################################################################
customize:
switch.abrir_portao_pequeno:
friendly_name: Abrir Portão Pequeno
icon: mdi:garage
switch.abrir_portao_grande:
friendly_name: Abrir Portão Grande
icon: mdi:garage
switch.fechar_portao:
friendly_name: Fechar Portão
icon: mdi:garage
script.portao_pequeno:
friendly_name: Portão Pequeno Automático
icon: mdi:garage
script.portao_grande:
friendly_name: Portão Grande Automático
icon: mdi:garage
binary_sensor.door_window_sensor_158d0002729eba:
friendly_name: Portão de Entrada
icon: mdi:door-open
switch.iluminacao_das_garagens:
friendly_name: Interrutor das Garagens
icon: mdi:power
###############################################################################
# #
# S E N S O R #
# #
###############################################################################
sensor:
- platform: template
sensors:
portao_entrada:
friendly_name: "Portão entrada"
value_template: >-
{% if is_state('binary_sensor.door_window_sensor_158d0002729eba', 'on') %}
Aberto
{% else %}
Fechado
{% endif %}
icon_template: >-
{% if is_state('binary_sensor.door_window_sensor_158d0002729eba', 'on') %}
mdi:garage-open
{% else %}
mdi:garage
{% endif %}
###############################################################################
# #
# S W I T C H S O N O F F #
# #
###############################################################################
switch:
- platform: mqtt
name: "Abrir portão grande"
state_topic: "stat/comandoportao/POWER"
command_topic: "cmnd/comandoportao/power"
availability_topic: "tele/comandoportao/LWT"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
payload_on: "ON"
payload_off: "OFF"
- platform: mqtt
name: "Abrir portão pequeno"
state_topic: "stat/comandoportao/POWER2"
command_topic: "cmnd/comandoportao/power2"
availability_topic: "tele/comandoportao/LWT"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
payload_on: "ON"
payload_off: "OFF"
- platform: mqtt
name: "Fechar Portão"
state_topic: "stat/comandoportao/POWER2"
command_topic: "cmnd/comandoportao/power2"
availability_topic: "tele/comandoportao/LWT"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
payload_on: "ON"
payload_off: "OFF"
- platform: mqtt
name: "Iluminação das Garagens"
state_topic: "stat/iluminacao_garagem/POWER"
command_topic: "cmnd/iluminacao_garagem/power"
availability_topic: "tele/iluminacao_garagem/LWT"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
payload_on: "ON"
payload_off: "OFF"
###############################################################################
# #
# S C R I P T S #
# #
###############################################################################
script:
portao_grande:
sequence:
- service: switch.turn_on
entity_id: switch.abrir_portao_grande
- delay: '00:00:50'
- service: switch.turn_on
entity_id: switch.fechar_portao
portao_pequeno:
sequence:
- service: switch.turn_on
entity_id: switch.abrir_portao_pequeno
- delay: '00:00:50'
- service: switch.turn_on
entity_id: switch.fechar_portao
portao_30:
sequence:
- service: switch.turn_on
entity_id: switch.abrir_portao_pequeno
- delay: '00:00:06'
- service: switch.turn_on
entity_id: switch.fechar_portao
###############################################################################
# #
# A U T O M A Ç Õ E S #
# #
###############################################################################
automation:
#automation zigbee switch
- alias: Interruptor para abrir portao pequeno single
initial_state: true
trigger:
- platform: event
event_type: xiaomi_aqara.click
event_data:
entity_id: binary_sensor.switch_158d00015aa37d
click_type: single
action:
- service: switch.toggle
data:
entity_id: switch.abrir_portao_pequeno
- alias: Interruptor para abrir portao grande double
initial_state: true
trigger:
- platform: event
event_type: xiaomi_aqara.click
event_data:
entity_id: binary_sensor.switch_158d00015aa37d
click_type: double
action:
- service: switch.toggle
data:
entity_id: switch.abrir_portao_grande
- alias: Interruptor para abrir portão sair a pé
initial_state: true
trigger:
- platform: event
event_type: xiaomi_aqara.click
event_data:
entity_id: binary_sensor.switch_158d00015aa37d
click_type: long_click_press
action:
- service: script.turn_on
data:
entity_id: script.portao_30
#automation ilumination garage
- alias: Ligar Iluminação da garagem
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
from: 'off'
to: 'on'
condition:
condition: or
conditions:
- condition: sun
after: sunset
after_offset: "+00:15:00"
- condition: sun
before: sunrise
action:
- service: switch.turn_on
entity_id: switch.iluminacao_das_garagens
- alias: Desligar Iluminação da garagem
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
to: 'off'
for:
minutes: 2
action:
- service: switch.turn_off
data_template:
entity_id: switch.iluminacao_das_garagens
#portao esquecido aberto
- alias: Fechar portão esquecido aberto de manha
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
to: 'on'
for:
minutes: '6'
condition:
- condition: time
after: '07:00:00'
before: '07:40:00'
action:
service: switch.turn_on
entity_id: switch.fechar_portao
- alias: Fechar portão esquecido aberto noite
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
to: 'on'
for:
minutes: '6'
condition:
- condition: time
after: '21:00:00'
before: '23:00:00'
action:
service: switch.turn_on
entity_id: switch.fechar_portao
#notificações
- alias: Abertura do portão pequeno
initial_state: false
trigger:
platform: state
entity_id: script.portao_pequeno
from: 'off'
to: 'on'
action:
service: notify.telegram
data:
message: 'Portão pequeno foi aberto'
- alias: Abertura do portão grande
initial_state: false
trigger:
platform: state
entity_id: script.portao_grande
from: 'off'
to: 'on'
action:
service: notify.telegram
data:
message: 'Portão grande foi aberto'
- alias: Portão Aberto
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
from: 'off'
to: 'on'
action:
service: notify.telegram
data:
message: 'Portão Está Aberto'
- alias: Portão Fechado
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.door_window_sensor_158d0002729eba
from: 'on'
to: 'off'
action:
service: notify.telegram
data:
message: 'Portão Está Fechado'
#desligar notificações
- alias: Desligar Notificações portão quando em casa
initial_state: true
trigger:
- platform: state
entity_id: device_tracker.bruno_melo
from: 'not_home'
to: 'home'
condition:
- condition: time
after: '06:50:00'
before: '07:59:00'
action:
- service: automation.turn_off
entity_id:
- automation.portao_aberto
- automation.portao_fechado
- alias: Ligar Notificações portão quando fora casa
initial_state: true
trigger:
- platform: state
entity_id: device_tracker.bruno_melo
from: 'home'
to: 'not_home'
condition:
- condition: time
after: '08:00:00'
action:
- service: automation.turn_on
entity_id:
- automation.portao_aberto
- automation.portao_fechado
###############################################################################
# #
# G R O U P S #
#
###############################################################################
group:
Abrir e Fechar Manualmente:
control: hidden
entities:
- switch.abrir_portao_grande
- switch.abrir_portao_pequeno
- switch.fechar_portao
Abrir e Fechar Automático 40s:
control: hidden
entities:
- script.portao_grande
- script.portao_pequeno
Interruptor Abrir Fechar Portão:
control: hidden
entities:
- automation.interruptor_para_abrir_portao_pequeno_single
- automation.interruptor_para_abrir_portao_grande_double
- automation.interruptor_para_abrir_portao_sair_a_pe
Notificar Abertura Portão:
control: hidden
entities:
- automation.portao_aberto
- automation.portao_fechado
- automation.abertura_do_portao_pequeno
- automation.abertura_do_portao_grande
- automation.desligar_notificacoes_portao_quando_em_casa
- automation.ligar_notificacoes_portao_quando_fora_casa
Automação Portão:
control: hidden
entities:
- automation.fechar_portao_esquecido_aberto_de_manha
- automation.fechar_portao_esquecido_aberto_noite
- automation.ligar_iluminacao_da_garagem
- automation.desligar_iluminacao_da_garagem
Interruptor do Portão:
control: hidden
entities:
- binary_sensor.switch_158d00015aa37d
Interruptor das Garagens:
control: hidden
entities:
- switch.iluminacao_das_garagens
Estado do Portão Entrada:
control: hidden
entities:
- binary_sensor.door_window_sensor_158d0002729eba
portao:
view: yes
icon: mdi:gate
name: Portão
entities:
- group.estado_do_portao_entrada
- group.abrir_e_fechar_manualmente
- group.abrir_e_fechar_automatico_40s
- group.interruptor_das_garagens
- group.interruptor_abrir_fechar_portao
- group.notificar_abertura_portao
- group.interruptor_do_portao
- group.automacao_portao
Malta, esqueci-me do lovelace, aqui está ele.
- badges: []
cards:
- entities:
- entity: sensor.portao_entrada
theme: Backend-selected
title: Portão de Entrada
type: glance
- entities:
- switch.abrir_portao_grande
- switch.abrir_portao_pequeno
- switch.fechar_portao
title: Abrir e Fechar Manualmente
type: glance
- entities:
- script.portao_grande
- script.portao_pequeno
title: Abrir e Fechar Automático 40s
type: glance
- entities:
- entity: switch.iluminacao_das_garagens
icon: 'mdi:lightbulb-on'
name: Iluminação
tap_action:
action: toggle
title: Garagens
type: glance
- columns: 2
entities:
- automation.portao_aberto
- automation.portao_fechado
- automation.abertura_do_portao_pequeno
- automation.abertura_do_portao_grande
- automation.desligar_notificacoes_portao_quando_em_casa
- automation.ligar_notificacoes_portao_quando_fora_casa
title: Notificar Abertura Portão
type: glance
- columns: 2
entities:
- automation.fechar_portao_esquecido_aberto_de_manha
- automation.fechar_portao_esquecido_aberto_noite
- automation.ligar_iluminacao_da_garagem
- automation.desligar_iluminacao_da_garagem
title: Automação Portão
type: glance
icon: 'mdi:gate'
panel: false
path: Portão
title: Portão
E como queria saber o estado do portão coloquei um sensor da xiaomi no mesmo. Depois acabei por colocar um sonoff t1 na garagem que ao abrir o portão acende as luzes da garagem.
Acho que não me estou a esquecer de nada.
Espero que este projeto vos inspire.