#include <WiFi.h>
#include <PubSubClient.h>
// Configuração WiFi
const char* ssid = "Wokwi-GUEST";
const char* senha = "";
// Configuração MQTT
const char* mqttServer = "mqtt-dashboard.com";
const int mqttPort = 1883; // Porta MQTT padrão
const char* mqttClientID = "ESP32_Client_db";
const char* mqttTopicSubscribe = "ifms/iot/subscribe/db"; // Tópico para receber mensagens
const char* mqttTopicPublish = "ifms/iot/publish/db"; // Tópico para enviar mensagens
WiFiClient espClient;
PubSubClient mqttClient(espClient);
char led;
// Função de callback para mensagens recebidas
void mqttCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensagem recebida no tópico: ");
Serial.println(topic);
Serial.print("Mensagem: ");
for (unsigned int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
led = (char)payload[i];
}
Serial.println();
// Aqui você pode adicionar lógica para tratar a mensagem recebida.
}
// Conectar ao WiFi
void connectToWiFi() {
WiFi.begin(ssid, senha);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi conectado! IP: " + WiFi.localIP().toString());
}
// Conectar ao broker MQTT
void connectToMQTT() {
mqttClient.setServer(mqttServer, mqttPort);
mqttClient.setCallback(mqttCallback);
while (!mqttClient.connected()) {
Serial.println("Conectando ao MQTT...");
if (mqttClient.connect(mqttClientID)) {
Serial.println("Conectado ao MQTT!");
// Assinar o tópico
mqttClient.subscribe(mqttTopicSubscribe);
Serial.println("Assinado no tópico: " + String(mqttTopicSubscribe));
} else {
Serial.print("Falha na conexão MQTT. Código de erro: ");
Serial.println(mqttClient.state());
delay(2000);
}
}
}
void setup() {
Serial.begin(9600);
connectToWiFi();
connectToMQTT();
pinMode(5, OUTPUT);
}
void loop() {
if (!mqttClient.connected()) { // Verifica e Reconecta ao MQTT
connectToMQTT();
}
mqttClient.loop(); // Verifica se existe mensagem no Canal
if(led == '1'){
digitalWrite(5,HIGH);
}
else{
digitalWrite(5,LOW);
}
// Publicar mensagens periódicas
mqttClient.publish(mqttTopicPublish, "Mensagem do ESP32 para MQTT - Marcelo" );
delay(5000);
}