#include "DHT.h" #include #include #include #include "SoftwareSerial.h" #include #define WIFI_AP "YOUR_WIFI_AP" #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" #define TOKEN "YOUR_ACCESS_TOKEN" // DHT #define DHTPIN 4 #define DHTTYPE DHT22 char thingsboardServer[] = "YOUR_THINGSBOARD_HOST_OR_IP"; // Initialize the Ethernet client object WiFiEspClient espClient; // Initialize DHT sensor. DHT dht(DHTPIN, DHTTYPE); ThingsBoard tb(espClient); SoftwareSerial soft(2, 3); // RX, TX int status = WL_IDLE_STATUS; unsigned long lastSend; void setup() { // initialize serial for debugging Serial.begin(9600); dht.begin(); InitWiFi(); lastSend = 0; } void loop() { status = WiFi.status(); if ( status != WL_CONNECTED) { while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID: "); Serial.println(WIFI_AP); // Connect to WPA/WPA2 network status = WiFi.begin(WIFI_AP, WIFI_PASSWORD); delay(500); } Serial.println("Connected to AP"); } if ( !tb.connected() ) { reconnect(); } if ( millis() - lastSend > 1000 ) { // Update and send only after 1 seconds getAndSendTemperatureAndHumidityData(); lastSend = millis(); } tb.loop(); } void getAndSendTemperatureAndHumidityData() { Serial.println("Collecting temperature data."); // Reading temperature or humidity takes about 250 milliseconds! float humidity = dht.readHumidity(); // Read temperature as Celsius (the default) float temperature = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(humidity) || isnan(temperature)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.println("Sending data to ThingsBoard:"); Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" *C "); tb.sendTelemetryFloat("temperature", temperature); tb.sendTelemetryFloat("humidity", humidity); } void InitWiFi() { // initialize serial for ESP module soft.begin(9600); // initialize ESP module WiFi.init(&soft); // check for the presence of the shield if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue while (true); } Serial.println("Connecting to AP ..."); // attempt to connect to WiFi network while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID: "); Serial.println(WIFI_AP); // Connect to WPA/WPA2 network status = WiFi.begin(WIFI_AP, WIFI_PASSWORD); delay(500); } Serial.println("Connected to AP"); } void reconnect() { // Loop until we're reconnected while (!tb.connected()) { Serial.print("Connecting to ThingsBoard node ..."); // Attempt to connect (clientId, username, password) if ( tb.connect(thingsboardServer, TOKEN) ) { Serial.println( "[DONE]" ); } else { Serial.print( "[FAILED]" ); Serial.println( " : retrying in 5 seconds" ); // Wait 5 seconds before retrying delay( 5000 ); } } }