//ESP32 SEND DATA TO UBIDOTS
#include "time.h"
#include <WiFi.h>
WiFiClient client;
#include "DHT.h"
#define TOKEN "BBUS-hxWSiQ6J0iG9RabpvdYmiXflbTTWUU"
#define device "wokwi"
#define NTP_SERVER "pool.ntp.org"
#define gmtOffset_sec 7 * 3600 //offset in second
#define daylightOffset_sec 0 //offset in second
#define DHTTYPE DHT22
#define DHTPIN 13
DHT dht(DHTPIN, DHTTYPE);
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
char const * HTTPSERVER = "industrial.api.ubidots.com";
const uint16_t HTTPPORT = 80;
float humidity, temperature;
void setup() {
Serial.begin(115200);
Serial.println("ESP32 Wokwi Monitoring Send Data to Ubidots");
dht.begin();
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
unsigned long t = 0;
while (WiFi.status() != WL_CONNECTED && t < 30000) {
delay(250);
Serial.println("Wifi not connected");
t = millis();
}
Serial.println("Wifi connected !");
//get time data from NTP
configTime(gmtOffset_sec, daylightOffset_sec, NTP_SERVER);
struct tm timeinfo;
getLocalTime(&timeinfo);
delay(2000);
}
void loop() {
printLocalTime();
//getData
getDataDHT();
//display data
displayData();
//connect to Ubidots
if (!client.connect(HTTPSERVER, HTTPPORT)) {
Serial.println("Connection to host failed");
delay(100);
return;
}
Serial.println("Connected to server successful!");
//send data
sendData();
delay(5000);
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void displayData() {
Serial.print("Nhiệt độ = ");
Serial.println(temperature);
Serial.print("Độ ẩm = ");
Serial.println(humidity);
}
void sendData() {
String requestBody = "";
requestBody = "{\"temperature\":" + String(temperature, 2);
requestBody += ",\"humidity\":" + String(humidity, 2) + "}";
Serial.println(requestBody);
Serial.println("---");
// Sending HTTP POST request
Serial.println("Sending HTTP request...");
client.print(F("POST /api/v1.6/devices/"));
client.print(device);
client.println(F(" HTTP/1.1"));
client.println(F("User-Agent: ESP32/1.0"));
client.print(F("X-Auth-Token: "));
client.println(TOKEN);
client.println(F("Connection: close"));
client.println(F("Content-Type: application/json"));
client.print(F("Content-Length: "));
client.println(requestBody.length());
client.print(F("Host: "));
client.println(HTTPSERVER);
client.println();
client.println(requestBody);
client.println();
// Read the response from the API endpoint
Serial.println("Reading response...");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
break;
}
}
String response = client.readStringUntil('\n');
Serial.println(response);
// Close the TCP connection
Serial.println("Closing connection");
client.stop();
}
void getDataDHT() {
humidity = dht.readHumidity();
temperature = dht.readTemperature();
}