Se você não tem idéia da arquitetura de desenvolvimento e do projeto mecânico / elétrico por trás das soluções de IoT, elas podem parecer "ter qualidades ou poderes aparentemente sobrenaturais". Por exemplo, se você mostrar um sistema de IoT funcional para as pessoas do século XVIII, elas pensariam que é mágico.Este artigo é como rebentar esse mito. Ou, para ser mais técnico, sobre dicas para ajustar o desenvolvimento da IoT para um projeto incrível na área de gerenciamento de energia solar.
Spoiler : sem feitiços, apenas idéias analíticas para o desenvolvimento de serviços rápidos e fáceis.
Isenção de responsabilidade : não oferecemos uma solução única (ela simplesmente não existe), basta compartilhar o que achamos sério. Esses pontos podem ser características matadoras, enquanto, pelo contrário, sua negligência pode matá-lo. Chalaça pretendida;)
Apresentando o sistema IoT para visualizar e otimizar o consumo de energia solar
Tivemos o prazer de trabalhar em um projeto para melhorar o uso de energia auto-gerado. O principal é visualizar e otimizar o uso de sistemas fotovoltaicos (PV) para empresas instaladoras e clientes finais. Portanto, quando o Solar Manager é instalado como um hub central para distribuir a energia solar produzida entre dispositivos domésticos, você usa o máximo de energia produzida por si mesmo.

Já escrevemos sobre a perspectiva comercial do uso de energia solar e agora vamos mergulhar nos desafios tecnológicos e nas dicas do desenvolvimento.
Pré-requisito absoluto
Antes de começarmos, vamos esclarecer. Há uma coisa que se aplica a todo e qualquer projeto, independentemente de ser um sistema de IoT ou um pouso simples.
Nunca inicie a implementação antes de ter um entendimento completo do que deseja alcançar (e de todos os envolvidos).
Não existe algo tão evidente. Não, não há telepatas e ninguém lê seus pensamentos. Esclareça, discuta, verifique se você está na mesma página.

Claro, se você não quiser gastar o dobro de tempo e dinheiro.
A missão
Então, o que temos como insumos? Conectividade flexível e firmware remoto centralizado, 5 funções de usuário com diferentes UX e conjuntos de permissões, convertendo e analisando dados, enorme quantidade de solicitações e, como uma cereja no topo do bolo, plotando muitos dados de valor temporal nos gráficos.
Desafios e especificidades da implementação do sistema IoT para consumo de energia
Quando se trata de desenvolvimento, três coisas são mais importantes: estabilidade, relevância e velocidade. Especialmente quando o projeto requer uma arquitetura monolítica. É por isso que a lógica geral, todos os fluxos de usuários e o design do banco de dados devem ser o mais simples e otimizados possível. Sejamos honestos, em 2019 ninguém quer esperar 40 segundos porque 'seus dados estão sendo processados'. Então, aqui está a lista de perguntas / respostas para plataformas IoT a que nos referimos:
- A arquitetura se encaixa nos requisitos e especificações?
- Como você converterá, processará e analisará os dados coletados?
- Quais são as relações mais ideais entre as camadas MVC / MVP pai-filho? Eles podem ser redimensionados sem serem interrompidos?
- Existem módulos que executam funções similares / adjacentes? Eles podem ser unidos em um único módulo multiuso? Isso introduzirá ou reduzirá a complexidade?
- A comunicação entre os estágios é ideal?
- Como armazenar dados em cache antes de visualizá-los?
- A experiência do usuário (UX) é simples e evidente para cada função de usuário?
Divida o que precisa ser distribuído, junte o que é semelhante. Não confunda isso, no entanto, com a criação de grandes classes que (deveriam) resolver várias tarefas. Em vez disso, crie pequenos para uma única tarefa. Para tarefas complexas, crie várias classes que resolvam uma subtarefa e outra que as utilizará.
Soluções de IoT de arquiteto inteligentes
Inteligente aqui refere-se à criação de uma arquitetura de projeto rápida, escalável, otimizada e sustentável que se encaixa nos requisitos do projeto. As perguntas básicas que surgiram neste momento:
- Qual é o fluxo de arquitetura mais fácil e mais direto?
- Como tornar a experiência do usuário para cada função a mais simples?
- Podemos revisar a arquitetura inicial para melhor escalabilidade e otimização de desempenho?
Para aplicativos da web, isso envolve o design do HMVC (hierárquico modelo de visualização de controlador). Por exemplo, para alocar melhor os recursos e fornecer uma resposta mais rápida, trabalhe nas conexões entre API, backend, front end e edge. Configure a comunicação local na nuvem, armazenando e transferindo dados para obter a resposta certa rapidamente (Olá, Capitão Óbvio!).

Nunca subestime a importância de pensar no design do banco de dados (DB). Isso também se aplica às relações entre coleções no banco de dados. Você tem muitas entidades, que interagem de várias maneiras, por isso é crucial manter todas as conexões lógicas relacionadas em um só lugar.
Portanto, quando você tiver uma estrutura inicial em mãos, determine:
- Esse (um para um, um para muitos, muitos para muitos) é o tipo de relacionamento ideal para essa coleção? Resolve a tarefa com mais eficiência?
- Quão bem corresponde à tarefa na tela específica?
- Isso se encaixa bem na arquitetura geral do projeto?
Otimize a lógica por trás de cada módulo e garanta que a arquitetura geral seja preservada. Pense no conjunto de permissões. Então pense novamente e otimize. Lembre-se de definir os tipos de conexão para que, para cada tarefa, você tenha todas as informações necessárias em um só lugar e lide com as solicitações corretamente.
Por exemplo, imagine que seu banco de dados seja um restaurante de fast food. Você tem muitos clientes, precisa servir comida rápida e precisamente o que eles pediram. Ou então o seu negócio está pronto. Isso é exatamente o mesmo para os bancos de dados. Sim, existem dezenas de coleções e você precisa de dados de 7 a 8 deles simultaneamente. Portanto, projete as relações para que elas estejam logicamente conectadas e retorne a resposta rapidamente.
O sistema de IoT é como um restaurante. Não faça os clientes esperar.
Como plotar [gazillion] de dados
Lembra-se dos horários em que os sites são carregados por alguns minutos? Vimos aplicativos em que os painéis são carregados ainda mais lentamente. E isso é um não-não.
Os gráficos são um novo normal. A visualização de dados é comumente usada no SCADA, IoT e em qualquer projeto analítico e por um motivo. Ver picos no consumo de energia, tendências do mercado, CO2 no ar e qualquer outra coisa que você possa medir (normalmente ao longo do tempo) dá uma impressão vívida. Você vê, você entende, você age. Com a apresentação textual de grandes conjuntos de dados, seu olho ficará borrado rapidamente.
Portanto, o desafio está na plotagem rápida de gráficos com grande número de pares valor-tempo. Antes que os usuários vejam os dados no gráfico, o sistema precisa determinar todos os pontos para plotá-los. Tivemos um monte de ideias para determinar como armazenar em cache os dados, para que a plotagem de um gráfico com pares de valor de dados de 50K + leve menos de 2 segundos.

Do zero à produção e além
Além do aplicativo Web, também desenvolvemos aplicativos iOS e Android para instalação, monitoramento e acesso on-the-go.
O importante a lembrar ao trabalhar em sistemas de IoT é manter a simplicidade e a escalabilidade. A arquitetura típica da IoT em cinco estágios deve ser bem pensada para não trazer nenhuma complexidade redundante.
À medida que cada produto evolui, é necessário pensar nos meios de colocar em camadas novas funcionalidades sem interromper os recursos existentes. E, é claro, nunca se esqueça dos testes de unidade.
Menos de um ano após o lançamento
Desde o seu lançamento em outubro de 2018, o Solar Manager é adotado e utilizado pelas principais empresas atacadistas e instaladoras de energia fotovoltaica da Suíça.
Ao revisar e otimizar os hábitos de uso de energia, os consumidores tiram o melhor proveito de seus PVs e, assim, economizam custos. Em uma escala mais global e de acordo com a Deloitte , essa solução torna a energia solar competitiva com as fontes de energia tradicionais. Isso, por sua vez, o torna atraente para outros consumidores e empresas residenciais. E, finalmente, não soa como base de uma cidade inteligente pela qual todos esperamos?
Por trás do sucesso de qualquer projeto de IoT
Não existe um 'guia definitivo' para criar produtos de sucesso. Primeiro, cada projeto é único e traz seus próprios desafios. Segundo, mesmo que você tenha feito vários projetos na área, as demandas de tecnologia e mercado evoluem. Portanto, a experiência que você tem de 2 ou até meio ano atrás pode não ser relevante agora.
Você também pode verificar em nosso GitHub muitos instrumentos de código aberto gratuitos para o desenvolvimento da IoT.