MQTT com café ou vice-versa: ligando uma cafeteira pela internet com Arduino
MQTT com café ou vice-versa: ligando uma cafeteira pela internet com Arduino
Palestra com André Queiroz sobre MQTT, aplicada num projeto bem prático: ligar uma cafeteira à distância usando Arduino ESP8266, um relé e um app Android.
☕ O projeto
A pergunta que guiou a palestra: dá pra ligar uma cafeteira pela internet? A resposta virou um projeto de ponta a ponta usando MQTT como protocolo de comunicação entre um microcontrolador, um broker e um app Android.
📡 O que é MQTT
MQTT (Message Queue Telemetry Transport) é um projeto da IBM do final dos anos 90, criado por Andy Stanford-Clark (IBM) e Arlen Nipper (Cirrus Link). É um protocolo de rede M2M leve, pensado pra redes com banda limitada e alta latência:
- Paradigma PUB/SUB (publish/subscribe)
- Depende de um broker (middleware) que roteia as mensagens
- Comunicação assíncrona
- Consome pouco recurso do dispositivo (bateria, processamento, banda)
- Altamente escalável e fácil de implementar
Quem usa: IBM, Facebook, Eclipse Foundation, Intel, Bosch, Siemens, Ubuntu, Mosquitto, entre outros.
Arquitetura básica: um publisher publica dados num tópico do broker, e qualquer subscriber inscrito naquele tópico recebe a mensagem.
🔌 Hardware do projeto
- Arduino ESP8266
- Relé (acionamento mecânico da cafeteira, 110/220V AC controlado por um circuito de 5V DC)
- A própria cafeteira
O ESP8266 roda o código com as libs PubSubClient e ESP8266WiFi, se inscreve no tópico gdgfoz/coffeeiot no broker, e liga/desliga o relé conforme a mensagem recebida.
🐍 Publicando de várias formas
O projeto explorou diferentes formas de publicar a mensagem ON/OFF no tópico:
Script simples, em qualquer linguagem (Python, Java, Kotlin, Ruby, JavaScript...) chamando a lib MQTT correspondente: em Python, a paho-mqtt (pip install paho-mqtt). Rodado manualmente ou agendado via crontab do Linux, com a ressalva óbvia do cron: e se a pessoa acordar mais cedo, mais tarde, ou for feriado?
App Android, em Kotlin, usando a mesma paho library pra publicar no tópico direto do celular, sem depender de horário fixo: o próprio usuário decide quando ligar a cafeteira.
🔗 Códigos
Apresentado com André Queiroz.
Slides completos: MQTT com café ou vice-versa.