Ensinamos nosso bambu da cultura a pedir água pelo Slack

Thiago Cerutti
Way2rocks
Published in
5 min readNov 22, 2021

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.

“Tudo normal por aqui”, eles disseram

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.

Fluxo da interação ESP8266 + sensor de umidade, Node-RED (hospedado no Azure) e Slack

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.️

Nosso firmware em MicroPython para o ESP8266

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.

Nosso atual fluxo no 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”:

Nó que basicamente faz uma regra de três para transformar uma entrada em uma saída de acordo com os parâmetros.

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 primeiro “hello world” a gente nunca esquece 😍

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. 😆

--

--