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