Desafio/ideia para automação com botões físicos (Sonoff Basic)

Boa tarde amigos!

Gostaria de deixar um desafio com os com vocês :slight_smile:

Tenho 27 Sonoffs Basic, rodando TASMOTA, configurados com botões físicos cada, conforme o post anterior em que vocês me ajudaram: https://forum.cpha.tech/t/envio-de-mensagem-mqtt-usando-gpios-tx-e-rx

Agora preciso instalar e configurar as funções de cada switch, no entanto estou em dúvida como arrumar tudo isso nas configurações. Seguem os números:

27 sonoffs:

  • 81 botões físicos
  • 54 comandos TOGGLE
  • 81 comandos HOLD

Total: 135 scripts diferentes :joy:

Quero usar essas mensagens para programar scripts, tornando a solução muito flexível.

Já configurei o POWER1 nas luzes MQTT, tudo certo, restam TOGGLE do POWER2 e POWER3 e HOLD do POWER1, POWER2 e POWER3.

Como vocês acham que seria o melhor caminho?

Eu pensei em criar uma automação única com trigger MQTT e trabalhar quem fez o trigger para executar um script, no entanto acho interessante poder individualmente desligar e ligar a automação do interruptor completo.

Seguem os tópicos:

stat/s_1_luz_tv/POWER1
stat/s_1_luz_escada/POWER1
stat/s_1_sala_luz_corredor/POWER1
stat/s_1_sala_luz_mesa/POWER1
stat/s_1_sala_luz_escritorio/POWER1
stat/s_1_cozinha_luz_principal/POWER1
stat/s_1_cozinha_luz_fogao/POWER1
stat/s_1_cozinha_luz_area_serviço/POWER1
stat/s_1_quartos_2_luz_principal/POWER1
stat/s_1_quartos_2_luz_cabeceira/POWER1
stat/s_1_banheiros_2_luz_principal/POWER1
stat/s_1_banheiros_2_luz_espelho/POWER1
stat/s_1_quartos_1_luz_armario/POWER1
stat/s_1_quartos_1_luz_cabeceira/POWER1
stat/s_1_banheiros_1_luz_principal/POWER1
stat/s_1_banheiros_1_luz_espelho/POWER1
stat/s_1_banheiros_1_luz_mictorio/POWER1
stat/s_2_sala_luz_tv/POWER1
stat/s_2_sala_luz_escada/POWER1
stat/s_2_sala_luz_principal/POWER1
stat/s_2_sala_luz_mesa_jantar/POWER1
stat/s_2_sala_luz_balcao/POWER1
stat/s_2_sala_luz_acesso_terraco/POWER1
stat/s_2_cozinha_luz_principal/POWER1
stat/s_2_banheiro_luz_principal/POWER1
stat/s_2_terraco_luz_principal/POWER1
stat/s_2_terraco_luz_deck/POWER1

stat/s_1_luz_tv/POWER2
stat/s_1_luz_escada/POWER2
stat/s_1_sala_luz_corredor/POWER2
stat/s_1_sala_luz_mesa/POWER2
stat/s_1_sala_luz_escritorio/POWER2
stat/s_1_cozinha_luz_principal/POWER2
stat/s_1_cozinha_luz_fogao/POWER2
stat/s_1_cozinha_luz_area_serviço/POWER2
stat/s_1_quartos_2_luz_principal/POWER2
stat/s_1_quartos_2_luz_cabeceira/POWER2
stat/s_1_banheiros_2_luz_principal/POWER2
stat/s_1_banheiros_2_luz_espelho/POWER2
stat/s_1_quartos_1_luz_armario/POWER2
stat/s_1_quartos_1_luz_cabeceira/POWER2
stat/s_1_banheiros_1_luz_principal/POWER2
stat/s_1_banheiros_1_luz_espelho/POWER2
stat/s_1_banheiros_1_luz_mictorio/POWER2
stat/s_2_sala_luz_tv/POWER2
stat/s_2_sala_luz_escada/POWER2
stat/s_2_sala_luz_principal/POWER2
stat/s_2_sala_luz_mesa_jantar/POWER2
stat/s_2_sala_luz_balcao/POWER2
stat/s_2_sala_luz_acesso_terraco/POWER2
stat/s_2_cozinha_luz_principal/POWER2
stat/s_2_banheiro_luz_principal/POWER2
stat/s_2_terraco_luz_principal/POWER2
stat/s_2_terraco_luz_deck/POWER2

stat/s_1_luz_tv/POWER3
stat/s_1_luz_escada/POWER3
stat/s_1_sala_luz_corredor/POWER3
stat/s_1_sala_luz_mesa/POWER3
stat/s_1_sala_luz_escritorio/POWER3
stat/s_1_cozinha_luz_principal/POWER3
stat/s_1_cozinha_luz_fogao/POWER3
stat/s_1_cozinha_luz_area_serviço/POWER3
stat/s_1_quartos_2_luz_principal/POWER3
stat/s_1_quartos_2_luz_cabeceira/POWER3
stat/s_1_banheiros_2_luz_principal/POWER3
stat/s_1_banheiros_2_luz_espelho/POWER3
stat/s_1_quartos_1_luz_armario/POWER3
stat/s_1_quartos_1_luz_cabeceira/POWER3
stat/s_1_banheiros_1_luz_principal/POWER3
stat/s_1_banheiros_1_luz_espelho/POWER3
stat/s_1_banheiros_1_luz_mictorio/POWER3
stat/s_2_sala_luz_tv/POWER3
stat/s_2_sala_luz_escada/POWER3
stat/s_2_sala_luz_principal/POWER3
stat/s_2_sala_luz_mesa_jantar/POWER3
stat/s_2_sala_luz_balcao/POWER3
stat/s_2_sala_luz_acesso_terraco/POWER3
stat/s_2_cozinha_luz_principal/POWER3
stat/s_2_banheiro_luz_principal/POWER3
stat/s_2_terraco_luz_principal/POWER3
stat/s_2_terraco_luz_deck/POWER3

A ideia inicial seria usar algo como esta automação de botão Xiaomi:

- alias: Botão Xiaomi quarto
  trigger:
    platform: mqtt
    topic: 'zigbee2mqtt/casa_xiaomi_botao_quarto_01'
  condition:
    condition: template
    value_template: "{{ trigger.payload_json.click in ('single','double','triple','quadruple','many','long') }}"
  action:
    service_template: "script.botao_xiaomi_quarto_01_{{ trigger.payload_json.click }}"

O que acham?

Estou pensando até em criar um arquivo em Excel para criar essa configuração automaticamente com CONCATENAR, PROCV (escrever o script desejado) hehe

Muito obrigado!

No fórum oficial um usuário me deu uma grande ideia, poderia tratar o chamado do script usando o resultado do tópico que fez o gatilho, porém não sei como poderia pegar quem foi, saber qual foi o comando e ainda excluir o TOGGLE do POWER1 hehe

- alias: Interruptores MQTT
  trigger:
    platform: mqtt
    topic:
      - 'stat/s_1_luz_tv/'
      - 'stat/s_1_luz_escada/'
      - 'stat/s_1_sala_luz_corredor/'
      - 'stat/s_1_sala_luz_mesa/'
      - 'stat/s_1_sala_luz_escritorio/'
      - 'stat/s_1_cozinha_luz_principal/'
      - 'stat/s_1_cozinha_luz_fogao/'
      - 'stat/s_1_cozinha_luz_area_serviço/'
      - 'stat/s_1_quartos_2_luz_principal/'
      - 'stat/s_1_quartos_2_luz_cabeceira/'
      - 'stat/s_1_banheiros_2_luz_principal/'
      - 'stat/s_1_banheiros_2_luz_espelho/'
      - 'stat/s_1_quartos_1_luz_armario/'
      - 'stat/s_1_quartos_1_luz_cabeceira/'
      - 'stat/s_1_banheiros_1_luz_principal/'
      - 'stat/s_1_banheiros_1_luz_espelho/'
      - 'stat/s_1_banheiros_1_luz_mictorio/'
      - 'stat/s_2_sala_luz_tv/'
      - 'stat/s_2_sala_luz_escada/'
      - 'stat/s_2_sala_luz_principal/'
      - 'stat/s_2_sala_luz_mesa_jantar/'
      - 'stat/s_2_sala_luz_balcao/'
      - 'stat/s_2_sala_luz_acesso_terraco/'
      - 'stat/s_2_cozinha_luz_principal/'
      - 'stat/s_2_banheiro_luz_principal/'
      - 'stat/s_2_terraco_luz_principal/'
      - 'stat/s_2_terraco_luz_deck/'
  action:
    - service_template: "script.interruptor_{{ trigger.to_state.payload_json.POWER1 }}"

Assim eu poderia criar apenas os scripts com os nomes corretos, por exemplo, script.interruptor_s_1_luz_tv_POWER2_TOGGLE.

@Schneider eu acho que o caminho certo é mais ou menos esse ou seja usar o value template dos topicos mqtt.
Contudo eu sei fazer isso, desta maneira como exemplo:

  - alias: IInterruptores mqtt
    initial_state: true
    trigger:
      platform: mqtt
      topic: tele/sonoff108/STATE
    condition:
      condition: template
      value_template: '{{ trigger.payload_json.POWER == "ON" }}' 
    action: o que quiseres

Mas eu penso que isto iria te dar muito trabalho, pois sao muitos sonoffs…

Olá @RodolfoVieira! Obrigado pela resposta

Pois é, teria que fazer o TOGGLE e HOLD para cada um deles, dezenas de automações.

A questão é como identificar o tópico, POWER1, 2 ou 3 e se foi TOGGLE ou HOLD do gatilho. Poderia estar tudo na mesma automação!

Não fui a fundo de como é composto o tópico MQTT do TASMOTA…

Obrigado!

Tens que fazer tudo, via JSON todos os tópicos são identificados na consola e lá poderás ver todos.
Mas deve existir uma maneira muito mais fácil, aconselho a ires ao discord oficial do home assistant e expores o caso ao OP skalavala.

1 Like

Talvez o @Maddoctor poderia me ajudar?

Estou quebrando a cabeça aqui e pensei nisso:

Como a mensagem MQTT fica assim: stat/s_1_luz_tv/POWER2 = TOGGLE, poderia ficar assim o chamado do script: - service_template: script.interruptor_{{ trigger.topic.split('/')[1] }}_{{ trigger.topic.split('/')[2] }}_{{ trigger.payload_json }}

Minha ideia é ter a possibilidade de criar 135 scripts para cada função dos botões, nomeando de forma padrão, por exemplo script.interruptor_s_1_luz_tv_POWER2_TOGGLE

Este tópico foi automaticamente fechado 90 dias após a última resposta. Novas respostas não são permitidas.