You are on page 1of 9

#include <ESP8266WiFi.

h>
#include <FirebaseESP8266.h>

//#include <Firebase_ESP_Cliente.h>

// Provide the token generation process info.


//#include <addons/TokenHelper.h>

// Provide the RTDB payload printing info and other helper functions.
//#include <addons/RTDBHelper.h>

/* 1. Define the WiFi credentials */


#define WIFI_SSID "CAMILO"
#define WIFI_PASSWORD "Josue0102@#1"

#define DATABASE_URL "https://camilo-ffc02-default-rtdb.firebaseio.com/"


#define DATABASE_SECRET "DS7ixrgGX7PjUWVLRYg4Qwxj9GMmwru8zEg4o2iq"

FirebaseData cami;

FirebaseAuth auth;
FirebaseConfig config;

const int interruptor_pin = 5; // interruptor on / off


const int panico_pin = 4; // pulsador de panicoo
//const int luces_pin = 4;
const int sensor_pin = 2; // señal de sensor
//const int pulsador_pin = 15;
const int relevo_1_pin = 14; // alimentacion de sensor
const int relevo_2_pin = 12; // activacion sirena
const int relevo_3_pin = 13; // activacion luces
const int sirena=0;

// Variables de estado

bool interruptor_estado = false;


bool alarma_estado = false;
bool pulsador_estado = false;
bool movimiento_detectado = false;
bool luces_estado = false;
unsigned long tiempo_alarma = 0;
unsigned long tiempo_luces = 0;
unsigned long Time_pulso =0;
unsigned long Time_panico =0;
unsigned long Time_used =0;
unsigned long Time_used1 =0;
unsigned long Time_used2 =0;
unsigned long Time_used3 =0;
int band=0;
int prueba =0;
int pulso =0;
int pulso1 =0;
int panico_on =0;
int interruppin =0;
int panicotime=0;

void setup(){

Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);}

Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();

Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

//Or use legacy authenticate method


// config.database_url = DATABASE_URL;
//config.signer.tokens.legacy_token = DATABASE_SECRET;

Firebase.begin(DATABASE_URL, DATABASE_SECRET);
Firebase.reconnectWiFi(true);

// pinMode(LED_BUILTIN,OUTPUT);

pinMode(interruptor_pin,INPUT_PULLUP); //INPUT_PULLUP
pinMode(panico_pin,INPUT);
//pinMode(luces_pin,OUTPUT);
pinMode(sensor_pin,INPUT);
//pinMode(pulsador_pin,INPUT_PULLUP); //INPUT_PULLUP
pinMode(relevo_1_pin,OUTPUT);
pinMode(relevo_2_pin,OUTPUT);
pinMode(relevo_3_pin,OUTPUT);

//configuracion de interrupciones
attachInterrupt(digitalPinToInterrupt(interruptor_pin), encendido, RISING);
attachInterrupt(digitalPinToInterrupt(panico_pin), fcpanico, RISING);

}
String alarma_on = "0"; //1 activo 0 apagado
String panico = "0";
String luces = "0";

String alarma_on1 = "10"; //1 activo 0 apagado


String panico1 = "10";
String luces1 = "10";

// codigo de funciones para interrupciones


ICACHE_RAM_ATTR void encendido(){

Serial.println("interrupcion ");
interruppin=1;

ICACHE_RAM_ATTR void fcpanico(){


digitalWrite(relevo_2_pin,HIGH);
digitalWrite(relevo_3_pin,HIGH);
panico_on=1;
panicotime=1;
Time_panico =millis();

}
void loop ()
{delay(500);

Serial.println(" esto 1 ");


//recibir dato a servidor

if (Firebase.RTDB.getString(&cami, "/alarma_on")) //&base_de_datos,


alarma_on=cami.stringData();
delay(50);

if (Firebase.RTDB.getString(&cami, "/panico"))
panico=cami.stringData();
delay(50);

if (Firebase.RTDB.getString(&cami, "/luces"))
luces=cami.stringData();
delay(50);

Serial.println(" esto 2 ");


Serial.println(interruppin);

//enviar dato a servidor (feedback)


if (alarma_on != alarma_on1 ){
Firebase.setString(cami,"/fdb_alarma_on",alarma_on);
alarma_on1=alarma_on;
delay(50);}
else delay(10);

if (panico != panico1){
Firebase.setString(cami,"/fdb_panico",panico);
panico1=panico;
delay(50);}
else delay(10);

if (luces != luces1 ){
Firebase.setString(cami,"/fdb_luces",luces);
luces1=luces;
delay(50);}
else delay(10);

//codigo de la amarma
if( interruppin==1 && alarma_on=="1" && pulso1==0){
interruptor_estado = LOW;
pulso =1;
pulso1 =1;
Firebase.setString(cami,"/alarma_on","0");
Time_pulso=millis();
interruppin=0;
}

if(interruppin==1 && alarma_on=="0" && pulso1==0){


interruptor_estado = HIGH;
pulso=1;
pulso1=1;
Time_pulso=millis();
Firebase.setString(cami,"/alarma_on","1");
interruppin=0;
}

if(digitalRead(interruptor_pin)==LOW)
{pulso1=0;}

Serial.println(" esto 3 ");

// // Verificar si se presiono el interruptor en apk


if(alarma_on== "1" && interruptor_estado==LOW && millis()>=Time_pulso+2000){
interruptor_estado = HIGH;

if(alarma_on == "0" && interruptor_estado==HIGH && millis()>=Time_pulso+2000){


interruptor_estado = LOW;
pulso=0;
}

//aqui se habilita el tiempo ahora de tiempo alarma


if (interruptor_estado==HIGH)
{
if (band==0)
{tiempo_alarma=millis();
band=1;}

else Serial.println(" ");


}

else band=0;
// Verificar si se debe habilitar la alarma

if (interruptor_estado && millis()>= tiempo_alarma+30000 )


{alarma_estado = true;}
else
{alarma_estado = false;
}

Serial.println("___________");
Serial.print("alarma_estado: ");
Serial.println(alarma_estado);
Serial.println("___________");

// if(alarma_on=="1")
// digitalWrite(LED_BUILTIN, LOW);
// else
// digitalWrite(LED_BUILTIN, HIGH);

//habilita el relevo para energizar 12 voltios sensores


if (interruptor_estado==HIGH)
{digitalWrite(relevo_1_pin,HIGH);}
else
{digitalWrite(relevo_1_pin,LOW);}
//activacion del boton panico

// if (digitalRead(panico_pin)==HIGH){
// digitalWrite(relevo_2_pin,HIGH);
// Serial.println("rel 1 LED encendido");
// digitalWrite(relevo_3_pin,HIGH);
// panico_on=1;
// }

if (panico_on==1){
Firebase.setString(cami,"/fdb_panico","1");
Firebase.setString(cami,"/luces","1");
Time_used = millis();

if (panico_on==1 && digitalRead(panico_pin)==LOW ) {


//1&&digitalRead(panico_pin)==LOW )
digitalWrite(relevo_2_pin,LOW);// sirena
panico_on=0;
Firebase.setString(cami,"/panico","0");
Firebase.setString(cami,"/fdb_panico","0");
Serial.println("PROBANDO EL 0 DE PANICO");
}

Serial.println(" esto 4 ");

// if (alarma_estado==false&&digitalRead(panico_pin)==LOW ){ // LO ULTIMO QUE


COMENTE
// digitalWrite(relevo_2_pin,LOW);//sirena

// }

//activar panico por medio de app


if (panico=="1"){
digitalWrite(relevo_2_pin,HIGH);
digitalWrite(relevo_3_pin,HIGH);
panicotime=1;
Time_panico =millis();
Firebase.setString(cami,"/luces","1");
Time_used = millis();

if (panico=="0" && panico_on==0){


digitalWrite(relevo_2_pin,LOW);
}

//luces encendida

if(luces=="1"){
digitalWrite(relevo_3_pin,HIGH);//luces
}

//luces activa por medio de panico


if(panicotime==1&&luces=="1"&&millis()>=Time_panico+20000)// aqui debe ser 600000
para 10 minutos encendida luego de panico
{digitalWrite(relevo_3_pin,LOW);
Firebase.setString(cami,"/luces","0");
panicotime=0;

if (luces=="0" && (panico_on==0&&panico=="0")){


digitalWrite(relevo_3_pin,LOW);
panicotime=0;}

//encender sirena y luces cuando se active el sensor

if (alarma_estado==true && digitalRead(sensor_pin)==LOW){


digitalWrite(relevo_2_pin,HIGH);
digitalWrite(relevo_3_pin,HIGH);
//Firebase.setString(cami,"/panico","1");
Firebase.setString(cami,"/panico","1");
Firebase.setString(cami,"/luces","1");
Serial.println("se activa sirena y luz con sensor");
Time_used = millis();

if (millis()<=Time_pulso+10000){
Firebase.setString(cami,"/fdb_alarma_on",alarma_on);
}

Serial.println(" esto 5 ");

Serial.println("alarma on :" + alarma_on);


Serial.println("panico :" + panico);
Serial.println(" ");

You might also like