#include <DHTesp.h>
#include <WiFi.h>
#include <ThingsBoard.h>
#include <Arduino_MQTT_Client.h>
#define pinDht 25
DHTesp dhtSensor;
#define TB_SERVER "thingsboard.cloud"
#define TOKEN "z0R7xmF4gDNtUVmtgMEq"
constexpr uint16_t MAX_MESSAGE_SIZE = 128U;
WiFiClient espClient;
Arduino_MQTT_Client mqttClient(espClient);
ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE);
#define WIFI_IP "Wokwi-GUEST"
#define WIFI_PASS ""
#define sensor1 34
void setup() {
Serial.begin(115200);
dhtSensor.setup(pinDht, DHTesp::DHT22);
connectingToWiFi();
connectToThingsBoard();
pinMode(sensor1, INPUT);
Serial.println("This Code By S.H Technology");
delay(3000);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float hum = data.humidity;
float x = analogRead(sensor1);
float sensor = map(x, 0, 4095, 0, 100);
Serial.println("Temp: " + String(temp, 2) + "°C");
Serial.println("Humidity: " + String(hum, 2) + "%");
Serial.println("Soil sensor1 : " + String(sensor) + "%");
if (!tb.connected()) {
connectToThingsBoard();
}
sendDataToThingsBoard(temp, hum, sensor);
delay(1000);
tb.loop();
}
void connectingToWiFi() {
Serial.println("Conecting To WiFi....");
int attempts = 0;
while (WiFi.status()!= WL_CONNECTED && attempts < 20) {
WiFi.begin(WIFI_IP, WIFI_PASS, 6);
delay(500);
Serial.println(".");
attempts++;
}
if (WiFi.status()!= WL_CONNECTED) {
Serial.println("\nFaild to connect to wifi...");
} else {
Serial.println("\nConnect to wifi ");
}
}
void connectToThingsBoard() {
if (!tb.connected()) {
Serial.print("Connecting To ThingsBoards");
if (!tb.connect(TB_SERVER, TOKEN)) {
Serial.println("Faild To Connect To ThingsBoard");
} else {
Serial.println("Connected To ThingsBoard");
}
}
}
void sendDataToThingsBoard(float temp, int hum, float sensor) {
String jsonData1 = "{\"Temp\":" + String(temp) + ", \"Humidity\":" + String(hum) + "}";
String jsonData2 = "{\"Soil\":" + String(sensor) + "}";
tb.sendTelemetryJson(jsonData1.c_str());
tb.sendTelemetryJson(jsonData2.c_str());
}