Blog Houssan Ali Hijazi
IA · Python · Android
← Voltar ao blog
IoT, MQTT, Arduino

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.