İçindekiler:

ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın: 16 Adım
ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın: 16 Adım

Video: ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın: 16 Adım

Video: ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın: 16 Adım
Video: ThingSpeak nedir, arayüzünde bizi neler bekliyor? 2024, Kasım
Anonim
ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın
ThingSpeak'teki Bir Kanal Bir Süre Güncellenmediğinde Bildirim E-postası Alın

Arka plan hikayesi

Dublin, İrlanda'ya yayılmış altı otomatik seram var. Özel yapım bir cep telefonu uygulaması kullanarak, her bir seradaki otomatikleştirilmiş özellikleri uzaktan izleyebiliyor ve etkileşim kurabiliyorum. Sıcaklık çok yüksek/düşük olduğunda pencereleri manuel olarak açabilir/kapatabilirim; Toprak nemi çok düşük/yüksek olduğunda sulamayı başlatabilir/durdurabilirim; ve hava nemi çok yüksek/düşük olduğunda havalandırma fanını çalıştırabilir/durdurabilirim. Veya sistemi basitçe Otomatik moda geçirebilirim ve sebzelere Arduino beyni tarafından bakılacaktır. Bu proje hakkında daha fazla ayrıntı burada bulunabilir -

Altı seradaki Arduino kartlarına uzaktan bağlantı, her yerde bir tane olmak üzere USB GPRS dongle'larının yardımıyla mümkün hale getirildi (benimkini buradan satın aldımhttps://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-Antenli-3G-USB-Modem-21-6-Mbps-HSPA-Mobile/32979630201.html?spm=a2g0s.9042311.0.44cb4c4dzVUThU). Mobil veri bağlantısında olduğu gibi (en azından Dublin'de) rastgele düşüyor, bazen birkaç dakika, bazen birkaç saat. Bağlantı kesilirse, Arduino, yeni bir bağlantı başlatmayı denemek için USB dongle'ı her 10 dakikada bir sıfırlamaya programlanmıştır. Ancak bazen (henüz) bilinmeyen nedenlerden dolayı, GPRS veri bağlantısı tekrar açılmış olsa bile, Arduino (ve ekli Ethernet kalkanı) olayı fark edemez. Bu, belirli bir yere gitmem ve tüm sistemi manuel olarak sıfırlamam gereken an.

Herhangi bir yerde veri bağlantısı düştüğünde, o yeri kontrol edebilmek için mümkün olan en kısa sürede e-posta ile bilgilendirilmek istedim. Telefon uygulaması ve Arduino arasındaki iletişim, yakın zamana kadar (ve 31 Mart 2019'a kadar) https://thingspeak.com tarafından sağlanan çevrimiçi bir hizmet aracılığıyla gerçekleştiğinden, bu, https:// tarafından sağlanan başka bir hizmet kullanılarak mümkündü. ifttt.com/discover ve her kanalda bir ThingHTTP ve bir React ayarlayarak o kanalın bir süredir güncellenip güncellenmediğinin izlenmesi. Ancak, güncellenmiş veri gizliliği gereksinimlerine (https://cloud.google.com/blog/products/g-suite/elevating-user) uymadıkları için 31 Mart 2019'dan başlayarak Google'dan aldığım bir e-postaya göre api-ekosistemlerimize güvenin), Google hesabımdaki bazı verilere erişim artık IFTTT tarafından sağlanamayacak ve benim durumumda olduğu gibi, IFTTT'nin erişebildiği tek kaynak e-postaydı, anladığım kadarıyla bildirim yukarıda açıklanan hizmet çalışmayı durdurur.

Bu nedenle, konumumdaki veri bağlantısı kesildiğinde e-posta bildirimlerinin gelmeye devam etmesi için alternatif bir çözüm uyguluyoruz. Bu hala kanallarımda ThingHTTP ve React özelliklerini kullanıyor, yalnızca IFTTT bağlantısı Google Drive'a yeniden yönlendirildi. Donanım dışında (benim durumumda Arduino) ThingSpeak hesabınızla iletişim kurmuş olabilirsiniz, zaten bir hesabınız yoksa bir Google hesabı oluşturmanız gerekecek… ve başlayalım!

Aşama 1:

resim
resim

Google Drive'da

Öncelikle Google Drive'da (https://drive.google.com) bir elektronik tablo ve basit bir form oluşturmamız gerekiyor. Google Drive'ınızı açın ve Yeni – Google E-Tablolar – Boş e-tablo'ya tıklayın.

Adım 2:

resim
resim

Benimkini "E-tablodaki konum aşağı" olarak değiştirdim. Ardından Araçlar - Bir form oluşturun'a gidin.

Aşama 3:

resim
resim

Formu "Konum aşağı formu" olarak yeniden adlandırdım ve "Adsız soru"yu "Durum" olarak değiştirdim ve türü "Çoktan seçmeli"den "Kısa yanıt"a değiştirdim.

4. Adım:

resim
resim

Daha sonra e-posta adreslerini toplama seçeneğini kaldırdım - "Ayarları değiştir"e tıklayın ve açılan penceredeki tüm seçeneklerin işaretini kaldırın. "Kaydet"e tıklayın.

Adım 5:

resim
resim

Formunuzu tutan mevcut tarayıcı sekmesini kapatın ve hem formun hem de yeni oluşturduğunuz e-tablonun olması gereken ana Google Drive sekmenize dönmelisiniz. E-tabloyu açın ve "Dosya – Paylaş…" seçeneğine gidin. Yeni pencerede "Gelişmiş" e tıklayın

6. Adım:

resim
resim

Ardından, "Özel – Yalnızca siz erişebilirsiniz" etiketinin yanındaki "Değiştir…" seçeneğine tıklayın.

7. Adım:

resim
resim

ve "Açık - Bağlantıya sahip olan herkes" ve ayrıca "Düzenleyebilir" olarak değiştirin

Adım 8:

resim
resim

E-tablonuza geri dönmek için "Kaydet" ve "Bitti"yi tıklayın. Oradayken, "Dosya - Web'de yayınla…" üzerine tıklayın ve ardından iletişim penceresi için "Yayınla" ve "Tamam" üzerine tıklayın. "Web'de yayınla" penceresini kapatın.

Hâlâ e-tablodayken "Form - Canlı forma git" seçeneğine tıklayın. Farenizle sağ tıklayın (Google Chrome tarayıcı kullanıyorum) ve "Sayfa kaynağını görüntüle"yi seçin.

9. Adım:

resim
resim

Açılan yeni sayfada "form eylemi" için arama yapın ve ardından https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXX/formResponse'a benzeyen bağlantıyı bulun. Bu bağlantıyı seçin ve kopyalayıp bir metin belgesine yapıştırın. Bunu, ThingSpeak için ThingHTTP'ye girilmesi gereken son bağlantıyı oluşturmak için kullanacaksınız.

Adım 10:

resim
resim

Formunuzun kaynak görünümüne geri dönün ve şimdi "giriş"i arayın. "entry. XXXXX" gibi bir metnin tamamını bulun ve seçin. Kopyalayıp yukarıdakiyle aynı metin belgesine yapıştırın. Artık Google formunuzun kaynak görünümünü kapatabilirsiniz.

Adım 11:

resim
resim

Yeni metin belgesinde (şimdi bağlantıya ve daha önce yapıştırdığımız girişe sahip olduğunuz yerde), şuna benzer görünmesi gereken son bağlantıyı oluşturun.

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

Benim durumumda, "LOCATION+NAME", izlemem gereken her bir konumun gerçek adıyla değiştirilecektir. Bağlantı kesildiğinde alacağım e-posta bildirim e-postası bu metni içerecek, böylece tam olarak hangi konumda sorun olduğunu bileceğim. Bu metin aslında Google formundaki "durum" alanı için kısa metin içeriği olarak sunulacaktır. "&submit=Submit ", ThingHTTP ve React tarafından çağrıldığında, başka herhangi bir işleme gerek kalmadan formu sessizce gönderir.

Son olarak, elektronik tabloya her yeni giriş eklendiğinde otomatik olarak bir e-posta bildirimi gönderecek bir komut dosyası eklememiz gerekiyor. E-tabloyu açın ve ardından "Araçlar - Komut Dosyası düzenleyicisi"ne tıklayın. Açılan yeni pencerede aşağıdaki kodu ekleyin (ihtiyaçlarınızı yansıtacak gerekli değişikliklerle):

işlev yeniGiriş Bildirimi (e)

{

denemek

{

var zaman damgası = e.values[0];

var konum = e.values[1];

var mesaj = konum + ' konum AŞAĞI\n' + zaman damgası;

MailApp.sendEmail("E-POSTA ADRESİNİZ", "Dikkat, konum AŞAĞI!", mesaj);

}

yakalamak(e)

{

MailApp.sendEmail("E-POSTA ADRESİNİZ", "Hata - Dikkat, yer AŞAĞI!", e.message);

}

}

"E-POSTA ADRESİNİZ" metnini, bildirimin gönderileceği e-posta adresi ve dilerseniz asıl bildirim mesajı ile değiştirin.

Adım 1/2:

resim
resim

Elektronik tabloya yeni bir giriş eklendiğinde bu komut dosyasının tetiklenmesi gerekir. Aynı penceredeyken (yukarıdaki komut dosyası koduyla), araç çubuğundaki "kronometre" simgesine tıklayın - "Geçerli projenin tetikleyicileri". Projenizi adlandırmanız istenecek (benimkine "locationDown" adını verdim) ve başka bir tarayıcı sekmesi açılacak ve hiçbir sonuç (hiçbir tetikleyici) bulunamadığını bildirecek. "Yeni bir tetikleyici oluştur" üzerine tıklayın.

Adım 13:

resim
resim

Yeni pencerede, "Olay kaynağını seç" için "E-tablodan"ı seçin; "Olay türünü seçin" için "Form gönderiminde"; "Arıza bildirim ayarları" için "Beni hemen bilgilendir". "Kaydet"e tıklayın. Sizden Google hesabınızda oturum açmanız ve gerektiğinde bu tetikleyicinin hesabınıza erişmesine "İzin Ver" istenecektir.

Adım 14:

resim
resim

Şimdi, daha önce oluşturduğumuz komut dosyasına bağlanacak olan tetikleyiciler listesinde bir tetikleyiciniz olmalıdır. Bu nedenle, elektronik tabloya yeni veriler eklendiğinde (yukarıda açıklanan otomatik form bağlantısını ve sessiz yöntemi kullanarak), tetikleyici hemen komut dosyasını arayacak ve bu, sağlanan e-posta adresine seçtiğiniz mesajı içeren bir bildirim gönderecektir.

Google Drive tarafında işimiz bitti ve şimdi ThingSpeak'e geçiyoruz.

Adım 15:

resim
resim

ThingSpeak'te Hesabınızda oturum açın (https://thingspeak.com/login), "Uygulamalar - ThingHTTP"ye gidin ve ardından "New ThingHTTP"ye tıklayın. Bir ad verin (her konumun gerçek adını seçtim; bu eğitimin amacı için "KonumAdım") ve "URL" alanına, metin dosyanızdaki bağlantıyı yapıştırın.

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

Diğer tüm alanları olduğu gibi bırakın ve "ThingHTTP'yi Kaydet"e tıklayın.

16. Adım:

resim
resim

Ardından "Uygulamalar - React"e gidin ve "New React"e tıklayın. Bir isim verin (yine, konum adını ve ardından "tepki" kelimesini seçtim, ancak istediğiniz herhangi bir ismi seçebilirsiniz); "Koşul Türü" için "Veri Kontrolü Yok"; "Test Frekansı" için "Her 10 dakikada bir"; güncellemeler için izlemek istediğiniz kanal adı, "Eğer Kanal" için; kanalın güncellenmediği süre (15 dakika seçtim), "güncellenmemiş" için; "Eylem" için "ThingHTTP"; " MyLocationName " için "daha sonra ThingHTTP gerçekleştirin"; Yalnızca bir kez bildirim almak istediğim için "Yalnızca koşul karşılandığında eylemi çalıştır". Bu, kanal yeni gelen verilerle tekrar güncellendiğinde kendini sıfırlayacaktır. "React'i Kaydet" e tıklayın ve bitirdiniz.

Şu andan itibaren, kanalınız 15 dakika boyunca (veya seçtiğinize bağlı olarak başka bir süre) güncellenmediğinde, React ThingHTTP'yi tetikleyecek olan istisnayı yakalayacak ve bu da sessizce yeni bir giriş oluşturacaktır. elektronik tablo. Tetikleyici ve Google E-Tablodaki komut dosyası, yukarıda açıklandığı gibi oradan alacaktır.

Önerilen: