/**
ESP32 + DHT22 Example for Wokwi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
https://wokwi.com/arduino/projects/322410731508073042
*/
#include <WiFi.h>
#include "DHTesp.h"
const int DHT_PIN = 15;
const int LED_PIN = 13;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const char* THINGSBOARD_SERVER = "demo.thingsboard.io";
const char* ACCESS_TOKEN = "eb0s7XF0mzOpNw3FjRqU";
DHTesp dhtSensor;
WiFiClient client;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_PIN, OUTPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Create JSON payload
String payload = "{\"temperature\":" + String(data.temperature, 2) + ",\"humidity\":" + String(data.humidity, 1) + "}";
// Send HTTP POST request to ThingsBoard
sendTelemetry(payload);
// Blink LED if temperature or humidity is outside of specified range
if (data.temperature > 35 || data.temperature < 12 || data.humidity > 70 || data.humidity < 40) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(10000); // Adjust delay as needed
}
void sendTelemetry(String payload) {
if (client.connect(THINGSBOARD_SERVER, 80)) {
client.print("POST /api/v1/");
client.print(ACCESS_TOKEN);
client.println("/telemetry HTTP/1.1");
client.println("Host: demo.thingsboard.io");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(payload.length());
client.println();
client.println(payload);
Serial.println("Telemetry sent to ThingsBoard: " + payload);
} else {
Serial.println("Connection to ThingsBoard failed");
}
client.stop();
}