Ensinamos nosso bambu da cultura a pedir água pelo Slack
O mundo mudou com a pandemia de Covid-19, empresas tiveram que se adaptar em um período muito curto de tempo, e praticamente do dia pra noite tivemos que virar a chave e aderir ao home office. Graças à vacinação, a pandemia parece estar sendo controlada (mesmo assim, continue se cuidando! 😷), e aos poucos a vida vai voltando a algo parecido com a realidade que anteriormente conhecíamos. Ou quase isso.
Neste artigo contamos como ensinamos o nosso bambu da cultura a pedir água usando um sensor de umidade de solo, um Arduino Uno, caixinhas de som e um módulo MP3. Mas com a pandemia e a popularização do trabalho remoto, veio a necessidade de termos o status do nosso bambu online, em tempo real, e que nos fosse avisado quando o nosso mascote do Way2Labs 🎍 precisasse de água. E então conectamos ele… na internet.
Trocamos o antigo sensor de umidade por um capacitivo, trocamos o Arduino Uno por um ESP8266 já que precisaríamos de fácil conexão com a internet, e trocamos as caixinhas de som pelo Slack. Sim, aquele popular comunicador mesmo.
Mas pra juntar isso tudo, precisaríamos gastar um tempo arquitetando um serviço que ficasse online e que registrasse as requisições, analisasse essas requisições e tomasse ações com base nessas entradas. Ou simplesmente poderíamos usar o mágico Node-RED.
Usando um ESP8266 como porta para o universo
A linha de microcontroladores ESP, mas especificamente o ESP32 e o seu irmão mais humilde, o ESP8266, são grandes conhecidos da galera maker justamente por terem essa característica de conectividade não só com WiFi, mas também com Bluetooth. No nosso caso, o mais prático seria WiFi, e foi o que utilizamos.
Implementamos um firmware bem simples em MicroPython (que inclusive é open-source e está aqui no nosso GitHub) para ler os sensores a cada 5 segundos e enviar essas medições para o nosso servidor Node-RED ❤️ que criamos no Azure.️
Configurando rotas de entrada no Node-RED para os dados coletados pelos sensores
O Node-RED tem seu funcionamento totalmente baseado em fluxos de dados, ou seja, alguma coisa acontece, e essa coisa chama o próximo passo do fluxo, que por sua vez chama o próximo, e assim em diante.
No nosso caso, o primeiro passo do fluxo é receber o POST vindo do nosso ESP8266, contendo as informações lidas dos sensores. Para isso criamos um endpoint chamado “/data-in” com um componente “http in” da paleta básica de componentes do Node-RED.
Assim que recebermos esse POST (componente “entrada de dados de medição”) com os dados dos sensores, tratamos essa entrada por um nó de função (componente “umidade do solo”), que vai separar a medição da umidade do solo, coletada pelo nosso sensor capacitivo, das demais informações da requisição HTTP.
Agora temos um valor de umidade chegando no nosso Node-RED, porém o sensor manda um número absoluto, de acordo com a condutividade detectada no solo. Se a umidade esta alta, vem um numero alto, se a umidade está baixa, chega um numero baixo (nos nossos testes, o range fica entre ~800 para umidade baixa e ~500 para umidade alta). Por isso precisamos calibrar os nossos parâmetros, e para isso precisaremos de um pouco de… barro, talvez 😜
Se colocarmos o sensor imerso em água, qualquer valor que ele leia podemos considerar como o nosso “100%” de umidade, e quando ele estiver inserido em uma terra seca, árida, a leitura nesse momento será o que consideraremos “0%” de umidade. No Node-RED podemos fazer essa conversão “automagicamente” com um nó de “range”:
Postando no Slack
Agora que já temos nosso ESP8266 postando dados para o nosso endpoint de entrada do Node-RED, e a função que converte a medição de condutividade em percentual de umidade, chegou a hora do ato final: postar o pedido de ajuda no Slack!
Grande parte do conhecimento do mundo está concentrado no YouTube, e nesse caso não poderia ser diferente. Achamos esse vídeo sobre como utilizar webhooks para integrar o Slack com Node-RED no YouTube, e apesar de esta utilização estar deprecada pelo Slack, já serviu para validar nossa ideia de postar conteúdo em um determinado canal do Slack via Node-RED:
Criamos uma URL para o webhook e um app no Slack, que batizamos de Bamboot, e assim que postamos um “hello world” manualmente pelo Node-RED, a mágica começou a acontecer no Slack:
O futuro do bambu
Agora nosso bambu já consegue pedir água quando precisa, graças aos sensores, o microcontrolador, o Node-RED e magia da internet. O próximo passo poderia ser desenvolvermos uma solução com uma mini-bomba d’água, para ele se “auto-regar”, ficando ainda mais independente. Quem sabe em um futuro próximo… 😏
Prototipamos essa ideia de forma super rápida com as ferramentas que estavam à nossa disposição, não porque somos as pessoas mais inteligentes do universo, mas porque somos pessoas curiosas.
E é a curiosidade que faz o mundo evoluir, descobertas serem feitas, conhecimentos serem aprimorados, e o mais importante, pessoas com diferentes backgrounds trabalharem juntas para resolver um problema em comum. Nem que o problema seja fazer um bambu pedir água pelo Slack. 😆