Durante las vacaciones, pensé que sería una gran idea tener un dispositivo de detección de interrupciones de energía para nuestra casa en Nueva Inglaterra. Una búsqueda rápida de Duckduckgo descubrió la excelente implementación de Raspberry Pi de Fabytm. Después de un poco de jugar con él, decidí que una versión más ligera de la idea de Butean podría ser más simple en un MCU ESP32 o ESP8266 barato. También permitirá a otros con menos tiempo, menos dinero o posiblemente menos habilidades técnicas para construir un dispositivo de detección de energía.
Hay dos escenarios de interrupción que quería capturar:
Detección de interrupción : primero, quería usar el sistema de notificación de alimentación de Adafruit para notificarme cuando no había recibido una respuesta HTTP de mi dispositivo dentro de un período de tiempo especificado. Adafruit IO permite que las cuentas gratuitas envíen notificaciones si no se han publicado actualizaciones en 10 minutos, 30 minutos, 1 hora o 1 día. Esta función de alimentación 'en línea' es realmente agradable. Para las cuentas gratuitas de Adafruit IO, es solo un correo electrónico, pero para nuestros propósitos, esto es bastante suficiente.
Longitud de la interrupción : el código, todas ~ 100 líneas de la misma, también rastrea el tiempo de la época. Cuando la potencia se reanuda, calcula cuánto tiempo ha pasado desde el último tiempo grabado y publicará en este delta si excede un valor que establece en config.py . Reporto el tiempo de interrupción en el campo Value1 de IFTTT y mi acción "entonces" es que Alexa me notifique la longitud de la interrupción.
En config.py , configuré el intervalo de publicación de AdaFruit en 30 segundos y el intervalo de interrupción a 10 minutos. También tengo esta cuenta de Feed que envía un correo electrónico a mi cuenta de Gmail que tiene una regla de que si el remitente es [email protected], reenvía el correo electrónico a mi puerta de enlace AT&T [email protected] y obtengo una alerta SMS. Para las notificaciones de IFTTT, configuré la longitud de la interrupción del Delta en 30 minutos y uso webhooks para alertarme de cualquier interrupción que dure más que ese intervalo de tiempo.
Necesitará los siguientes 5 componentes para construir este dispositivo:
An Expressif ESP MCU - Elegí el tablero Lolin/Wemos ESP32C3 por ~ $ 4. Un ESP8266 funciona igualmente bien.
Micrypthon: puede descargarlo para el tablero anterior aquí. Necesitará herramientas esptool y ampy para flashear Micrypthon y cargar sus scripts de Python. Use su herramienta de conectividad en serie favorita (Putty.exe, pantalla, etc.).
Los archivos detect.py y config-sample.py Micopython. Cambie el nombre config-sample.py a config.py para incorporar sus credenciales WiFi, AdaFruit e IFTTT.
Cuentas gratuitas hechas tanto en Adafruit como en IFTTT. Crear estas cuentas es simple, solo para ir estos sitios directamente y registrarse. Deberá crear una alimentación y configurar la notificación para este alimento en Adafruit. En IFTTT, use un webhook usando el nombre de alimentación que especificó en AdaFruit.
Un pequeño caso para encerrar el MCU. He incluido la versión .scad y .stl de un pequeño caso que albergará el chip ESP. Puede modificarlo mientras busca que se ajuste al tablero de su elección. Use SCAD para hacer estos cambios.
Los comentarios/sugerencias/críticas son bienvenidos. Tenga en cuenta que construí este repositorio y código en menos de 90 minutos y estoy seguro de que podría mejorarse. Pero funciona muy bien para lo que necesito.
