#include <NusabotSimpleTimer.h>
#include "DHTesp.h"
#include <MQTT.h>
#include <WiFi.h>
const int pinLed = 4;
const int DHT_PIN = 15;
DHTesp dhtSensor;
NusabotSimpleTimer timer;
unsigned long lastMsg = 0;
float temp = 0;
float hum = 0;
const char ssid[]="Wokwi-GUEST";
const char pass[]="";
WiFiClient net;
MQTTClient client;
// void publishData () {
// Serial.println("Data sudah dipublish");
// client.publish("DompuSmartFarming/data", "ini data", false, 1);
// }
void connect() {
Serial.print("Memeriksa WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.print("Menghubungkan ke Broker");
while (!client.connect("DompuSmartFarming-987654321")) {
Serial.print(".");
delay(1000);
}
Serial.println("Terhubung!");
client.subscribe("DompuSmartFarming/#", 1);
}
void pesanDiterima(String &topic, String &payload) {
// Serial.println("Data masuk:" + topic + " - " + payload);
}
void setup() {
Serial.begin(115200);
pinMode(pinLed,OUTPUT);
dhtSensor.setup(DHT_PIN,DHTesp::DHT22);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(pesanDiterima);
// timer.setInterval(1000, publishData);
connect();
}
void loop() {
client.loop();
timer.run();
// TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Serial.println("Temp: " + String(data.temperature, 2) + "°C");
// Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// Serial.println("---");
// delay(1000);
// checksuhu();
unsigned long now = millis();
if (now - lastMsg > 2000) { //perintah publish data
lastMsg = now;
TempAndHumidity data = dhtSensor.getTempAndHumidity();
String temp = String(data.temperature, 2); //membuat variabel temp untuk di publish ke broker mqtt
client.publish("/DompuSmartFarming/data/temp", temp.c_str()); //publish data dari varibel temp ke broker mqtt
String hum = String(data.humidity, 1); //membuat variabel hum untuk di publish ke broker mqtt
client.publish("/DompuSmartFarming/data/hum", hum.c_str()); //publish data dari varibel hum ke broker mqtt
Serial.print("Temperature: ");
Serial.println(temp);
Serial.print("Humidity: ");
Serial.println(hum);
}
}
// void checksuhu (){
// TempAndHumidity data = dhtSensor.getTempAndHumidity();
// if(data.temperature < 25 ){
// digitalWrite(pinLed,HIGH);
// delay(1000);
// digitalWrite(pinLed,LOW);
// delay(1000);
// Serial.println("SUHU DINGIN");
// }
// if(data.temperature > 25 ){
// digitalWrite(pinLed,HIGH);
// Serial.println("SUHU PANAS");
// }
// }