//Jika Anode Common, maka pin COM dihubungkan ke 5V
//Jika Cathode Common, makan pin COM dihubungkan ke GND
#include <WiFi.h> // Library untuk ESP32 (gunakan <ESP8266WiFi.h> untuk ESP8266)
#include <MQTT.h> // Library MQTT
// Object WiFi dan MQTT
WiFiClient net;
MQTTClient client;
//Constanta array + Character + Variabel Array
// Konstanta untuk SSID dan password WiFi
const char ssid[] = "Wokwi-GUEST"; // Ganti dengan SSID WiFi Anda
const char pass[] = ""; // Ganti dengan password WiFi Anda (jika ada)
// Nomor pin GPIO untuk LED RGB
const int pinRed = 2;
const int pinGreen = 4;
const int pinBlue = 16;
void setup() {
// Memulai komunikasi Serial untuk debugging
Serial.begin(9600);
// Mengatur pin sebagai output
pinMode(pinRed, OUTPUT);
pinMode(pinGreen, OUTPUT);
pinMode(pinBlue, OUTPUT);
// Memulai koneksi ke jaringan WiFi
WiFi.begin(ssid, pass);
//Panggil variabel Client + fungsi begin + argumen(alamat broker + variabel wifi)
client.begin("broker.emqx.io", net);
//fungsi Callback untuk menerima pesan yang di-subscribe
client.onMessage(subscribe);
//Memanggil fungsi connect
connect();
}
void loop() {
//Fungsi untuk mengecek koneksi & penerimaan data
client.loop();
//Fungsi khusus library MQTT untuk Memeriksa koneksi ke broker
if(!client.connected()){
connect();
}
// Loop utama, tambahkan kode tambahan jika diperlukan
delay(10);
}
// Callback untuk menangani pesan yang diterima
//Membuat fungsi subscribe + parameter (tipe data, &variabel, tipe data, &variabel)
void subscribe(String &topic, String &data){
Serial.print("Topic: ");
Serial.println(topic);
Serial.print("Data: ");
Serial.println(data);
}
// Custom Function + Variabel
// Fungsi untuk mengontrol LED RGB
void rgb(bool red, bool green, bool blue) {
digitalWrite(pinRed, red); // Kontrol pin merah
digitalWrite(pinGreen, green); // Kontrol pin hijau
digitalWrite(pinBlue, blue); // Kontrol pin biru
}
//Membuat fungsi baru dengan nama Connect
void connect(){
//Memanggil variabel Custom Function
// Menyalakan LED merah selama proses koneksi
rgb(1, 0, 0); // LED merah menyala
Serial.print("Menghubungkan ke WiFi");
//Perulangan ESP32 untuk terhubung ke jaringan WiFi
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
// Jika terhubung, tampilkan pesan dan nyalakan LED hijau
Serial.println("\nBerhasil terhubung ke WiFi");
rgb(0, 1, 0); // LED hijau menyala
//Fungsi untuk
//while(client.connect("clientid-Uniq","Username","password")){}
while(!client.connect("https://wokwi.com/projects/419895477510499329")){
delay(500);
}
rgb(0,0,1);
Serial.print("MQTT Connect");
//Memanggil Variabel + melakukan Fungsi Subscribe + argumen (Topik, QoS) setelah terhubung ke broker
client.subscribe("nyoba/#", 1);
}