///////Library///////////
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
#include "DHTesp.h"
#include <WiFi.h>
#include "ThingsBoard.h"
#include "DHTesp.h"
#define CURRENT_FIRMWARE_TITLE "TEST"
#define CURRENT_FIRMWARE_VERSION "1.0.0"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// See https://thingsboard.io/docs/getting-started-guides/helloworld/
// to understand how to obtain an access token
#define TOKEN "VahIvfuHuFjz64exwQz1"
#define THINGSBOARD_SERVER "thingsboard.cloud"
/////////////////////////
////////Variable yang menyatakan sebagai Client////
WiFiClient client;
///////////////////////////////////////////////////
////////////Deklarasi PIN DHT22////////////////////
const int DHT_PIN = 15;
///////////////////////////////////////////////////
///////////Deklarasi PIN Ultrasonik/////////////////////
const int trig = 2;
const int echo = 4;
///////////////////////////////////////////////////
///////////Deklarasi PIN Aktuator/////////////////
const int ledM = 14;
const int ledK = 27;
const int ledH = 26;
const int ledP = 12;
const int ledB = 13;
/////////////////////////////////////////////////
//////////Variable DHT22/////////////////////////
DHTesp dhtSensor;
/////////////////////////////////////////////////
// Initialize ThingsBoard client
WiFiClient espClient;
// Initialize ThingsBoard instance
ThingsBoard tb(espClient);
// the Wifi radio's status
void setup() {
////////////////Baudrate////////////////
Serial.begin(115200);
///////////////////////////////////////
WiFi.disconnect();
/////////////////Konek internet (Access Poin)////////////////
WiFi.begin("Wokwi-GUEST", ""); ///////("SSID","Password")
/////////////////////////////////////////////////////////////
////////////////Status Wifi/////////////////////////////////
while (WiFi.status() != WL_CONNECTED){
delay(300);
Serial.print(".");
}
////////////////////////////////////////////////////////////
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
////////////////Menampilkan IP Add yang didapatkan ESP32////
Serial.println(WiFi.localIP());
///////////////////////////////////////////////////////////
////////////Inisialisasi INPUT dan OUTPUT/////////////
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(ledM, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(ledH, OUTPUT);
pinMode(ledP, OUTPUT);
pinMode(ledB, OUTPUT);
/////////////////////////////////////////////////////
///////////Inisialisasi dan setup DHT22///////////////
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //////(PIN DHT22, Setup Library untuk DHT22)
/////////////////////////////////////////////////////
}
/////////////////Rumus nilai JARAK/////////////////
float ultrasonik(){
digitalWrite(trig, LOW); ////Trigger off pancaran ultrasonik////////
delayMicroseconds(2);
digitalWrite(trig, HIGH);/////Trigger on pancaran ultrasonik///////
delayMicroseconds(10);
digitalWrite(trig, LOW);////Trigger off pancaran ultrasonik////////
////////Hasil pembacaan ultrasonik//////////////
int durasiPantulan = pulseIn(echo, HIGH);
return durasiPantulan * 0.034 / 2;
////////////////////////////////////////////////
}
///////////////////////////////////////////////////
void loop() {
/////////////////Membaca nilai Suhu dan Kelembaban/////////////
TempAndHumidity data = dhtSensor.getTempAndHumidity(); //////TempAndHumidity(default Library) data (Variable baru) = dhtSensor.getTempAndHumidity()(Mengambil data dari sensor DHT22)
///////////////////////////////////////////////////////////////
tb.sendTelemetryInt("temperature", data.temperature);
tb.sendTelemetryFloat("humidity", data.humidity);
tb.sendTelemetryFloat("jarak", ultrasonik());
Serial.println("Temp: " + String(data.temperature,2) + "°C"); /////String(Pembacaan Suhu, nilai dibelakang koma)
Serial.println("Humidity: " + String(data.humidity,1) + "%");/////String(Pembacaan Kelembaban, nilai dibelakang koma)
Serial.print("Jarak= ");
Serial.println(ultrasonik());
Serial.println("---");
float suhuPer = data.temperature;
if(suhuPer>28){
digitalWrite(ledH, LOW);
digitalWrite(ledK, LOW);
digitalWrite(ledM, HIGH);
int ledh = 0;
int ledk = 0;
int ledm = 1;
tb.sendTelemetryFloat("Suhu Tinggi", ledm);
tb.sendTelemetryFloat("Suhu Rendah", ledh);
tb.sendTelemetryFloat("Suhu Sedang", ledk);
// digitalWrite(ledP, LOW);
// digitalWrite(ledB, LOW);
}
else if(suhuPer<=28 && suhuPer>=25){
digitalWrite(ledK, LOW);
digitalWrite(ledH, HIGH);
digitalWrite(ledM, LOW);
int ledh = 0;
int ledk = 1;
int ledm = 0;
tb.sendTelemetryFloat("Suhu Tinggi", ledm);
tb.sendTelemetryFloat("Suhu Rendah", ledh);
tb.sendTelemetryFloat("Suhu Sedang", ledk);
// digitalWrite(ledP, LOW);
// digitalWrite(ledB, LOW);
}
else if(suhuPer<25){
digitalWrite(ledM, LOW);
digitalWrite(ledK, HIGH);
digitalWrite(ledH, LOW);
int ledh = 1;
int ledk = 0;
int ledm = 0;
tb.sendTelemetryFloat("Suhu Tinggi", ledm);
tb.sendTelemetryFloat("Suhu Rendah", ledh);
tb.sendTelemetryFloat("Suhu Sedang", ledk);
// digitalWrite(ledP, LOW);
// digitalWrite(ledB, LOW);
}
// if(data.temperature<25){
// digitalWrite(ledP, HIGH);
// digitalWrite(ledB, LOW);
// // digitalWrite(ledM, LOW);
// // digitalWrite(ledK, LOW);
// // digitalWrite(ledH, LOW);
// }
// else if (data.temperature>29){
// digitalWrite(ledP, LOW);
// digitalWrite(ledB, HIGH);
// // digitalWrite(ledM, LOW);
// // digitalWrite(ledK, LOW);
// // digitalWrite(ledH, LOW);
// }
delay(1000);
}