/*
PIR sensor
*/
#include <WiFi.h>
#include "ThingSpeak.h"
#define CHANNEL_ID 1907330
#define CHANNEL_API_KEY_WRITE "FK3C8M27RRTHQ11C"
#define CHANNEL_API_KEY_READ "LOARCNOLGZWOE4G4"
WiFiServer server(80);
WiFiClient client;
#define WIFI_TIMEOUT_MS 20000
int ledPin = 12; // choose the pin for the LED
int inputPin = 14; // choose the input pin (for PIR sensor)
int val = 0; // variable for reading the pin status
void connectWiFi() {
Serial.print("Connecting...");
WiFi.mode(WIFI_STA);
WiFi.begin("Wokwi-GUEST", "", 6);
unsigned long startAttemptTime = millis();
while(WiFi.status() != WL_CONNECTED &&
millis() - startAttemptTime < WIFI_TIMEOUT_MS) {
Serial.print(".");
delay(100);
}
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Fail");
} else {
Serial.print("Connected");
Serial.println(WiFi.localIP());
}
}
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
connectWiFi();
ThingSpeak.begin(client);
}
void loop() {
//serverweb control led
int on = ThingSpeak.readLongField(CHANNEL_ID,2, CHANNEL_API_KEY_READ); //read thingspeak
if(on == HIGH) Serial.println("led on until click off");
digitalWrite(12,on);
//pir sensor
if(on == LOW){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
ThingSpeak.writeField(CHANNEL_ID, 1, 1, CHANNEL_API_KEY_WRITE);
Serial.println("motion detection! led on for 15s");
digitalWrite(ledPin, HIGH); // turn LED ON
delay(15000);
} else {
Serial.println("led off");
digitalWrite(ledPin, LOW); // turn LED OFF
}
}
}