Paralelo virtual usando apenas MQTT (EMQX Broker)

Recentemente passei a usar o broker EMQX ao invés do Mosquitto e com ele é possível encaminhar msg de um tópico para outro, sem a necessidade de criar automações no HA, Node Red, etc.

Estou rodando o EMQX em um LXC no Proxmox, mas existe um addon para ele.

Nesse exemplo vou usar um interruptor zigbee (Z2M) para comandar uma lampada zigbee e outro interruptor Tasmota.
O tópico do interruptor que vou usar como “trigger” é o

zigbee2mqtt/Varanda/center

Para comandar a lampada zigbee temos que enviar uma msg para o topico

zigbee2mqtt/Arthur/set

e para o tasmota o tópico é:

tasmota/cmnd/sala/Power2

1 - Abra o EMQX, selecione Integration > Rules e clique em Create

2 - De um nome para a regra e no campo abaixo cole a regra abaixo:

SELECT
payload.state as state
FROM
"zigbee2mqtt/Varanda/center"

A msg recebida no tópico “trigger” é:

{"state":"ON"}

e usando SELECT payload.state as state vamos salvar apenas o estado ON ou OFF na variável state para usar no passo 4.

3 - Clique em Add Action

4 - Em Type of Action selecione Republish,
em Topic Coloque o tópico do paralelo virtual

zigbee2mqtt/Arthur/set

em Payload coloque

${state}

e clique em Add

5 - Repita o passo 3 e 4 caso queira adicionar mais alguma lâmpada ou interruptor

tasmota/cmnd/sala/Power2

6 - Clique em Save

A resposta ficou muito rápida e não entra em loop.

Em Add Action tem uma opção Http Server, ainda não testei mas acredito que de para enviar comandos HTTP e fazer um paralelo virtual em dispositivos com Esphome por ex.

2 Likes

Fala @Walber , sussa?

Parabéns pelo tutorial simples e direto e parabéns também por ter trocado o limitado Mosquitto pelo excelente eMQX. Em termos de funcionalidades, ele não tem comparação com o outro (mesmo na sua versão paga Pro).

Já estou utilizando-o tem pouco mais de 3 anos e sempre que possível, recomendo a troca. Tanto pelo seu poder quanto pela sua simplicidade de instalação, configuração e manutenção… principalmente em Docker :wink:

Forte abraço.