#include <WiFi.h>
#include "ThingSpeak.h"
// Replace with your WiFi credentials
const char* ssid = "Wokwi-GUEST"; // set wifi
const char* password = "";
// ThingSpeak channel details
unsigned long channel = 2561267; // set id thingspeak
const char* readAPIKey = "8BZJ6QF7VXXDRUQ2";
// Define relay pins
const int relay1 = 13;
const int relay2 = 12;
const int relay3 = 14;
const int relay4 = 27;
// WiFi client
WiFiClient client;
void setup() {
Serial.begin(115200);
// Initialize the relay pins
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
// Connect to WiFi
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Read data from ThingSpeak
int relay_1 = ThingSpeak.readIntField(channel, 1, readAPIKey);
int relay_2 = ThingSpeak.readIntField(channel, 2, readAPIKey);
int relay_3 = ThingSpeak.readIntField(channel, 3, readAPIKey);
int relay_4 = ThingSpeak.readIntField(channel, 4, readAPIKey);
// Check if the read was successful
if (ThingSpeak.getLastReadStatus() != 200) {
Serial.println("Error reading from ThingSpeak");
} else {
// Control relay1
if (relay_1 == 1) {
pinMode(relay1,OUTPUT);
digitalWrite(relay1, HIGH);
Serial.println("MO RELAY1");
} else {
pinMode(relay1,OUTPUT);
digitalWrite(relay1, LOW);
Serial.println("TAT RELAY1");
}
// Control relay2
if (relay_2 == 1) {
pinMode(relay2,OUTPUT);
digitalWrite(relay2, HIGH);
Serial.println("MO RELAY2");
} else {
pinMode(relay2,OUTPUT);
digitalWrite(relay2, LOW);
Serial.println("TAT RELAY2");
}
// Control relay3
if (relay_3 == 1) {
pinMode(relay3,OUTPUT);
digitalWrite(relay3, HIGH);
Serial.println("MO RELAY3");
} else {
pinMode(relay3,OUTPUT);
digitalWrite(relay3, LOW);
Serial.println("TAT RELAY3");
}
// Control relay4
if (relay_4 == 1) {
pinMode(relay4,OUTPUT);
digitalWrite(relay4, HIGH);
Serial.println("MO RELAY4");
} else {
pinMode(relay4,OUTPUT);
digitalWrite(relay4, LOW);
Serial.println("TAT RELAY4");
}
// Print relay states
Serial.println("Relay states:");
Serial.print("Relay 1: ");
Serial.println(relay_1);
Serial.print("Relay 2: ");
Serial.println(relay_2);
Serial.print("Relay 3: ");
Serial.println(relay_3);
Serial.print("Relay 4: ");
Serial.println(relay_4);
}
// Wait for 5 seconds before next read
delay(5000);
}