#include "DHT.h" #include #include #define WIFI_AP "YOUR_WIFI_AP" #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" #define TOKEN "ESP8266_DEMO_TOKEN" // DHT #define DHTPIN 2 #define DHTTYPE DHT22 char thingsboardServer[] = "YOUR_THINGSBOARD_HOST_OR_IP"; WiFiClient wifiClient; // Initialize DHT sensor. DHT dht(DHTPIN, DHTTYPE); ThingsBoard tb(wifiClient); int status = WL_IDLE_STATUS; unsigned long lastSend; void setup() { Serial.begin(115200); dht.begin(); delay(10); InitWiFi(); lastSend = 0; } void loop() { 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() { Serial.println("Connecting to AP ..."); // attempt to connect to WiFi network WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP"); } void reconnect() { // Loop until we're reconnected while (!tb.connected()) { status = WiFi.status(); if ( status != WL_CONNECTED) { WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP"); } Serial.print("Connecting to ThingsBoard node ..."); 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 ); } } }