Sistema IoT para Detecção de Fugas

Job ID: 40090794

Budget: €30 – €250 EUR

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.