Inhaltsverzeichnis:

Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow

Video: Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow

Video: Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow
Video: App-Benachrichtigungen ein- / ausschalten ☛ So geht´s ganz einfach! | Tutorial 2024, November
Anonim
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde

Hintergrundgeschichte

Ich habe sechs automatisierte Gewächshäuser, die über Dublin, Irland, verteilt sind. Durch die Verwendung einer maßgeschneiderten Handy-App kann ich die automatisierten Funktionen in jedem Gewächshaus aus der Ferne überwachen und mit ihnen interagieren. Ich kann die Fenster manuell öffnen / schließen, wenn die Temperatur zu hoch / niedrig ist; Ich kann die Bewässerung starten / stoppen, wenn die Bodenfeuchtigkeit zu niedrig / zu hoch ist; und ich kann den Lüfter starten / stoppen, wenn die Luftfeuchtigkeit zu hoch / zu niedrig ist. Oder ich schalte das System einfach in den Auto-Modus, und das Gemüse wird vom Arduino-Gehirn betreut. Weitere Details zu diesem Projekt finden Sie hier -

Die Fernverbindung zu den Arduino-Boards in den sechs Gewächshäusern wird mit Hilfe von USB-GPRS-Dongles ermöglicht, einen an jedem Standort (ich habe meinen hier gekauft https://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-Mit-Antenne-3G-USB-Modem-21-6-Mbps-HSPA-Mobile/32979630201.html?spm=a2g0s.9042311.0.0.44cb4c4dzVUThU). Wie bei der mobilen Datenverbindung (zumindest in Dublin) bricht sie zufällig ab, manchmal für einige Minuten, manchmal für ein paar Stunden. Sollte die Verbindung abbrechen, ist der Arduino so programmiert, dass er den USB-Dongle alle 10 Minuten zurücksetzt, um zu versuchen, eine neue Verbindung zu initiieren. Manchmal jedoch aus (noch) unbekannten Gründen, selbst wenn die GPRS-Datenverbindung wieder besteht, bemerkt das Arduino (und das angeschlossene Ethernet-Shield) das Ereignis nicht. Dies ist der Moment, in dem ich zu diesem bestimmten Ort gehen und das gesamte System manuell zurücksetzen muss.

Wenn an einem Ort die Datenverbindung abbricht, wollte ich so schnell wie möglich per E-Mail benachrichtigt werden, damit ich diesen bestimmten Ort im Auge behalten kann. Da die Kommunikation zwischen der Telefon-App und dem Arduino über einen Online-Dienst von https://thingspeak.com erfolgt, war dies bis vor kurzem (und bis 31. März 2019) über einen weiteren Dienst von https:// möglich. ifttt.com/discover und setzen Sie ThingHTTP und React für jeden Kanal, um zu überwachen, ob dieser bestimmte Kanal seit einiger Zeit nicht aktualisiert wurde. Laut einer E-Mail, die ich ab dem 31. März 2019 von Google erhalten habe, aufgrund der Nichteinhaltung der aktualisierten Datenschutzbestimmungen (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api-ecosystems), der Zugriff auf einige Daten in meinem Google-Konto wird IFTTT nicht mehr zur Verfügung stehen, und da in meinem Fall die E-Mail die einzige Ressource war, auf die IFTTT Zugriff hatte, ging ich davon aus, dass die Benachrichtigung Der oben beschriebene Dienst würde nicht mehr funktionieren.

Daher implementieren wir hier eine alternative Lösung, damit die E-Mail-Benachrichtigungen weiterhin ankommen, wenn die Datenverbindung an meinen Standorten unterbrochen wird. Dies verwendet immer noch die ThingHTTP- und React-Funktionen auf meinen Kanälen, nur der Link zu IFTTT wurde wieder auf Google Drive verwiesen. Abgesehen von der Hardware (Arduino in meinem Fall), die Sie möglicherweise mit Ihrem ThingSpeak-Konto kommunizieren, müssen Sie ein Google-Konto erstellen, falls Sie noch keins haben … und los geht's!

Schritt 1:

Bild
Bild

In Google Drive

Zuerst müssen wir in Google Drive (https://drive.google.com) eine Tabelle und ein einfaches Formular erstellen. Öffnen Sie Ihr Google Drive und klicken Sie auf Neu – Google Tabellen – Leere Tabelle.

Schritt 2:

Bild
Bild

Ich habe meine in "Standort-Down-Tabelle" umbenannt. Gehen Sie dann zu Extras – Formular erstellen.

Schritt 3:

Bild
Bild

Ich habe das Formular in "Standort unten Formular" umbenannt und "Unbenannte Frage" in "Status" und den Typ von "Mehrfachauswahl" in "Kurze Antwort" geändert.

Schritt 4:

Bild
Bild

Ich habe dann die Option zum Sammeln von E-Mail-Adressen entfernt – klicken Sie auf "Einstellungen ändern" und deaktivieren Sie alle Optionen im angezeigten Fenster. Klicken Sie auf "Speichern".

Schritt 5:

Bild
Bild

Schließen Sie den aktuellen Browser-Tab, der Ihr Formular enthält, und Sie sollten wieder zu Ihrem Haupt-Tab von Google Drive zurückkehren, auf dem Sie sowohl das Formular als auch die soeben erstellte Tabelle haben sollten. Öffnen Sie die Tabelle und gehen Sie zu „Datei – Freigeben…“. Klicken Sie im neuen Fenster auf "Erweitert"

Schritt 6:

Bild
Bild

Klicken Sie dann auf „Ändern…“neben dem Label „Privat – Nur Sie haben Zugriff“

Schritt 7:

Bild
Bild

und wechseln Sie zu "An – Jeder mit dem Link" und auch zu "Kann bearbeiten"

Schritt 8:

Bild
Bild

Klicken Sie auf "Speichern" und "Fertig", um zu Ihrer Tabelle zurückzukehren. Dort klicken Sie auf „Datei – Im Web veröffentlichen…“, dann auf „Veröffentlichen“und „OK“für das Dialogfenster. Schließen Sie das Fenster "Im Web veröffentlichen".

Klicken Sie noch in der Tabelle auf "Formular – Go to live form". Klicken Sie mit der rechten Maustaste (ich verwende den Google Chrome-Browser) und wählen Sie "Seitenquelle anzeigen".

Schritt 9:

Bild
Bild

Suchen Sie auf der neuen Seite, die sich öffnet, nach "Formularaktion" und suchen Sie dann den Link, der ähnlich aussieht wie https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Wählen Sie diesen Link aus, kopieren Sie ihn und fügen Sie ihn in ein Textdokument ein. Sie werden es verwenden, um den letzten Link zu bilden, der in ThingHTTP für ThingSpeak eingegeben werden muss.

Schritt 10:

Bild
Bild

Gehen Sie zurück zur Quellansicht Ihres Formulars und suchen Sie nun nach "Eintrag". Suchen und markieren Sie den gesamten Text, etwa "entry. XXXXX". Kopieren Sie es und fügen Sie es in dasselbe Textdokument wie oben ein. Sie können nun die Quellansicht Ihres Google-Formulars schließen.

Schritt 11:

Bild
Bild

Erstellen Sie im neuen Textdokument (in dem Sie jetzt den Link und den zuvor eingefügten Eintrag haben) den endgültigen Link, der so aussehen sollte

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

In meinem Fall würde "LOCATION+NAME" durch den tatsächlichen Namen jedes einzelnen Standorts ersetzt, den ich überwachen muss. Die E-Mail-Benachrichtigung, die ich erhalte, wenn die Verbindung unterbrochen wird, enthält diesen Text, damit ich genau weiß, an welchem Standort Probleme auftreten. Dieser Text wird nämlich als Kurztextinhalt für das Feld „Status“im Google-Formular übermittelt. "&submit=Submit" wird das Formular ohne weitere Aktionen stillschweigend absenden, wenn es von ThingHTTP und React aufgerufen wird.

Schließlich müssen wir ein Skript hinzufügen, das jedes Mal, wenn ein neuer Eintrag in der Tabelle hinzugefügt wurde, automatisch eine E-Mail-Benachrichtigung sendet. Öffnen Sie die Tabelle und klicken Sie dann auf "Extras – Skripteditor". Fügen Sie im neuen Fenster, das sich öffnet, den folgenden Code hinzu (mit den erforderlichen Änderungen, die Ihren Anforderungen entsprechen):

Funktion newEntryNotification (e)

{

Versuchen

{

var timestamp = e.values[0];

var location = e.values[1];

var Nachricht = Standort + 'Standort ist DOWN\n' + Zeitstempel;

MailApp.sendEmail("IHRE E-MAIL-ADRESSE", "Achtung, Standort UNTEN!", Nachricht);

}

fangen(e)

{

MailApp.sendEmail("IHRE E-MAIL-ADRESSE", "Fehler - Achtung, Standort UNTEN!", e.message);

}

}

Ersetzen Sie den Text "IHRE E-MAIL-ADRESSE" durch die E-Mail-Adresse, an die die Benachrichtigung gesendet werden soll, und die eigentliche Benachrichtigungsnachricht, wenn Sie dies wünschen.

Schritt 12:

Bild
Bild

Dieses Skript muss ausgelöst werden, wenn ein neuer Eintrag in der Tabelle hinzugefügt wurde. Klicken Sie im selben Fenster (mit dem obigen Skriptcode) auf das Symbol "Stoppuhr" in der Symbolleiste – "Trigger des aktuellen Projekts". Sie werden aufgefordert, Ihr Projekt zu benennen (ich habe meins "locationDown" genannt) und ein weiterer Browser-Tab wird geöffnet, der meldet, dass keine Ergebnisse (keine Auslöser) gefunden wurden. Klicken Sie auf "Neuen Trigger erstellen".

Schritt 13:

Bild
Bild

Wählen Sie im neuen Fenster "Aus Tabelle" für "Ereignisquelle auswählen"; "Beim Absenden des Formulars" für "Ereignistyp auswählen"; "Sofort benachrichtigen" für "Fehlerbenachrichtigungseinstellungen". Klicken Sie auf "Speichern". Sie werden aufgefordert, sich bei Ihrem Google-Konto anzumelden und "Zulassen", damit dieser Auslöser bei Bedarf auf Ihr Konto zugreifen kann.

Schritt 14:

Bild
Bild

Sie sollten jetzt einen Trigger in der Triggerliste haben, der mit dem zuvor erstellten Skript verknüpft wird. Daher ruft der Trigger beim Einfügen neuer Daten in die Tabelle (unter Verwendung des oben beschriebenen automatisierten Formularlinks und der oben beschriebenen stillen Methode) sofort das Skript auf, das eine Benachrichtigung mit Ihrer ausgewählten Nachricht an die angegebene E-Mail-Adresse sendet.

Wir sind mit der Google Drive-Seite fertig und wechseln jetzt zu ThingSpeak.

Schritt 15:

Bild
Bild

Melden Sie sich in ThingSpeak bei Ihrem Konto an (https://thingspeak.com/login), gehen Sie zu „Apps – ThingHTTP“und klicken Sie dann auf „Neues ThingHTTP“. Geben Sie ihm einen Namen (ich habe den tatsächlichen Namen jedes Standorts gewählt; "MyLocationName" für die Zwecke dieses Tutorials) und fügen Sie in das Feld "URL" den Link aus Ihrer Textdatei ein, der so aussieht

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

Lassen Sie alle anderen Felder unverändert und klicken Sie auf "Save ThingHTTP".

Schritt 16:

Bild
Bild

Gehen Sie dann zu "Apps - React" und klicken Sie auf "New React". Geben Sie ihm einen Namen (wieder habe ich den Ortsnamen gefolgt von dem Wort "reagieren" gewählt, aber Sie können einen beliebigen Namen wählen); "Keine Datenprüfung" für "Bedingungstyp"; „Alle 10 Minuten“für „Testhäufigkeit“; den Kanalnamen, den Sie auf Aktualisierungen überwachen möchten, für "Wenn Kanal"; die Zeit, in der der Kanal nicht aktualisiert wurde (ich habe 15 Minuten gewählt), für "wurde nicht aktualisiert für"; "ThingHTTP" für "Aktion"; " MyLocationName " für "dann ThingHTTP ausführen"; "Aktion nur ausführen, wenn die Bedingung zum ersten Mal erfüllt ist", da ich nur einmal eine Benachrichtigung erhalten möchte. Dies wird sich selbst zurücksetzen, wenn der Kanal erneut mit neuen eingehenden Daten aktualisiert wird. Klicken Sie auf "Reaktion speichern" und Sie sind fertig.

Von nun an, wenn Ihr Kanal 15 Minuten lang nicht aktualisiert wurde (oder eine andere Zeit, je nachdem, was Sie gewählt haben), fängt React diese Ausnahme ab, die das ThingHTTP auslöst, das wiederum stillschweigend einen neuen Eintrag in Ihrem erstellt Kalkulationstabelle. Der Trigger und das Skript in Google Spreadsheet übernehmen es von dort, wie oben bereits erläutert.

Empfohlen: