#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
String wifiSSID = "Wokwi-GUEST";
String wifiPassword = "";
String tbHost = "demo.thingsboard.io";
String tbToken = "aEocvGaS9v4iEqi8J6oH";
const int PIR = 12;
void connectWifi() {
WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void sendDataToThingsBoard(String temperature, String humidity) {
HTTPClient http;
String url = "http://" + tbHost + "/api/v1/" + tbToken + "/telemetry";
String payload = "{\"temperature\":" + temperature + ",\"humidity\":" + humidity + "}";
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();
lcd.init();
lcd.backlight();
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
String temp = String(data.temperature,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("Temperature: " + temp);
lcd.setCursor(0, 1);
lcd.print("Humidity: " + hum);
sendDataToThingsBoard(temp, hum);
delay(1000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
}