#include<WiFi.h>
#include<PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingsBoard server credentials
const char* mqtt_server = "demo.thingsboard.io";
const char* access_token = "dtk68ipyTiTPUkpDH2nN";
WiFiClient espClient;
PubSubClient client(espClient);
#define pir 14
#define ldr 34
#define relay1 16
#define relay2 17
#define relay3 18
void setup() {
Serial.begin(115200);
pinMode(pir, INPUT);
pinMode(ldr,INPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
// Initialize WiFi
setup_wifi();
// Initialize MQTT
client.setServer(mqtt_server, 1883);
}
void setup_wifi() {
delay(10);
Serial.println();
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");
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect to ThingsBoard
if (client.connect("ESP32_Client", access_token, "")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(1000);
}
}
}
void sendDataToThingsBoard(float ldrvalue, bool pirvalue,int count) {
String payload = "{";
payload += "\"ldrvalue\":";
payload += ldrvalue;
payload += ",";
payload += "\"pirvalue\":";
payload += pirvalue ?"motion":"rest";
payload +=",";
payload +="\"count\":";
payload +=count;
payload += "}";
// Publish to ThingsBoard
if (client.connected()) {
client.publish("v1/devices/me/telemetry", (char*)payload.c_str());
Serial.println("Data sent to ThingsBoard: " + payload);
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
int count;
int ldrvalue = analogRead(ldr);
bool pirvalue = digitalRead(pir);
delay(2000);
Serial.print("PIR SENSOR VALUE=");
Serial.print(pirvalue);
Serial.print("\n");
Serial.print("LDR SENSOR VALUE=");
Serial.print(ldrvalue);
Serial.print("\n");
delay(500);
if(pirvalue==1 && ldrvalue<1000){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
Serial.print(" ALL 3 leds are glowing \n");
delay(500);
}
else if (pirvalue==1 && ldrvalue>1000){
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
digitalWrite(relay3,LOW);
Serial.print("no need of light in day\n");
delay(500);
}
else{
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
digitalWrite(relay3,LOW);
}
count = 0;
if (digitalRead(relay1) == HIGH) count++;
if (digitalRead(relay2) == HIGH) count++;
if (digitalRead(relay3) == HIGH) count++;
sendDataToThingsBoard(ldrvalue,pirvalue,count);
}
#include<WiFi.h>
#include<PubSubClient.h>
const char* ssid = "OPPO A59 5G";
const char* password = "c2m255cg";
// ThingsBoard server credentials
const char* mqtt_server = "demo.thingsboard.io";
const char* access_token = "dtk68ipyTiTPUkpDH2nN";
WiFiClient espClient;
PubSubClient client(espClient);
#define pir 15
#define ldr 4
#define relay1 13
void setup() {
Serial.begin(115200);
pinMode(pir, INPUT);
pinMode(ldr,INPUT);
pinMode(relay1, OUTPUT);
// Initialize WiFi
setup_wifi();
// Initialize MQTT
client.setServer(mqtt_server, 1883);
}
void setup_wifi() {
delay(10);
Serial.println();
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");
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect to ThingsBoard
if (client.connect("ESP32_Client", access_token, "")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(1000);
}
}
}
void sendDataToThingsBoard( bool pirvalue,int count) {
String payload = "{";
payload += "\"pirvalue\":";
payload += pirvalue ?"motion":"rest";
payload +=",";
payload +="\"count\":";
payload +=count;
payload += "}";
// Publish to ThingsBoard
if (client.connected()) {
client.publish("v1/devices/me/telemetry", (char*)payload.c_str());
Serial.println("Data sent to ThingsBoard: " + payload);
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
int count;
int ldrvalue = analogRead(ldr);
bool pirvalue = digitalRead(pir);
delay(2000);
Serial.print("PIR SENSOR VALUE=");
Serial.print(pirvalue);
Serial.print("\n");
Serial.print("LDR SENSOR VALUE=");
Serial.print(ldrvalue);
Serial.print("\n");
delay(500);
if(pirvalue==1 && ldrvalue<1000){
digitalWrite(relay1,HIGH);
Serial.print(" relay is on \n");
delay(500);
}
else if (pirvalue==1 && ldrvalue>1000){
digitalWrite(relay1,LOW);
Serial.print("relay is off\n");
}
else{
digitalWrite(relay1,LOW);
}
count = 0;
if (digitalRead(relay1) == HIGH) count++;
sendDataToThingsBoard(pirvalue,count);
}