#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ThingSpeak.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char *ssid = "Wokwi-GUEST";
const char *password = "";
WiFiClient client;
WebServer server(80);
int lampu1 = 35;
int lampu2 = 32;
int lampu3 = 33;
unsigned long lampuChannelNumber = 2456431;
const char *lampuReadAPIKey = "0XKV9H07INPGUV3X";
const int FieldNumber1 = 1; // Nomor field 1
const int FieldNumber2 = 2; // Nomor field 2
const int FieldNumber3 = 3; // Nomor field 2
const int FieldNumber4 = 4;
unsigned long sensorChannelNumber = 2456431;
const char *sensorWriteAPIKey = "T1FA520FFA5I48JM";
void setup()
{
pinMode(lampu1, OUTPUT);
pinMode(lampu2, OUTPUT);
pinMode(lampu3, OUTPUT);
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
ThingSpeak.begin(client);
server.on("/", handleRoot);
server.on("/data", handleData);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
// Reading lampu data from ThingSpeak
int lampuA = ThingSpeak.readLongField(lampuChannelNumber, 1, lampuReadAPIKey);
int lampuB = ThingSpeak.readLongField(lampuChannelNumber, 2, lampuReadAPIKey);
int lampuC = ThingSpeak.readLongField(lampuChannelNumber, 3, lampuReadAPIKey);
// Controlling lampu1
if (lampuA == 1) {
digitalWrite(lampu1, HIGH);
} else if (lampuA == 0) {
digitalWrite(lampu1, LOW);
}
// Controlling lampu2
if (lampuB == 1) {
digitalWrite(lampu2, HIGH);
} else if (lampuB == 0) {
digitalWrite(lampu2, LOW);
}
if (lampuC == 1) {
digitalWrite(lampu3, HIGH);
} else if (lampuC == 0) {
digitalWrite(lampu3, LOW);
}
// Reading sensor data
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
ThingSpeak.writeField(sensorChannelNumber, 4, temperature, sensorWriteAPIKey);
delay(1000);
}
void handleRoot() {
String html = "<html><head><title>IoT Dashboard</title></head><body><h1>IoT Dashboard</h1>";
html += "<p><a href=\"/data\">View Sensor Data</a></p></body></html>";
server.send(200, "text/html", html);
}
void handleData() {
float temperature = ThingSpeak.readFloatField(sensorChannelNumber, 4, sensorWriteAPIKey);
float humidity = dht.readHumidity(); // Assumes you want to read humidity from the sensor directly
String json = "{";
json += "\"temperature\": " + String(temperature) + ",";
json += "\"humidity\": " + String(humidity);
json += "}";
server.send(200, "application/json", json);
}