#define ERA_DEBUG
#define DEFAULT_MQTT_HOST "mqtt1.eoh.io"
#define ERA_AUTH_TOKEN "5ab72699-e02c-4570-baa6-8587310dc0a7"
#include <Arduino.h>
#include <ERaSimpleEsp32.hpp>
#include <ERa.hpp>
#include <ERa/ERaTimer.hpp>
#include <ESP32Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#include <DHT.h>
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
Servo myServo;
int led1 = 17;
int led2 = 16;
int led3 = 4;
int quat1 = 0;
int quat2 = 2;
int servopin =15;
int butled1 = 27;
int butled2 = 14;
int butled3 = 32;
int butquat1 = 33;
int butquat2 = 25;
int butcua = 26;
int ss_pin = 22;
int rst_pin= 5;
int DHTPIN = 12;
const int DHTTYPE = DHT11;
DHT dht(DHTPIN, DHTTYPE);
boolean l1 = HIGH;
boolean l2 = HIGH;
boolean l3 = HIGH;
boolean q1 = HIGH;
boolean q2 = HIGH;
boolean c1 = HIGH;
boolean c2 = HIGH;
MFRC522 mfrc522(ss_pin, rst_pin);
void setup() {
Serial.begin(115200);
ERa.begin(ssid, pass);
SPI.begin();
mfrc522.PCD_Init();
dht.begin();
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(quat1,OUTPUT);
pinMode(quat2,OUTPUT);
pinMode(butled1,INPUT_PULLUP);
pinMode(butled2,INPUT_PULLUP);
pinMode(butled3,INPUT_PULLUP);
pinMode(butquat1,INPUT_PULLUP);
pinMode(butquat2,INPUT_PULLUP);
pinMode(butcua,INPUT_PULLUP);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(quat1, HIGH);
digitalWrite(quat2, HIGH);
myServo.write(0);
ERa.virtualWrite(V0, digitalRead(led1));
ERa.virtualWrite(V1, digitalRead(led2));
ERa.virtualWrite(V2, digitalRead(led3));
ERa.virtualWrite(V3, digitalRead(quat1));
ERa.virtualWrite(V4, digitalRead(quat2));
ERa.virtualWrite(V5,0);
}
void loop() {
ERa.run();
if(digitalRead(butled1) == 0)
{
if(l1 == HIGH)
{
digitalWrite(led1,!digitalRead(led1));
ERa.virtualWrite(V0, digitalRead(led1));
l1 =LOW ;
delay(200);
}
}
else
{
l1 =HIGH ;
}
if(digitalRead(butled2) == 0)
{
if(l2 == HIGH)
{
digitalWrite(led2,!digitalRead(led2));
ERa.virtualWrite(V1, digitalRead(led2));
l2 =LOW ;
delay(200);
}
}
else
{
l2 =HIGH ;
}
if(digitalRead(butled3) == 0)
{
if(l3 == HIGH)
{
digitalWrite(led3,!digitalRead(led3));
ERa.virtualWrite(V2, digitalRead(led3));
l3 =LOW ;
delay(200);
}
}
else
{
l3 =HIGH ;
}
if(digitalRead(butquat1) == 0)
{
if(q1 == HIGH)
{
digitalWrite(quat1,!digitalRead(quat1));
ERa.virtualWrite(V3, digitalRead(quat1));
q1 =LOW ;
delay(200);
}
}
else
{
q1 =HIGH ;
}
if(digitalRead(butquat2) == 0)
{
if(q2 == HIGH)
{
digitalWrite(quat2,!digitalRead(quat2));
ERa.virtualWrite(V4, digitalRead(quat2));
q2 =LOW ;
delay(200);
}
}
else
{
q2 =HIGH ;
}
if(digitalRead(butcua) == 0)
{
if(c1 == HIGH)
{
if(c2 == HIGH)
{
myServo.attach(servopin);
myServo.write(180);
ERa.virtualWrite(V5,1);
c1 =LOW ;
c2 = LOW;
delay(200);
}
else
{
myServo.attach(servopin);
myServo.write(0);
ERa.virtualWrite(V5,0);
c1 =LOW ;
c2 = HIGH;
delay(200);
}
}
}
else
{
c1 =HIGH ;
}
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "E2 08 01 06" | content.substring(1) == "7E 32 30 00" | content.substring(1) == "44 7E 37 FE" | content.substring(1) == "95 79 1C 53" | content.substring(1) == "F5 BC 0C 53" | content.substring(1) == "F7 73 A1 D5") //change here the UID of the card/cards that you want to give access
{
myServo.attach(servopin);
myServo.write(180);
ERa.virtualWrite(V5,1);
c1 =LOW ;
c2 = LOW;
delay(200);
}
}
ERA_WRITE(V0){
int value0 = param.getInt();
digitalWrite(led1,value0);
ERa.virtualWrite(V0, digitalRead(led1));
}
ERA_WRITE(V1){
int value1 = param.getInt();
digitalWrite(led2,value1);
ERa.virtualWrite(V1, digitalRead(led2));
}
ERA_WRITE(V2){
int value2 = param.getInt();
digitalWrite(led3,value2);
ERa.virtualWrite(V2, digitalRead(led2));
}
ERA_WRITE(V3){
int value3 = param.getInt();
digitalWrite(quat1,value3);
ERa.virtualWrite(V3, digitalRead(quat1));
}
ERA_WRITE(V4){
int value4 = param.getInt();
digitalWrite(quat2,value4);
ERa.virtualWrite(V4, digitalRead(quat2));
}
ERA_WRITE(V5){
myServo.attach(servopin);
int value5 = param.getInt();
if(value5==1)
{
myServo.write(180);
ERa.virtualWrite(V5,1);
}
if(value5==0)
{
myServo.write(0);
ERa.virtualWrite(V5,0);
}
}
ERA_WRITE(V6){
float t = dht.readTemperature();
ERa.virtualWrite(V6, t);
}
ERA_WRITE(V7){
float h = dht.readHumidity();
ERa.virtualWrite(V7, h);
}