#include "DHT.h"
#include <WiFi.h>
#include <ThingsBoard.h>
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TOKEN "P0pkqn4BT9wk8L3UdyAH"
#define DHTPIN 15
#define DHTTYPE DHT22
int pot_pin =32;
int val =0;
char thingsboardServer[] = "thingsboard.cloud";
WiFiClient client1;
DHT dht(DHTPIN, DHTTYPE);
ThingsBoard device1(client1);
int status = WL_IDLE_STATUS;
unsigned long lastSend;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dht.begin();
delay(10);
initWiFi();
// Serial.println("Hello, ESP32!");
lastSend = 0;
pinMode(pot_pin, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// this speeds up the simulation
if (!device1.connected()) {
reconnect();
}
if (millis() - lastSend > 1000) {
kirimDataKeThingsboard();
lastSend = millis();
}
val = analogRead(pot_pin);
device1.loop();
}
void kirimDataKeThingsboard() {
Serial.println("Collecting temperature data...");
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
float potensio_value = val;
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT Sensor!");
return;
}
Serial.println("Sending data to Thingsboard");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
Serial.print("Humidity : ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("potensi_value: ");
Serial.print(val);
device1.sendTelemetryFloat("Temperature", temperature);
device1.sendTelemetryFloat("Humidity", humidity);
device1.sendTelemetryFloat("potensio_value", val);
}
void initWiFi() {
Serial.print("Connecting to ");
Serial.print(WIFI_AP);
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(" .");
}
Serial.println();
Serial.print("Connected to ");
Serial.println(WIFI_AP);
}
void reconnect() {
while (!device1.connected()) {
status = WiFi.status();
if (status != WL_CONNECTED) {
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(" .");
}
Serial.print("Connected to ");
Serial.println(WIFI_AP);
}
Serial.println("Connecting to ThingsBoard node ...");
if (device1.connect(thingsboardServer, TOKEN)) {
Serial.println("Sudah Terkoneksi ke Thingsboard");
} else {
Serial.println("Gagal terkoneksi ke Thingsboard");
Serial.println("Mengulang kembali dalam 5 detik");
delay(5000);
}
}
}