#include <DHTesp.h>
#include <WiFi.h>
#include <HTTPClient.h>
#define pinDHT 15
DHTesp dhtSensor;
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define TB_SERVER "thingsboard.cloud"
#define TOKEN "t04qf0x70uce10yrh105"
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
dhtSensor.setup(pinDHT, DHTesp::DHT22);
initWifi();
}
void loop() {
delay(10); // this speeds up the simulation
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
int hum = data.humidity;
Serial.println(temp);
Serial.println(hum);
// Kirim data telemetri ke ThingsBoard menggunakan HTTP
sendTelemetryHTTP(temp, hum);
delay(10000); // Kirim data setiap 60 detik
}
void initWifi() {
Serial.println("Menghubungkan..");
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(WIFI_AP, WIFI_PASS);
Serial.print(".");
delay(5000);
}
Serial.println("Terhubung!");
}
void sendTelemetryHTTP(float temperature, int humidity) {
HTTPClient http;
String url = "http://" + String(TB_SERVER) + "/api/v1/" + String(TOKEN) + "/telemetry";
// Buat JSON dengan data telemetri
String data = "{\"temperature\":" + String(temperature) + ", \"humidity\":" + String(humidity) + "}";
http.begin(url);
http.addHeader("Content-Type", "application/json");
// Kirim data telemetri
int httpResponseCode = http.POST(data);
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
} else {
Serial.print("HTTP Error code: ");
Serial.println(httpResponseCode);
}
http.end();
}