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.