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.
-
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 omosquitto_sub
emosquitto_pub
, para sobrescrever um tópico e para publicar uma mensagem num tópico) -
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)
- 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)
- mover o shortcut para um sitio algures dentro da pasta
C:\ProgramData\Microsoft\Windows\Start Menu\Programs
- Right-Click no shortcut criado e escolher
Properties
- 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