#include <WiFi.h>
#include <MQTT.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
WiFiClient net;
MQTTClient client;
#define ledRed 26
#define ledYellow 27
#define ledGreen 14
#define pot 32
int bacaPot;
unsigned long lastMillis = 0;
void connect(){
// Menghubungkan ke WiFi
Serial.print("Cek WiFi");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Sukses Terhubung ke WiFi");
// Menghubungkan ke Broker
Serial.print("Cek Broker");
while(!client.connect("")){ // Client ID boleh dikosongkan
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Sukses Terhubung ke Server");
client.subscribe("labskite/iot/#", 1); // subcribe dengan QoS 1
}
void subscribeData(String &topic, String &data){
Serial.print("Topic: ");
Serial.println(topic);
Serial.print("Data: ");
Serial.println(data);
if(topic == "labskite/iot/led1"){
digitalWrite(ledRed, data.toInt()); //control led 1
if (data == "1"){
client.publish("labskite/iot/led1/status", "ON", true, 1);
}
}
if(topic == "labskite/iot/led2"){
digitalWrite(ledYellow, data.toInt()); //control led 2
}
}
void publish(){
int bacaPot = analogRead(pot);
Serial.print("Topic: ");
Serial.println(bacaPot);
client.publish("labskite/iot/pot1", String(bacaPot), true, 1); // publish variabel pot ke topic labskite/iot/pot1 dengan QoS 1
}
void setup() {
pinMode(ledRed,OUTPUT);
pinMode(ledYellow,OUTPUT);
pinMode(ledGreen,OUTPUT);
pinMode(pot, INPUT);
Serial.begin(9600);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(subscribeData);
connect();
}
void loop() {
client.loop();
// publish a message roughly every second.
if (millis() - lastMillis > 1000) {
lastMillis = millis();
publish();
}
delay(10);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
r1:1
r1:2
led2:A
led2:C
r2:1
r2:2
pot1:GND
pot1:SIG
pot1:VCC
led3:A
led3:C
r3:1
r3:2