Envio de mensagem MQTT usando GPIOs TX e RX


(Antonio Schneider) #1

Olá pessoal!

Montei esta caixa com Sonoff basic para testes, segue link.

18 new photos · Album by Antonio Schneider

No padrão brasileiro, consegui esta caixa mais profundo onde possibilitou acomodar o Sonoff dentro da caixa, com espaço sobrando para os fios elétricos. Fiz a ligação em três interruptores compartilhando o mesmo GND, utilizando os GPIOs 14, TX e RX. Ainda não consegui fazer funcionar os outros dois botões (RX e TX) para apenas publicar mensagens MQTT, para que possa ser utilizado no HA com diversas ações a partir de automações. Hoje descobri que pode ser feito com RULES, disponível a partir do TASMOTA v12 em diante.

O que acham desta ideia? Alguém conseguiu fazer isso funcionar? Poderiam me ajudar a criar uma regra que funcione neste setup?

Já havia postado aqui no Facebook sobre isto.

Muito obrigado!


(Nuno Neves) #2

O mais simples, na minha opinião é simular outros relés… Passo a explicar:
No módulo, em vez de basic, escolhes generic. Depois atribuis os gpio já usados pelo basic ao relé, led e botão físicos (gpio12, 13 - como led1inv - e 0, respectivamente)… Em seguida, configuras gpio1, 3 e 14 para button2, 3 e 4 (são botões de pressão, certo?) e por último, dos gpio não atribuídos, atribuis três a relay2, relay3 e relay4 - não interessa quais porque não vão estar realmente ligados. Depois passas a ter 4 tópicos - Power1 (o que controla o relé real), Power2, Power3 e Power4, os dos relés fictícios… No HA fazes o que quiseres com esses tópicos! :wink:

Não esquecer que para usar TX e Rx é preciso desactivar o serial log - na consola escreves SerialLog 0


(Rodolfo) #3

És um mágico :wink: @Schneider testa e diz algo.


(Antonio Schneider) #4

Bom dia meu amigo @Maddoctor!

Inicialmente, gostaria de agradecer pelo tempo e pela ótima informação. Gostaria de dizer que funcionou! Depois de alguns meses parado com este projeto, consegui aqui o que precisava, parabéns!

Vejam como ficou:

https://photos.app.goo.gl/JdnB76mZkuPMPzTU7

Aqui mostro o console com os comandos sendo executados:

Seguem as configurações:

Aqui tem um backlog com todas as configurações necessárias:

Backlog Module 18; GPIO0 9; GPIO1 10; GPIO2 0; GPIO3 11; GPIO4 0; GPIO5 0; GPIO12 17; GPIO13 52; GPIO14 9; GPIO15 18; GPIO16 19; SetOption13 1; SetOption26 0; SwitchTopic 1; switchmode1 3; switchmode2 3; switchmode3 3; switchmode4 3; SerialLog 0

Mais uma vez, muito obrigado! Abraços!


(Nuno Neves) #5

Ainda bem que funcionou! Estamos cá para ajudar… :wink:


(Antonio Schneider) #6

Agora o próximo passo é como alterar o tópico para toggle e, se bem lembro, li em algum lugar, usar a função hold no Tasmota. Parece que tem um comando que ele publica um tópico hold se segurar por um tempo o botão. Eu sempre uso o SetOption13 para desabilitar a função de segurar o botão e entrar em modo reset, mas acho que deve ter algo relacionado. Já vistes algo sobre isso?


(Eduardo) #7

nesse caso os botões adicionais serviriam para executar uma ação? ex: ligar e desligar um PC ou xbox?


(Antonio Schneider) #8

Exatamente! São possibilidades ilimitadas… Fico surpreso como ninguém se interessou nisso antes hehe

Ainda mais com o a função de publicar hold, dobrariam as possibilidades de botões extras.


(Eduardo) #9

sensacional! o problema é q tem q ter uma caixa profunda pra acomodar o sonoff e + um interruptor de 3 botões.


(Antonio Schneider) #10

Eu achei uma aqui no padrão brasileiro que entrou muito bem, seguem as fotos: https://photos.app.goo.gl/IlgzuIVjEza3QLB02


(Antonio Schneider) #11

Pessoal, em princípio descobri o comando hold

Segue backlog:

Backlog SetOption13 1; SetOption26 0; SwitchTopic 1; SwitchMode2 5; SwitchMode3 5; SetOption32 20

Neste caso habilitamos o hold em 2 segundos após pressionado nos switches 2 e 3.

Fica assim:

12:29:45 MQT: cmnd/testes_automacoes/POWER3 = HOLD
12:29:45 MQT: stat/testes_automacoes/RESULT = {"POWER3":"ON"}
12:29:45 MQT: stat/testes_automacoes/POWER3 = ON

Agora é só criar as automações com o tópico desejado!

Abraços.


(Jhonathan) #12

Muito muito muito bacana! Bom saber que o sonoff cabe em uma caixa de passagem no padrão BR.

Parabéns pelo projeto!

fixe!!!


(Nuno Neves) #13

@Schneider, era mesmo isso que ia sugerir. Apenas alertar quem quiser tentar que, em vez de usar button2, 3, etc, como sugeri acima, deve usar switch 2, 3, etc… E, em princípio, não há necessidade de activar o switchtopic com esta configuração… O switchtopic seria para usar se quisesse usar um tópico “base” diferente do “testes_automacoes”, sem “activar” os “reles virtuais”… Não referi essa opção na sugestão inicial para não complicar o setup…
Agora, activar o switchtopic tem uma enorme vantagem. Se se definir um tópico “base” diferente, o “single press” envia POWERx para esse tópico, o “double press” “activa” o “relé virtual” e envia POWERx para o tópico original e o hold envia o comando HOLD para o tópico original. Ou seja, fica-se com single, double press e hold…
Testa e depois diz coisas! :wink:


(Jorge Assunção) #14

Excelente projecto e muito util!


(Antonio Schneider) #15

Olá @Maddoctor! Tudo bem?

Estava tentando entender o que escrevestes antes ehehe

Parece muito legal, mas preciso ver se é o mesmo que havia pensado a uns dias atrás: teria como usar tópicos diferentes com o mesmo sonoff a partir de diferentes comandos?

Por exemplo, tenho uma luz configurada assim, apenas para ligar e desligar:

cmnd/luz_sala/POWER

Se eu usar o POWER1, POWER2 e POWER3, poderia alterar (ou criar) o tópico do mesmo Sonoff? Por exemplo:

  1. cmnd/luz_sala/POWER = envia comandos ON e OFF que ligam e desligam o relay principal do sonoff, conectado ao GPIO14.
  2. cmnd/cena_filme/POWER = envia comandos HOLD, para iniciar uma cena, a partir de automação, ligado ao GPIO14.
  3. cmnd/tv_sala/POWER = envia comandos TOGGLE, para ligar e desligar a TV, a partir de automação, ligado ao GPIO TX.
  4. cmnd/persiana_sala/POWER = envia comandos HOLD, para subir ou descer uma persiana, a partir de automação, ligado ao GPIO TX.
  5. cmnd/computador_sala/POWER = envia comandos TOGGLE, para ligar e desligar o computador, a partir de automação, ligado ao GPIO RX.
  6. cmnd/desliga_tudo_sala/POWER = envia comandos HOLD, para desligar tudo na sala, a partir de automação, ligado ao GPIO RX.

Sei que a configuração do comportamento dos comandos é feito a partir do comando switchmode 5

Desculpe se ficaste confuso, mas seria interessante alterar os tópicos e mensagens para facilitar as configurações e automações.

Sem falar que ainda nem busquei mais informações sobre tópicos quando apertamos duas vezes o botão, por exemplo. Acho que ele envia algo do tipo MULTIPRESS

Realmente tem muito a oferecer estes devices, é incrível!

Abraços.


(Nuno Neves) #16

Bem, o que eu dizia é baseado no seguinte:
O tasmota permite definir um tópico diferente quando tens o switchtopic activo. Apenas 1 e não vários como querias.
Assim, imaginando que o tópico original é sonoffteste, a configuração seria:
SwitchTopic qualquercoisa
switchmode 5
Neste caso o que acontecia quando se carregava no interruptor 1, uma vez, seria o envio da mensagem mqtt cmnd/qualquercoisa/POWER2 ON
Carregando duas vezes, seria enviada a mensagem mqtt cmnd/sonoffteste/POWER2 ON
E fazendo hold, seria enviada a mensagem mqtt cmnd/sonoffteste/POWER2 HOLD

Testa e depois diz…

Ja agora o comando switchmode 5 não é para configurar o comportamento dos comandos, mas antes que tipo de interruptor estás a usar e que “comportamento” queres obter dele…