#include "WiFi.h"
#include "DHT.h"
#include "ThingSpeak.h"
#define DHTPIN 4 // DHT22 data pin connected to GPIO4
#define DHTTYPE DHT22 // DHT 22 (AM2302) and use DHT11
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "Wokwi-GUEST"; // Wokwi default WiFi
const char* password = ""; // no password
WiFiClient client;
unsigned long myChannelNumber = 3035607; // replace with your ThingSpeak channel number
const char* myWriteAPIKey = "KWWAXJD8WUF1UP2K"; // replace with your ThingSpeak write API key
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" Connected!");
ThingSpeak.begin(client);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" °C, Humidity: ");
Serial.print(h);
Serial.println(" %");
ThingSpeak.setField(1, t);
ThingSpeak.setField(2, h);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Channel update successful.");
} else {
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
delay(20000); // ThingSpeak needs 15s delay between updates
}