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.