#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
//#include "DHTesp.h"
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
String wifiSSID = "Wokwi-GUEST";
String wifiPassword = "";
String tbHost = "thingsboard.cloud";
String tbToken = "lXDd33moxqZbghZFjhf4";
//const int DHT_PIN = 15;
//DHTesp dhtSensor;
#define ldrPin 34
const float gama = 0.7;
const float rl10 = 50;
void connectWifi() {
WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void sendDataToThingsBoard(String kecerahan) {
HTTPClient http;
String url = "http://" + tbHost + "/api/v1/" + tbToken + "/telemetry";
String payload = "{\"kecerahan\":" + kecerahan + "}";
http.begin(url);
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(payload);
if (httpResponseCode > 0) {
Serial.println("Data sent to ThingsBoard successfully");
} else {
Serial.println("Error sending data to ThingsBoard");
}
http.end();
}
void setup() {
Serial.begin(115200);
connectWifi();
// dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init();
lcd.backlight();
}
void loop() {
// TempAndHumidity data = dhtSensor.getTempAndHumidity();
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
Serial.print("Kecerahan = ");
Serial.println(kecerahan);
String kecerahan1 = String(kecerahan,2);
//String hum = String(data.humidity,1);
// Serial.println("Temp: " + String(temp) + "°C");
// Serial.println("Humidity: " + String(hum) + "%");
// Serial.println("---");
lcd.setCursor(0, 0);
lcd.print("kecerahan: " + kecerahan1);
//lcd.setCursor(0, 1);
// lcd.print("Humidity: " + hum);
sendDataToThingsBoard(kecerahan1);
delay(1000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
}