SONOFF BRIDGE RF 433 INTELBRAS (TASMOTA Portisch)

Pessoal, dei uma atualizada no post do Leonardo

e com a colaboração do armando.muassab, fiz um resumo do passo a passo.

Este tutorial é como fiz para o Sonoff Bridge ler este sensor de porta da intelbras (433 Hz ):

Eu segui 3 tutoriais para fazer:
1 - Como nunca tinha feito flash com Tasmota, assisti o vídeo do Marcio, recomendo se é a primeira vez que vai trocar o firmware do Sonoff:

2 - Segui o tutorial do Forum da Comunidade Portuguesa para fazer o Tasmota, já que ele é mais específico para o Sonoff Bridge:
https://forum.cpha.tech/t/flashar-e-configurar-o-sonoff-bridge/148 45
Dica : Antes de enviar o .bin, deve colocar a chave no OFF e antes de ligar o USB para fazer o flash, deve ficar apertando o botão na lateral.

3 - Com o Tasmota no Sonoff Bridge ainda os sensores da intelbras não são lidos, é necessário atualizar o Firmware para Portisch, para isto segui este outro turorial:
https://github.com/arendst/Tasmota/wiki/Sonoff-RF-Bridge-433 41
Dica : O meu modelo é o R2, não precisa cortar a placa. Se for igual o meu modelo, só fazer o jumper com 2 fios

Deixar a chave no ON

  1. Conectar o 3v e o GND por USB ( igual quando fez para enviar o Tasmota), ligando desta maneira não precisa cortar a placa.
  2. Eu fiz download do projeto completo: https://github.com/arendst/Tasmota/tree/master 37, e acessei a pasta: Tasmota/tools/fw_efm8bb1/
  3. Escolhi o arquivo mais novo, no caso o: RF-Bridge-EFM8BB1-2018XXX.hex, e enviei através do botão: Firmware Upgrade
  4. Assim que atualizar o Firmware, deve configurar novamente sua rede Wifi, e configurar o MQTT também. Se for usar minhas configurações, em Topic no MQTT usei: sonoff_bridge e Full Topic usei: %prefix%/%topic%/ (default)
  5. Após terminar a configuração, entre no Console do Tasmota e digite: rfraw 177

Se tudo ocorrer bem, ao abrir o sensor da porta da intelbras que vai aparecer o as informações do sensor no console, algo como:

01:03:18 MQT: tele/sonoff_bridge/RESULT = {“Time”:“2019-10-28T01:03:18”,“RfRaw”:{“Data”:“AA B1 03 0226 03A2 303E 2818090918091818091809180905090909180918180909181809180918 55”}}

Se vc abrir o sensor diversas vezes vai notar que a parte inicial sempre muda, o que acabei fazendo foi um filtro para pegar apenas a informação que foi a mesma todas as vezes que abri o sensor:
No caso foi o numero: 2818090918091818091809180905090909180918180909181809180918

Para ler, useo filtro .RfRaw.Data[24:82], isto significa que vai descartar as 24 caracteres inicias e vai até a caracter 82. ( Dependendo do seu sensor talvez tenha que alterar a posição de leitura, em todos os meus sensor da intelbras funcionaram este mesmo filtro, e não ocorreu nenhum repetido).

Criar uma rule via console do Tasmota do Sonoff RF Bridge, que ativa o modo RfRaw 177 assim que o mesmo é ligado na energia e ativa o switch do Home assistant com o status:

Rule1 ON System#Boot DO RfRaw 177 ENDON

Ativar a rule no console do Tasmota do Sonoff RF Bridge:

Rule1 1

Alguns problemas aconteceram durante os testes pois, quando você coloca em modo RfRaw, ele depois de um tempo parece que trava, e no console do Tasmota, não aparece nada com relação ao OFF do RfRaw, parece que não desativa, trava mesmo. Se você der o comando de RfRaw 177 no console novamente, ele volta a operar normal, escutando os sinais emitidos pelos sensores.
Passei a tarde toda quebrando a cabeça e cheguei na solução abaixo que compartilho:

Em sensor do home assistant inserir o sensor: (forçar a cada 60 minutos)

  • platform: mqtt
    name: “sensor sonoffbridge”
    state_topic: “tele/sonoff_bridge/RESULT”
    value_template: “{{ value_json.RfRaw.Data }}”
    expire_after: 60

Em automation do home assistant inserir a automação abaixo: (iniciar automático)

  • id: ativa_rfraw_automatico
    alias: Sonoff RF Bridge - Reativacao Automatica
    trigger:
    • platform: state
      entity_id: sensor.sensor_sonoffbridge
      to: “unknown”
      for: “00:00:15”
      action:
      • service: switch.turn_on
        entity_id: switch.sonoff_bridge_receptor_rf_raw_177

Em switch do home assistant inserir o switch abaixo: (caso queira mostrar se esta ativado)

  • platform: mqtt
    name: Sonoff Bridge - Receptor RF Raw 177
    command_topic: “cmnd/sonoff_bridge/Backlog”
    state_topic: “stat/sonoff_bridge/RESULT”
    value_template: “{{ value_json.RfRaw }}”
    state_on: “ON”
    state_off: “OFF”
    payload_on: “RfRaw 177”
    payload_off: “RfRaw OFF”
    availability_topic: “tele/sonoff_bridge/LWT”

Para criar um sensor, criar em binary_sensor ou no config se não tiver separado

SENSORES JANELAS E PORTAS

  • platform: mqtt
    name: ‘Janela XXX - Lado Direito’
    state_topic: ‘tele/sonoff_bridge /RESULT’
    value_template: >-
    {% if value_json.RfRaw.Data[24:82] == ‘2818180909090918090918091818091809180918090909181809180918’ %}
    {{‘ON’}}
    {% else %}
    {{states(‘binary_sensor.janela_XXX_lado_direito’) | upper}}
    {% endif %}
    off_delay: 15
    device_class: window (PODER SER DOOR ETC, PROCURE O QUE SE ENQUANDRA)

Para criar automação: (Exemplo Telegram e Google HOME)

  • id: ‘545464646464646’
    alias: ‘Sensores’
    trigger:
    platform: state
    entity_id:
    - binary_sensor.janela_XXX_lado_direito
    - binary_sensor.janela_XXX_lado_esquerdo
    from: ‘off’
    to: ‘on’
    condition:
    condition: time
    after: ‘17:00:00’
    before: ‘07:00:00’
    action:
    • service: notify.telegram
      data_template:
      title: ‘SENSOR
      message: >
      Violação: {{ trigger.to_state.attributes.friendly_name }} - {%if trigger.to_state.state == ‘on’ %} {{‘Aberto’}} {%else%} {{‘Fechado’}} {%endif%}
    • service: tts.google_translate_say
      entity_id: ‘media_player.google_mini_sala_tv’
      data_template:
      message: >
      Violação: {{ trigger.to_state.attributes.friendly_name }} - {%if trigger.to_state.state == ‘on’ %} {{‘Aberto’}} {%else%} {{‘Fechado’}} {%endif%}

Boa noite Rodrigo, tenho percebido que o sonoff bridge anda travando de vez em quando, só que estava fazendo manual entrava no ip e digitava o rfraw 177.

Estou seguindo seu tutorial para deixar automático mas está dando erro.

Seguindo os passos

Ativei Rule1 1 - OK;

Adicionei o código do sensor para forçar e está ok;

Em switch que tento ativar ele, mas não ativa.

Eu acredito que o problema esta no command_topic

Aqui está o código que coloquei.

- platform: mqtt
  name: Sonoff Bridge - Receptor RF Raw 177
  command_topic: "cmnd/sonoff_bridge/Backlog"
  state_topic: "tasmotaBridge/tele/RESULT"
  value_template: "{{ value_json.RfRaw }}"
  state_on: "ON"
  state_off: "OFF"
  payload_on: "RfRaw 177"
  payload_off: "RfRaw OFF"
  availability_topic: "tele/sonoff_bridge/LWT"
  payload_available: "Online"
  payload_not_available: "Offline"

Fico no aguardo.
Obrigado.

@wesleyrodrigoo
Verifique o seu state_topic, ele deveria estar “stat/sonoff_bridge/RESULT”
[]'s

@rodrigotadeu
Muito boa a sua solução, usei uma parte dela, a de resetar a bridge rf para a minha implementação.

Gostaria de compartilhar um pouco da minha dor com o firmware do Portisch, montei um ambiente para poder colocar protocolos novos no Portisch, depois de muito suor consegui fazer o LED vermelho da Bridge piscar para um protocolo customizado, porem por um bug em alguma lugar os dados não chegam no console do Tasmota, pode ser um bug no firmware do Portisch ou no próprio Tasmota, como debugar o Tasmota já não é uma tarefa trivial o Portisch então, diria que é Herculano o processo, então quanto eu tiver um tsunami de inspiração tentarei avançar mais um pouco com isso. Inclusie troquei emal com o @automarcio sobre isso, pois ele a um tempo atrás tb mexer no firmware do Portisch, mas tb sem grande avanços.

Bom, a parte boua da coisa é que fiz uma alternativa ao firmware do Portisch. Implementei parte do algoritmo de tradução dos valos do RfRaw dentro do Nod-RED.
Uso um MQTT in para pegar o dado bruto da Bridge no RfRaw, faço a mágica, e depois uso um MQTT out para escrever no mesmo tópico da bridge, aí os códigos ficam mais fáceis de serem trabalhados, e fica praticamente igual a um protocolo nativo.

Imagem do Node-RED
image

Código do Node-RED

[{“id”:“140246aa.dfdf61”,“type”:“mqtt in”,“z”:“26622b21.cbc8c4”,“name”:“In Bridge”,“topic”:“tele/Bridge2/RESULT”,“qos”:“0”,“datatype”:“json”,“broker”:“92b84ef6.d5cc8”,“x”:80,“y”:1320,“wires”:[[“9990860d.eda0f8”]]},{“id”:“9990860d.eda0f8”,“type”:“switch”,“z”:“26622b21.cbc8c4”,“name”:“Verifica se é RfRaw”,“property”:“payload.RfRaw”,“propertyType”:“msg”,“rules”:[{“t”:“nnull”}],“checkall”:“true”,“repair”:false,“outputs”:1,“x”:250,“y”:1320,“wires”:[[“3373bd82.2efada”]]},{“id”:“3373bd82.2efada”,“type”:“function”,“z”:“26622b21.cbc8c4”,“name”:“Isola o codigo”,“func”:“if(msg.payload.RfRaw !== undefined){\n var rfRaw = msg.payload.RfRaw.Data.split(" ");\n msg.payload = rfRaw[rfRaw.length -2];\n var bit = ;\n for(var i = 1; i < msg.payload.length - 1; i+=2){\n bit.push(parseInt(msg.payload[i]) & 119);\n }\n msg.payload = parseInt(bit.join(‘’), 2).toString(16);\n}\nreturn msg;”,“outputs”:1,“noerr”:0,“x”:440,“y”:1320,“wires”:[[“910ae98d.da1d48”]]},{“id”:“910ae98d.da1d48”,“type”:“function”,“z”:“26622b21.cbc8c4”,“name”:“Monta mensagem nova”,“func”:“var result =\n{\n Time: (new Date()).toISOString(),\n RfReceived:{\n Sync:14140,\n Low:400,\n High:1380,\n Data:msg.payload.toUpperCase(),\n RfKey:"None",\n }\n};\nmsg.payload = result;\nreturn msg;”,“outputs”:1,“noerr”:0,“x”:650,“y”:1320,“wires”:[[“1e5ab70b.7c91a1”]]},{“id”:“1e5ab70b.7c91a1”,“type”:“mqtt out”,“z”:“26622b21.cbc8c4”,“name”:“Out Bridge”,“topic”:“tele/Bridge2/RESULT”,“qos”:“0”,“retain”:“false”,“broker”:“92b84ef6.d5cc8”,“x”:850,“y”:1320,“wires”:},{“id”:“92b84ef6.d5cc8”,“type”:“mqtt-broker”,“z”:“”,“name”:“MqqtHA”,“broker”:“192.168.10.87”,“port”:“1883”,“clientid”:“”,“usetls”:false,“compatmode”:false,“keepalive”:“60”,“cleansession”:true,“birthTopic”:“”,“birthQos”:“0”,“birthPayload”:“”,“closeTopic”:“”,“closeQos”:“0”,“closePayload”:“”,“willTopic”:“”,“willQos”:“0”,“willPayload”:“”}]

O senso da janela colocado como exemplo ficaria assim:

  • platform: mqtt
    # SensorTeste
    name: “SensorTeste”
    payload_on: “4BFE0E”
    payload_off: “4BFE0A”
    device_class: door
    state_topic: “tele/Bridge2/RESULT”
    value_template: ‘{{ value_json.RfReceived.Data}}’

Espero ter contribuído.
's

2 curtidas

Bom dia Bento estou tentando usar seu flow e está dando erro, será que vc pode me ajudar?

Bom dia, desculpe a demora. se você não mudou os nomes das entidades, deveria dar certinho. Veja isso antes.

Então eu não fui até nod red ainda, pois quero deixar 100% funcional. Mas valeu pela contribuição

@Glaucer
Qual erro está apresentando?
Sem as mensagens de erro é um pouco difícil de ajudar.

Fui importar seu flow acima e da um erro de import.json, mas hoje a noite te informo direitinho

Qual a versão do arquivo portisch que vc usou. Encontrei na internet q pra não travar tem que ser versão anterior ou igual a 20190220 (20/02/2019). O meu está com versão de novembro 2019 e vou tentar colocar as mais antigas para ver se para de travar.

Pessoal, pra quem estiver com o firmware Portisch travando achei uma versao corrigida.

LINK

Testei aqui e até então não tive mais problemas.

@dudu631 Boa tarde, essa versão resolveu o problema do travamento ?

Wesley.

@wesleyrodrigoo sim, nunca mais tive problema.

@dudu631 de fato esse firmware não apresentou travamento até o momento. Em teste a mais de 48 horas. Você se lembra onde encontrou ele?

Obrigado

Rapaz, em alguma issue dentro do github do Porstich, parece que iam fazer o fix mas isso ficou abandonado por lá.

Não tenho mais o link mas posso procurar.

Teste os firmware Portisch: Releases · Portisch/RF-Bridge-EFM8BB1 · GitHub
apenas os de 2018 funcionam, porém os códigos gerados são binários.

Testei esse disponibilizados pelo Jason2866, que colabora para o Tasmota: RF-Bridge-EFM8BB1/Keil 8051 v9.53 - Release at Wt0124 · Jason2866/RF-Bridge-EFM8BB1 · GitHub</ti
sem sucesso

Mas o que você disponibilizou não trava no RfRaw e não é binário. Obrigado.

Imagina, que bom que consegui ajudar!

Achei o link de onde encontrei a solução: Tópico
A solucao