Este projeto implementa um protótipo funcional de um Sistema Distribuído Pervasivo (Smart Environment) utilizando Python e MQTT. [cite_start]O objetivo é monitorar a ocupação de salas de aula em tempo real para otimizar o uso dos ambientes e dos recursos (climatização, iluminação)[cite: 4, 2].
O sistema demonstra a aplicação de:
- [cite_start]Conceitos de Sistemas Distribuídos (Comunicação, concorrência, sincronização)[cite: 69].
- [cite_start]Computação Pervasiva/Ubíqua e processamento baseado em contexto[cite: 70].
- Arquiteturas de IoT e ambientes inteligentes.
[cite_start]A arquitetura segue o modelo Publicação/Assinatura (Pub/Sub), garantindo o desacoplamento e a concorrência no processamento de dados[cite: 69, 70].
| Componente | Tipo de Nó | Função no Sistema |
|---|---|---|
| Nós Sensores (Mín. 3) | Publishers | [cite_start]Geram dados simulados (Temperatura, Luminosidade, Ocupação) [cite: 9, 10, 11, 12] [cite_start]e os enviam continuamente ao Servidor[cite: 6, 35]. |
| Servidor de Contexto (1) | Subscriber/Publisher | [cite_start]Recebe dados concorrentemente [cite: 38][cite_start], processa o contexto (decisão) [cite: 16, 17][cite_start], e envia comandos para o Atuador[cite: 18, 45]. |
| Atuador Distribuído (Mín. 1) | Subscriber | [cite_start]Recebe comandos [cite: 48] [cite_start]e executa ações simuladas (Ligar AC, Desligar Luzes, Alerta)[cite: 20, 22, 49]. |
- [cite_start]Protocolo: MQTT (Message Queuing Telemetry Transport)[cite: 24].
- [cite_start]Modelo: Publicação/Assinatura, escolhido por sua eficiência e natureza assíncrona, ideal para a disseminação de eventos para múltiplos nós[cite: 65, 71].
-
Fluxo Lógico: Sensores (PUBLISH)
$\to$ Broker$\to$ Servidor de Contexto (SUBSCRIBE/PROCESSA/PUBLISH)$\to$ Broker$\to$ Atuadores (SUBSCRIBE).
[cite_start]O Processamento Baseado em Contexto é realizado no Servidor, que aplica regras de negócio para identificar padrões e tomar decisões automáticas[cite: 70, 45, 17].
| Situação Pervasiva (Contexto) | Condição (Regra de Negócio) | Ação Automática (Comando) |
|---|---|---|
| Sala Lotada e Quente | Pessoas |
[cite_start]Ligar Ar-Condicionado [cite: 18] |
| Sala Vazia com Luz Acesa | Pessoas |
[cite_start]Apagar Luzes [cite: 18] |
| Temperatura Elevada Inexplicada | Temperatura |
[cite_start]Enviar Alerta de Manutenção [cite: 23] |
- [cite_start]Python 3.x: Linguagem de implementação[cite: 3].
- Broker MQTT (Mosquitto): Instalado e rodando em
localhost:1883. - Ambiente Virtual (
.venv): Ativado. - Dependência: Instale o pacote
paho-mqttno ambiente virtual ativado:pip install paho-mqtt
Abra cinco janelas de terminal separadas, ative o ambiente virtual e navegue para a pasta \src em todas elas.
A ORDEM É IMPORTANTE: O Servidor e o Atuador devem iniciar primeiro.
| Janela | Componente | Comando de Execução (na pasta \src) |
|---|---|---|
| 1 | Servidor de Contexto | python Context_Server.py |
| 2 | Atuador Distribuído | python Actuator_Node.py 001 |
| 3 | Sensor 1 | python Sensor_Node.py 001 |
| 4 | Sensor 2 | python Sensor_Node.py 002 |
| 5 | Sensor 3 | python Sensor_Node.py 003 |
[cite_start]O sistema atende ao requisito de persistência [cite: 50] gerando logs na pasta \logs na raiz do projeto:
- [cite_start]
Log_Sensores.txt: Log de cada leitura enviada pelos sensores[cite: 52]. - [cite_start]
Log_Decisoes.txt: Log de decisões do servidor de contexto[cite: 53]. - [cite_start]
Log_Atuadores.txt: Log das ações dos atuadores[cite: 54].