#include <WiFi.h> // Mengimpor pustaka WiFi untuk mengakses jaringan WiFi
#include <HTTPClient.h> // Mengimpor pustaka HTTPClient untuk melakukan permintaan HTTP
#include <DHT.h> // Mengimpor pustaka DHT untuk membaca data dari sensor DHT
// Ganti dengan SSID dan password WiFi Anda
const char* ssid = "Wokwi-GUEST"; // SSID jaringan WiFi
const char* password = ""; // Kata sandi jaringan WiFi
// Ganti dengan token akses dari perangkat ThingsBoard Anda
const char* accessToken = "Cayzl2AffTB7gzMyrKP4"; // Token akses ThingsBoard
// URL ThingsBoard, biasanya dalam format: http://<THINGSBOARD_HOST>:<PORT>
const char* server = "http://demo.thingsboard.io/api/v1/Cayzl2AffTB7gzMyrKP4/telemetry"; // URL endpoint ThingsBoard
// Pin data sensor DHT
#define DHTPIN 32 // Pin untuk sensor DHT
#define DHTTYPE DHT22 // Tipe sensor DHT
DHT dht(DHTPIN, DHTTYPE); // Objek sensor DHT
void setup() {
Serial.begin(115200); // Mulai komunikasi serial dengan baud rate 115200
dht.begin(); // Inisialisasi sensor DHT
// Hubungkan ke WiFi
WiFi.begin(ssid, password); // Memulai koneksi WiFi dengan SSID dan password yang diberikan
while (WiFi.status() != WL_CONNECTED) { // Tunggu sampai terhubung ke jaringan WiFi
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) { // Jika terhubung ke jaringan WiFi
HTTPClient http; // Objek untuk permintaan HTTP
// Baca nilai dari sensor DHT11
float temperature = dht.readTemperature(); // Baca suhu dari sensor DHT
float humidity = dht.readHumidity(); // Baca kelembaban dari sensor DHT
if (isnan(temperature) || isnan(humidity)) { // Periksa apakah pembacaan sensor berhasil
Serial.println("Failed to read from DHT sensor!"); // Tampilkan pesan kesalahan jika gagal membaca
return;
}
// Tampilkan nilai suhu dan kelembaban di Serial Monitor
Serial.print("Temperature (raw): ");
Serial.print(temperature);
Serial.print(" °C, Humidity (raw): ");
Serial.print(humidity);
Serial.println(" %");
// Buat URL request
String url = server;
// Data telemetri dalam format JSON
String payload = "{\"temperature\": " + String(temperature, 2) + ", \"humidity\": " + String(humidity, 2) + "}"; // Format data JSON
// Debugging: tampilkan URL dan payload
Serial.print("Sending data to: ");
Serial.println(url);
Serial.print("Payload: ");
Serial.println(payload);
http.begin(url); // Mulai permintaan HTTP
http.addHeader("Content-Type", "application/json"); // Tambahkan header Content-Type
// Kirim data telemetri ke ThingsBoard
int httpResponseCode = http.POST(payload); // Kirim permintaan POST dengan payload JSON
if (httpResponseCode > 0) { // Jika respons berhasil diterima
String response = http.getString(); // Baca respons dari server
Serial.println(httpResponseCode); // Tampilkan kode respons
Serial.println(response); // Tampilkan respons
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode); // Tampilkan kode kesalahan jika terjadi
}
http.end(); // Selesai dengan permintaan HTTP
} else {
Serial.println("WiFi not connected"); // Tampilkan pesan jika tidak terhubung ke jaringan WiFi
}
// Tunggu 10 detik sebelum mengirim data lagi
delay(1000);
}