Manual

do

Maker

.

com

Como utilizar MQTT no ESP8266 com MicroPython

Como utilizar MQTT no ESP8266 com MicroPython

MQTT no ESP8266

Bem, após o artigo sobre a refrigeração de cerveja na semana de fermentação, agora vamos para o controle da cerveja nas duas semanas de maturação - essa, na geladeira. Na verdade, esse artigo é um predecessor do controle de temperatura na geladeira, onde veremos previamente como instalar MQTT no ESP8266 com MicroPython. Mas antes, gostaria de dar uma dica para quem resolver fazer o sistema com pastilha de peltier para a semana de fermentação. Tive um problema essa semana, pois o volume de cerveja era grande e a levedura estava elevando bastante a temperatura dentro do cooler de isopor, chegando aos 29.5 e quase matando a levedura, então peguei meio litro de água congelada (gelo) e coloquei dentro do isopor. A temperatura baixou para 22 graus e permaneceu por quase 8 horas! Enquanto isso, coloquei um pote de sorvete com água para gelar e ao trocar depois das 8 horas, cheguei a 17 graus! Aí entendi que a pastilha não estava vencendo algum momento da temperatura, mas quando o valor limite era quebrado, a pastilha ajudava a manter firmemente. Então a dica é essa, dá pra conservar até lager no isopor! Voltando ao tema do artigo atual.

Em relação ao suporte a MQTT usando MicroPython - você pode utilizar esse firmware em qualquer ESP8266 que você tenha, desde o ESP-01, e o procedimento será o mesmo. Vou deixar já os artigos de referência que podem lhe interessar.

Se você deseja compilar seu próprio firmware do MicroPython (em Linux)

Porém, se prefere pegar o firmware compilado, eu o disponibilizo junto ao procedimento no artigo abaixo, na sessão "Trocando o firmware NodeMCU por MicroPython". Serve para substituir qualquer firmware, não se preocupe:

Electro Dragon

Se quiser configurar seu próprio broker (em Linux também, fiz com Raspberry) para fazer a automação de sua casa, incluindo uma explicação sobre esse protocolo da IoT:

MQTT broker

Acredito que seja o suficiente por enquanto.

Sobre o MQTT

Já escrevi muitos artigos sobre MQTT com Raspberry, Arduino, Onion Omega, ESP8266 com NodeMCU etc. Todavia, é possível que você ainda não conheça o MQTT, mas se conhece, pule para o próximo tópico.

O MQTT é o protocolo da IoT, sendo cada vez mais utilizado nos dias atuais. É um protocolo leve, por isso roda em qualquer tipo de dispositivo embarcado, desde MCUs à CPUs de todos os tipos. Não é nada de outro mundo; do lado da MCU/CPU se envia e se recebe uma mensagem "do" e "para" o server, que é chamado de broker. Aqui mesmo no site você encontra a configuração de um broker, que também é trivial e estou rodando meu broker em casa em um Raspberry, mas se desejar, pode inclusive colocar sua rede na nuvem através de um broker público ou pago.

MQTT no ESP8266

Se você já conhece o firmware do NodeMCU, deve saber que ele tem suporte nativo ao MQTT e é bastante simples utilizá-lo. Quanto ao MicroPython para ESP8266, está em uma versão estável mas ainda amadurecendo, então não está tão recheado como o NodeMCU, mas não há dúvida que utilizar o MicroPython para conectar sua rede via MQTT é mais simples que qualquer coisa. A única questão é que você precisará incluir o suporte ao MQTT no MicroPython, e isso também é simples.

Download do MicroPython

Não sei se tem por aí firmware do MicroPython oficial para download. Eu compilei o meu próprio e estou disponibilizando-o para download através do repositório MASUGUX no git (clique para ir ao github). Nesse artigo sobre o Electro Dragon eu mostrei como instalar o firmware, não tem segredo.

Download do uMQTT para ESP8266

A biblioteca do MQTT para MicroPython se chama uMQTT, sendo que dentro do diretório de bibliotecas você terá umqtt.simple e umqtt.robust e ambas são necessárias. Pegue as bibliotecas no git primeiramente:

git clone https://github.com/micropython/micropython-lib

Instalação do MQTT no MicroPython

Depois de clonado, os arquivos necessários estarão dentro de micropython-lib/umqtt.simple/umqtt e micropython-lib/umqtt.robust/umqtt. Você pode copiá-los para dentro do sistema de arquivos do ESP8266 de forma bem simples, bastando seguir as dicas desse outro tutorial. Copie-os para o sistema de arquivos do ESP8266, crie um diretório "umqtt" e mova-os para dentro desse diretório:

import os

os.mkdir("umqtt")
os.rename("simple.py","umqtt/simple.py")
os.rename("robust.py","umqtt/robust.py")

Pronto, seu ESP8266 já está com suporte a MQTT!

Um exemplo simples que fiz para testar foi acender a luz da minha bancada:

from umqtt.simple import MQTTClient

mq = MQTTClient("DobitAoByte","192.168.110.220",1883,"meuUsuario","minhaSenha")

#o connect deve retornar 0
mq.connect()
mq.publish(b"topico/luz_da_bancada",b"1")

Simples ou não? Para ver os métodos disponíveis, use (após fazer o import da primeira linha acima):

help(MQTTClient)

E exemplos maiores estarão no próximo artigo relacionado à Electro Dragon e maturação da cerveja!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.