Descrição Técnica Completa do Projeto: Sistema Inteligente de Deteção de Fugas de Água IoT 1. Introdução e Arquitetura do Sistema O presente projeto consiste no desenvolvimento de um Sistema Inteligente de Deteção e Mitigação de Fugas de Água baseado na Internet das Coisas (IoT). O sistema foi concebido com uma arquitetura de três camadas (Hardware, Backend e Aplicações Cliente) para garantir escalabilidade, segurança e monitorização em tempo real. A comunicação é estabelecida através de um protocolo de mensagens leve, o MQTT (Message Queuing Telemetry Transport), que permite a comunicação eficiente entre o microcontrolador e o servidor central. 2. Camada de Hardware: O Microcontrolador ESP32 O núcleo do sistema de deteção é o microcontrolador ESP32 Dev Kit C V4, escolhido pela sua capacidade de processamento, baixo consumo de energia e conectividade Wi-Fi e Bluetooth integrada. 2.1. Componentes e Sensores O módulo ESP32 interage com os seguintes componentes: • Sensor de Poça de Água (YL-69): Utilizado para a deteção imediata de água no chão. • Sensor de Temperatura e Humidade (DHT22): Monitoriza as condições ambientais, fornecendo dados cruciais para a análise preditiva. • Medição de Bateria (ADC): Um circuito divisor de tensão (conectado ao pino ADC do ESP32) permite monitorizar o nível de energia, essencial para o Modo de Bateria. • Buzzer Ativo: Atua como um alarme sonoro local imediato em caso de deteção de fuga. 2.2. Firmware e Modo de Bateria O firmware é desenvolvido em C++ (utilizando o ambiente Arduino IDE) e implementa o Modo de Bateria através da funcionalidade Deep Sleep do ESP32. Fluxo de Operação do Deep Sleep: 1. O ESP32 acorda a cada 5 minutos (configurável). 2. Conecta-se ao Wi-Fi e ao broker MQTT. 3. Lê o estado de todos os sensores (água, temperatura, humidade e bateria). 4. Cria um payload de dados em formato JSON que inclui o device_id, a api_key de autenticação e os valores dos sensores (incluindo o battery_level). 5. Publica o payload no tópico MQTT (esp32/data). 6. Verifica se recebeu algum comando remoto (ex: SILENCE_BUZZER) no seu tópico de subscrição (esp32/command/DEVICE_ID). 7. Após um breve período para garantir a transmissão, o ESP32 entra novamente em Deep Sleep. 3. Camada de Backend: Servidor Central (Flask) O Backend é implementado em Python utilizando o framework Flask, atuando como o servidor central de dados, lógica de negócio e autenticação. 3.1. Modelo de Dados e Múltiplos Dispositivos A base de dados (SQLite/PostgreSQL) é estruturada para suportar Múltiplos Dispositivos e Autenticação de Utilizadores: • User: Armazena as credenciais do utilizador (username, password hash). • Device: Associa cada ESP32 (device_id) a um user_id, permitindo que cada utilizador aceda apenas aos seus próprios dispositivos. Inclui campos para api_key (para autenticação do ESP32) e maintenance_mode. • SensorReading: Regista as leituras periódicas (temperatura, humidade, bateria). • WaterLeakEvent: Regista os eventos de fuga. • PredictiveAlert: Armazena os alertas gerados pela análise preditiva. 3.2. Autenticação e Segurança A segurança é implementada em duas frentes: 1. Autenticação de Utilizador (Aplicações Cliente): Utiliza Flask-Login para gestão de sessões e JSON Web Tokens (JWT) para autenticar as requisições da aplicação. 2. Autenticação de Dispositivo (ESP32): O ESP32 autentica-se no endpoint de envio de dados através de uma API Key única, associada ao seu device_id. 3.3. Análise Preditiva Simples O Backend executa uma lógica de Análise Preditiva Simples baseada em regras: • Risco de Condensação: Se a humidade ambiente for superior a 75% durante um período contínuo (ex: 4 horas), é gerado um alerta de Risco Elevado. • Variação Anómala: Se a humidade aumentar mais de 15% em 30 minutos, é gerado um alerta de Variação Anómala (indicativo de possível vazamento lento). 3.4. Modo de Manutenção O Backend gere o Modo de Manutenção através de endpoints dedicados. Quando ativado, o sistema ignora os alertas de fuga do dispositivo durante um período definido (ex: 30 minutos), prevenindo notificações desnecessárias durante a limpeza ou reparação. 4. Camada de Aplicações Cliente (Web e Mobile) As aplicações cliente são o ponto de interação do utilizador, desenvolvidas para funcionar em PC (Web/Desktop) e Android/iOS. 4.1. Plataforma de Desenvolvimento • Web/Desktop: Desenvolvida em React (JavaScript/TypeScript). • Mobile: Recomendado Flutter (Dart) para uma única base de código nativa para Android e iOS. 4.2. Comunicação e Funcionalidades As aplicações comunicam exclusivamente com o Backend Flask através de uma API REST segura (HTTPS/JWT). Funcionalidades Chave Implementadas: • Dashboard Interativo: Exibe o estado em tempo real, o nível de bateria e o estado do modo de manutenção. • Gráficos de Histórico: Utiliza os dados do endpoint /sensor-history para apresentar gráficos da evolução da temperatura e humidade ao longo do tempo. • Gestão de Dispositivos: Permite ao utilizador registar, nomear e selecionar qual dos seus dispositivos monitorizar. • Notificações Push: Recebe alertas de fuga e alertas preditivos em tempo real (via Firebase Cloud Messaging, acionado pelo Backend). • Modo de Manutenção: Interface para ativar e desativar o modo de manutenção no dispositivo selecionado. 5. Conclusão O projeto demonstra uma integração completa de hardware, software e cloud, incorporando funcionalidades avançadas como o Deep Sleep para otimização de energia, autenticação robusta para segurança, suporte a múltiplos dispositivos para escalabilidade e análise preditiva para prevenção. Este sistema transcende a simples monitorização, oferecendo uma solução inteligente e profissional para a gestão de riscos de fugas de água.