Sistema IoT para Detecção de Fugas
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.
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.
Related categories:
Python
Mobile App Development
Cloud Computing
MQTT
JSON
Flask
Flutter
Mobile Development
API Development
Predictive Analytics