Inhoudsopgave:

Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt: 16 stappen
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt: 16 stappen
Anonim
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt

Achtergrond verhaal

Ik heb zes geautomatiseerde kassen verspreid over Dublin, Ierland. Door een op maat gemaakte app voor mobiele telefoons te gebruiken, kan ik op afstand de geautomatiseerde functies in elke kas volgen en ermee communiceren. Ik kan de ramen handmatig openen / sluiten wanneer de temperatuur te hoog / laag is; Ik kan de beregening starten/stoppen wanneer het bodemvocht te laag/hoog is; en ik kan de ventilator starten/stoppen als de luchtvochtigheid te hoog/laag is. Of ik kan het systeem gewoon in de Auto-modus zetten en de groenten worden verzorgd door het Arduino-brein. Meer details over dit project zijn hier te vinden -

De externe verbinding met de Arduino-kaarten in de zes kassen wordt mogelijk gemaakt met behulp van USB GPRS-dongles, één op elke locatie (ik heb de mijne hier gekochthttps://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-Met-Antenne-3G-USB-Modem-21-6-Mbps-HSPA-Mobile/32979630201.html?spm=a2g0s.9042311.0.0.44cb4c4dzVUThU). Zoals het geval is met de mobiele dataverbinding (althans in Dublin), valt deze willekeurig weg, soms voor een paar minuten, soms voor een paar uur. Als de verbinding wegvalt, is de Arduino geprogrammeerd om de USB-dongle elke 10 minuten te resetten, zodat hij kan proberen een nieuwe verbinding tot stand te brengen. Soms echter, vanwege (nog) onbekende redenen, zelfs als de GPRS-gegevensverbinding weer is ingeschakeld, neemt de Arduino (en het aangesloten Ethernet-schild) geen kennis van de gebeurtenis. Dit is het moment dat ik naar die specifieke locatie moet gaan en het hele systeem handmatig moet resetten.

Wanneer de dataverbinding op een bepaalde locatie wegvalt, wilde ik zo snel mogelijk per e-mail op de hoogte worden gesteld, zodat ik die specifieke locatie in de gaten zou houden. Omdat de communicatie tussen de telefoon-app en de Arduino via een online dienst van https://thingspeak.com verloopt, was dit tot voor kort (en tot 31 maart 2019) mogelijk door gebruik te maken van een andere dienst van https:// ifttt.com/discover, en het instellen van een ThingHTTP en een React op elk kanaal, waarbij wordt gecontroleerd of dat specifieke kanaal al enige tijd niet is bijgewerkt. Volgens een e-mail die ik echter vanaf 31 maart 2019 van Google heb ontvangen, vanwege niet-naleving van hun bijgewerkte vereisten voor gegevensprivacy (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api-ecosystems), zal toegang tot sommige gegevens in mijn Google-account niet meer beschikbaar zijn voor IFTTT, en aangezien in mijn geval de e-mail de enige bron was waar IFTTT toegang toe had, had ik begrepen dat de melding hierboven beschreven service zou stoppen met werken.

Dus daarom zijn we hier, een alternatieve oplossing implementeren zodat de e-mailmeldingen blijven binnenkomen wanneer de gegevensverbinding op mijn locaties wegvalt. Dit gebruikt nog steeds de ThingHTTP- en React-functies op mijn kanalen, alleen de link naar IFTTT werd opnieuw naar Google Drive verwezen. Dus afgezien van de hardware (Arduino in mijn geval) waarmee je mogelijk communiceert met je ThingSpeak-account, moet je een Google-account maken, voor het geval je er nog geen hebt… en laten we beginnen!

Stap 1:

Afbeelding
Afbeelding

In Google Drive

Eerst moeten we in Google Drive (https://drive.google.com) een spreadsheet en een eenvoudig formulier maken. Open uw Google Drive en klik op Nieuw - Google Spreadsheets - Blanco spreadsheet.

Stap 2:

Afbeelding
Afbeelding

Ik heb de mijne hernoemd naar "Locatie omlaag spreadsheet". Ga dan naar Tools – Formulier aanmaken.

Stap 3:

Afbeelding
Afbeelding

Ik heb het formulier hernoemd naar "Locatie omlaag formulier", en "Naamloze vraag" gewijzigd in "Status", en het type van "Meerkeuze" in "Kort antwoord".

Stap 4:

Afbeelding
Afbeelding

Ik heb toen de optie voor het verzamelen van e-mailadressen verwijderd - klik op "Instellingen wijzigen" en schakelde alle opties uit in het venster dat verscheen. Klik op "Opslaan".

Stap 5:

Afbeelding
Afbeelding

Sluit het huidige browsertabblad dat uw formulier bevat en u zou terug moeten zijn naar uw hoofdtabblad van Google Drive, waar u zowel het formulier als de spreadsheet zou moeten hebben die u zojuist hebt gemaakt. Open de spreadsheet en ga naar "Bestand – Delen…". Klik in het nieuwe venster op "Geavanceerd"

Stap 6:

Afbeelding
Afbeelding

Klik vervolgens op "Wijzigen…" naast het label "Privé – Alleen jij hebt toegang"

Stap 7:

Afbeelding
Afbeelding

en verander naar "Aan – Iedereen met de link", en ook naar "Kan bewerken"

Stap 8:

Afbeelding
Afbeelding

Klik op "Opslaan" en "Gereed" om terug te gaan naar uw spreadsheet. Terwijl je daar bent, klik je op "Bestand – Publiceren op het web…" en klik je vervolgens op "Publiceren" en "OK" voor het dialoogvenster. Sluit het venster "Publiceren op internet".

Terwijl je nog in de spreadsheet bent, klik je op "Formulier - Ga naar live formulier". Klik met de rechtermuisknop (ik gebruik de Google Chrome-browser) en kies "Paginabron weergeven".

Stap 9:

Afbeelding
Afbeelding

Zoek op de nieuwe pagina die wordt geopend naar 'formulieractie' en zoek vervolgens de link die lijkt op https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Selecteer die link en kopieer en plak deze in een tekstdocument. Je zult het gebruiken om de laatste link te vormen die moet worden ingevoerd in de ThingHTTP voor ThingSpeak.

Stap 10:

Afbeelding
Afbeelding

Ga terug naar de bronweergave van je formulier en zoek nu naar "invoer". Zoek en selecteer de hele tekst, zoiets als "entry. XXXXX". Kopieer en plak het in hetzelfde tekstdocument als hierboven. U kunt nu de bronweergave van uw Google-formulier sluiten.

Stap 11:

Afbeelding
Afbeelding

Maak in het nieuwe tekstdocument (waar je nu de link en de invoer hebt die we eerder hebben geplakt), de laatste link, die eruit zou moeten zien

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

In mijn geval zou de "LOCATION+NAME" worden vervangen door de werkelijke naam van elke specifieke locatie die ik moet controleren. De e-mailmelding die ik ontvang wanneer de verbinding wordt verbroken, bevat deze tekst, zodat ik precies weet op welke locatie problemen optreden. Deze tekst wordt in feite ingediend als korte tekstinhoud voor het veld "status" in het Google-formulier. De "&submit=Submit" zal het formulier in stilte verzenden, zonder dat er verdere acties nodig zijn, wanneer het wordt aangeroepen door ThingHTTP en React.

Ten slotte moeten we een script toevoegen dat automatisch een e-mailmelding verzendt telkens wanneer een nieuw item in de spreadsheet wordt toegevoegd. Open de spreadsheet en klik vervolgens op "Extra - Scripteditor". Voeg in het nieuwe venster dat wordt geopend de volgende code toe (met de vereiste wijzigingen om aan uw behoeften te voldoen):

functie newEntryNotification (e)

{

proberen

{

var tijdstempel = e.waarden[0];

var locatie = e.waarden[1];

var message = locatie + ' locatie is DOWN\n' + tijdstempel;

MailApp.sendEmail ("UW E-MAILADRES", "Attentie, locatie OMLAAG!", bericht);

}

vangst (e)

{

MailApp.sendEmail ("UW E-MAILADRES", "Fout - Attentie, locatie OMLAAG!", e.bericht);

}

}

Vervang de tekst "UW E-MAILADRES" door het e-mailadres waar de melding naar toe moet worden gestuurd, en desgewenst het daadwerkelijke meldingsbericht.

Stap 12:

Afbeelding
Afbeelding

Dit script moet worden geactiveerd wanneer een nieuw item in de spreadsheet is toegevoegd. Klik in hetzelfde venster (met de bovenstaande scriptcode) op het "stopwatch"-pictogram in de werkbalk - "triggers van het huidige project". U wordt gevraagd om uw project een naam te geven (ik heb de mijne "locationDown" genoemd), en een ander browsertabblad wordt geopend, met de melding dat er geen resultaten (geen triggers) zijn gevonden. Klik op "maak een nieuwe trigger".

Stap 13:

Afbeelding
Afbeelding

Kies in het nieuwe venster "Van spreadsheet" voor "Selecteer gebeurtenisbron"; "Op formulier indienen" voor "Selecteer gebeurtenistype"; "Breng mij onmiddellijk op de hoogte" voor "Instellingen voor storingsmeldingen". Klik op "Opslaan". U wordt gevraagd om in te loggen op uw Google-account en deze trigger zo nodig toegang tot uw account te geven.

Stap 14:

Afbeelding
Afbeelding

U zou nu een trigger in de lijst met triggers moeten hebben, die wordt gekoppeld aan het script dat we eerder hebben gemaakt. Daarom zal de trigger bij het invoegen van nieuwe gegevens in de spreadsheet (met behulp van de geautomatiseerde formulierlink en de stille methode zoals hierboven beschreven), het script onmiddellijk aanroepen, dat een melding naar het opgegeven e-mailadres stuurt met het door u gekozen bericht.

We zijn klaar in de Google Drive-kant en we gaan nu naar de ThingSpeak.

Stap 15:

Afbeelding
Afbeelding

In ThingSpeak Log in op uw account (https://thingspeak.com/login), ga naar "Apps - ThingHTTP" en klik vervolgens op "New ThingHTTP". Geef het een naam (ik heb de werkelijke naam van elke locatie gekozen; "MyLocationName" voor het doel van deze tutorial), en plak in het veld "URL" de link uit je tekstbestand, degene die eruitziet

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

Laat alle andere velden zoals ze zijn en klik op "Save ThingHTTP".

Stap 16:

Afbeelding
Afbeelding

Ga dan naar "Apps - React" en klik op "New React". Geef het een naam (nogmaals, ik heb de locatienaam gekozen gevolgd door het woord "reageren", maar je kunt elke gewenste naam kiezen); "Geen gegevenscontrole" voor "Conditietype"; "Elke 10 minuten" voor "Testfrequentie"; de kanaalnaam die u wilt controleren op updates, voor "If Channel"; de tijd dat het kanaal niet is bijgewerkt (ik heb 15 minuten gekozen), voor "is niet bijgewerkt voor"; "ThingHTTP" voor "Actie"; " MyLocationName " voor "voer vervolgens ThingHTTP uit"; "Voer actie alleen uit als aan de voorwaarde wordt voldaan", omdat ik maar één keer een melding wil krijgen. Dit zal zichzelf resetten wanneer het kanaal opnieuw wordt bijgewerkt met nieuwe binnenkomende gegevens. Klik op "Save React" en je bent klaar.

Vanaf nu, wanneer je kanaal 15 minuten niet is bijgewerkt (of een andere keer, afhankelijk van wat je hebt gekozen), zal de React die uitzondering opvangen die de ThingHTTP activeert, die op zijn beurt stilletjes een nieuw item in je rekenblad. De Trigger en het script op Google Spreadsheet nemen het vanaf daar over, zoals hierboven al is uitgelegd.

Aanbevolen: