//# Professor Cristiano Teixeira
//# Mudanças do original Sob Licença Apache 2.0
// Para testar isolado sem o outro projeto
// Abra o site:
// 1. http://www.hivemq.com/demos/websocket-client/
// 2. Click em "Connect"
// 3. No campo Publish, deixe o Topic como "sei2026"
// 4. Escreva alguma mensagem, por exemplo: {"Botao" : True}
// 5. click em "Publish"
#include <WiFi.h>
#include <PubSubClient.h>
// Wi-Fi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// MQTT
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* mqtt_topic = "sei2026";
WiFiClient espClient;
PubSubClient client(espClient);
// ===== CALLBACK (recebe mensagens) =====
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensagem recebida no tópico: ");
Serial.println(topic);
String mensagem = "";
for (int i = 0; i < length; i++) {
mensagem += (char)payload[i];
}
Serial.print("Conteúdo: ");
Serial.println(mensagem);
Serial.println("-----------------------");
}
// ===== WIFI =====
void conectawifi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println(" Conectado!");
}
// ===== MQTT =====
void connectToMQTT() {
while (!client.connected()) {
String clientId = "SubscriberSEI-";
clientId += String(random(0xffff), HEX);
Serial.print("Conectando ao MQTT com ID: ");
Serial.println(clientId);
if (client.connect(clientId.c_str())) {
Serial.println("Conectado ao broker MQTT!");
// SE INSCREVE NO TÓPICO
client.subscribe(mqtt_topic);
Serial.print("Inscrito no tópico: ");
Serial.println(mqtt_topic);
} else {
Serial.print("Falha rc=");
Serial.print(client.state());
Serial.println(" tentando novamente em 5s...");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
conectawifi();
client.setServer(mqtt_server, mqtt_port);
// Define a função de callback
client.setCallback(callback);
}
void loop() {
if (!client.connected()) {
connectToMQTT();
}
client.loop();
}