Innholdsfortegnelse:

Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund: 16 trinn
Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund: 16 trinn

Video: Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund: 16 trinn

Video: Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund: 16 trinn
Video: Introduction to Heltec LoRa CubeCell Development Board HTCC-AB01 2024, November
Anonim
Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund
Motta en e -postmelding når en kanal på ThingSpeak ikke ble oppdatert på en stund

Bakgrunnshistorie

Jeg har seks automatiserte drivhus som er spredt over Dublin, Irland. Ved å bruke en skreddersydd mobilapp, kan jeg eksternt overvåke og samhandle med de automatiserte funksjonene i hvert drivhus. Jeg kan åpne / lukke vinduene manuelt når temperaturen er for høy / lav; Jeg kan starte / stoppe vanningen når jordfuktigheten er for lav / høy; og jeg kan starte / stoppe ventilasjonsviften når luftfuktigheten er for høy / lav. Eller jeg kan bare bytte systemet til Auto -modus, og grønnsakene vil bli ivaretatt av Arduino -hjernen. Flere detaljer om dette prosjektet finner du her -

Den eksterne tilkoblingen til Arduino-kortene på de seks drivhusene er mulig ved hjelp av USB GPRS-dongler, en på hvert sted (jeg kjøpte min herfra https://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-Med-antenne-3G-USB-modem-21-6-Mbps-HSPA-mobil/32979630201.html? Spm = a2g0s.9042311.0.0.44cb4c4dzVUThU). Som det er tilfelle med mobildatatilkoblingen (i hvert fall i Dublin), faller den tilfeldig, noen ganger i noen minutter, noen ganger kan det være i et par timer. Skulle tilkoblingen falle, er Arduino programmert til å tilbakestille USB -dongelen hvert 10. minutt, slik at den kan prøve å starte en ny tilkobling. Noen ganger på grunn av (ennå) ukjente årsaker, selv om GPRS -datatilkoblingen er på igjen, unnlater Arduino (og det vedlagte Ethernet -skjermet) å legge merke til hendelsen. Dette er øyeblikket jeg må gå til det bestemte stedet og manuelt tilbakestille hele systemet.

Når datatilkoblingen faller på et eller annet sted, ønsket jeg å bli varslet via e -post så snart som mulig, slik at jeg kunne holde et øye med den spesifikke plasseringen. Siden kommunikasjonen mellom telefonappen og Arduino foregår gjennom en online tjeneste levert av https://thingspeak.com, til nylig (og frem til 31. mars 2019), var dette mulig ved å bruke en annen tjeneste levert av https:// ifttt.com/discover, og sette en ThingHTTP og en React på hver kanal, og overvåke det faktum om den aktuelle kanalen ikke har blitt oppdatert på en stund. Imidlertid, ifølge en e-post jeg mottok fra Google, fra og med 31. mars 2019, på grunn av manglende overholdelse av deres oppdaterte krav til personvern (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api-ecosystems), vil tilgang til noen data i min Google-konto ikke lenger være tilgjengelig for IFTTT, og som i mitt tilfelle var e-posten den eneste ressursen IFTTT hadde tilgang til, min forståelse var at varselet tjenesten beskrevet ovenfor ville slutte å fungere.

Så her implementerer vi en alternativ løsning for at e -postvarslene skal fortsette å komme når datatilkoblingen til mine steder faller. Dette bruker fremdeles ThingHTTP- og React-funksjonene på kanalene mine, bare lenken til IFTTT ble pekt på nytt til Google Disk. Så bortsett fra maskinvaren (Arduino i mitt tilfelle) kan det hende du kommuniserer med ThingSpeak -kontoen din, må du opprette en Google -konto, at hvis du ikke allerede har en … og la oss starte!

Trinn 1:

Bilde
Bilde

I Google Disk

Først, i Google Disk (https://drive.google.com) må vi lage et regneark og et enkelt skjema. Åpne Google Disk, og klikk på Nytt - Google Regneark - Tomt regneark.

Steg 2:

Bilde
Bilde

Jeg omdøpte mitt til "Location down spreadsheet". Gå deretter til Verktøy - Lag et skjema.

Trinn 3:

Bilde
Bilde

Jeg omdøpte skjemaet til "Location down form", og endret "Untitled question" til "Status", og typen fra "Multiple choice" til "Short answer".

Trinn 4:

Bilde
Bilde

Jeg fjernet deretter alternativet for å samle e -postadresser - klikk på "Endre innstillinger" og fjernet avmerkingen for alle alternativene i vinduet som dukket opp. Klikk på "Lagre".

Trinn 5:

Bilde
Bilde

Lukk den nåværende nettleserfanen som inneholder skjemaet ditt, og du bør gå tilbake til fanen Google Disk, der du skal ha både skjemaet og regnearket du nettopp har opprettet. Åpne regnearket, og gå til "File - Share …". Klikk på "Avansert" i det nye vinduet

Trinn 6:

Bilde
Bilde

Klikk deretter på "Endre …" ved siden av etiketten "Privat - Bare du kan få tilgang til"

Trinn 7:

Bilde
Bilde

og endre til "På - Alle med lenken", og også til "Kan redigere"

Trinn 8:

Bilde
Bilde

Klikk på "Lagre" og "Ferdig" for å komme tilbake til regnearket. Mens du er der, klikker du på "Fil - Publiser på nettet …", og klikker deretter på "Publiser" og "OK" for dialogvinduet. Lukk vinduet "Publiser på nettet".

Mens du fortsatt er i regnearket, klikker du på "Skjema - Gå til live -skjema". Høyreklikk med musen (jeg bruker Google Chrome-nettleseren) og velg "Vis sidekilde".

Trinn 9:

Bilde
Bilde

På den nye siden som åpner, søk etter "skjemahandling", og finn deretter lenken som ligner på https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Velg den koblingen, og kopier og lim den inn i et tekstdokument. Du vil bruke den til å danne den siste lenken som må angis i ThingHTTP for ThingSpeak.

Trinn 10:

Bilde
Bilde

Gå tilbake til kildevisningen til skjemaet ditt, og søk nå etter "oppføring.". Finn og velg hele teksten, noe som "entry. XXXXX". Kopier og lim det inn i samme tekstdokument som ovenfor. Du kan nå lukke kildevisningen til Google -skjemaet ditt.

Trinn 11:

Bilde
Bilde

I det nye tekstdokumentet (der du nå har lenken og oppføringen vi limte inn før), oppretter du den siste lenken, som skal se ut som

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

I mitt tilfelle ville "LOCATION+NAME" blitt erstattet av det faktiske navnet på hvert bestemt sted jeg må overvåke. E -postvarsel -e -posten som jeg vil motta når tilkoblingen faller, inneholder denne teksten, slik at jeg vet nøyaktig hvilken plassering som har problemer. Denne teksten vil faktisk bli sendt inn som kort tekstinnhold for "status" -feltet i Google-skjemaet. "& Submit = Submit" vil stille skjemaet, uten behov for ytterligere handlinger, når det påkalles av ThingHTTP og React.

Til slutt må vi legge til et skript som automatisk sender et e -postvarsel hver gang en ny oppføring ble lagt til i regnearket. Åpne regnearket, og klikk deretter på "Tools - Script editor". Legg til følgende kode i det nye vinduet som åpnes (med de nødvendige endringene for å gjenspeile dine behov):

funksjon newEntryNotification (e)

{

prøve

{

var tidsstempel = e.values [0];

var location = e.values [1];

var melding = plassering + 'plassering er NED / n' + tidsstempel;

MailApp.sendEmail ("DIN E -POSTADRESSE", "Oppmerksomhet, plassering NED!", Melding);

}

fangst (e)

{

MailApp.sendEmail ("DIN E -POSTADRESSE", "Feil - oppmerksomhet, plassering NED!", E.message);

}

}

Erstatt teksten "DIN E -POSTADRESSE" med e -postadressen dit varselet skal sendes til, og selve varselmeldingen, hvis du ønsker det.

Trinn 12:

Bilde
Bilde

Dette skriptet må utløses når en ny oppføring ble lagt til i regnearket. Mens du er i det samme vinduet (med skriptkoden ovenfor), klikker du på "stoppeklokke" -ikonet i verktøylinjen - "Aktuelle prosjektets utløsere". Du blir bedt om å navngi prosjektet ditt (jeg kalte mitt "locationDown"), og en annen nettleserfan åpnes og rapporterer at ingen resultater (ingen utløsere) ble funnet. Klikk på "opprett en ny trigger".

Trinn 13:

Bilde
Bilde

I det nye vinduet velger du "Fra regneark" for "Velg hendelseskilde"; "På skjema send" for "Velg hendelsestype"; "Varsle meg umiddelbart" for "Innstillinger for feilvarsling". Klikk på "Lagre". Du blir bedt om å logge på Google -kontoen din og "Tillat" for denne utløseren for å få tilgang til kontoen din når det er nødvendig.

Trinn 14:

Bilde
Bilde

Du bør nå ha en utløser i utløserlisten, som vil bli koblet til skriptet vi opprettet tidligere. Derfor, ved innsetting av nye data i regnearket (ved hjelp av den automatiske skjemalenken og den stille metoden beskrevet ovenfor), vil utløseren umiddelbart ringe skriptet, som vil sende et varsel til den oppgitte e -postadressen, som inneholder den valgte meldingen.

Vi er ferdige på Google Disk -siden, og vi flytter nå til ThingSpeak.

Trinn 15:

Bilde
Bilde

I ThingSpeak Logg på kontoen din (https://thingspeak.com/login), gå til "Apps - ThingHTTP", og klikk deretter på "New ThingHTTP". Gi det et navn (jeg har valgt det faktiske navnet på hvert sted; "MyLocationName" for formålet med denne opplæringen), og i "URL" -feltet limer du inn lenken fra tekstfilen din, den som ser ut som

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

La alle andre felt være som de er, og klikk på "Save ThingHTTP".

Trinn 16:

Bilde
Bilde

Gå deretter til "Apps - React", og klikk på "New React". Gi det et navn (igjen, jeg har valgt stedsnavnet etterfulgt av ordet "reager", men du kan velge hvilket navn du vil); "Ingen datakontroll" for "Tilstandstype"; "Hvert tiende minutt" for "Testfrekvens"; kanalnavnet du vil overvåke for oppdateringer, for "If Channel"; tiden kanalen ikke har blitt oppdatert (jeg har valgt 15 minutter), for "har ikke blitt oppdatert for"; "ThingHTTP" for "Action"; "MyLocationName" for "deretter utføre ThingHTTP"; "Kjør handling bare første gang betingelsen er oppfylt", ettersom jeg bare vil få et varsel en gang. Dette vil tilbakestille seg selv når kanalen blir oppdatert igjen med nye innkommende data. Klikk på "Save React" og du er ferdig.

Fra nå av når kanalen din ikke har blitt oppdatert på 15 minutter (eller annen gang, avhengig av hva du har valgt), vil React fange det unntaket som vil utløse ThingHTTP, som igjen i stillhet vil opprette en ny oppføring i din regneark. Utløseren og skriptet på Google Regneark tar det derfra, som allerede forklart ovenfor.

Anbefalt: