#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
char *mqttServer = "broker.hivemq.com";
int mqttPort = 1883;
char *mqttTopic = "rr/sija";
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
void connectToInternet();
void setupMQTT();
void reconnectMQTT();
void setup() {
Serial.begin(115200);
connectToInternet();
setupMQTT();
}
// Program utama atau main program
void loop() {
//Mengecek koneksi ke MQTT Broker
if (!mqttClient.connected()){
reconnectMQTT(); // jika putus koneksi, dicoba lagi
}
// Mempublish message
mqttClient.publish(mqttTopic,"Cah SIJA");
delay(200);
}
// Detil function-funtion yang dideklarasikan
// function connectToInternet()
// bertugas menjalankan tugas konek ke SSID
void connectToInternet(){
WiFi.begin(ssid, password); // Mencoba connect ke Wifi
// Melakukan pengecekan terhadap status koneksi ke WI-Fi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected to Wi-Fi");
Serial.print("IP Address : ");
Serial.println(WiFi.localIP());
}
// mengatur dan menginisialisasi koneksi ke broker MQTT
void setupMQTT() {
mqttClient.setServer(mqttServer, mqttPort); // Mengatur detail broker target yang digunakan
}
// untuk melakukan koneksi ulang (reconnect) ke broker MQTT
// jika klien kehilangan koneksi dengan broker
// atau gagal melakukan koneksi saat pertama kali menjalankan program.
// ESP32 Reconnect to broker
void reconnectMQTT() {
Serial.println("Connecting to MQTT Broker...");
while (!mqttClient.connected()) {
Serial.println("Reconnecting to MQTT Broker..");
//membuat Cliend ID untuk setiap device
String clientId = "ESP32Client-";
clientId += String(random(0xffff), HEX);
// menampilkan pesan koneksi ke MTQQ broker sukses
if (mqttClient.connect(clientId.c_str())) {
Serial.println("Connected.");
}
}
}