#include <WiFi.h>
#include <ThingSpeak.h>
#include <stdio.h>
#include "DHTesp.h"
int ledPin = 2;
int ledPin2 = 4;
int ledPin3 = 5;
int ledPin4 = 19;
int inputPin = 13;
int inputPin2 = 12;
int inputPin3 = 14;
int inputPin4 = 26;
int val = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
DHTesp dhtSensor;
TempAndHumidity data;
const int DHT_PIN = 33;
char ssid[] ="Wokwi-GUEST";
char pass[] ="";
int pir[]={0,0,0,0};
WiFiClient client;
unsigned long myChannelNumber = 2654558;
const char * myWriteAPIKey = "LRQ9CFG0QWLTWDJB";
int statusCode;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(inputPin2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(inputPin3, INPUT);
pinMode(ledPin4, OUTPUT);
pinMode(inputPin4, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.begin(9600);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
connectToCloud();
val = digitalRead(inputPin);
val2 = digitalRead(inputPin2);
val3 = digitalRead(inputPin3);
val4 = digitalRead(inputPin4);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
if (pir[0] == 0) {
Serial.println("Motion detected !");
pir[0] = 1;
}
} else {
digitalWrite(ledPin, LOW);
if (pir[0] == 1) {
Serial.println("Motion ended !");
pir[0] = 0;
}
}
if (val2 == HIGH) {
digitalWrite(ledPin2, HIGH);
if (pir[1] == 0) {
Serial.println("Motion2 detected !");
pir[1] = 1;
}
} else {
digitalWrite(ledPin2, LOW);
if (pir[1] == 1) {
Serial.println("Motion2 ended !");
pir[1] = 0;
}
}
if (val3 == HIGH) {
digitalWrite(ledPin3, HIGH);
if (pir[2] == 0) {
Serial.println("Motion3 detected !");
pir[2] = 1;
}
} else {
digitalWrite(ledPin3, LOW);
if (pir[2] == 1) {
Serial.println("Motion3 ended !");
pir[2] = 0;
}
}
if (val4 == HIGH) {
digitalWrite(ledPin4, HIGH);
if (pir[3] == 0) {
Serial.println("Motion3 detected !");
pir[3] = 1;
}
} else {
digitalWrite(ledPin4, LOW);
if (pir[3] == 1) {
Serial.println("Motion3 ended !");
pir[3] = 0;
}
}
for (int i=0;i<4;i++) {
ThingSpeak.setField(i+1 , pir[i]);
}
data = dhtSensor.getTempAndHumidity();
Serial.println("Humi: " + String(data.humidity));
Serial.println("Temp: " + String(data.temperature));
ThingSpeak.setField(5 ,data.humidity);
ThingSpeak.setField(6,data.temperature);
statusCode = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(statusCode == 200)
Serial.println("channel update successful.");
else
Serial.println("problem Writing data. HTTP error code : " +
String(statusCode));
delay(15000);
}
void connectToCloud(){
if(WiFi.status() !=WL_CONNECTED) {
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
for(int i=0;i<5;i++) {
Serial.print(".");
delay(1000);
}
}
Serial.println("\nConnected.");
}
}