/**
Tugas Akhir. Buatlah video untuk melakukan:
monitoring jarak, suhu dan kelembapan serta kontrol lampu menggunakan IoT Platform
**/
#include "DHTesp.h"
#define THINGER_SERIAL_DEBUG
#include<ThingerESP32.h>
#define username "haris4cloud"
#define device_id "harisiot"
#define credential "vUB#LN3wjWXsme0q"
#define SSID "Wokwi-GUEST"
#define password ""
#define lampu 21
#define trig 12
#define echo 13
long waktu;
double jarak;
float humidity, temperature;
const int pinDht = 15; //pin DHT
DHTesp dht; //membuat variabel dht dari fungsi DHTesp
ThingerESP32 thing(username, device_id, credential);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("ESP32: Montitoring Jarak, Suhu, dan Kelembapan, serta Kontrol lampu");
dht.setup(pinDht, DHTesp::DHT22); //melakukan registrasi untuk pin dan tipe sensor
//dht.begin(); //mengaktifkan sensor dht
pinMode(trig, OUTPUT);
pinMode(echo, OUTPUT);
pinMode(lampu, OUTPUT);
thing.add_wifi(SSID, password);
thing["lampu"] << digitalPin(lampu); //output
thing["ultrasonic"] >> [](pson& out){ //input
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
waktu = pulseIn(echo, HIGH);
jarak = waktu / 58;
Serial.println("Jarak: " + String(jarak));
out["jarak"] = jarak;
};
thing["dht22"] >> [](pson & out){ //input
TempAndHumidity dataDht = dht.getTempAndHumidity(); //memanggil fungsi nilai suhu dan kelembapan
out["temperature"] = dataDht.temperature;
out["humidity"] = dataDht.humidity;
};
}
void loop() {
// put your main code here, to run repeatedly:
//ultrasonic
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
waktu = pulseIn(echo, HIGH);
jarak = waktu / 58;
Serial.println("Jarak: " + String(jarak));
//DHT22
TempAndHumidity dataDht = dht.getTempAndHumidity(); //memanggil fungsi nilai suhu dan kelembapan
humidity = dataDht.humidity;
temperature = dataDht.temperature;
Serial.println("Temp: " + String(temperature, 2) + "°C"); //cetak temperatur
Serial.println("Humidity: " + String(humidity, 1) + "%"); //cetak kelembapan
Serial.println("----"); //cetak garis
thing.handle();
delay(1000); //memberikan jeda waktu
}