diff --git a/Proyecto_alarma_2.2.ino b/Proyecto_alarma_2.2.ino new file mode 100644 index 0000000..4528a70 --- /dev/null +++ b/Proyecto_alarma_2.2.ino @@ -0,0 +1,110 @@ +#include +#include + +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); + } + } +} + +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"); + client.publish(TOPIC, "off"); + Serial.println((String)TOPIC + " => off"); + } + 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"); + client.publish(TOPIC, "off"); + Serial.println((String)TOPIC + " => off"); + } + yield(); + delay(20); + } + } +}