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

Ligando uma cafeteira com MicroPython, MQTT e Android

Ligando uma cafeteira com MicroPython, MQTT e Android

No DevFest 2019, a evolução do projeto da cafeteira via MQTT: saindo do Wi-Fi e tópico fixos "marretados no código" pra um setup via QR Code, Micropython e Firebase.

☕ Da v1 pra v3

Essa talk, apresentada com André Queiroz no DevFest 2019, retoma o projeto da cafeteira MQTT e mostra sua evolução em três versões.

Projeto v1: um script (Python, Java, Kotlin, Ruby, JavaScript...) publica ON/OFF no tópico gdgfoz/coffee do broker MQTT, que envia a mensagem pro ESP8266 ligado à cafeteira. Funciona, mas depende de rodar o script manualmente ou via crontab, e cron não sabe se a pessoa acordou mais cedo, mais tarde, ou se é feriado.

Projeto v2 troca o script pelo próprio broker MQTT como origem da mensagem, mas ainda tinha dois problemas: Wi-Fi fixo no código e tópico fixo no código, "marretado no código", nas palavras da própria talk.

Projeto v3 resolve os dois com MicroPython: Wi-Fi configurável via browser (o ESP cria um Access Point, abre um socket na porta 80, e a pessoa acessa 192.168.4.1 pra escolher rede e senha) e tópico único derivado do MAC address do dispositivo via QR Code. Os dados passam a ser persistidos no Firebase.

🐍 O que é MicroPython

  • Compilador em tempo de execução
  • Implementação enxuta de Python 3
  • Roda em microcontroladores e ambientes restritos, acessando o hardware diretamente
  • Criado pelo programador e físico australiano Damien George, em 2013
  • Suporte nativo a Pyboard, WiPy, ESP8266/32 e MicroBit

Setup usado na talk: esptool.py pra apagar a flash e gravar o firmware MicroPython no ESP8266, e ampy pra copiar arquivos .py pro dispositivo (ampy --port /dev/ttyUSB0 put arquivo.py).

📱 App Android

Reescrito em Kotlin, usando a paho library pra MQTT, autenticação e Cloud Firestore via Firebase, e leitura de QR Code pra parear com o dispositivo certo sem precisar digitar tópico manualmente.

🔗 Códigos

Slides completos: Ligando uma cafeteira com MicroPython, MQTT e Android.