#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// Definisikan pin dan tipe sensor DHT22
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Definisikan SSID dan Password WiFi
const char* ssid = "Wokwi-GUEST"; // Ganti dengan SSID Anda
const char* password = ""; // Kosongkan password karena tidak ada password
// Definisikan informasi broker MQTT dan topik
const char* mqtt_server = "mqtt.thingsboard.cloud";
const char* mqtt_topic = "v1/devices/me/telemetry";
const char* mqtt_client_id = "tsa-vsga-2024"; // Client ID
const char* mqtt_username = "tsa-vsga-2024"; // Username
const char* mqtt_password = "tsa-vsga-2024"; // Password
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
dht.begin(); // Memulai sensor DHT
setup_wifi(); // Menghubungkan ke WiFi
client.setServer(mqtt_server, 1883); // Mengatur server MQTT dan port
}
void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop(); // Memastikan koneksi MQTT tetap aktif
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Menyiapkan payload JSON untuk dikirim
String payload = "{\"temperature\":";
payload += temperature;
payload += ",\"humidity\":";
payload += humidity;
payload += "}";
// Mencetak payload ke Serial Monitor
Serial.print("Sending payload: ");
Serial.println(payload);
// Menambahkan header konten dan mengirim data ke server
client.publish(mqtt_topic, payload.c_str());
delay(5000); // Delay 5 detik sebelum mengirim data lagi
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Menghubungkan ke broker MQTT dengan client ID, username, dan password
if (client.connect(mqtt_client_id, mqtt_username, mqtt_password)) {
Serial.println("Connected to MQTT Broker!");
} else {
Serial.print("Failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}