#include <DHTesp.h>
#include <WiFi.h>
#include <ThingsBoard.h>
#include <Arduino_MQTT_Client.h>
#define pinDht 15
DHTesp dhtSensor;
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define TB_SERVER "Thingsboard.cloud"
#define TOKEN "AASfVydoI1lUNO4cJcRV"
constexpr uint16_t MAX_MESSAGE_SIZE = 128U;
WiFiClient espClient;
Arduino_MQTT_Client mqttClient(espClient);
ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE);
void connectToWiFi()
{
Serial.println("Connecting to WiFi...");
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20)
{
WiFi.begin(WIFI_AP, WIFI_PASS, 6);
delay(500);
Serial.println(",");
attempts++;
}
if (WiFi.status() != WL_CONNECTED)
{
Serial.println("\nFailed to connect to WiFi.");
}
else
{
Serial.println("\nConnected to WiFi");
}
}
void connectToThingsBoard()
{
if (!tb.connected())
{
Serial.println("Connecting to ThingsBoard server");
if (!tb.connect(TB_SERVER, TOKEN))
{
Serial.println("Failed to connect to ThingsBoard");
}
else
{
Serial.println("Connected to ThingsBoard");
}
}
}
void sendDataToThingsBoard(float temp, float hum)
{
String jsonData = "{\"temperature\":" + String(temp) + ", \"humidity\":" + String(hum) + "}";
tb.sendTelemetryJson(jsonData.c_str());
Serial.println("Data sent");
}
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
dhtSensor.setup(pinDht, DHTesp::DHT22);
connectToWiFi();
}
void loop()
{
// put your main code here, to run repeatedly:
connectToWiFi();
TempAndHumidity data =dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float hum = data.humidity;
Serial.println(temp);
Serial.println(hum);
if (!tb.connected())
{
connectToThingsBoard();
}
sendDataToThingsBoard(temp, hum);
delay(3000); // this speeds up the simulation
tb.loop();}
https://thingsboard.cloud/dashboards/all