Atalho teclado para ligar/desligar tomada (ou qualquer outra interacção via MQTT)

Boas,

Fica aqui uma solução simples que encontrei para controlar algumas coisas via MQTT através de atalhos no teclado. O exemplo que dou é em windows no entanto a lógica aplica-se também para linux ou MAC embora tenha de se adaptar o que instalar e os scripts.

  1. Dependendo do que têm, Instalar a versão 32bit ou 64bit do Mosquitto no vosso computador (link).
    (com esta instalação iremos ter acesso, entre outros, a dois comandos shell que iremos usar a seguir. São eles o mosquitto_sub e mosquitto_pub, para sobrescrever um tópico e para publicar uma mensagem num tópico)

  2. Criar um Batch file (exemplo office_workbench.bat) que pode ser tão simples como por exemplo:

    "c:\program files\mosquitto\mosquitto_pub" -i meu_cliente_bash -h 192.168.1.90 -m "OFF" -t cmnd/office_workbench/power -q 2
    

    ou mais complexo como este (que verifica o estado e depois liga ou desliga consoante):

    @ECHO OFF
    SET HOST=192.168.1.90
    SET CLIENT=windows_bash_cli
    SET SUB_TOPIC=stat/office_workbench/POWER
    SET PUB_TOPIC=cmnd/office_workbench/power
    SET QOS=2
    echo "MQTT bash - Office Workbench"
    
    for /f %%i in ('"c:\program files\mosquitto\mosquitto_sub" -i %CLIENT% -h %HOST% -t %SUB_TOPIC% -q %QOS% -C 1') do set VAR=%%i
    rem other arguments: -p port -u username -P password
    
    if %VAR% == OFF goto SEND_ON
    echo "Current status is ON"
    echo "Sending OFF"
    "c:\program files\mosquitto\mosquitto_pub" -i %CLIENT% -h %HOST% -m "OFF" -t %PUB_TOPIC% -q %QOS%
    goto END
    
    :SEND_ON
    echo "Current status is OFF"
    echo "Sending ON"
    "c:\program files\mosquitto\mosquitto_pub" -i %CLIENT% -h %HOST% -m "ON" -t %PUB_TOPIC% -q %QOS%
    
    :END
    echo "Done"
    pause
    exit
    

Para criar o atalho há varias soluções muito completas como WinHotKey ou AutoHotKey mas para manter isto simples vou demonstrar como usar algo que o Windows já têm (mesmo que mais limitado)

  1. Criar um Atalho/shortcup do Batch file que criaram em cima. Basta fazer Right-Click no ficheiro e escolher Create Shortcut
    (se na realidade dentro do batch file só há um comando até se pode criar o shortcut directamente só com com o comando… fica a vosso critério)
    image
  2. mover o shortcut para um sitio algures dentro da pasta C:\ProgramData\Microsoft\Windows\Start Menu\Programs
  3. Right-Click no shortcut criado e escolher Properties
    image
  4. Colocar o cursor no campo Shortcut Key e precionar uma letra. Como vão ver ele cria automaticamente o atalho “CTRL + ALT + <Letra>”. Caso queriam também podem escolher um dos F1…F12… e ai é directo. Depois basta gravar e testar

Obrigado

3 Likes

Boa partilha, já tinha visto algo semelhante no fórum internacional hà uns tempo atrás.
Já podes ligar o candeeiro da secretária com o teclado :wink:

A mim surgiu a necessidade porque tenho duas tomadas no escritório que estão tapadas por móveis e como normalmente preciso delas quando estou no PC foi um modo fácil que encontrei para não depender só do HA.
Mas pronto a imaginação é o limite. Se alguem adicionar o suporte para Portugal no componente do dominos pizza ainda meto uma combinação de teclas para encomendsr pizza heheh

1 Like

Tu não des ideias :wink:


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade