MQTT no AWS IoT via Websockets no ESP8266

Minha primeira biblioteca publicada no GitHub eee \o/ https://github.com/odelot/aws-mqtt-websockets Aparentemente não tem solução semelhante ainda 😉

Porque esse titulo gigante? MQTT no AWS IoT via Websockets no ESP8266. Vamos lá!

A Amazon lançou um serviço muito bom e completo para IoT em sua plataforma AWS. Obviamente, segurança é uma das grandes preocupações da Amazon. No começo ela disponibilizou uma API REST para ser acessada via SSL e um serviço MQTT para ser acessado via TLS 1.2. Ela até lançou uma biblioteca suportando o Arduino, só que a versão Yun, que roda Linux e é bem mais poderosa que os Arduinos comuns e ESPs.

O ESP8266, microprocessador da moda, superbarato e com wifi embutido, não tem suporte para TLS 1.2. Logo, só é possível utilizar os serviços da amazon via a API Rest. Isso é ótimo sensores (que só enviam dados), mas não para atuadores (que recebem dados). Isso porque, para receber as mensagens da nuvem em tempo real, é necessário fazer a ineficiente espera ocupada. Muito provavelmente a Amazon contabiliza cada chamada REST como uma mensagem enviada, ou seja, além de ineficiente, a brincadeira pode sair cara.

A Amazon então disponibilizou o serviço de MQTT através de websockets. PERFEITO! a gente se conecta na amazon via websockets via um request HTTP, mas a conexão é mantida \o/ E o melhor, a segurança envolvida é, além das milhões de assinaturas da amazon, o SSL que é suportado pelo ESP8266. Uma vez conectado via websockets, usamos essa conexão como camada de transporte para as mensagens do MQTT.

É ai que entra minha biblioteca. Procurei e não encontrei alguém que fizesse o meio de campo entre os dois protocolos. Logo, implementei esse middleware, mas usando como dependências bibliotecas já consolidadas de websockets e mqtt desenvolvidas para arduino. Além disso, resolvo também toda a assinatura de segurança da amazon, que deve ser feita nos parâmetros da URL, procedimento que pode ser observado aqui.

A biblioteca ainda tem limitações (não reconecta automaticamente e só sofreu testes básicos) mas já compartilhei para quem sabe outras pessoas contribuírem para sua evolução.  Você encontra exemplo de uso na própria biblioteca, exemplo que usei para gravar o vídeo.

Espero que o código seja útil para a comunidade, porque deu trabalho rs. Até a próxima.

 

 

Anúncios

2 Comentários

Arquivado em Automação Doméstica, ESP8266, Geek, IoT

2 Respostas para “MQTT no AWS IoT via Websockets no ESP8266

  1. Vish

    Great work Fabio. Is the communication between AWS and device encrypted using SSL when using this solution?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s