#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
// Konfigurasi pin dan tipe sensor
#define DHTPIN 13 // Pin data DHT22 terhubung ke GPIO 13
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi WiFi
const char* ssid = "Wokwi-GUEST"; // Nama WiFi
const char* password = ""; // Password WiFi (kosong untuk Wokwi)
// Konfigurasi Firebase Realtime Database
const char* firebaseHost = "https://praktikum12-4997a-default-rtdb.firebaseio.com/";
const char* firebasePath = "/sensor_data.json"; // Lokasi data disimpan
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Menghubungkan ke WiFi");
// Tunggu hingga terhubung ke WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
Serial.println("IP Address: ");
Serial.println(WiFi.localIP());
dht.begin();
}
void loop() {
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
// Periksa apakah pembacaan sensor berhasil
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("Gagal membaca sensor DHT!");
return;
}
// Jika koneksi WiFi aktif, kirim data ke Firebase
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// Gabungkan URL Firebase dan path data
String url = String(firebaseHost) + firebasePath;
http.begin(url);
http.addHeader("Content-Type", "application/json");
// Buat data JSON
String jsonData = "{\"temperature\": " + String(suhu, 2) +
", \"humidity\": " + String(kelembapan, 2) + "}";
// Gunakan PUT agar data ditimpa setiap kali (jika mau menambahkan, ubah ke POST)
int responseCode = http.PUT(jsonData);
Serial.println("Data terkirim ke Firebase:");
Serial.println(jsonData);
Serial.print("Kode response: ");
Serial.println(responseCode);
http.end();
} else {
Serial.println("WiFi terputus!");
}
delay(10000); // Kirim data setiap 10 detik
}