#include <WiFi.h>   // Untuk menggunakan WiFi
#include <MQTT.h>   // Untuk protokol MQTT

WiFiClient net;
MQTTClient client;

const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";

void connect(){   //Untuk menghubungkan ke WiFi dan server
  rgb(1,0,0);
  while(WiFi.status() != WL_CONNECTED){
    // Selama wifi belum terhubung maka tetap berada di perulangan
    delay(1000);
  }
  rgb(0,1,0);

  // Hubungkan ke broker atau server
  while(!client.connect("TIDAK_BOLEH_SAMA","public","public")){  // client_id, username, password
    delay(1000);
  }
  rgb(0,0,1);
  client.subscribe("ucic/lampu", 1);      // lakukan subscribe
}

void receive(String &topic, String &data){
  if(data == "nyala"){    // jika datanya adalah kata "nyala"
    digitalWrite(33, 1);
  } else {
    digitalWrite(33, 0);
  }
}

void setup() {
  pinMode(25, OUTPUT);
  pinMode(26, OUTPUT);
  pinMode(27, OUTPUT);
  pinMode(33, OUTPUT);

  WiFi.begin(ssid, pass);
  client.begin("public.cloud.shiftr.io", net);
  connect();  // panggil function connect()

  // eksekusi function receive() setiap kali ada data
  client.onMessage(receive);
}

void rgb(bool red, bool green, bool blue){
  digitalWrite(25, red);
  digitalWrite(26, green);
  digitalWrite(27, blue);
}

void loop() {
  client.loop();  // Jalankan terus MQTT agar subscribe berhasil 
  if (!client.connected()) {
    connect();
  }
}