-Seguridad_de_las_casas/Proyecto_alarma_2.2.ino

108 lines
2.9 KiB
C++

#include <WiFi.h>
#include <PubSubClient.h>
const char PROGMEM *SSID = "LOTUS"; // Nombre del WiFi
const char PROGMEM *password = "tupapatetocaen64"; // Contraseña del Wifi
int Pir_Pin = 2; // Pines que controlan los sensores
int SENSOR = 3;
int buzzer_pin = 4;
const char PROGMEM *ID = "Alarma"; //Nombre del dispositivo
const char PROGMEM *TOPIC = "Sistema de Alarmas"; //Nombre del topico suscrito
IPAddress broker(192,168,1,15); //Direccion ip del corredor MQTT
WiFiClient wclient;
PubSubClient client(wclient); //Configurar el cliente MQTT
bool state=0;
// Conectar al Wifi-------------------------
void setup_wifi() {
Serial.print("\nConnecting to ");
WiFi.begin("LOTUS", "tupapatetocaen64"); // Conectarse a la RED
while (WiFi.status() != WL_CONNECTED) { // Esperar por la coneccion
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
// Volver a conectarse con el cliente------------------------
void reconnect() {
// Bucle hasta que nos volvamso a conectar-----------------
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// intenta conectarte
if (client.connect(ID)) {
Serial.println("connected");
Serial.print("Publishing to: ");
Serial.println(TOPIC);
Serial.println('\n');
} else {
Serial.println(" try again in 5 seconds");
// esperar 5 segundos antes de volver a intentar
delay(5000);
}
}
}
//Comienzo del codigo principal----------------
void setup() {
Serial.begin(115200); // Inicie la comunicacion en serie a 115200 baudios
pinMode(Pir_Pin,INPUT); // Configurar los sensores como entrada
pinMode(SENSOR, INPUT);
pinMode(buzzer_pin, OUTPUT);
delay(100);
setup_wifi();
client.setServer(broker, 1883);
}
void loop() {
if (!client.connected()) // Vuelve a conectar si se pierde la conexion
{
reconnect();
}
client.loop();
// Si el detector de movimiento capta algo------------------
if(digitalRead(Pir_Pin) == HIGH)
{
digitalWrite(buzzer_pin, HIGH);
Serial.println("¡Intrusos!");
state = !state; //alternar estado
if(state == 1) // Prendido
{
client.publish(TOPIC, "on");
Serial.println((String)TOPIC + " => on");
}
else
{
digitalWrite(buzzer_pin, LOW);
Serial.println("Modo vigilante");
Serial.println((String)TOPIC + " => off");
}
//Si el detector magnetico capta algo--------
digitalWrite(buzzer_pin, !digitalRead(SENSOR));
{
state = !state; //alternar estado
if(state == 1) // Prendido
{
client.publish(TOPIC, "on");
Serial.println((String)TOPIC + " => on");
}
else
{
Serial.println("Modo vigilante");
Serial.println((String)TOPIC + " => off");
}
}
}
}