#include <WiFi.h>
#include <MQTT.h>
// Nama WiFi dan password nya
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
// Object untuk terhubung ke MQTT dan ke WiFi
WiFiClient net;
MQTTClient client;
void connect(){
rgb(1,0,0); // LED Merah menyala (belum terhubung ke WiFi)
while(WiFi.status() != WL_CONNECTED){ // Mengecek apakah sudah terhubung ke WiFi atau belum
delay(500);
}
rgb(0,1,0); // LED Hijau menyala (berhasil terhubung ke WiFi)
while(!client.connect("eurghsleutkg9348")){ // ClientID harus berbeda satu sama lain
delay(500);
}
rgb(0,0,1); // LED Biru menyala (berhasil terhubung ke MQTT Broker / server)
client.subscribe("smarthome/#"); // lakukan subscribe ke topic "smarthome/#"
}
void subscribe(String &topic, String &data){
if(topic == "smarthome/garasi"){
if(data == "on"){
digitalWrite(14, 1);
} else {
digitalWrite(14, 0);
}
}
}
void setup() {
// Memberi tahu ESP32 pin yang digunakan sebagai output
pinMode(14, OUTPUT);
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
WiFi.begin(ssid, pass); // Memulai penggunaan WiFi
client.begin("broker.emqx.io", net); // Memulai penggunaan MQTT
client.onMessage(subscribe); // Memberi tahu jika ada data yang masuk maka function dengan nama subscribe akan dieksekusi
connect(); // Panggil function bernama void connect()
}
void loop() {
client.loop(); // Untuk mengecek secara berkala data yang masuk
delay(10);
}
void rgb(bool red, bool green, bool blue){
digitalWrite(27, red);
digitalWrite(26, green);
digitalWrite(25, blue);
}