สารบัญ:

รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตชั่วขณะ: 16 ขั้นตอน
รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตชั่วขณะ: 16 ขั้นตอน

วีดีโอ: รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตชั่วขณะ: 16 ขั้นตอน

วีดีโอ: รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตชั่วขณะ: 16 ขั้นตอน
วีดีโอ: Blynk2.0 แสดงค่าอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT11 | JAKK DIY 2024, พฤศจิกายน
Anonim
รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตมาระยะหนึ่ง
รับอีเมลแจ้งเตือนเมื่อช่องของ ThingSpeak ไม่ได้รับการอัพเดตมาระยะหนึ่ง

เรื่องราวเบื้องหลัง

ฉันมีโรงเรือนอัตโนมัติหกแห่งที่กระจายอยู่ทั่วเมืองดับลิน ประเทศไอร์แลนด์ เมื่อใช้แอปโทรศัพท์มือถือแบบกำหนดเอง ฉันสามารถตรวจสอบและโต้ตอบกับคุณลักษณะอัตโนมัติในเรือนกระจกแต่ละแห่งได้จากระยะไกล ฉันสามารถเปิด/ปิดหน้าต่างด้วยตนเองเมื่ออุณหภูมิสูง/ต่ำเกินไป ฉันสามารถเริ่ม/หยุดการให้น้ำได้เมื่อความชื้นในดินต่ำ/สูงเกินไป และฉันสามารถเริ่ม/หยุดพัดลมระบายอากาศได้เมื่อมีความชื้นในอากาศสูง/ต่ำเกินไป หรือฉันเพียงแค่เปลี่ยนระบบเป็นโหมดอัตโนมัติ แล้วสมอง Arduino จะดูแลผัก รายละเอียดเพิ่มเติมเกี่ยวกับโครงการนี้สามารถพบได้ที่นี่ -

การเชื่อมต่อระยะไกลกับบอร์ด Arduino ที่เรือนกระจกทั้งหกนั้นทำได้โดยใช้ดองเกิล USB GPRS หนึ่งอันในแต่ละตำแหน่ง (ฉันซื้อของฉันจากที่นี่https://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) เนื่องจากเป็นกรณีของการเชื่อมต่อข้อมูลมือถือ (อย่างน้อยในดับลิน) จะลดลงแบบสุ่ม บางครั้งเป็นเวลาสองสามนาที บางครั้งอาจใช้เวลาสองสามชั่วโมง หากการเชื่อมต่อหลุด Arduino จะถูกตั้งโปรแกรมให้รีเซ็ตดองเกิล USB ทุก 10 นาที เพื่อลองเริ่มต้นการเชื่อมต่อใหม่ อย่างไรก็ตาม บางครั้งเนื่องจาก (ยัง) ไม่ทราบสาเหตุที่แม้ว่าการเชื่อมต่อข้อมูล GPRS จะเปิดขึ้น แต่ Arduino (และแผงป้องกันอีเทอร์เน็ตที่ต่ออยู่) ก็ไม่สามารถสังเกตเหตุการณ์ได้ นี่คือช่วงเวลาที่ฉันต้องไปที่ตำแหน่งนั้นและรีเซ็ตทั้งระบบด้วยตนเอง

เมื่อการเชื่อมต่อข้อมูลลดลงในบางตำแหน่ง ฉันต้องการรับการแจ้งเตือนทางอีเมลโดยเร็วที่สุด เพื่อที่ฉันจะได้คอยจับตาดูสถานที่นั้นโดยเฉพาะ เนื่องจากการสื่อสารระหว่างแอพโทรศัพท์และ Arduino เกิดขึ้นผ่านบริการออนไลน์ที่ให้บริการโดย https://thingspeak.com จนกระทั่งเมื่อเร็วๆ นี้ (และจนถึงวันที่ 31 มีนาคม 2019) จึงเป็นไปได้โดยการใช้บริการอื่นของ https:// ifttt.com/discover และการตั้งค่า ThingHTTP และ React ในแต่ละช่องสัญญาณ การตรวจสอบข้อเท็จจริงว่าช่องนั้น ๆ นั้นไม่ได้รับการอัปเดตมาสักระยะหนึ่งหรือไม่ อย่างไรก็ตาม ตามอีเมลที่ฉันได้รับจาก Google ตั้งแต่วันที่ 31 มีนาคม 2019 เนื่องจากการไม่ปฏิบัติตามข้อกำหนดความเป็นส่วนตัวของข้อมูลที่อัปเดต (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api-ecosystems) การเข้าถึงข้อมูลบางอย่างในบัญชี Google ของฉันจะไม่สามารถใช้ได้อีกต่อไปสำหรับ IFTTT และในกรณีของฉันอีเมลเป็นทรัพยากรเดียวที่ IFTTT เข้าถึงได้ ความเข้าใจของฉันก็คือการแจ้งเตือน บริการที่อธิบายไว้ข้างต้นจะหยุดทำงาน

ดังนั้น เราจึงกำลังใช้โซลูชันทางเลือกเพื่อให้การแจ้งเตือนทางอีเมลมาถึงต่อไปเมื่อการเชื่อมต่อข้อมูลในสถานที่ของฉันลดลง สิ่งนี้ยังคงใช้ฟีเจอร์ ThingHTTP และ React ในช่องของฉัน เฉพาะลิงก์ไปยัง IFTTT เท่านั้นที่ชี้ไปที่ Google Drive อีกครั้ง นอกเหนือจากฮาร์ดแวร์ (ในกรณีของฉัน Arduino) คุณอาจมีการสื่อสารกับบัญชี ThingSpeak ของคุณ คุณจะต้องสร้างบัญชี Google ก่อน ในกรณีที่คุณยังไม่มี… และเริ่มกันเลย!

ขั้นตอนที่ 1:

ภาพ
ภาพ

ใน Google ไดรฟ์

อันดับแรก ใน Google ไดรฟ์ (https://drive.google.com) เราจำเป็นต้องสร้างสเปรดชีตและแบบฟอร์มง่ายๆ เปิด Google ไดรฟ์ของคุณแล้วคลิกใหม่ – Google ชีต – สเปรดชีตเปล่า

ขั้นตอนที่ 2:

ภาพ
ภาพ

ฉันเปลี่ยนชื่อของฉันเป็น "Location down spreadsheet" จากนั้นไปที่เครื่องมือ – สร้างแบบฟอร์ม

ขั้นตอนที่ 3:

ภาพ
ภาพ

ฉันเปลี่ยนชื่อแบบฟอร์มเป็น "Location down form " และเปลี่ยน "Untitled question" เป็น "Status" และเปลี่ยนประเภทจาก "Multiple choice" เป็น "Short answer"

ขั้นตอนที่ 4:

ภาพ
ภาพ

จากนั้นฉันก็ลบตัวเลือกสำหรับรวบรวมที่อยู่อีเมล – คลิกที่ "เปลี่ยนการตั้งค่า" และยกเลิกการเลือกตัวเลือกทั้งหมดในหน้าต่างที่ปรากฏขึ้น คลิกที่ "บันทึก"

ขั้นตอนที่ 5:

ภาพ
ภาพ

ปิดแท็บเบราว์เซอร์ปัจจุบันที่มีแบบฟอร์มของคุณ และคุณควรกลับไปที่แท็บหลักของ Google ไดรฟ์ ซึ่งคุณควรมีทั้งแบบฟอร์มและสเปรดชีตที่คุณเพิ่งสร้างขึ้น เปิดสเปรดชีตและไปที่ "ไฟล์ – แชร์…" ในหน้าต่างใหม่คลิกที่ "ขั้นสูง"

ขั้นตอนที่ 6:

ภาพ
ภาพ

จากนั้นคลิกที่ "เปลี่ยน…" ข้างป้ายกำกับ "ส่วนตัว – คุณเท่านั้นที่เข้าถึงได้"

ขั้นตอนที่ 7:

ภาพ
ภาพ

และเปลี่ยนเป็น "เปิด – ทุกคนที่มีลิงก์" และเปลี่ยนเป็น "แก้ไขได้"

ขั้นตอนที่ 8:

ภาพ
ภาพ

คลิก "บันทึก" และ "เสร็จสิ้น" เพื่อกลับไปที่สเปรดชีตของคุณ ขณะอยู่ที่นั่น ให้คลิกที่ "ไฟล์ – เผยแพร่ไปยังเว็บ…" จากนั้นคลิก "เผยแพร่" และ "ตกลง" สำหรับหน้าต่างโต้ตอบ ปิดหน้าต่าง "เผยแพร่ไปยังเว็บ"

ขณะที่ยังอยู่ในสเปรดชีต ให้คลิกที่ "แบบฟอร์ม – ไปที่แบบฟอร์มที่ใช้งานจริง" คลิกขวาด้วยเมาส์ของคุณ (ฉันกำลังใช้เบราว์เซอร์ Google Chrome) และเลือก "ดูแหล่งที่มาของหน้า"

ขั้นตอนที่ 9:

ภาพ
ภาพ

ในหน้าใหม่ที่เปิดขึ้นให้ค้นหา "form action" จากนั้นค้นหาลิงก์ที่คล้ายกับ https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse เลือกลิงก์นั้นแล้วคัดลอกและวางลงในเอกสารข้อความ คุณจะใช้มันเพื่อสร้างลิงก์สุดท้ายที่ต้องป้อนใน ThingHTTP สำหรับ ThingSpeak

ขั้นตอนที่ 10:

ภาพ
ภาพ

กลับไปที่มุมมองต้นทางของแบบฟอร์ม แล้วค้นหา "รายการ" ค้นหาและเลือกข้อความทั้งหมด เช่น "entry. XXXXX" คัดลอกและวางในเอกสารข้อความเดียวกันกับด้านบน ขณะนี้คุณสามารถปิดมุมมองแหล่งที่มาของแบบฟอร์ม Google ของคุณได้

ขั้นตอนที่ 11:

ภาพ
ภาพ

ในเอกสารข้อความใหม่ (ซึ่งขณะนี้คุณมีลิงก์และรายการที่เราวางก่อนหน้านี้) ให้สร้างลิงก์สุดท้ายที่ควรมีลักษณะดังนี้

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

ในกรณีของฉัน "LOCATION+NAME" จะถูกแทนที่ด้วยชื่อจริงของแต่ละตำแหน่งที่ฉันต้องการตรวจสอบ อีเมลแจ้งเตือนทางอีเมลที่ฉันจะได้รับเมื่อการเชื่อมต่อขาดหายจะมีข้อความนี้อยู่ด้วย เพื่อที่ฉันจะได้ทราบว่าตำแหน่งใดมีปัญหา อันที่จริงแล้ว ข้อความนี้จะถูกส่งเป็นเนื้อหาข้อความสั้นสำหรับฟิลด์ "สถานะ" ในแบบฟอร์มของ Google "&submit=Submit " จะส่งแบบฟอร์มโดยไม่จำเป็นต้องมีการดำเนินการใดๆ เพิ่มเติม เมื่อเรียกใช้โดย ThingHTTP และ React

สุดท้าย เราต้องเพิ่มสคริปต์ที่จะส่งการแจ้งเตือนทางอีเมลโดยอัตโนมัติทุกครั้งที่มีการเพิ่มรายการใหม่ในสเปรดชีต เปิดสเปรดชีต แล้วคลิก "เครื่องมือ – ตัวแก้ไขสคริปต์" ในหน้าต่างใหม่ที่เปิดขึ้น ให้เพิ่มรหัสต่อไปนี้ (พร้อมการเปลี่ยนแปลงที่จำเป็นเพื่อสะท้อนความต้องการของคุณ):

ฟังก์ชัน newEntryNotification (e)

{

ลอง

{

var timestamp = e.values[0];

ตำแหน่ง var = e.values[1];

var message = ตำแหน่ง + ' ตำแหน่งลง\n' + เวลาประทับ;

MailApp.sendEmail("ที่อยู่อีเมลของคุณ", "โปรดทราบ, ตำแหน่งลง!", ข้อความ);

}

จับ (จ)

{

MailApp.sendEmail("ที่อยู่อีเมลของคุณ", "ข้อผิดพลาด - คำเตือน, ตำแหน่งลง!", e.message);

}

}

แทนที่ข้อความ "YOUR EMAIL ADDRESS" ด้วยที่อยู่อีเมลที่ควรส่งการแจ้งเตือนและข้อความแจ้งเตือนจริง หากคุณต้องการ

ขั้นตอนที่ 12:

ภาพ
ภาพ

ต้องเรียกใช้สคริปต์นี้เมื่อมีการเพิ่มรายการใหม่ในสเปรดชีต ขณะที่อยู่ในหน้าต่างเดียวกัน (ด้วยรหัสสคริปต์ด้านบน) ให้คลิกที่ไอคอน "นาฬิกาจับเวลา" ในแถบเครื่องมือ – "ทริกเกอร์ของโครงการปัจจุบัน" คุณจะถูกขอให้ตั้งชื่อโครงการของคุณ (ฉันตั้งชื่อของฉันว่า "locationDown") และแท็บเบราว์เซอร์อื่นจะเปิดขึ้นเพื่อรายงานว่าไม่พบผลลัพธ์ (ไม่พบทริกเกอร์) คลิกที่ "สร้างทริกเกอร์ใหม่"

ขั้นตอนที่ 13:

ภาพ
ภาพ

ในหน้าต่างใหม่ เลือก "จากสเปรดชีต" สำหรับ "เลือกแหล่งที่มาของเหตุการณ์" "ส่งแบบฟอร์ม" สำหรับ "เลือกประเภทเหตุการณ์"; "แจ้งให้ฉันทราบทันที" สำหรับ "การตั้งค่าการแจ้งเตือนความล้มเหลว" คลิกที่ "บันทึก" คุณจะถูกขอให้ลงชื่อเข้าใช้บัญชี Google ของคุณและ "อนุญาต" เพื่อให้ทริกเกอร์นี้เข้าถึงบัญชีของคุณเมื่อจำเป็น

ขั้นตอนที่ 14:

ภาพ
ภาพ

ตอนนี้คุณควรมีทริกเกอร์ในรายการทริกเกอร์ ซึ่งจะเชื่อมโยงกับสคริปต์ที่เราสร้างไว้ก่อนหน้านี้ ดังนั้น เมื่อใส่ข้อมูลใหม่ลงในสเปรดชีต (โดยใช้ลิงก์แบบฟอร์มอัตโนมัติและวิธีการปิดเสียงที่อธิบายข้างต้น) ทริกเกอร์จะเรียกสคริปต์ทันที ซึ่งจะส่งการแจ้งเตือนไปยังที่อยู่อีเมลที่ให้ไว้ ซึ่งมีข้อความที่คุณเลือก

เราเสร็จสิ้นในด้าน Google Drive และตอนนี้เรากำลังย้ายไปที่ ThingSpeak

ขั้นตอนที่ 15:

ภาพ
ภาพ

ใน ThingSpeak ลงชื่อเข้าใช้บัญชีของคุณ (https://thingspeak.com/login) ไปที่ "Apps - ThingHTTP" จากนั้นคลิกที่ "New ThingHTTP" ตั้งชื่อ (ฉันได้เลือกชื่อจริงของแต่ละตำแหน่งแล้ว "MyLocationName" สำหรับจุดประสงค์ของบทช่วยสอนนี้) และในฟิลด์ "URL" ให้วางลิงก์จากไฟล์ข้อความของคุณ ลิงก์ที่ดูเหมือน

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

ปล่อยให้ฟิลด์อื่นๆ ทั้งหมดเป็นเหมือนเดิม และคลิกที่ "บันทึก ThingHTTP"

ขั้นตอนที่ 16:

ภาพ
ภาพ

จากนั้นไปที่ "Apps - React" และคลิกที่ "New React" ตั้งชื่อ (อีกครั้ง ฉันเลือกชื่อสถานที่แล้วตามด้วยคำว่า "ตอบสนอง" แต่คุณสามารถเลือกชื่อใดก็ได้ที่ต้องการ) "ไม่มีการตรวจสอบข้อมูล" สำหรับ "ประเภทเงื่อนไข"; "ทุก 10 นาที" สำหรับ "ความถี่ในการทดสอบ"; ชื่อช่องที่คุณต้องการตรวจสอบการอัปเดตสำหรับ "ถ้าช่อง"; เวลาที่ช่องไม่ได้รับการอัปเดต (ฉันเลือกไว้ 15 นาที) สำหรับ "ยังไม่ได้รับการอัปเดตสำหรับ"; "ThingHTTP" สำหรับ "การกระทำ"; " MyLocationName " สำหรับ "จากนั้นดำเนินการ ThingHTTP"; "เรียกใช้การดำเนินการในครั้งแรกที่ตรงตามเงื่อนไขเท่านั้น" เนื่องจากฉันต้องการรับการแจ้งเตือนเพียงครั้งเดียว การดำเนินการนี้จะรีเซ็ตตัวเองเมื่อช่องได้รับการอัปเดตอีกครั้งด้วยข้อมูลที่เข้ามาใหม่ คลิกที่ "บันทึกปฏิกิริยา" และคุณทำเสร็จแล้ว

จากนี้ไปเมื่อช่องของคุณไม่ได้รับการอัปเดตเป็นเวลา 15 นาที (หรือเวลาอื่นขึ้นอยู่กับสิ่งที่คุณได้เลือกไว้) React จะตรวจจับข้อยกเว้นนั้นซึ่งจะเรียกใช้ ThingHTTP ซึ่งจะสร้างรายการใหม่ใน สเปรดชีต ทริกเกอร์และสคริปต์บน Google สเปรดชีตจะนำไปใช้ตามที่อธิบายไว้ข้างต้น

แนะนำ: