Portão automatico com sonoff SV


(Bruno Melo) #1

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.


(Pedro Almeida) #2

Muito obrigado pela partilha.