#include "DHT.h"
#include <WiFi.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define LED_PIN 2
#define BUTTON_PIN 18
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* host = "api.thingspeak.com";
String writeAPIKey = "P4O58DHHM9F1P6SM";
unsigned long channelID = 3334586; // kept for reference
WiFiClient client;
bool systemOn = false;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
dht.begin();
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
Serial.println("Revision Lab: Smart Temperature Indicator");
}
void loop() {
systemOn = (digitalRead(BUTTON_PIN) == LOW);
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Sensor error!");
delay(2000);
return;
}
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(hum);
Serial.println(" %");
if (systemOn && temp > 30.0) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Uploading to ThingSpeak...");
if (client.connect(host, 80)) {
String url = "/update?api_key=" + writeAPIKey +
"&field1=" + String(temp) +
"&field2=" + String(hum);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
String response = "";
while (client.connected() || client.available()) {
if (client.available()) {
response += client.readStringUntil('\n');
}
}
client.stop();
if (response.indexOf("200 OK") >= 0) {
Serial.println("Upload successful!");
} else {
Serial.println("Upload failed!");
}
} else {
Serial.println("Upload failed!");
}
} else {
digitalWrite(LED_PIN, LOW);
}
delay(15000);
}