sonoff: Reutilização de tecla do teclado – Parte 2
Algum tempo atrás escrevi um texto falando sobre um software sonoff que fiz para substituir a uma tecla do notebook que não tinha utilidade. Contudo fiquei devendo uma versão 2 do projeto com execução em segundo plano, esse é objetivo desse novo projeto.
Antes de começar a explicar mais sobre o programa sonoff você deve tá se perguntando porque estou fazendo uma versão 2? Esse programa é muito útil pra mim pois consigo acender e apagar a luz sem tirar a mão do teclado do computador.
Começando o Projeto sonoff
Existem algumas diferenças entre esse e outro projeto não só no modo de trabalho como no sistema operacional construído no software. Como pode se observar no projeto anterior, o sistema era Windows 10 agora estou usando o Pop Os.
Antes de tudo eu tentei criar a nova versão baseada no projeto anterior porém encontrei algumas dificuldades como: lib desatualizada, lentidão na execução da aplicação e o fato de gerar vários arquivos para gerar o binário.
Todas essas limitações do python estavam me incomodando um pouco, então resolvi pesquisar em outras linguagens uma forma de fazer esse projeto melhor.
Logo procurei em Rust e não obtive muito sucesso até que achei em golang a lib que fazia exatamente o que fazia em python além de prometer acesso chaves privadas que não funcionou.
Como Funciona o Projeto sonoff
O programa, executado em background do computador como serviço, mantém uma conexão sempre ativa com o sonoff ewelink.cc Logo isso faz com que ele execute bem mais rápido que o programa anterior.

Para apagar ou acender a luz é preciso apertar as teclas Ctrl + Alt + num0 assim não depende do atalho do sistema operacional para executar é implementado direto no programa.
Contudo é possível instalar apenas no Linux eu não fiz a versão desse programa ser compatível com Windows diferente do programa anterior.
O programa emite uma notificação a cada execução do comando, indicando o status atual da lâmpada alterada.

Desafios da Criação
O principal desafio dessa versão foi tentar capturar as teclas que são pressionadas usando a lib hotkey, mas não foi possível. Então pesquisei na internet outra lib que acabou funcionando, mas se eu quiser capturar uma tecla especial, como no projeto anterior, terei dificuldade.
Outra coisa que que travei foi na criação do serviço estava criando serviço no modo system isso ele não estava conseguindo enxergar as configurações do x11 que são necessárias para o hotkey. Porém pesquisando na internet consegui resolver esse problema até que rápido.
Tecnologias Usadas
- Golang
- beeep
- ewelink go
- gohook