#include <WiFi.h>
#include <MQTT.h>
WiFiClient net;
MQTTClient client;
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const int pinRed = 2;
const int pinGreen = 4;
const int pinBlue = 16;
const int pinLED1 = 12;
const int pinLED2 = 13;
void setup(){
pinMode(pinRed, OUTPUT);
pinMode(pinGreen, OUTPUT);
pinMode(pinBlue, OUTPUT);
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(subscribe);
connect();
}
void loop(){
client.loop();
if(!client.connected()){
connect;
}
delay(10);
}
void subscribe(String &topic, String &data){
if(topic == "kelasiot/lampu"){
if(data == "on"){
led(1,1);
} else if(data == "off"){
led(0, 0);
}
}
if(topic == "kelasiot/lampu1"){
if(data == "on"){
led(1,0);
} else if(data == "off"){
led(0, 0);
}
}
if(topic == "kelasiot/lampu2"){
if(data == "on"){
led(0,1);
} else if(data == "off"){
led(0, 0);
}
}
}
void rgb(bool red, bool green, bool blue){
digitalWrite(pinRed, red);
digitalWrite(pinGreen, green);
digitalWrite(pinBlue, blue);
}
void led(bool ledSatu, bool ledDua){
digitalWrite(pinLED1, ledSatu);
digitalWrite(pinLED2, ledDua);
}
void connect(){ //mengecek wifi dan broker
rgb(1,0,0); // merah
while(WiFi.status() != WL_CONNECTED){
delay(500);
}
rgb(0,1,0); // hijau
// while(client.connect("clientid-unik", "username", "password"))
while(!client.connect("kucinglucu")){
delay(500);
}
rgb(0,0,1); // biru
// client.subscribe("topic", QoS);
client.subscribe("kelasiot/#", 1);
}