Arquitetura Visão Geral - ES2-UFPI/TermoLOG GitHub Wiki

Visão Geral

flowchart LR
    NB["Nós de borda<br/>ESP32 + DHT22"] -- BLE --> NC["Nó central"]
    NC -- "HTTPS (VPN)" --> API["API FastAPI"]
    API --> DB[("PostgreSQL")]
    WEB["Dashboard web<br/>React + TypeScript"] -- HTTPS --> API
    API --> NOT["E-mail, push<br/>e Telegram"]
Loading

O TermoLOG é dividido em quatro partes: os nós de borda, o nó central, o servidor e o dashboard web.

Os nós de borda são os ESP32 com sensor DHT22 instalados em cada sala ou câmara fria. Eles leem a temperatura e a umidade no intervalo configurado e mandam a leitura para o nó central por Bluetooth Low Energy. Se a leitura estiver fora da faixa da sala, o próprio nó liga o alarme local (LED e buzzer), sem precisar esperar o servidor.

O nó central fica em cada unidade (farmácia, restaurante, data center) e junta as leituras de todos os nós de borda daquele local. Ele envia essas leituras para a API por HTTPS, através da VPN. Se a internet cair, as leituras ficam guardadas nele e são enviadas quando a conexão voltar, para não perder nenhum registro. Ele também repassa para os nós as configurações alteradas no sistema, como a frequência de leitura.

O servidor roda em Docker, com a API em FastAPI e o banco PostgreSQL. A API recebe e grava as leituras, compara cada uma com a faixa da sala, abre os alertas, envia as notificações e gera os relatórios. Os módulos da API estão descritos em Detalhamento dos Módulos.

O dashboard web é feito em React com TypeScript. É por ele que o usuário acompanha as salas, vê o histórico, reconhece os alertas e gera relatórios, tanto no computador quanto no celular. Todos os dados vêm da API.

Exemplo de fluxo

Quando um nó de borda faz uma leitura, ele envia para o nó central, que repassa para a API. A API grava a leitura no PostgreSQL e verifica se ela está dentro da faixa configurada para a sala. Se estiver fora, um alerta é aberto e os responsáveis são avisados pelos canais que escolheram (e-mail, push ou Telegram). No dashboard, a sala aparece destacada até alguém reconhecer o alerta e registrar a ação corretiva.

Outros

O TermoLOG utiliza bibliotecas e frameworks de terceiros em todas as camadas. No firmware dos ESP32 são usados o core Arduino da Espressif (Wi-Fi, BLE e deep sleep), a DHT sensor library da Adafruit para ler o sensor e a ArduinoJson para montar os dados enviados à API. No servidor são usados o FastAPI com Pydantic para a API e a validação dos dados, o SQLModel para acesso ao PostgreSQL e o Docker Compose para subir a API e o banco juntos. No dashboard são usados React, TypeScript, Vite, React Router para a navegação e Recharts para os gráficos. Para enviar os alertas, a API vai usar serviços externos de e-mail, push e Telegram.

⚠️ **GitHub.com Fallback** ⚠️