#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#define DHT_PIN 13
#define PIR_PIN 18
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
String wifiSSID = "Wokwi-GUEST";
String wifiPassword = "";
String tbHost = "thingsboard.cloud";
String tbToken = "a4obzpckp57em5xb8j8j";
void connectWifi() {
WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void sendDataToThingsBoard(float temperature, float humidity, bool motionDetected) {
HTTPClient http;
String url = "http://" + tbHost + "/api/v1/" + tbToken + "/telemetry";
// Kirim suhu, kelembaban, dan status deteksi gerakan dalam payload JSON
String payload = "{\"temperature\":" + String(temperature) +
", \"humidity\":" + String(humidity) +
", \"motion_detected\":" + (motionDetected ? "true" : "false") + "}";
http.begin(url);
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(payload);
if (httpResponseCode > 0) {
Serial.println("Data Lahan 2 sukses terkirim");
} else {
Serial.println("Error saat pengiriman data");
}
http.end();
}
void setup() {
Serial.begin(115200);
dht.begin();
connectWifi();
pinMode(PIR_PIN, INPUT); // Set PIR pin sebagai input
}
void loop() {
// Baca suhu dan kelembaban dari sensor DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Baca status deteksi gerakan dari sensor PIR
bool motionDetected = digitalRead(PIR_PIN);
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("Motion Detected: ");
Serial.println(motionDetected ? "Yes" : "No");
// Kirim data ke ThingsBoard
sendDataToThingsBoard(temperature, humidity, motionDetected);
delay(5000); // Kirim data setiap 5 detik
}