#include <WiFi.h>
// GANTI: #include <PubSubClient.h>
#include <MQTTPubSubClient_Generic.h> // Library baru
#include <WebSocketsClient_Generic.h> // Library pendukung WebSocket
// Wifi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// MQTT Broker via Cloudflare
const char* mqtt_server = "mqtt.satriaelektronik.store"; // Domain Anda
const int mqtt_port = 443; // Port 443 untuk WebSocket Secure
// Buat objek WebSocket
WebSocketsClient webSocket;
MQTTPubSubClient mqttClient;
void setup() {
Serial.begin(9600);
// Konek WiFi seperti biasa
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
// Setup MQTT over WebSocket
webSocket.begin(mqtt_server, mqtt_port, "/mqtt"); // Path default EMQX biasanya "/mqtt"
// Hubungkan MQTT client ke WebSocket
mqttClient.begin(webSocket);
// Konek ke broker dengan credentials
Serial.println("Connecting to MQTT over WebSocket...");
while (!mqttClient.connect("ESP32Client", "FERRYOK", "FERRYOK")) {
Serial.print(".");
delay(1000);
}
Serial.println("Connected!");
// Subscribe ke topik jika perlu
mqttClient.subscribe("emqx/zahid", [](const String& topic, const String& payload) {
Serial.println("Received: " + topic + " - " + payload);
});
}
void loop() {
mqttClient.update(); // Gantikan client.loop()
// Publikasi data sensor di sini
static unsigned long lastPub = 0;
if (millis() - lastPub > 5000) {
mqttClient.publish("emqx/Temperature", String(25.5));
mqttClient.publish("emqx/Humidity", String(60.0));
lastPub = millis();
}
}Loading
ssd1306
ssd1306