#include <WiFi.h>
#include <PubSubClient.h>
#include <DHTesp.h>
const int DHT_PIN = 15;
DHTesp dht;
// Update these with values suitable for your network.
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "test.mosquitto.org";
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
float temp = 0;
float hum = 0;
void setup() {
pinMode(2, OUTPUT); // inisialisasi pin 2 / ledbuiltin sebagai output
Serial.begin(115200);
setup_wifi(); //memanggil void setup_wifi untuk dieksekusi
client.setServer(mqtt_server, 1883); //perintah connecting / koneksi awal ke broker
client.setCallback(callback); //perintah menghubungkan ke mqtt broker untuk subscribe data
dht.setup(DHT_PIN, DHTesp::DHT22);//inisialiasi komunikasi dengan sensor dht22
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
unsigned long now = millis();
if (now - lastMsg > 2000) { //perintah publish data
lastMsg = now;
TempAndHumidity data = dht.getTempAndHumidity();
String temp = String(data.temperature, 2); //membuat variabel temp untuk di publish ke broker mqtt
client.publish("/indobot/p/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("/indobot/p/hum", hum.c_str()); //publish data dari varibel hum ke broker mqtt
Serial.print("Temperature: ");
Serial.println(temp);
Serial.print("Humidity: ");
Serial.println(hum);
}
}