جدول المحتويات:

تلقي إشعار بالبريد الإلكتروني عند عدم تحديث قناة على ThingSpeak لفترة: 16 خطوة
تلقي إشعار بالبريد الإلكتروني عند عدم تحديث قناة على ThingSpeak لفترة: 16 خطوة

فيديو: تلقي إشعار بالبريد الإلكتروني عند عدم تحديث قناة على ThingSpeak لفترة: 16 خطوة

فيديو: تلقي إشعار بالبريد الإلكتروني عند عدم تحديث قناة على ThingSpeak لفترة: 16 خطوة
فيديو: حل مشكلة عدم وصول الرسائل على البريد الوارد gmail | عدم وصول رسائل البريد الكتروني 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 dongle كل 10 دقائق ، لمحاولة بدء اتصال جديد. ومع ذلك ، في بعض الأحيان ، نظرًا لأسباب غير معروفة (حتى الآن) ، حتى إذا تم إعادة تشغيل اتصال بيانات GPRS ، يفشل Arduino (ودرع Ethernet المرفق) في ملاحظة الحدث. هذه هي اللحظة التي أحتاج فيها للذهاب إلى هذا الموقع المحدد وإعادة ضبط النظام بالكامل يدويًا.

عندما ينقطع اتصال البيانات في مكان ما ، أردت أن يتم إخطاري عبر البريد الإلكتروني في أقرب وقت ممكن ، حتى أراقب هذا الموقع المحدد. نظرًا لأن الاتصال بين تطبيق الهاتف و 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 -الثقة في الأنظمة البيئية الخاصة بنا) ، لن يكون الوصول إلى بعض البيانات في حسابي على Google متاحًا بعد الآن لـ IFTTT ، وكما في حالتي ، كان البريد الإلكتروني هو المورد الوحيد الذي يمكن لـ IFTTT الوصول إليه ، فهمت أن الإخطار الخدمة الموضحة أعلاه ستتوقف عن العمل.

لذلك ، نحن هنا ، ننفذ حلاً بديلاً من أجل استمرار وصول إشعارات البريد الإلكتروني عند انقطاع اتصال البيانات في مواقعي. لا يزال هذا يستخدم ThingHTTP وميزات React على قنواتي ، فقط رابط IFTTT تمت إعادة توجيهه إلى Google Drive. لذا بصرف النظر عن الأجهزة (Arduino في حالتي) ، فقد يكون لديك اتصال بحساب ThingSpeak الخاص بك ، وسوف تحتاج إلى إنشاء حساب Google ، وذلك في حال لم يكن لديك حساب بالفعل … ودعنا نبدأ!

الخطوة 1:

صورة
صورة

في Google Drive

أولاً ، في Google Drive (https://drive.google.com) نحتاج إلى إنشاء جدول بيانات ونموذج بسيط. افتح Google Drive الخاص بك ، وانقر فوق جديد - أوراق Google - جدول بيانات فارغ.

الخطوة 2:

صورة
صورة

أعدت تسمية موقعي "جدول بيانات الموقع". ثم اذهب إلى Tools - Create a form.

الخطوه 3:

صورة
صورة

أعدت تسمية النموذج إلى "نموذج الموقع" ، وغيرت "سؤال بدون عنوان" إلى "الحالة" ، والنوع من "الاختيار من متعدد" إلى "إجابة قصيرة".

الخطوة الرابعة:

صورة
صورة

بعد ذلك أزلت خيار جمع عناوين البريد الإلكتروني - انقر على "تغيير الإعدادات" ، وألغيت تحديد جميع الخيارات في النافذة التي ظهرت. انقر فوق "حفظ".

الخطوة الخامسة:

صورة
صورة

أغلق علامة تبويب المتصفح الحالية التي تحتوي على النموذج الخاص بك ، ويجب أن تعود إلى علامة تبويب Google Drive الرئيسية ، حيث يجب أن يكون لديك كل من النموذج وجدول البيانات الذي أنشأته للتو. افتح جدول البيانات ، وانتقل إلى "ملف - مشاركة …". في النافذة الجديدة انقر على "متقدم"

الخطوة السادسة:

صورة
صورة

ثم انقر فوق "تغيير …" بجوار التصنيف "خاص - أنت وحدك من يستطيع الوصول"

الخطوة السابعة:

صورة
صورة

والتغيير إلى "تشغيل - أي شخص لديه الرابط" ، وكذلك إلى "يمكنه التعديل"

الخطوة الثامنة:

صورة
صورة

انقر على "حفظ" و "تم" للرجوع إلى جدول البيانات. أثناء التواجد هناك ، انقر فوق "ملف - نشر على الويب …" ، ثم انقر فوق "نشر" ، و "موافق" في نافذة الحوار. أغلق نافذة "النشر على الويب".

أثناء وجودك في جدول البيانات ، انقر فوق "نموذج - الانتقال إلى النموذج المباشر". انقر بزر الماوس الأيمن (أنا أستخدم متصفح Google Chrome) واختر "عرض مصدر الصفحة".

الخطوة 9:

صورة
صورة

في الصفحة الجديدة التي تفتح البحث عن "نموذج إجراء" ثم حدد الرابط الذي يبدو مشابهًا لـ https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. حدد هذا الارتباط ، وانسخه والصقه في مستند نصي. ستستخدمه لتكوين الرابط النهائي الذي يجب إدخاله في ThingHTTP لـ ThingSpeak.

الخطوة 10:

صورة
صورة

ارجع إلى طريقة العرض المصدر للنموذج الخاص بك ، وابحث الآن عن "إدخال". حدد موقع النص بالكامل وحدده ، مثل "entry. XXXXX". انسخه والصقه في نفس المستند النصي كما هو مذكور أعلاه. يمكنك الآن إغلاق عرض المصدر لنموذج Google الخاص بك.

الخطوة 11:

صورة
صورة

في المستند النصي الجديد (حيث لديك الآن الرابط والإدخال الذي قمنا بلصقه من قبل) ، قم بإنشاء الرابط النهائي ، والذي يجب أن يبدو مثل

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse؟entry. XXXXX = LOCATION + NAME & submit = إرسال

في حالتي ، سيتم استبدال "الموقع + الاسم" بالاسم الفعلي لكل موقع معين أحتاج إلى مراقبته. سيحتوي البريد الإلكتروني لإشعار البريد الإلكتروني الذي سأتلقاه عند انقطاع الاتصال على هذا النص ، حتى أعلم بالضبط ما هو الموقع الذي به مشاكل. سيتم تقديم هذا النص في الواقع كمحتوى نص قصير لحقل "الحالة" في نموذج Google. سيقوم "& submit = Submit" بإرسال النموذج بصمت ، دون الحاجة إلى أي إجراءات أخرى ، عندما يتم استدعاؤه بواسطة ThingHTTP و React.

أخيرًا ، نحتاج إلى إضافة برنامج نصي سيرسل تلقائيًا إشعارًا بالبريد الإلكتروني في كل مرة يتم فيها إضافة إدخال جديد في جدول البيانات. افتح جدول البيانات ، ثم انقر فوق "أدوات - محرر النص". في النافذة الجديدة التي تفتح ، أضف الكود التالي (مع التغييرات المطلوبة لتعكس احتياجاتك):

الوظيفة newEntryNotification (e)

{

محاولة

{

var timestamp = e.values [0] ،

var location = e.values [1] ؛

var message = الموقع + 'الموقع DOWN / n' + timestamp ؛

MailApp.sendEmail ("عنوان بريدك الإلكتروني" ، "انتباه ، موقع أسفل!" ، رسالة) ؛

}

قبض (ه)

{

MailApp.sendEmail ("عنوان بريدك الإلكتروني" ، "خطأ - انتباه ، موقع أسفل!" ، رسالة إلكترونية) ؛

}

}

استبدل النص "عنوان بريدك الإلكتروني" بعنوان البريد الإلكتروني الذي يجب إرسال الإشعار إليه ، ورسالة الإشعار الفعلية ، إذا كنت ترغب في ذلك.

الخطوة 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/XXXXXXXXXXXXXXXXXXXXXXXXX/formResponse؟entry. XXXXX = LOCATION + NAME & submit = إرسال

اترك جميع الحقول الأخرى كما هي ، وانقر على "Save ThingHTTP".

الخطوة 16:

صورة
صورة

ثم انتقل إلى "Apps - React" ، وانقر على "New React". أعطه اسمًا (مرة أخرى ، اخترت اسم الموقع متبوعًا بكلمة "تفاعل" ، ولكن يمكنك اختيار أي اسم تريده) ؛ "لا يوجد فحص بيانات" لـ "نوع الشرط" ؛ "كل 10 دقائق" لـ "اختبار التردد" ؛ اسم القناة الذي تريد مراقبته للحصول على تحديثات ، لـ "If Channel" ؛ الوقت الذي لم يتم فيه تحديث القناة (لقد اخترت 15 دقيقة) ، لـ "لم يتم تحديثه لـ" ؛ "ThingHTTP" مقابل "الإجراء" ؛ "MyLocationName" لـ "ثم نفذ ThingHTTP" ؛ "شغّل الإجراء فقط في المرة الأولى التي يتم فيها استيفاء الشرط" ، لأنني أريد تلقي إشعار مرة واحدة فقط. سيؤدي هذا إلى إعادة تعيين نفسه عندما يتم تحديث القناة مرة أخرى ببيانات واردة جديدة. انقر فوق "حفظ رد الفعل" وتكون قد انتهيت.

من الآن فصاعدًا ، عندما لا يتم تحديث قناتك لمدة 15 دقيقة (أو في وقت آخر ، اعتمادًا على ما اخترته) ، ستلتقط React هذا الاستثناء الذي سيؤدي إلى تشغيل ThingHTTP ، والذي بدوره سينشئ بصمت إدخالاً جديدًا في حسابك جدول. سينتقل المشغل والبرنامج النصي في جدول بيانات Google من هناك ، كما هو موضح أعلاه.

موصى به: