Table des matières:

Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : 16 étapes
Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : 16 étapes

Vidéo: Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : 16 étapes

Vidéo: Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : 16 étapes
Vidéo: Programmation d'un client Redis sur ESP8266 2024, Novembre
Anonim
Recevez un e-mail de notification lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps
Recevez un e-mail de notification lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps

Histoire de fond

J'ai six serres automatisées réparties à Dublin, en Irlande. En utilisant une application de téléphonie mobile sur mesure, je peux surveiller à distance et interagir avec les fonctionnalités automatisées de chaque serre. Je peux ouvrir/fermer manuellement les fenêtres lorsque la température est trop haute/basse; Je peux démarrer/arrêter l'irrigation lorsque l'humidité du sol est trop basse/haute; et je peux démarrer/arrêter le ventilateur de ventilation lorsque l'humidité de l'air est trop élevée/faible. Ou je peux simplement basculer le système en mode Auto, et les légumes seront pris en charge par le cerveau Arduino. Plus de détails sur ce projet peuvent être trouvés ici -

La connexion à distance aux cartes Arduino dans les six serres est rendue possible à l'aide de dongles USB GPRS, un à chaque emplacement (j'ai acheté le mien icihttps://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-With-Antenna-3G-USB-Modem-21-6-Mbps-HSPA-Mobile/32979630201.html?spm=a2g0s.9042311.0.0.44cb4c4dzVUThU). Comme c'est le cas avec la connexion de données mobiles (au moins à Dublin), elle tombe au hasard, parfois pendant quelques minutes, parfois pendant quelques heures. Si la connexion est interrompue, l'Arduino est programmé pour réinitialiser le dongle USB toutes les 10 minutes, afin qu'il essaie d'établir une nouvelle connexion. Parfois, cependant, pour des raisons (encore) inconnues, même si la connexion de données GPRS est rétablie, l'Arduino (et le blindage Ethernet attaché) ne prend pas en compte l'événement. C'est le moment où je dois me rendre à cet emplacement spécifique et réinitialiser manuellement l'ensemble du système.

Lorsque la connexion de données tombe à un endroit, je voulais être averti par e-mail dès que possible, afin de garder un œil sur cet endroit spécifique. Comme la communication entre l'application téléphonique et l'Arduino s'effectue via un service en ligne fourni par https://thingspeak.com, jusqu'à récemment (et jusqu'au 31 mars 2019), cela était possible en utilisant un autre service fourni par https:// ifttt.com/discover, et en définissant un ThingHTTP et un React sur chaque canal, en surveillant le fait que ce canal particulier n'a pas été mis à jour depuis un certain temps. Cependant, selon un e-mail que j'ai reçu de Google, à partir du 31 mars 2019, en raison du non-respect de leurs exigences mises à jour en matière de confidentialité des données (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api-ecosystems), l'accès à certaines données de mon compte Google ne sera plus disponible pour IFTTT, et comme dans mon cas, l'e-mail était la seule ressource à laquelle IFTTT avait accès, j'avais cru comprendre que la notification le service décrit ci-dessus cesserait de fonctionner.

Donc, nous voici en train de mettre en œuvre une solution alternative pour que les notifications par e-mail continuent d'arriver lorsque la connexion de données à mes emplacements tombe. Cela utilise toujours les fonctionnalités ThingHTTP et React sur mes chaînes, seul le lien vers IFTTT a été redirigé vers Google Drive. Donc, à part le matériel (Arduino dans mon cas) que vous pourriez avoir en communication avec votre compte ThingSpeak, vous devrez créer un compte Google, au cas où vous n'en auriez pas déjà un… et commençons !

Étape 1:

Image
Image

Dans Google Drive

Tout d'abord, dans Google Drive (https://drive.google.com), nous devons créer une feuille de calcul et un formulaire simple. Ouvrez votre Google Drive et cliquez sur Nouveau – Google Sheets – Feuille de calcul vierge.

Étape 2:

Image
Image

J'ai renommé le mien "Fiche de localisation vers le bas". Ensuite, allez dans Outils – Créer un formulaire.

Étape 3:

Image
Image

J'ai renommé le formulaire en "Formulaire de localisation vers le bas", et j'ai changé "Question sans titre" en "Statut", et le type de "Choix multiple" en "Réponse courte".

Étape 4:

Image
Image

J'ai ensuite supprimé l'option de collecte d'adresses e-mail - cliquez sur "Modifier les paramètres" et décoché toutes les options dans la fenêtre qui s'est affichée. Cliquez sur "Enregistrer".

Étape 5:

Image
Image

Fermez l'onglet actuel du navigateur qui contient votre formulaire et vous devriez revenir à votre onglet principal Google Drive, où vous devriez avoir à la fois le formulaire et la feuille de calcul que vous venez de créer. Ouvrez la feuille de calcul et allez dans "Fichier - Partager…". Dans la nouvelle fenêtre cliquez sur "Avancé"

Étape 6:

Image
Image

Cliquez ensuite sur « Modifier… » à côté du libellé « Privé – Vous seul pouvez accéder »

Étape 7:

Image
Image

et passez à « Activé – Tout le monde avec le lien », et également à « Peut modifier »

Étape 8:

Image
Image

Cliquez sur "Enregistrer" et "Terminé" pour revenir à votre feuille de calcul. Une fois là-bas, cliquez sur « Fichier – Publier sur le Web… », puis cliquez sur « Publier » et « OK » pour la fenêtre de dialogue. Fermez la fenêtre "Publier sur le Web".

Tout en restant dans la feuille de calcul, cliquez sur "Formulaire - Aller au formulaire en direct". Faites un clic droit avec votre souris (j'utilise le navigateur Google Chrome) et choisissez "Afficher la source de la page".

Étape 9:

Image
Image

Dans la nouvelle page qui s'ouvre, recherchez "action de formulaire", puis localisez le lien qui ressemble à https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Sélectionnez ce lien, copiez-le et collez-le dans un document texte. Vous l'utiliserez pour former le dernier lien qui doit être entré dans ThingHTTP pour ThingSpeak.

Étape 10:

Image
Image

Revenez à la vue source de votre formulaire et recherchez maintenant « entrée ». Recherchez et sélectionnez l'ensemble du texte, quelque chose comme "entry. XXXXX". Copiez et collez-le dans le même document texte que ci-dessus. Vous pouvez maintenant fermer la vue source de votre formulaire Google.

Étape 11:

Image
Image

Dans le nouveau document texte (où vous avez maintenant le lien et l'entrée que nous avons collée auparavant), créez le lien final, qui devrait ressembler à

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX =LOCATION+NAME&submit=Submit

Dans mon cas, le "LOCATION+NAME" serait remplacé par le nom réel de chaque emplacement particulier que je dois surveiller. L'e-mail de notification que je recevrai lorsque la connexion sera interrompue contiendra ce texte, afin que je sache exactement quel emplacement a des problèmes. Ce texte sera en fait soumis en tant que contenu de texte court pour le champ « statut » du formulaire Google. Le "&submit=Submit " soumettra silencieusement le formulaire, sans qu'aucune action supplémentaire ne soit nécessaire, lorsqu'il sera invoqué par ThingHTTP et React.

Enfin, nous devons ajouter un script qui enverra automatiquement une notification par e-mail chaque fois qu'une nouvelle entrée est ajoutée dans la feuille de calcul. Ouvrez la feuille de calcul, puis cliquez sur « Outils – Éditeur de script ». Dans la nouvelle fenêtre qui s'ouvre, ajoutez le code suivant (avec les modifications requises pour refléter vos besoins):

fonction newEntryNotification (e)

{

essayer

{

var horodatage = e.values[0];

var location = e.values[1];

var message = location + ' location is DOWN\n' + timestamp;

MailApp.sendEmail("VOTRE ADRESSE E-MAIL", "Attention, emplacement VERS LE BAS !", message);

}

capture(e)

{

MailApp.sendEmail("VOTRE ADRESSE E-MAIL", "Erreur - Attention, emplacement VERS LE BAS!", e.message);

}

}

Remplacez le texte « VOTRE ADRESSE EMAIL » par l'adresse e-mail à laquelle la notification doit être envoyée et le message de notification proprement dit, si vous le souhaitez.

Étape 12:

Image
Image

Ce script doit être déclenché lorsqu'une nouvelle entrée a été ajoutée dans la feuille de calcul. Dans la même fenêtre (avec le code de script ci-dessus), cliquez sur l'icône "chronomètre" dans la barre d'outils - "Déclencheurs du projet en cours". Il vous sera demandé de nommer votre projet (j'ai nommé le mien "locationDown"), et un autre onglet de navigateur s'ouvrira, indiquant qu'aucun résultat (aucun déclencheur) n'a été trouvé. Cliquez sur "créer un nouveau déclencheur".

Étape 13:

Image
Image

Dans la nouvelle fenêtre, choisissez "De la feuille de calcul" pour "Sélectionner la source de l'événement"; « Envoi du formulaire » pour « Sélectionner le type d'événement »; « M'avertir immédiatement » pour « Paramètres de notification d'échec ». Cliquez sur "Enregistrer". Vous serez invité à vous connecter à votre compte Google et à "Autoriser" ce déclencheur à accéder à votre compte lorsque cela est nécessaire.

Étape 14:

Image
Image

Vous devriez maintenant avoir un déclencheur dans la liste des déclencheurs, qui sera lié au script que nous avons créé précédemment. Par conséquent, lors de l'insertion de nouvelles données dans la feuille de calcul (à l'aide du lien du formulaire automatisé et de la méthode silencieuse décrite ci-dessus), le déclencheur appellera immédiatement le script, qui enverra une notification à l'adresse e-mail fournie, contenant le message que vous avez choisi.

Nous avons terminé du côté de Google Drive, et nous passons maintenant au ThingSpeak.

Étape 15:

Image
Image

Dans ThingSpeak, connectez-vous à votre compte (https://thingspeak.com/login), allez dans "Apps - ThingHTTP", puis cliquez sur "New ThingHTTP". Donnez-lui un nom (j'ai choisi le nom réel de chaque emplacement; "MyLocationName" pour les besoins de ce tutoriel), et dans le champ "URL", collez le lien de votre fichier texte, celui qui ressemble à

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX =LOCATION+NAME&submit=Submit

Laissez tous les autres champs tels quels, et cliquez sur "Enregistrer la choseHTTP".

Étape 16:

Image
Image

Ensuite, allez dans "Apps - React", et cliquez sur "New React". Donnez-lui un nom (encore une fois, j'ai choisi le nom de l'emplacement suivi du mot "réagir", mais vous pouvez choisir n'importe quel nom); "Aucune vérification des données" pour "Type de condition"; « Toutes les 10 minutes » pour « Fréquence de test »; le nom du canal que vous souhaitez surveiller pour les mises à jour, pour « If Channel »; le temps pendant lequel la chaîne n'a pas été mise à jour (j'ai choisi 15 minutes), pour "n'a pas été mis à jour depuis"; « ThingHTTP » pour « Action »; " MyLocationName " pour " puis effectuez ThingHTTP "; "N'exécuter l'action que la première fois que la condition est remplie", car je ne souhaite recevoir une notification qu'une seule fois. Cela se réinitialisera lorsque le canal sera à nouveau mis à jour avec de nouvelles données entrantes. Cliquez sur "Enregistrer React" et vous avez terminé.

À partir de maintenant, lorsque votre chaîne n'a pas été mise à jour pendant 15 minutes (ou à un autre moment, selon ce que vous avez choisi), le React interceptera cette exception qui déclenchera le ThingHTTP, qui à son tour créera silencieusement une nouvelle entrée dans votre tableur. Le déclencheur et le script sur la feuille de calcul Google le prendront à partir de là, comme déjà expliqué ci-dessus.

Conseillé: