#include <WiFi.h>
#include <MQTT.h>
#include <DHTesp.h>
#include <NusabotSimpleTimer.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
DHTesp dht;
WiFiClient net;
MQTTClient client;
NusabotSimpleTimer timer;
#define DHT_PIN 15
#define ledB 33
float temp, humid;
void connect(){
// Menghubungkan ke WiFi
Serial.print("Menghubungkan ke WiFi");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Berhasil Terhubung ke WiFi");
Serial.print("Menghubungkan ke Broker");
while(!client.connect("9865120gdf")){
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Berhasil Terhubung ke Server");
client.subscribe("kelasiot/affan/led", 1);
}
void subscribeData(String &topic, String &data){
Serial.println("incoming: " + topic + " - " + data);
delay(10);
if(topic == "kelasiot/affan/led"){
if(data == "on"){
digitalWrite(ledB, 1);
} else {
digitalWrite(ledB, 0);
}
}
}
void publish(){
temp = dht.getTemperature();
humid = dht.getHumidity();
client.publish("kelasiot/affan/temp", String(temp), true, 1);
client.publish("kelasiot/affan/humi",String(humid), true, 1);
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(subscribeData);
connect();
pinMode(ledB, OUTPUT);
dht.setup(DHT_PIN, DHTesp::DHT22);
timer.setInterval(1000, publish);
}
void loop() {
delay(10);
// client.loop();
timer.run();
}