#include <WiFi.h>
#include <MQTT.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
WiFiClient net;
MQTTClient client;
unsigned long lastMillis = 0;
void connect(){
// Menghubungkan ke WiFi
Serial.print("Connected to WiFi");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Horay, WiFi Connected");
// Menghubungkan ke Broker
Serial.print("Connected to Broker");
while(!client.connect("")){ // Client ID tidak boleh sama
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Horray, Connected to Server");
client.subscribe("labskite/sh/#", 1); // subcribe dengan QoS 1
}
void publish(){
int pot1 = analogRead(32);
Serial.print("Topic: ");
Serial.println(pot1);
client.publish("labskite/iot/pot1", String(pot1), true, 1); // publish variabel pot ke topic nusabot/iot/pot dengan QoS 1
}
void subscribeData(String &topic, String &data){
Serial.print("Topic: ");
Serial.println(topic);
Serial.print("Data: ");
Serial.println(data);
if(topic == "labskite/sh/led1"){
digitalWrite(25, data.toInt()); //control led 1
}
if(topic == "labskite/sh/led2"){
digitalWrite(26, data.toInt()); //control led 2
}
}
void setup() {
pinMode(25, OUTPUT); //led 1
pinMode(26, OUTPUT); //led 2
pinMode(32, INPUT); //potensiometer
Serial.begin(9600);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(subscribeData);
connect();
}
void loop() {
client.loop();
if (millis() - lastMillis > 1000) {
lastMillis = millis();
publish();
}
delay(10);
}