#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
unsigned long channelID = 2271287;
const char * writeAPIKey = "ADUXW3IO90CMHCAU";
const char * readAPIKey = "MFLQK8T18H4XW4GS";
unsigned long talkBackID = 50030; //
const char * talkBackAPIKey = "J7GT42198SP8T3Y0";
int pirPin = 2;
int ledPin = 4;
WiFiClient client;
int pirState = LOW;
int alertState = LOW;
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
ThingSpeak.begin(client);
}
void loop() {
int pirValue = digitalRead(pirPin);
if (pirValue == HIGH) {
if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
ThingSpeak.writeField(channelID, 1, 1, writeAPIKey);
}
} else {
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
ThingSpeak.writeField(channelID, 1, 0, writeAPIKey);
}
}
String command = ThingSpeak.readStringField(channelID, 2, talkBackID, talkBackAPIKey);
if (command == "alert on") {
if (alertState == LOW) {
Serial.println("Alert on!");
alertState = HIGH;
}
} else if (command == "alert off") {
if (alertState == HIGH) {
Serial.println("Alert off!");
alertState = LOW;
}
}
if (alertState == HIGH && pirState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(100);
}