Innehållsförteckning:

Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag: 16 steg
Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag: 16 steg

Video: Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag: 16 steg

Video: Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag: 16 steg
Video: Measure Temperature and Humidity WiFi with ESP32 DHT11 and DHT22 - Robojax 2024, November
Anonim
Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag
Få ett e -postmeddelande när en kanal på ThingSpeak inte uppdaterades på ett tag

Bakgrundshistoria

Jag har sex automatiserade växthus som är spridda över Dublin, Irland. Genom att använda en skräddarsydd mobilapp kan jag fjärrövervaka och interagera med de automatiska funktionerna i varje växthus. Jag kan öppna / stänga fönstren manuellt när temperaturen är för hög / låg; Jag kan starta / stoppa bevattningen när markfuktigheten är för låg / hög; och jag kan starta / stoppa ventilationsfläkten när luftfuktigheten är för hög / låg. Eller så kan jag helt enkelt växla systemet till autoläge, och grönsakerna kommer att tas om hand av Arduino -hjärnan. Mer information om detta projekt hittar du här -

Fjärranslutningen till Arduino-korten vid de sex växthusen möjliggörs med hjälp av USB GPRS-donglar, en på varje plats (jag köpte min härihttps://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). Som det är fallet med mobildataanslutningen (åtminstone i Dublin) sjunker den slumpmässigt, ibland i några minuter, ibland kan det vara i ett par timmar. Skulle anslutningen falla, är Arduino programmerad att återställa USB -dongeln var 10: e minut, så att den kan försöka initiera en ny anslutning. Ibland, på grund av (ännu) okända orsaker, även om GPRS -dataförbindelsen är påslagen, misslyckas dock Arduino (och den anslutna Ethernet -skölden) om händelsen. Det här är det ögonblick jag behöver gå till den specifika platsen och manuellt återställa hela systemet.

När dataanslutningen faller på någon plats ville jag bli meddelad via e -post så snart som möjligt, så att jag skulle kunna hålla koll på den specifika platsen. Eftersom kommunikationen mellan telefonappen och Arduino sker via en onlinetjänst som tillhandahålls av https://thingspeak.com, fram till nyligen (och fram till 31 mars 2019), var detta möjligt genom att använda en annan tjänst från https:// ifttt.com/discover, och ställa in en ThingHTTP och en reagera på varje kanal, övervaka det faktum om just den kanalen inte har uppdaterats på ett tag. Enligt ett e-postmeddelande som jag fick från Google från och med 31 mars 2019 på grund av bristande efterlevnad av deras uppdaterade dataskyddskrav (https://cloud.google.com/blog/products/g-suite/elevating-user -förtroende-i-våra-api-ekosystem), åtkomst till vissa data i mitt Google-konto kommer inte längre att vara tillgängligt för IFTTT, och som i mitt fall var e-postmeddelandet den enda resurs IFTTT hade tillgång till, min förståelse var att meddelandet tjänsten som beskrivs ovan skulle sluta fungera.

Så därför, här är vi, implementerar en alternativ lösning för att e -postaviseringarna ska fortsätta att komma när dataanslutningen på mina platser faller. Detta använder fortfarande funktionerna ThingHTTP och React på mina kanaler, bara länken till IFTTT pekades om till Google Drive. Så bortsett från hårdvaran (Arduino i mitt fall) som du kanske kommunicerar med ditt ThingSpeak -konto, måste du skapa ett Google -konto, om du inte redan har ett … och låt oss börja!

Steg 1:

Bild
Bild

I Google Drive

Först i Google Drive (https://drive.google.com) måste vi skapa ett kalkylblad och ett enkelt formulär. Öppna din Google Drive och klicka på Nytt - Google Kalkylark - Tomt kalkylblad.

Steg 2:

Bild
Bild

Jag bytte namn på mitt "Location down spreadsheet". Gå sedan till Verktyg - Skapa ett formulär.

Steg 3:

Bild
Bild

Jag bytte namn på formuläret till "Plats ned formulär" och ändrade "Untitled question" till "Status" och typen från "Multiple choice" till "Short answer".

Steg 4:

Bild
Bild

Jag tog bort alternativet för att samla e -postadresser - klicka på "Ändra inställningar" och avmarkerade alla alternativ i fönstret som dök upp. Klicka på "Spara".

Steg 5:

Bild
Bild

Stäng den aktuella webbläsarfliken som innehåller ditt formulär, och du bör återgå till din huvudsakliga Google Drive -flik, där du ska ha både formuläret och kalkylarket du just skapade. Öppna kalkylbladet och gå till "Arkiv - Dela …". Klicka på "Avancerat" i det nya fönstret

Steg 6:

Bild
Bild

Klicka sedan på "Ändra …" bredvid etiketten "Privat - bara du kan komma åt"

Steg 7:

Bild
Bild

och ändra till "På - Alla med länken", och även till "Kan redigera"

Steg 8:

Bild
Bild

Klicka på "Spara" och "Klar" för att komma tillbaka till kalkylarket. Klicka på "Arkiv - Publicera på webben …" och klicka sedan på "Publicera" och "OK" i dialogrutan. Stäng fönstret "Publicera på webben".

Medan du fortfarande är i kalkylarket klickar du på "Form - Gå till liveform". Högerklicka med musen (jag använder webbläsaren Google Chrome) och välj "Visa sidkälla".

Steg 9:

Bild
Bild

På den nya sidan som öppnar sök efter "formuläråtgärd" och leta sedan upp länken som liknar https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Välj den länken och kopiera och klistra in den i något textdokument. Du kommer att använda den för att bilda den slutliga länken som måste anges i ThingHTTP för ThingSpeak.

Steg 10:

Bild
Bild

Gå tillbaka till källvyn i ditt formulär och sök nu efter "post". Leta reda på och markera hela texten, ungefär "entry. XXXXX". Kopiera och klistra in det i samma textdokument som ovan. Du kan nu stänga källvyn för ditt Google -formulär.

Steg 11:

Bild
Bild

I det nya textdokumentet (där du nu har länken och posten som vi klistrade in tidigare), skapa den sista länken, som ska se ut

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX = PLATS+NAMN & skicka = Skicka

I mitt fall skulle "LOCATION+NAME" ersättas med det faktiska namnet på varje specifik plats som jag behöver övervaka. E -postmeddelande -e -postmeddelandet som jag kommer att få när anslutningen upphör kommer att innehålla denna text, så att jag vet exakt vilken plats som har problem. Denna text kommer faktiskt att skickas som korttextinnehåll för "status" -fältet i Google-formuläret. "& Submit = Submit" skickar tyst formuläret, utan att det behövs några ytterligare åtgärder, när det åberopas av ThingHTTP och React.

Slutligen måste vi lägga till ett skript som automatiskt skickar ett e -postmeddelande varje gång en ny post har lagts till i kalkylarket. Öppna kalkylbladet och klicka sedan på "Verktyg - Skriptredigerare". Lägg till följande kod i det nya fönstret som öppnas (med de nödvändiga ändringarna för att återspegla dina behov):

funktion newEntryNotification (e)

{

Prova

{

var tidsstämpel = e.values [0];

var location = e.values [1];

var message = location + 'location is DOWN / n' + tidsstämpel;

MailApp.sendEmail ("DIN E -POSTADRESS", "Uppmärksamhet, plats NED!", Meddelande);

}

fångst (e)

{

MailApp.sendEmail ("DIN E -POSTADRESS", "Fel - uppmärksamhet, plats DOWN!", E.message);

}

}

Ersätt texten "DIN E -POSTADRESS" med den e -postadress som meddelandet ska skickas till och det faktiska meddelandet om du så önskar.

Steg 12:

Bild
Bild

Detta skript måste aktiveras när en ny post har lagts till i kalkylarket. I samma fönster (med skriptkoden ovan), klicka på ikonen "stoppur" i verktygsfältet - "Aktuella projektets triggers". Du kommer att bli ombedd att namnge ditt projekt (jag heter mitt "locationDown") och en annan webbläsarflik öppnas och rapporterar att inga resultat (inga utlösare) hittades. Klicka på "skapa en ny trigger".

Steg 13:

Bild
Bild

I det nya fönstret väljer du "Från kalkylblad" för "Välj händelsekälla"; "På formuläret skicka" för "Välj händelsetyp"; "Meddela mig omedelbart" för "Inställningar för felmeddelanden". Klicka på "Spara". Du kommer att bli ombedd att logga in på ditt Google -konto och "Tillåt" den här utlösaren för att komma åt ditt konto när det behövs.

Steg 14:

Bild
Bild

Du bör nu ha en utlösare i utlösarlistan, som kommer att länkas till skriptet som vi skapade tidigare. Därför, vid införande av ny data i kalkylarket (med hjälp av den automatiska formulärlänken och den tysta metoden som beskrivs ovan), kommer utlösaren omedelbart att ringa till skriptet, vilket skickar ett meddelande till den angivna e -postadressen som innehåller ditt valda meddelande.

Vi är klara på Google Drive -sidan, och vi går nu till ThingSpeak.

Steg 15:

Bild
Bild

I ThingSpeak Logga in på ditt konto (https://thingspeak.com/login), gå till "Apps - ThingHTTP" och klicka sedan på "New ThingHTTP". Ge det ett namn (jag har valt det faktiska namnet på varje plats; "MyLocationName" i syfte med den här självstudien) och i fältet "URL" klistrar du in länken från din textfil, den som ser ut

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

Lämna alla andra fält som de är och klicka på "Save ThingHTTP".

Steg 16:

Bild
Bild

Gå sedan till "Apps - React" och klicka på "New React". Ge det ett namn (igen, jag har valt platsnamnet följt av ordet "reagera", men du kan välja vilket namn du vill); "Ingen datakontroll" för "Villkorstyp"; "Var tionde minut" för "Testfrekvens"; kanalnamnet som du vill övervaka för uppdateringar, för "If Channel"; tiden som kanalen inte har uppdaterats (jag har valt 15 minuter), för "har inte uppdaterats för"; "ThingHTTP" för "Action"; "MyLocationName" för "utför sedan ThingHTTP"; "Kör åtgärd bara första gången villkoret uppfylls", eftersom jag bara vill få ett meddelande en gång. Detta återställer sig själv när kanalen uppdateras igen med nya inkommande data. Klicka på "Save React" och du är klar.

Från och med nu när din kanal inte har uppdaterats på 15 minuter (eller annan gång, beroende på vad du har valt), kommer React att fånga det undantaget som kommer att utlösa ThingHTTP, vilket i sin tur tyst skapar en ny post i din kalkylblad. Utlösaren och skriptet på Googles kalkylblad tar det därifrån, som redan förklarats ovan.

Rekommenderad: