Spisu treści:

Odbieranie wiadomości e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany: 16 kroków
Odbieranie wiadomości e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany: 16 kroków

Wideo: Odbieranie wiadomości e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany: 16 kroków

Wideo: Odbieranie wiadomości e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany: 16 kroków
Wideo: Zablokowałem sobie konto email | Uważaj na dwuetapowe logowanie | Co robić? | Poczta WP 2024, Grudzień
Anonim
Otrzymuj e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany
Otrzymuj e-mail z powiadomieniem, gdy kanał w ThingSpeak nie był przez jakiś czas aktualizowany

Opowieść w tle

Mam sześć automatycznych szklarni, które są rozmieszczone w Dublinie w Irlandii. Korzystając z niestandardowej aplikacji na telefon komórkowy, mogę zdalnie monitorować i wchodzić w interakcje z automatycznymi funkcjami w każdej szklarni. Potrafię ręcznie otwierać/zamykać okna, gdy temperatura jest zbyt wysoka/niska; mogę rozpocząć/zatrzymać nawadnianie, gdy wilgotność gleby jest zbyt niska/wysoka; i mogę uruchomić/zatrzymać wentylator, gdy wilgotność powietrza jest zbyt wysoka/niska. Albo mogę po prostu przełączyć system w tryb Auto, a o warzywa zadba mózg Arduino. Więcej szczegółów na temat tego projektu można znaleźć tutaj -

Zdalne połączenie z płytami Arduino w sześciu szklarniach jest możliwe dzięki kluczom USB GPRS, po jednym w każdej lokalizacji (kupiłem swoją tutaj https://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-z-anteną-3G-USB-Modem-21-6-Mbps-HSPA-Mobile/32979630201.html?spm=a2g0s.9042311.0.44cb4c4dzVUThU). Podobnie jak w przypadku mobilnego połączenia danych (przynajmniej w Dublinie), spada ono losowo, czasem na kilka minut, czasem na kilka godzin. W przypadku zerwania połączenia Arduino jest zaprogramowane do resetowania klucza USB co 10 minut, aby spróbować zainicjować nowe połączenie. Czasami jednak z (jeszcze) nieznanych przyczyn, nawet jeśli połączenie danych GPRS jest ponownie włączone, Arduino (i dołączona osłona Ethernet) nie zauważa zdarzenia. To jest moment, w którym muszę udać się do tej konkretnej lokalizacji i ręcznie zresetować cały system.

Gdy połączenie danych zostanie przerwane w jakiejś lokalizacji, chciałem jak najszybciej otrzymać powiadomienie e-mailem, aby mieć oko na tę konkretną lokalizację. Ponieważ komunikacja między aplikacją na telefon a Arduino odbywa się za pośrednictwem usługi online udostępnianej przez https://thingspeak.com, do niedawna (i do 31 marca 2019 r.) było to możliwe przy użyciu innej usługi udostępnianej przez https:// ifttt.com/discover i ustawienie ThingHTTP i React na każdym kanale, monitorując, czy dany kanał nie był aktualizowany od jakiegoś czasu. Jednak zgodnie z e-mailem, który otrzymałem od Google, począwszy od 31 marca 2019 r., z powodu nieprzestrzegania ich zaktualizowanych wymagań dotyczących prywatności danych (https://cloud.google.com/blog/products/g-suite/elevating-user -zaufaj-naszym-api-ekosystemom), dostęp do niektórych danych na moim koncie Google nie będzie już dostępny dla IFTTT, a ponieważ w moim przypadku e-mail był jedynym zasobem, do którego IFTTT miał dostęp, rozumiem, że powiadomienie usługa opisana powyżej przestanie działać.

W związku z tym wdrażamy alternatywne rozwiązanie, aby powiadomienia e-mail wciąż docierały, gdy połączenie danych w moich lokalizacjach zostanie przerwane. To nadal używa funkcji ThingHTTP i React na moich kanałach, tylko link do IFTTT został ponownie skierowany na Dysk Google. Więc oprócz sprzętu (Arduino w moim przypadku) możesz komunikować się ze swoim kontem ThingSpeak, będziesz musiał utworzyć konto Google, jeśli jeszcze go nie masz… i zacznijmy!

Krok 1:

Obraz
Obraz

Na Dysku Google

Najpierw na Dysku Google (https://drive.google.com) musimy stworzyć arkusz kalkulacyjny i prosty formularz. Otwórz Dysk Google i kliknij Nowy – Arkusze Google – Pusty arkusz kalkulacyjny.

Krok 2:

Obraz
Obraz

Zmieniłem nazwę mojej „Lokalizacja w arkuszu kalkulacyjnym”. Następnie przejdź do Narzędzia – Utwórz formularz.

Krok 3:

Obraz
Obraz

Zmieniłem nazwę formularza na „Formularz lokalizacji w dół” i zmieniłem „Pytanie bez tytułu” na „Stan”, a typ z „Wielokrotny wybór” na „Krótka odpowiedź”.

Krok 4:

Obraz
Obraz

Następnie usunąłem opcję zbierania adresów e-mail – kliknij „Zmień ustawienia” i odznaczyłem wszystkie opcje w wyświetlonym oknie. Kliknij „Zapisz”.

Krok 5:

Obraz
Obraz

Zamknij bieżącą kartę przeglądarki, w której znajduje się formularz, i powinieneś wrócić do głównej karty Dysku Google, gdzie powinien znajdować się zarówno formularz, jak i właśnie utworzony arkusz kalkulacyjny. Otwórz arkusz kalkulacyjny i przejdź do „Plik – Udostępnij…”. W nowym oknie kliknij „Zaawansowane”

Krok 6:

Obraz
Obraz

Następnie kliknij „Zmień…” obok etykiety „Prywatny – tylko Ty masz dostęp”

Krok 7:

Obraz
Obraz

i zmień na „Włączone – Każda osoba mająca link”, a także na „Może edytować”

Krok 8:

Obraz
Obraz

Kliknij „Zapisz” i „Gotowe”, aby wrócić do arkusza kalkulacyjnego. Tam kliknij „Plik – Opublikuj w sieci…”, a następnie kliknij „Opublikuj” i „OK” w oknie dialogowym. Zamknij okno „Opublikuj w sieci”.

Pozostając w arkuszu kalkulacyjnym, kliknij „Formularz – Przejdź do aktywnego formularza”. Kliknij prawym przyciskiem myszy (używam przeglądarki Google Chrome) i wybierz „Wyświetl źródło strony”.

Krok 9:

Obraz
Obraz

Na nowej stronie, która się otworzy, wyszukaj „działanie formularza”, a następnie znajdź link podobny do https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Wybierz ten link i skopiuj go i wklej do jakiegoś dokumentu tekstowego. Użyjesz go do utworzenia końcowego linku, który należy wprowadzić w ThingHTTP dla ThingSpeak.

Krok 10:

Obraz
Obraz

Wróć do widoku źródłowego formularza, a teraz wyszukaj „wpis”. Znajdź i zaznacz cały tekst, na przykład „entry. XXXXX”. Skopiuj i wklej go w tym samym dokumencie tekstowym, co powyżej. Możesz teraz zamknąć widok źródłowy formularza Google.

Krok 11:

Obraz
Obraz

W nowym dokumencie tekstowym (gdzie masz teraz link i wpis, który wkleiliśmy wcześniej), utwórz końcowy link, który powinien wyglądać tak

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

W moim przypadku „LOKALIZACJA+NAZWA” zostałaby zastąpiona rzeczywistą nazwą każdej konkretnej lokalizacji, którą muszę monitorować. E-mail z powiadomieniem e-mail, który otrzymam po zerwaniu połączenia, będzie zawierał ten tekst, dzięki czemu dokładnie wiem, z jaką lokalizacją występują problemy. Ten tekst zostanie w rzeczywistości przesłany jako treść krótkiego tekstu w polu „status” w formularzu Google. "&submit=Submit " po cichu prześle formularz, bez potrzeby dalszych działań, po wywołaniu przez ThingHTTP i React.

Na koniec musimy dodać skrypt, który będzie automatycznie wysyłał powiadomienie e-mail za każdym razem, gdy w arkuszu kalkulacyjnym zostanie dodany nowy wpis. Otwórz arkusz kalkulacyjny, a następnie kliknij „Narzędzia – Edytor skryptów”. W nowym oknie, które się otworzy, dodaj następujący kod (z wymaganymi zmianami, aby odzwierciedlić Twoje potrzeby):

funkcja newEntryNotification (e)

{

próbować

{

var znacznik czasu = e.values[0];

var lokalizacja = e.values[1];

var message = lokalizacja + ' lokalizacja nie działa\n' + znacznik czasu;

MailApp.sendEmail("TWÓJ ADRES E-MAIL", "Uwaga, lokalizacja NIEDOSTĘPNA!", wiadomość);

}

połów(e)

{

MailApp.sendEmail("TWÓJ ADRES E-MAIL", "Błąd - Uwaga, lokalizacja DOWN!", e.message);

}

}

Zastąp tekst „TWÓJ ADRES E-MAIL” adresem e-mail, na który powinno zostać wysłane powiadomienie, oraz faktyczną treścią powiadomienia, jeśli sobie tego życzysz.

Krok 12:

Obraz
Obraz

Ten skrypt musi zostać uruchomiony po dodaniu nowego wpisu do arkusza kalkulacyjnego. Będąc w tym samym oknie (z powyższym kodem skryptu), kliknij ikonę „stoper” na pasku narzędzi – „Wyzwalacze bieżącego projektu”. Zostaniesz poproszony o nazwanie swojego projektu (ja nazwałem swój „locationDown”) i otworzy się kolejna karta przeglądarki, informując, że nie znaleziono żadnych wyników (brak wyzwalaczy). Kliknij „utwórz nowy wyzwalacz”.

Krok 13:

Obraz
Obraz

W nowym oknie wybierz „Z arkusza kalkulacyjnego” dla „Wybierz źródło zdarzenia”; „Po przesłaniu formularza” dla „Wybierz typ zdarzenia”; „Powiadom mnie natychmiast” dla „Ustawienia powiadomień o awarii”. Kliknij „Zapisz”. Zostaniesz poproszony o zalogowanie się na swoje konto Google i "Zezwól" temu wyzwalaczowi na dostęp do konta, gdy będzie to wymagane.

Krok 14:

Obraz
Obraz

Powinieneś teraz mieć wyzwalacz na liście wyzwalaczy, który będzie połączony ze skryptem, który stworzyliśmy wcześniej. Dlatego po wstawieniu nowych danych do arkusza kalkulacyjnego (przy użyciu automatycznego linku do formularza i opisanej powyżej metody cichej) wyzwalacz natychmiast wywoła skrypt, który na podany adres e-mail wyśle powiadomienie zawierające wybraną przez Ciebie wiadomość.

Skończyliśmy po stronie Dysku Google i teraz przechodzimy do ThingSpeak.

Krok 15:

Obraz
Obraz

W ThingSpeak Zaloguj się na swoje konto (https://thingspeak.com/login), przejdź do „Aplikacje – ThingHTTP”, a następnie kliknij „Nowy ThingHTTP”. Nadaj mu nazwę (wybrałem rzeczywistą nazwę każdej lokalizacji; „Nazwa mojej lokalizacji” na potrzeby tego samouczka) i w polu „URL” wklej link z pliku tekstowego, który wygląda tak

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX =LOKALIZACJA+NAZWA&submit=Prześlij

Pozostaw wszystkie inne pola bez zmian i kliknij „Zapisz ThingHTTP”.

Krok 16:

Obraz
Obraz

Następnie przejdź do „Apps - React” i kliknij „New React”. Nadaj mu nazwę (ponownie wybrałem nazwę lokalizacji, po której następuje słowo „reaguj”, ale możesz wybrać dowolną nazwę); „Brak sprawdzania danych” dla „Typu warunku”; „Co 10 minut” dla „Częstotliwości testu”; nazwa kanału, który chcesz monitorować pod kątem aktualizacji, dla „Jeśli kanał”; czas, w którym kanał nie był aktualizowany (wybrałem 15 minut), dla "nie był aktualizowany przez"; „RzeczHTTP” dla „Akcja”; " MyLocationName " dla "a następnie wykonaj ThingHTTP"; „Uruchom akcję tylko przy pierwszym spełnieniu warunku”, ponieważ chcę otrzymać powiadomienie tylko raz. Zresetuje się to, gdy kanał zostanie ponownie zaktualizowany nowymi przychodzącymi danymi. Kliknij „Zapisz reakcję” i gotowe.

Od teraz, gdy Twój kanał nie zostanie zaktualizowany przez 15 minut (lub w innym czasie, w zależności od tego, co wybrałeś), React wyłapie ten wyjątek, który uruchomi ThingHTTP, który z kolei po cichu utworzy nowy wpis w twoim arkusz. Wyzwalacz i skrypt w Arkuszu kalkulacyjnym Google przejmą go stamtąd, jak już wyjaśniono powyżej.

Zalecana: