Sistema completo para automação de ar-condicionados utilizando ESP32, React, Django e MQTT.
Permite controlar dispositivos de marcas como Samsung, LG, Fujitsu, Springer Midea e Carrier via interface web.
O fluxo do sistema funciona da seguinte forma:
-
Frontend (React):
O usuário interage com a interface para ligar/desligar, ajustar temperatura e modos. -
API (Django):
O frontend envia uma requisição HTTP para o backend. -
MQTT Broker:
O backend publica uma mensagem JSON em um tópico MQTT específico do dispositivo. -
ESP32:
Conectada ao Wi-Fi, inscrita no tópico, recebe o comando e emite o sinal IR correspondente. -
Feedback:
A ESP32 envia seu novo estado para um tópico de resposta.
O backend lê e atualiza a interface em tempo real.
Tecnologias: Python, Django, Django REST Framework, Paho-MQTT
Função: Gerenciar dispositivos, usuários e comunicação via MQTT.
Principais arquivos:
core/models.py– Modelo Device (nome, id, marca, status).core/views.py– Recebe comandos do frontend e envia via MQTT.core/mqtt_helper.py– Função utilitária para publicar no broker.mqtt_listener.py– Escuta atualizações da ESP32 em tempo real.
Tecnologias: React, Vite, Tailwind CSS, Lucide Icons
Função: Interface amigável para o controle dos dispositivos.
Principais arquivos:
src/services/api.js– Comunicação com o backend Django.src/pages/Devices.jsx– Cadastro e listagem de dispositivos.src/components/RemoteControlModal.jsx– Controle visual estilo aplicativo.
Tecnologias: Arduino IDE / PlatformIO, C++
Bibliotecas: WiFiManager, PubSubClient, ArduinoJson, IRremoteESP8266
Função: Receber comandos via MQTT e emitir sinais IR.
É necessário rodar 3 terminais simultaneamente (Backend, Listener e Frontend) + a ESP32.
- Python instalado
- Node.js instalado
- Broker MQTT (ex.: público: broker.hivemq.com)
cd controle-ar-backendpython -m venv venv
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activatepip install django djangorestframework django-cors-headers paho-mqttpython manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserverBackend disponível em: http://localhost:8000
Em outro terminal:
cd controle-ar-backendAtivar ambiente virtual (se usou) e rodar:
python mqtt_listener.pyDeve aparecer: "✅ OUVINTE CONECTADO!"
cd controle-ar-frontend
npm install
npm run devFrontend disponível em: http://localhost:5173
- Abra o código
.inono Arduino IDE. - No trecho:
char device_id[50] = "esp32_XXXX";Substitua pelo device_id criado no Django (visível no admin ou editando o dispositivo). 3. Configure o Wi-Fi (ou use WiFiManager). 4. Carregue o código na placa. 5. Abra o Serial Monitor (115200) para confirmar a conexão.
- Backend offline ou erro de CORS.
Solução: Verifique se o
runserverestá ativo e olhe o console do navegador.
- Django não recebe feedback via MQTT. Soluções:
- Verifique se o listener está rodando.
- Confirme se o
device_idda ESP32 é idêntico ao cadastrado.
- Credenciais incorretas ou WiFiManager desconfigurado.
Solução: Conectar na rede
SmartAC-Confige reconfigurar.
- Problema com TailwindCSS. Solução:
npm install -D tailwindcss@3.4.17 postcss autoprefixer
npm run dev