Integrando AWS IoT Core com Flutter: modelagem, payloads, QoS e integração
Como integrei AWS IoT Core em um app Flutter: desafios e aprendizados

Search for a command to run...
Como integrei AWS IoT Core em um app Flutter: desafios e aprendizados

No comments yet. Be the first to comment.
Se o seu projeto Flutter estiver utilizando uma versão do Gradle inferior à 8, é provável que você enfrente problemas ao usar o Android Studio 2024.2. Isso ocorre porque essa versão do Android Studio agora utiliza, por padrão, o JDK 21. Para solucion...

Você já enfrentou o desafio de fazer um aplicativo Flutter usar recursos nativos? Muitas vezes, isso pode ser um tanto traumático. Certa vez, precisei fazer com que um aplicativo usando React Native + Expo utilizasse o GPS em um dispositivo de pagame...

A arquitetura de microapps tem como objetivo proporcionar ao usuário uma experiência unificada, utilizando diversos microapps altamente especializados. Com Flutter/Dart, temos a oportunidade ideal para criar projetos com essa arquitetura, devido à co...

Introdução Depois de contribuir para um package da comunidade(por ex. flutter_zxing) tive a curiosidade de me aprofundar mais em como chamar código nativo direto de um projeto Dart, e também estou tendo cada vez mais interesses em linguagens como Rus...

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.
É 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.
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.
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.
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 }
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.