#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "mqtt.antares.id";
const int mqtt_port = 8883; // WAJIB SSL
// Gunakan credential MQTT Antares (yang dari tabel)
const char* mqttUser = "c2acd69b3ccdf0b9";
const char* mqttPass = "b2ab2bd910e382b4";
String project = "CONTOH";
String device = "wokwi";
// Client SSL
WiFiClientSecure espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
espClient.setInsecure();
// Karena Wokwi ga bisa load root CA, jadi harus insecure mode
WiFi.begin(ssid, password);
Serial.print("Connecting WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
client.setServer(mqtt_server, mqtt_port);
}
void reconnect() {
while (!client.connected()) {
Serial.print("Connecting MQTT... ");
if (client.connect("ESP32Client", mqttUser, mqttPass)) {
Serial.println("Connected!");
} else {
Serial.print("Failed rc=");
Serial.print(client.state());
Serial.println(" retry 3s...");
delay(3000);
}
}
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
String topic = "/oneM2M/req/" + String(mqttUser) + "/antares-cse/json";
String payload =
"{"
"\"m2m:rqp\": {"
"\"op\": 1,"
"\"to\": \"/antares-cse/antares-id/" + project + "/" + device + "\","
"\"fr\": \"" + mqttUser + "\","
"\"rqi\": \"12345\","
"\"ty\": 4,"
"\"pc\": {"
"\"m2m:cin\": {"
"\"con\": \"{\\\\\"nilai\\\\\":123}\""
"}"
"}"
"}"
"}";
client.publish(topic.c_str(), payload.c_str());
Serial.println("Data terkirim!");
delay(5000);
}