#include <WiFi.h>
#include <PubSubClient.h>
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const char* MQTT_BROKER = "broker.emqx.io";
const int MQTT_PORT = 1883;
const char* MQTT_CLIENTID = "";
const char* MQTT_SUB_TOPIC = "esp32_gian_teste_sub";
const char* MQTT_PUB_TOPIC = "esp32_gian_teste_pub";
char msg[255];
WiFiClient espClient;
PubSubClient mqtt(espClient);
void mqttCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("[MQTT] Mensagem em ["); Serial.print(topic);
Serial.print("]: ");
for (unsigned int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void connectWiFi() {
Serial.print("[WiFi] Conectando...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n[WiFi] Conectado!");
}
void connectMQTT() {
mqtt.setServer(MQTT_BROKER, MQTT_PORT);
mqtt.setCallback(mqttCallback);
while (!mqtt.connected()) {
Serial.print("[MQTT] Conectando...");
if (mqtt.connect(MQTT_CLIENTID)) {
Serial.println(" conectado!");
mqtt.subscribe(MQTT_SUB_TOPIC);
} else {
Serial.print(" falhou (rc="); Serial.print(mqtt.state());
Serial.println("). Tentando novamente em 2s...");
delay(2000);
}
}
}
unsigned long lastMsg = 0;
void setup() {
Serial.begin(115200);
connectWiFi();
connectMQTT();
}
void loop() {
if (!mqtt.connected())
connectMQTT();
mqtt.loop();
unsigned long now = millis();
if (now - lastMsg > 1000) {
lastMsg = now;
String msg = "Breaking News: GIAN ...";
mqtt.publish(MQTT_PUB_TOPIC, msg.c_str());
Serial.print("[MQTT] Publicado: ");
Serial.println(msg);
}
}