Pendant les vacances, j'ai pensé que ce serait une excellente idée d'avoir un dispositif de détection de panne de courant pour notre maison en Nouvelle-Angleterre. Une recherche rapide DuckDuckgo a découvert l'excellente implémentation de Raspberry Pi de @ Fabytm. Après un peu de jouant avec, j'ai décidé qu'une version plus légère de l'idée de Borean pourrait être plus simple sur un MCU ESP32 ou ESP8266 bon marché. Il permettra également à d'autres avec moins de temps, moins d'argent ou peut-être moins de compétences techniques pour créer un dispositif de détection d'alimentation.
Il y a deux scénarios de panne que je voulais capturer:
Détection de la panne - Tout d'abord, je voulais utiliser le système de notification de flux d'Adafruit pour m'informer lorsqu'il n'avait pas reçu de réponse HTTP de mon appareil dans un délai spécifié. Adafruit IO permet aux comptes gratuits d'envoyer des notifications si aucune mise à jour n'a été publiée en 10 minutes, 30 minutes, 1 heure ou 1 jour. Cette fonction de flux «en ligne» est vraiment sympa. Pour les comptes Adafruit gratuits, c'est seulement un e-mail mais pour nos fins, cela est assez suffisant.
Longueur de la panne - Le code, toutes ~ 100 lignes de celui-ci, suit également le temps de l'époque. Lorsque Power reprend, il calcule le temps passé depuis la dernière heure enregistrée et publiera sur IFTTT ce delta s'il dépasse une valeur que vous définissez dans config.py . Je signale le temps de panne dans le champ Value1 d'IFTTT et mon action "alors" est de faire en sorte qu'Alexa m'informe de la durée de la panne.
Dans config.py , j'ai réglé l'intervalle de publication Adafruit à 30 secondes et l'intervalle de sortie à 10 minutes. J'ai également ce flux envoyant un e-mail à mon compte Gmail qui a une règle selon laquelle si l'expéditeur est [email protected], il transmet l'e-mail à ma passerelle AT&T SMTP-To-SMS - [email protected] et je reçois une alerte SMS. Pour les notifications IFTTT, j'ai réglé la longueur de la panne delta à 30 minutes et j'utilise des webhooks pour m'alerter de toute panne qui dure plus longtemps que cet intervalle de temps.
Vous aurez besoin des 5 composants suivants pour construire cet appareil:
An expressif ESP MCU - J'ai choisi la carte LOLIN / WEMOS ESP32C3 pour ~ 4 $. Un ESP8266 fonctionne aussi bien.
Micropython - Vous pouvez le télécharger pour la carte ci-dessus ici. Vous aurez besoin d'outils esptool et ampy pour flasher Micropython et télécharger vos scripts Python. Utilisez votre outil de connectivité série préféré (putty.exe, écran, etc.).
Les fichiers de detect.py et config-sample.py . Renommer config-sample.py à config.py pour incorporer vos informations d'identification WiFi, AdaFruit et IFTTT.
Comptes gratuits fabriqués sur Adafruit et Ifttt. La création de ces comptes est simple - juste pour aller directement ces sites et vous inscrire. Vous devrez créer un flux et configurer la notification de ce flux d'Adafruit. Sur IFTTT, utilisez un webhook en utilisant le nom de flux que vous avez spécifié dans AdaFruit.
Un petit cas pour enfermer le MCU. J'ai inclus à la fois la version .Scad et .stl d'une petite boîtier qui abritera la puce ESP. Vous pouvez le modifier lorsque vous cherchez à s'adapter à la carte de votre choix. Utilisez SCAD pour apporter ces modifications.
Les commentaires / suggestions / critiques sont les bienvenus. Gardez à l'esprit que j'ai construit ce dépôt et le code en moins de 90 minutes et je suis sûr qu'il pourrait être amélioré. Mais cela fonctionne très bien pour ce dont j'ai besoin.
