Hi everybody,
I’m trying to set up a solution to automatically swich ON/OFF lights on my house stair.
The environment have to work in booth direction: if someone goes into a PIR he trigger a relay and light will be turned ON. After some time light came back to OFF.
Hardware:
2 NODEMCU
Master NODEMCU have a
PIR (it’a a micropir to be 100% ok with 3.3v - Micro PIR Motion Detection Sensor AM312)
a relay that thave to swich on ON/OFF 220V light.
SLAVE NODEMCU have a
PIR (it’a a micropir to be 100% ok with 3.3v - Micro PIR Motion Detection Sensor AM312)
In terms of software the Slave NODE MCU is connected via BRIDGE to the master that trigger the relay.
In terms of harware everythinks loooks good but there is some bug in the MASTER that result in:
- if slave is triggered everythink is fine
- if master is triggered it doesn’t working
Here the code:
Is anybody can help me?
SLAVE CODE:
/**************************************************************
* MODULO PIR ONLY (SLAVE)
* 1 LED
* 1 PIR
* AppName:MODULO PIRONLY - XXXX
/ **************************************************************/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
char auth[] = "X";
char ssid[] = "Y";
char pass[] = "Z";
#define ledPin 12 //D6 LED
#define pirPin 14 //D5 PIR
int pirState;
int val;
int x; // V0
WidgetBridge bridge1(V1);
BLYNK_CONNECTED() {
// Place the AuthToken of the second hardware here
bridge1.setAuthToken("X1");
}
SimpleTimer timer;
BLYNK_WRITE(V0){
x = param.asInt();
}
void PIRval(){
val = digitalRead(pirPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
bridge1.digitalWrite(D5, HIGH);
//bridge1.virtualWrite(V0, 1000);
}
else {
digitalWrite(ledPin, LOW);
bridge1.digitalWrite(D5, LOW);
//bridge1.virtualWrite(V0, LOW);
}
}
void setup(){
Blynk.begin (auth, ssid, pass);
pinMode(ledPin, OUTPUT);
pinMode(pirPin, INPUT);
timer.setInterval(1000L, PIRval);
}
void loop(){
Blynk.run();
timer.run();
}
MASTER CODE:
/**************************************************************
* MODULO CON RELE' INTEGRATO
* 1 RELE
* 1 LED
* 1 PIR
* AppName:MODULO RELE - ce1882f6b6bf41c396e64beff822f48a
/ **************************************************************/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
char auth[] = "X";
char ssid[] = "Y";
char pass[] = "Z";
#define ledPin 12 //D6 LED
#define relePin D0 //D0 RELAY
#define pirPin 14 //D5 PIR
int pirState;
int val;
int x; // V0
SimpleTimer timer;
BLYNK_CONNECTED() {
Blynk.syncVirtual(V0);
}
BLYNK_WRITE(V0){
x = param.asInt();
}
void PIRval(){
val = digitalRead(pirPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
digitalWrite(relePin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
digitalWrite(relePin, LOW);
}
}
void setup(){
Blynk.begin (auth, ssid, pass);
pinMode(ledPin, OUTPUT);
pinMode(relePin, OUTPUT);
pinMode(pirPin, INPUT);
timer.setInterval(1000L, PIRval);
}
void loop(){
Blynk.run();
timer.run();
}