#include <WiFi.h>
#include <MQTT.h>
#include <NusabotSimpleTimer.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const int pinLed = 18;
WiFiClient net;
MQTTClient client;
NusabotSimpleTimer timer;
int pot;
void publishPot(){
pot = analogRead(34);
client.publish("nusabot/pot", String(pot)); // Melakukan publish
}
void fungsiPublish2(){
client.publish("nusabot/data2", "Halo");
}
void connect(){
//== START Menghubungkan ke WiFi ==//
Serial.print("Menghubungkan ke WiFi...");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("Terhubung ke WiFi");
//== END Menghubungkan ke WiFi ==//
//== START Menghubungkan ke Broker ==//
Serial.print("Menghubungan ke Broker...");
while(!client.connect("clientid_contoh")){
Serial.print(".");
delay(500);
}
Serial.println("Terhubung ke Broker");
//== END Menghubungkan ke Broker ==//
//== Lakukan Subscribe Setelah terhubung ke broker ==//
client.subscribe("belajariot/#");
}
void dataMasuk(String &topic, String &payload) {
Serial.println("data masuk: " + topic + " - " + payload);
if(topic == "belajariot/led" && payload == "true"){
digitalWrite(pinLed, HIGH);
}else if(topic == "belajariot/led" && payload == "false"){
digitalWrite(pinLed, LOW);
}
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass); // Mulai koneksi WiFi
client.begin("broker.emqx.io", net); //Mulai koneksi Broker
// eksekusi fungsi dataMasuk ketika ada data yang masuk
client.onMessage(dataMasuk);
timer.setInterval(1000, publishPot);
timer.setInterval(2000, fungsiPublish2);
// Eksekusi function connect()
connect();
pinMode(pinLed, OUTPUT);
}
void loop() {
client.loop();
timer.run();
// Serial.println("Data dipublish");
}