#include "DHTesp.h"
#include <WiFi.h>
#include <ThingsBoard.h>
#include <LiquidCrystal_I2C.h>
//Variabel
LiquidCrystal_I2C lcd(0x27,16,2);
#define pinDht 15
DHTesp dhtSensor;
#define TRIG_PIN 2 // ESP32 pin GPIO23 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 4 // ESP32 pin GPIO22 connected to Ultrasonic Sensor's ECHO pin
float duration_us, distance_cm;
int led = 13;
int buzz = 12;
// Server Dan Token ThingsBoard Cloud
#define TB_SERVER "thingsboard.cloud"
#define TOKEN "ia1pu3mbcjj4xdat571r"
//WiFi
WiFiClient espClient;
ThingsBoard tb(espClient);
void setup() {
Serial.begin(115200);
dhtSensor.setup(pinDht, DHTesp::DHT22);
initWifi();
pinMode(led, OUTPUT);
pinMode(buzz, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lcd.init(); // initialize the lcd
lcd.backlight(); // open the backlight
}
void loop() {
//WIFI
if(WiFi.status() != WL_CONNECTED) {
initWifi();
}
//Sensor DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
int hum = data. humidity;
Serial.println(temp);
Serial.println(hum);
Serial.println("---");
//Tampilan LCD
lcd.setCursor(0,0);
lcd.print("Temp : ");
lcd.setCursor(8,0);
lcd.print(temp);
lcd.setCursor(13,0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Hum : ");
lcd.setCursor(8,1);
lcd.print(hum);
lcd.setCursor(13,1);
lcd.print("%");
//Menyalakan LED dan Buzzer
if (temp >= 50)
{
digitalWrite(led, HIGH);
digitalWrite(buzz, HIGH);
}
// Sensor Ultrasonic
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);
distance_cm = 0.017 * duration_us;
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
// Koneksi ke ThingsBoard Cloud
if (!tb.connected()) {
Serial.println("Menghubungkan ke Server");
if (!tb.connect(TB_SERVER, TOKEN)) {
Serial.println("Gagal Terhubung dengan Server!");
return;
}
} else {
Serial.println("Terhubung ke Server!");
}
//Mengirim Data
tb.sendTelemetryData("suhu", temp);
tb.sendTelemetryData("kelembapan", hum);
tb.sendTelemetryData("tinggi", distance_cm);
Serial.println("Mengirim Data..");
delay(1000);
tb.loop();
}
//Inisiasi WiFi
void initWifi() {
Serial.println("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.println(".");
}
Serial.println(" Connected!");
}