En este proyecto explico como hacer llegar notificaciones a un móvil para todas aquellas personas que tengan problemas auditivos. De esta manera el móvil mediante una vibración o vinculado a una pulsera, sabrá en todo momento si están llamando a la puerta o si ocurre algo inusual en se domicilio.
He usado la placa ESP-1 de la serie ESP8266 ya que como podéis observar en el esquema eléctrico solo uso un pin digital.
Lo hice en primer lugar usando correo electrónico de Gmail, pero me encontraba que las notificaciones se demoraban más de lo que era de esperar. Os dejaré el código que he usado, así como el enlace al Video de donde lo saqué.
Buscando otra alternativa indague para usar “WhatsApp” pero para ello tenia que tener una cuenta de empresa en “Facebook”, pero no era lo suyo ya que muchos de nosotros somos particulares.
Finalmente, lo más practico ha sido usar Telegram. En dicha plataforma el gestor de la aplicación ha de buscar en la lupa y busca “BotFather”, para crear una cuenta de administrador y de esta manera obtendremos el Token que deberemos usar en nuestra aplicación de Arduino.
Para saber la ID del remitente, deberemos ir a la lupa y buscar “IDBot” le damos a iniciar y posteriormente escribiremos “/getid” y nos devolverá la ID de usuario que debemos usar para que le llegue la notificación a la persona deseada.
Os dejo el enlace donde esta explicado paso a paso. Video
Código fuente:
/* Autor: Josep M.T. * Fecha: 16/04/2023 * Notificaciones a travess de Telegram * Realizado con la placa ESP-01 de la serie ESP8266 */ #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> #include <ArduinoJson.h> //Sonido Alarma int frecmin = 1000; int frecmax = 4000; // Ingresamos el SSID y Password de nuestra red WI-FI const char* ssid = "XXXXXX"; const char* password = "XXXXXX"; // iniciamos el Bot de Telegram ingresando el Token que recibimos de Botfather #define BOTtoken "xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxx" // Ingresamos el ID que recibimos del Chat con IDBot #define CHAT_ID "xxxxxxxxxx" X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); const int led = 1; //pin del led int pinAlarma = 13; // pin del parlante int i; const int TimbrePuert = 2; // Pin para el sensor de movimiento bool motionDetected = false; // desde el principio la alarma debe estar en falso para evitar que suene al Iniciar el circuito // si se detecta si es a llamado al timbre del domicilio. // Esta función se ejecuta independiiente del bucle loop ICACHE_RAM_ATTR void detectaTimbre() { //Serial.println("MOTION DETECTED!!!"); motionDetected = true; digitalWrite(led, 1); //Esta parte esta en comenterio por si se quiere poner un buxxer. Se activa la alarma /*for (i = frecmin; i <= frecmax; i++){ tone(pinAlarma, i); } for (i = frecmax; i >= frecmin; i--){ tone(pinAlarma, i); } */ } void setup() { Serial.begin(115200); configTime(0, 0, "pool.ntp.org"); // obtenemos la Hora UTC via NTP client.setTrustAnchors(&cert); // Agregamos el certificado Raiz de api.telegram.org // colocamos el sensor PIR en modo INPUT_PULLUP pinMode(TimbrePuert, INPUT_PULLUP); // establecemos el pin del timbre como interrupcion, asignamos la interrupcion en modo RISING attachInterrupt(digitalPinToInterruptTimbrePuert), detectaTimbre, RISING); // conexion con la red WI-FI: Serial.print("Connectant Wifi: "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connectada"); Serial.print("Adreça IP: "); Serial.println(WiFi.localIP()); bot.sendMessage(CHAT_ID, "El sistema está en marcha", ""); } void loop() { if(motionDetected){ bot.sendMessage(CHAT_ID, "Han llamado a la parta de casa", ""); Serial.println("Han Llamado a la puerta"); motionDetected = false; digitalWrite(led, 0); //Si heos colocado un Buzzer lo apagamos //noTone(pinAlarma); } }
Descarga de la libreria:
Libreria: Descargas