Integrando AWS IoT Core com Flutter: modelagem, payloads, QoS e integração

Lucas NáiadeLucas Náiade
3 min read

Recentemente, tive uma experiência muito positiva com IoT, mais especificamente com o AWS IoT Core. Participei da implementação em uma aplicação Android desenvolvida com Flutter, onde os dispositivos operam sob diferentes tipos de conexão com a internet, variando em distância e qualidade de sinal. Abaixo um pouco da minha experiência usando AWS IoT Core + AWS Lambda e um app Flutter.

Design ou modelagem de tópicos

É uma experiencia muito legal modelar os tópicos para a sua solução usando IOT. Se você está começando agora, os dispositivos podem assinar e também publicar em um tópico ou vários tópicos ao mesmo tempo. Esses tópicos podem ser modelados para garantir uma lógica hierárquica, assim como também ajudar na reutilização e controle de acessos.
Por exemplo, supomos que vamos modelar tópicos para um MDM(Mobile Device Management) onde podemos para cada parceiro, separar vários dispositivos que vão receber e enviar dados via IOT:

  • parceiro1/grupo1/serialequipamento1/apps - Os dispositivos do Parceiro 1 cadastrados no Grupo 1 podem cada um deles ter uma configuração de APPs permitidos.

  • parceiro1/grupo2/serialequipamento2/location - O dispositivo com serial “serialequipamento2” poderá enviar sua localização de GPS para esse tópico, ou qualquer outro equipamento. Poderíamos também ouvir para alimentar uma base de dados por exemplo.

  • Usar curingas (+, #):

    • parceiro1/grupo1/+/location → escuta todos os dispositivos.

    • pareceiro2/# → escuta tudo do parceiro.

QoS - Qualidade de Serviço

Um ponto importante é que o IoT do AWS não oferece suporte ao QoS 2, o que dificulta o uso em alguns cenários como por exemplo onde é necessário garantir entrega única das mensagens e sua aplicação não consegue descartar as duplicadas que podem acontecer no QoS 1. Se a sua solução não consegue lidar com mensagens duplicadas, o AWS IoT Core pode não ser a melhor opção. Nesses casos, alternativas como o HiveMQ podem ser mais adequadas.

Integração com outros serviços AWS

O AWS IoT Core é facilmente integrável a outros serviços da AWS. É possível utilizar desde Lambda e DynamoDB até OpenSearch, entre outros, o que abre um leque enorme de possibilidades. Basta configurar um gatilho (trigger) e a integração está pronta.

Na solução em que participei, integramos o processamento de alguns tópicos usando AWS Lambda, com funções escritas inteiramente em Golang.

Modelagem de payload

O IOT funciona bem com qualquer tipo de dado desde que você se atente aos limites de tamanho máximo por mensagem. Minha experiencia se limitou a enviar dados como JSON e Protobuf, onde o envio de Protobuf foi focado no ganho de eficiência e performance para um caso especifico.

Exemplo em JSON de um status report de equipamento:

  • Tópico → parceiro1/grupo1/serialequipamento1/status

  • Payload → {"batery": 78, "status": "ativo", "version": "1.2.0", "lat": -23.55, "lon": -46.63, "tempetature": 12.5, "timestamp": 1685423421 }

Conclusão

Se você está pensando em começar uma solução com IoT, vale a pena experimentar. É uma alternativa econômica, escalável e inteligente em relação a soluções tradicionais como WebSockets, especialmente no contexto de dispositivos móveis e ambientes com conectividade variável e imprevisível. Com os recursos certos e uma boa modelagem, o IoT pode entregar muita confiabilidade e eficiência para suas aplicações.

0
Subscribe to my newsletter

Read articles from Lucas Náiade directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lucas Náiade
Lucas Náiade