Sensor binário + notificações

Olá a todos.

Tenho 2 sensores para portas (que tenho na garagem) RF 433Mhz que funcionam com o Tasmota Gateway - e funcionam bem.
Estes são os sensores:

O sensor de porta envia 2 códigos - um quando as duas partes estão juntas ( porta fechada) e outro quando são separados (quando a porta abre).

Configurei como um sensor binário:
binary_sensor.yaml :

# porta garagem jardim
- platform: mqtt
  state_topic: "tele/sonoffBridge/RESULT"
  name: "Porta_Garagem_Jardim"
  value_template: '{{value_json.RfReceived.Data}}'
  payload_on: '59880A'
  payload_off: '59880E'
  device_class: garage_door

O primeiro objectivo era que me enviasse uma notificação para o telemovel (via telegram) quando a porta fosse aberta.

E no automations.yaml :

 # Avisar se porta da garagem do jardim foi aberta
- alias: Porta garagem Jardim aberta
  trigger:
    - platform: state
      entity_id: binary_sensor.Porta_Garagem_Jardim
      from: 'off'
      to: 'on'
  action:
    - service: notify.notificacao
      data:
        message: 'Porta Garagem Jardim aberta'

Já tentei, o sonofff bridge recebe o código, mas nada de notificação.

A segunda parte era:

  • Tenho a luz da garagem a acender cada vez que é detetado movimento. A minha intenção era, quando a porta da garagem estivesse aberta (payload_on), apesar de detetar movimento, não acendia a luz.

Já tentei várias combinações, mas nada…

Agradecido

@feiticeir0 quando publicares código ou logs deves fazê-lo como texto. Depois deves sublinhar o texto que queres transformar em código e clicar no icone </>. Deverá existir um espaço antes e outro depois do bloco de código para que funcione correctamente. O código em Yaml é muito sensível aos espaçamentos e sem o código devidamente formatado não te poderemos ajudar. E nos logs há pormenores que só devidamente formatados se conseguem ver.
Além disso, existem regras no fórum que devem ser cumpridas e que podes ler nos nossos Termos do Serviço/Regras e na FAQ.`

Vê um exemplo:

1 Like

Primeiro objectivo tenta lá:

# porta garagem jardim
  - alias: Campainha da escada
    initial_state: true
    trigger:
      platform: mqtt
      topic: tele/sonoffBridge/RESULT
    condition:
      condition: template
      value_template: '{{ trigger.payload_json.RfReceived.Data == "59880A" }}'  
    action:
      - service: notify.notificacao
        data:
          message: 'Porta Garagem Jardim aberta'

Em relação ao segundo objectivo o que já tentaste?

1 Like

Obrigado @RodolfoVieira ! Irei experimentar mais logo.

Relativamente ao segundo, ainda não experimentei nenhuma configuração porque pensei - Como é que o HA saberá qual o estado do sensor ? Como posso ir buscar esse valor ? Onde/se estará armazenado ?
Mas agora que escrevo isto, penso que, provalvemente tenho que verificar o payload_on usando MQTT e talvez consultando {{ value_json.RfReceived.Data}} ???
Tenho que ler e experimentar…

Logo já coloco mais noticias.

Em princípio, o nome do sensor deve estar errado… Habitualmente não tem maiúsculas…
Tenta assim:

- alias: Porta garagem Jardim aberta
  trigger:
    - platform: state
      entity_id: binary_sensor.porta_garagem_jardim
      from: 'off'
      to: 'on'
  action:
    - service: notify.notificacao
      data:
        message: 'Porta Garagem Jardim aberta'

Quanto à segunda parte, na automação para ligar a luz automaticamente, colocas uma condition que é este sensor estar off

Obrigado @RodolfoVieira ! Funcionou. Só tive que alterar o topic e ficou a funcionar. Ja recebi a notificação.

@Maddoctor relativamente às condições, como é que elas funcionam exatamente ? podes colocar um exemplo ?

@feiticeir0 em relação à pergunta que fizeste ao @Maddoctor os exemplos estão aqui tenta fazer uma automação para isso que queres, caso não consigas resultados posta depois aqui o que tentaste segundo essa documentação e tentaremos ajudar.

Eu já tinha visto, mas como muitos deles são genéricos, pedia algo mais especifico, já a funcionar.
Mas vou perder algum tempo com isso.

Amanhã já darei mais noticias. Obrigado

Boa tarde.
Já tentei tudo e nada funciona…

O sensor de porta está definido nos sensores binários:
binary_sensor.yaml :


# porta garagem jardim
- platform: mqtt
  state_topic: "tele/sonoffBridge/RESULT"
  name: "Porta_Garagem_Jardim"
  value_template: '{{value_json.RfReceived.Data}}'
  payload_on: '59880A'
  payload_off: '59880E'
  device_class: garage_door

E nas automações, conforme posto já em cima, está assim:

automations.yaml :
# Avisar se porta da garagem do jardim foi aberta
- alias: Porta garagem Jardim aberta
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:
    condition: template
    value_template: '{{ trigger.payload_json.RfReceived.Data == "59880A" }}'
  action:
    - service: notify.notificacao
      data:
        message: 'Porta Garagem Jardim aberta'

Tenho uma automação que, se for detetado movimento (por um sensor de movimento), acende a luz e funciona bem:


 Luz #1 garagem -  ligar
# Apenas se porta garagem jardim não aberta
- alias: Luz garagem 1 on
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:
    - condition: template
      value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

Agora, já tentei as seguintes automações:

# Luz #1 garagem -  ligar
# Apenas se porta garagem jardim não aberta
- alias: Luz garagem 1 on
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:
    condition: and
    conditions:
      - condition: template
        value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
      - condition: state
        entity_id: binary_sensor.Porta_Garagem_Jardim 
        state: 'off'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

e ainda :


# Luz #1 garagem -  ligar
# Apenas se porta garagem jardim não aberta
- alias: Luz garagem 1 on
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:
    condition: and
    conditions:
      - condition: template
        value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
      - condition: template
        value_template: '{{ trigger.payload_json.RfReceived.Data == "59880E" }}'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

e nada funciona.

Eu penso que a solução será ir pelo state, mas ainda não descobri como …
O objetivo é:

  • se detetar presença
    E
  • porta da garagem fechada (payload_off ou algo semelhante)
    Acende a luz…

A segunda parte era:

Tenho a luz da garagem a acender cada vez que é detetado movimento. A minha intenção era, quando a porta da garagem estivesse aberta (payload_on), apesar de detetar movimento, não acendia a luz.
Já tentei várias combinações, mas nada…

Mas o que queres é isto certo? :point_up:

Certo! E que não consigo…

@feiticeir0

Eliminas esta automação:


 Luz #1 garagem -  ligar
# Apenas se porta garagem jardim não aberta
- alias: Luz garagem 1 on
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:
    - condition: template
      value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

e colocas esta:

- alias: Liga a luz da garagem quando há movimento e a porta da garagem  esta fechada
  initial_state: true
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
   condition:
     condition: and
     conditions:
       - condition: template
         value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
       - condition: state
	     entity_id: binary_sensor.porta_garagem_jardim
		 state: 'off'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

Basicamente vai fazer o que tu queres que é ligar a luz se detectar movimento MAS so se a porta estiver da garageme estiver fechada. Se ela tiver aberta não acende.
Testa…e diz algo

O teu problema foi, desde o início, o que escrevi na minha primeira resposta… A entity_id dos sensores tem de ser todo em minúsculas… Se fizesses isso,tal como te disse, a automação inicial teria funcionado, sem precisares de fazer como o @RodolfoVieira disse. Assim a tua automação apenas teria uma condition que seria a tal da porta aberta

Não funciona. Eu já tinha testado, mas com o nome normal e não todo em minúsculas.

No lovelace (UI) a entidade aparece unavailable, não sei se terá alguma coisa a ver… Será que off no state é mesmo o correto?

Vou experimentar, como já vi, ifs na definição do sensor binário a definir off e on…E ver se resulta

Se aparece como unavailable é porque o HA não reconhece a entidade e isso costuma ser devido a um erro na configuração (provavelmente no state_topic).

A automação terá que funcionar se os nomes das entidades e os estados tiverem correctos.

Obrigado a todos pelas respostas, mas já descobri o problema.

O state_topic dos sensores binários estava errado. Antigamente, o state_topic da bridge da Sonoff era tele/sonoffBridge/RESULT"

mas quando atualizei a bridge para a versão 8 do tasmota, o state_topic alterou para:
state_topic: "tele/tasmota/RESULT"

e nunca atualizei os sensores binarios.
Graças ao MQTT Explorer:

consegui notar isso. Atualizei o state_topic e a automação seguinte já funcionou:

# Luz #1 garagem -  ligar
# Apenas se porta garagem jardim não aberta
- alias: Luz garagem 1 on
  trigger:
    platform: mqtt
    topic: tele/tasmota/RESULT
  condition:  
    condition: and
    conditions:
      - condition: template
        value_template: '{{ trigger.payload_json.RfReceived.Data == "EE9D2E" }}'
      - condition: state
        entity_id: binary_sensor.Porta_Garagem_Jardim
        state: 'off'
  action:
    - service: homeassistant.turn_on
      data:
        entity_id: switch.Luz_Garagem_1

Obrigado a todos.
Questão seguinte: Como manter o ultimo estado caso o HA seja reiniciado ou falhe a luz ou qualquer coisa semelhante ?

Com estas configurações, o HA tem que ser reiniciado várias vezes e quando volta, o estado do sensor está sempre unavailable… existe alguma forma ?


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade