#include <WiFi.h>
#include "ThingSpeak.h"
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
unsigned long channelID = 3045331;
const char* writeKey = "O4SP83CN5VD1OWQ2";
const char* readKey = "0WCB9KV1PDDOGE7T";
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected! IP: " + String(WiFi.localIP()));
ThingSpeak.begin(client);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Error reading sensor!");
delay(2000);
return;
}
Serial.print("Temp: "); Serial.print(temperature);
Serial.print(" C, Humidity: "); Serial.println(humidity);
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
int status = ThingSpeak.writeFields(channelID, writeKey);
if (status == 200) {
Serial.println("Sent to ThingSpeak.");
} else {
Serial.println("Error sending. Code: " + String(status));
}
float lastTemp = ThingSpeak.readFloatField(channelID, 1, readKey);
int readStatus = ThingSpeak.getLastReadStatus();
if (readStatus == 200) {
Serial.print("Last temp from ThingSpeak: "); Serial.println(lastTemp);
} else {
Serial.println("Error reading. Code: " + String(readStatus));
}
delay(20000);
}