#include <MQTT.h>
#include <DHT.h>
#include <WiFi.h>
#include <NusabotSimpleTimer.h>
#define DHTPIN 13
#define DHTTYPE DHT22
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const char *mqtt_broker = "broker.hivemq.com";//"broker.emqx.io";//Public Broker
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;
WiFiClient net;
MQTTClient client;
NusabotSimpleTimer timer;
float suhu, kelembaban;
DHT dht(13, DHT22);
void connect() {
Serial.print("menghubungkan ke WiFi..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(10);
}
Serial.println("Terhubungkan ke WiFi !");
Serial.print("Menghubungkan ke Broker...");
while (!client.connect("testtopic/##")) {
Serial.print(".");
}
Serial.println("Terhubung ke Broker");
client.subscribe("testtopic/#");
}
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, pass);
client.begin("broker.hivemq.com", net);
client.onMessage(dataMasuk);
timer.setInterval(5000, kirimData); // Untuk mengirim data setiap 5 detik sekali
connect();
}
void loop() {
client.loop();
timer.run();
}
void dataMasuk(String topic, String data) {
if (topic == "sensorr/dht") {
Serial.println(data);
}
}
void kirimData(){
kelembaban = dht.readHumidity();
suhu = dht.readTemperature();
Serial.print("SUHU = ");
Serial.print(suhu);
Serial.print(" *C ");
Serial.print("KELEMBABAN = ");
Serial.print(kelembaban);
Serial.println(" % ");
client.publish("sensorr/suhu", String(suhu));
client.publish("sensorr/kelembaban", String(kelembaban));
}