#include <WiFi.h>
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
#include "DHTesp.h"
const char* ssid = "Wokwi-GUEST";
const int DHT_PIN = 15;
#define LED 12
#define LED2 26
DHTesp dhtSensor;
char server[] = "dweet.io";
const int kNetworkTimeout = 30 * 1000;
const int kNetworkDelay = 1000;
WiFiClient client;
HttpClient http = HttpClient(client, server, 80);
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
}
}
const char* host = "dweet.io";
void loop() {
dugme();
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Retrieve temperature and humidity data
float t = data.temperature;
float h = data.humidity;
Serial.println("---");
Serial.println("Temp: " + String(t, 2) + "°C");
Serial.println("Humidity: " + String(h, 1) + "%");
String request = "/dweet/for/iot2023info";
String postData = "temperature=" + String(t, 2) + "&humidity=" + String(h, 1);
int err = http.post(request.c_str(), "application/x-www-form-urlencoded", postData.c_str());
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
if (err == 0) {
err = http.responseStatusCode();
if (err >= 0) {
// Handle HTTP response
int bodyLen = http.contentLength();
unsigned long timeoutStart = millis();
String response = "";
while ((http.connected() || http.available()) && ((millis() - timeoutStart) < kNetworkTimeout)) {
if (http.available()) {
char c = http.read();
response += c;
timeoutStart = millis();
} else {
delay(kNetworkDelay);
}
}
}
}
}
void dugme(){
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Retrieve temperature and humidity data
float t = data.temperature;
float h = data.humidity;
Serial.println("---");
Serial.println("Temp: " + String(t, 2) + "°C");
Serial.println("Humidity: " + String(h, 1) + "%");
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
int err = http.get("/get/latest/dweet/for/iot2023");
if (err == 0) {
err = http.responseStatusCode();
if (err >= 0) {
// Handle HTTP response
int bodyLen = http.contentLength();
unsigned long timeoutStart = millis();
String response = "";
while ((http.connected() || http.available()) && ((millis() - timeoutStart) < kNetworkTimeout)) {
if (http.available()) {
char c = http.read();
response += c;
timeoutStart = millis();
} else {
delay(kNetworkDelay);
}
}
// Parse JSON using ArduinoJSON
StaticJsonDocument<256> doc;
DeserializationError error = deserializeJson(doc, response);
if (!error) {
int status = doc["with"][0]["content"]["status"];
Serial.print("Status: ");
Serial.println(status);
if (status == 1) {
for(int i=0;i<3; i++){
digitalWrite(LED, HIGH);
digitalWrite(LED2, LOW);
delay(1000);
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
delay(1000);
}
} else {
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
}
} else {
Serial.print("Error parsing JSON: ");
Serial.println(error.c_str());
}
http.stop();
}
}
delay(1000);
}