Arquitetura Definição Tecnológica - ES2-UFPI/TermoLOG GitHub Wiki

Definição Tecnológica — TermoLOG

1. Visão geral da arquitetura

[Nó de borda: microcontrolador + sensor] --(LoRa)--> [Nó central dedicado] --(HTTPS)--> [Backend FastAPI] --(SQL)--> [PostgreSQL]
                                                                                                |
                                                                                          [Dashboard Web React Native/TS]

O sistema tem três camadas: nós de borda (percepção e decisão local), nó central dedicado (concentra os dados dos nós de borda e faz a ponte com a internet) e servidor central (dashboard + persistência).


2. Hardware do nó de borda

Item Escolha Justificativa
Microcontrolador ESP32 Wi-Fi/BLE integrados nativamente, deep sleep de baixo consumo, ADC e GPIO suficientes para o sensor, compatível com módulos LoRa via SPI
Sensor DHT22 / AM2302 temperatura e umidade em um único componente, custo e precisão adequados ao caso de uso

3. Comunicação

3.1 Nó de borda → nó central dedicado: LoRa/LoRaWAN

Cada nó ESP32 envia suas leituras agregadas ao nó central dedicado via LoRa. Vantagens para este trecho da arquitetura:

  • Nativo no ESP32, sem hardware de rádio adicional
  • Baixo consumo de energia, adequado a nós alimentados por bateria
  • Alcance suficiente para cobrir os ambientes monitorados dentro de um mesmo local

3.2 Nó central dedicado → servidor: HTTPS

O nó central dedicado concentra as leituras recebidas via LoRa/LoRaWAN dos nós de borda e as encaminha ao backend por HTTPS, usando uma API REST exposta pelo FastAPI. Vantagens:

  • Protocolo padrão, com suporte nativo em bibliotecas HTTP para ESP32/microcontroladores com Wi-Fi
  • Criptografia em trânsito entre o nó central e o servidor
  • Integração direta com o modelo de rotas/documentação automática do FastAPI

4. Backend (servidor central)

Camada Escolha Justificativa
Framework FastAPI (Python) tipagem via Pydantic, geração automática de documentação OpenAPI, performance assíncrona adequada para receber leituras de múltiplos nós
Banco de dados PostgreSQL dados relacionais bem definidos (salas, nós, leituras, relatórios), suporte robusto a séries temporais via índices e extensões (ex. TimescaleDB, se o volume crescer)
Conteinerização Docker (Docker Compose para orquestrar API + banco) ambiente reprodutível para desenvolvimento e implantação

Responsabilidades do backend:

  • Ingestão das leituras enviadas pelo nó central dedicado via HTTPS
  • Persistência de séries de temperatura/umidade por sala/ambiente
  • Geração e salvamento de relatórios de qualidade personalizados
  • API consumida pelo dashboard web

5. Front-end (dashboard de controle)

Camada Escolha Justificativa
Framework React Native + TypeScript permite reaproveitar a mesma base de código para versão web e, futuramente, mobile; tipagem estática reduz erros de integração com a API

Funcionalidades previstas: visão geral das salas monitoradas, histórico de leituras, status de alarme por ambiente, geração/consulta de relatórios de qualidade.


6. Resumo da stack

  • Nó de borda: ESP32 + DHT22
  • Comunicação nó → nó central: LoRa/LoRaWAN
  • Comunicação nó central → servidor: HTTPS (API REST)
  • Backend: FastAPI (Python) + PostgreSQL, containerizado com Docker
  • Frontend: React Native + TypeScript