#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient ESPClient;
PubSubClient mqttClient(ESPClient);
void getNetworkConnection(const char* ssid, const char* pass) {
WiFi.begin(ssid, pass);
Serial.print("Connecting to " + String(ssid));
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println("Connected to " + WiFi.localIP().toString());
}
String generateUniqueID() {
String uniqueID = "ESP32-";
uint64_t chipID = ESP.getEfuseMac();
String chipIDstr = String(chipID, HEX);
return uniqueID;
}
void getBrokerConnection() {
while (!mqttClient.connected()) {
Serial.print("Connecting to MQTT broker...");
// Generate a unique client ID
String clientId = generateUniqueID();
if (mqttClient.connect(clientId.c_str())) {
Serial.println("connected" + clientId);
} else {
Serial.print("failed with state ");
Serial.print(mqttClient.state());
Serial.println(" - retrying in 5 seconds");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
getNetworkConnection("Wokwi-GUEST", "");
mqttClient.setServer("broker.hivemq.com", 1883);
}
void loop() {
if (!mqttClient.connected()) {
getBrokerConnection();
}
mqttClient.loop();
}