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

مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني: 7 خطوات
مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني: 7 خطوات

فيديو: مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني: 7 خطوات

فيديو: مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني: 7 خطوات
فيديو: إنفجار سيارة أثناء تزويدها بالغاز الطبيعي المضغوط 2024, يونيو
Anonim
مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني
مراقبة درجة حرارة الغرفة التي يتم التحكم فيها بواسطة Raspberry Pi مع إخراج صورة Gnuplot وإمكانية تنبيه البريد الإلكتروني

حيث أعمل ، توجد غرفة مهمة للغاية تحتوي على الكثير من أجهزة الكمبيوتر. يجب أن تكون درجة الحرارة المحيطة بهذه الغرفة باردة جدًا لتحسين أداء هذه الأنظمة. لقد طُلب مني ابتكار نظام مراقبة لديه القدرة على إرسال شكل من أشكال التنبيه إلى عدد قليل من الأشخاص لإعلامهم بوجود خطأ ما في تكييف الهواء في تلك الغرفة. وجهاز استشعار درجة الحرارة والرطوبة USB. للمراقبة ، استخدمت Gnuplot لرسم ثلاثة رسوم بيانية لدرجة الحرارة وإنشاء صورة لتلك الرسوم البيانية. قمت بعد ذلك بإنشاء صفحة HTML مخصصة سيتم استضافتها على Raspberry pi بحيث يمكن مراقبة الظروف الحالية ، تلك الصور الناتجة من gnuplot ، من صفحة ويب داخل شبكتنا ، للتنبيه اخترت استخدام Gmail. لقد وجدت بعض الأمثلة على التعليمات البرمجية في مجلة مستخدمي Linux. (بالطبع يمكنك استخدام أي خادم بريد بمجرد معرفة تعيينات المنافذ الضرورية.) لذلك قمت بإنشاء حساب بريد إلكتروني مخصص في Gmail لهذه التنبيهات. أيضًا كميزة إضافية ، عندما يتم تشغيل تنبيه ، أرفق رسمًا بيانيًا واحدًا بالبريد الإلكتروني حتى يتمكن الشخص الذي يتلقى البريد الإلكتروني من الحصول على فكرة عن مدى خطورة الزيادة التي تسببت في التنبيه.

الخطوة 1: إعداد الجهاز

إعداد الأجهزة
إعداد الأجهزة

ليس هناك الكثير لإعداد الأجهزة. يقوم Raspberry pi بتشغيل Raspian ويتم توصيل مستشعر درجة حرارة USB ببساطة مباشرة بأحد منافذ USB. استهلاك الطاقة لهذا المستشعر ضئيل ، ونتيجة لذلك قمت بتشغيله مباشرة من Raspberry pi. ومع ذلك ، بالنسبة للأجهزة التي تعمل بنظام USB مع استهلاك طاقة أكبر قليلاً ، أوصي بتشغيلها من خلال محور USB بالطاقة وليس مباشرة من منفذ USB Raspberry Pi ، وبمجرد تشغيل مستشعر درجة الحرارة ، فإنه يوفر سلسلة تسلسلية تحتوي على درجة الحرارة و قراءات الرطوبة للظروف الحالية. درجة الحرارة = 20.9 درجة مئوية الرطوبة = 62.7٪ نقطة الندى = 13.0 درجة مئوية يوزع برنامج بايثون النصي هذه السلسلة ويخزن قيم درجة الحرارة والرطوبة في ثلاثة ملفات نصية كل خمس دقائق ؛ يوميًا ، ملفات نصية مدتها 24 ساعة و 48 ساعة (ستتم مناقشة الاختلافات لاحقًا في قسم HTML). من هذه الملفات ، سينشئ Gnuplot الرسوم البيانية وبالتالي صور مجموعة البيانات في كل ملف. قبل أن أناقش سيناريو الثعبان سأتحدث عن تحضير Raspberry pi. نظرًا لأن المراقبة يجب أن تتم عبر الإنترنت ، يجب تثبيت خادم الويب. لقد جربت عددًا قليلاً منهم في وقتي على Raspberry pi ولكن على الرغم من أنها كبيرة قليلاً ، إلا أنني أفضل Apache. لتثبيت Apache على Raspberry pi الخاص بك ، ما عليك سوى كتابة: sudo apt-get install apache2 وسوف يعطيك مطالبة قبل تثبيته ، اضغط على "y" للإجابة بنعم وسيتم تثبيت Apache بضع دقائق اعتمادًا على Raspberry pi. تم الانتهاء ، يجب عليك تثبيت مكونين إضافيين من نوع python: python-serial و python-gnuplot plug. (على الرغم من أنني أدركت أن تصميمات Raspian الحديثة تحتوي على معيار مكون إضافي من نوع python-serial ولكن فقط لتكون آمنًا.) لتثبيت تلك التي تكتبها: sudo apt-get install python-serial python-gnuplot مرة أخرى بعد الاعتراف بالمطالبات ، هذه المكونات سيتم تثبيت -ins. وبهذا يكتمل إعداد الأجهزة.

الخطوة 2: إعداد البرنامج - إعداد البريد الإلكتروني والمستلمين

إنشاء عنوان بريد إلكتروني قبل أن نتعمق في البرنامج الآن ، سيكون الوقت مناسبًا لإنشاء حساب Gmail لإرسال تنبيهات البريد الإلكتروني الخاصة بك منه. (يستخدم هذا المثال GMail ولكن يمكن استخدام أي خادم بريد بمجرد معرفتنا بإعدادات منفذ smtp) رمز Python مستقيم جدًا للأمام ولكن عمليات الاستيراد المطلوبة ضرورية. بدونها لن يعمل شيء. من وقت الاستيراد * استيراد وقت الاستيراد استيراد تسلسلي استيراد smtplib استيراد Gnuplot نظام استيراد نظام التشغيل أخيرًا القائمة البريدية. بالطبع علينا إضافة مستلمي البريد الإلكتروني. يتم حفظ كل عنوان بريد إلكتروني في متغير.

الخطوة 3: إعداد البرنامج - الإعداد والتحليل التسلسلي

بعد ذلك ، ننظر إلى الإعداد التسلسلي ، إنها مجرد مسألة إعداد معلمات تتطابق مع الإخراج التسلسلي من المستشعر. يخرج المستشعر سلسلة متسلسلة عند 9600 8 N 1 وهو تنسيق قياسي. بعد استلام السلسلة ، توجد عدة طرق لتحليل هذه السلسلة في لغة البايثون وربما بشكل أكثر موثوقية. الطريقة التي أفعل بها ذلك هي البحث عن الأحرف "المؤقتة" في السلسلة التسلسلية. بمجرد تحديد موقعه ، يكون الأمر مجرد قراءة الأحرف التسلسلية الـ 46 التالية في سلسلة. يمكن الآن معالجة السلسلة المجمعة كعناصر في مصفوفة. يتم تحليل البيانات المطلوبة من السلسلة وحفظها في الملفات الثلاثة مع الطابع الزمني المقابل.imestamp = strftime ("٪ d٪ b٪ Y٪ H:٪ M:٪ S"، localtime ())

الخطوة 4: إعداد البرنامج - Gnuplot

إعداد البرنامج - Gnuplot
إعداد البرنامج - Gnuplot
إعداد البرنامج - Gnuplot
إعداد البرنامج - Gnuplot
إعداد البرنامج - Gnuplot
إعداد البرنامج - Gnuplot

Gnuplot هي أداة رسومية لسطر الأوامر. بمجرد أن تتعرف على الأساسيات ، يمكن أن تكون أداة قوية جدًا لعرض مجموعات البيانات الرسومية. يمكن لـ Gnuplot التخطيط مباشرة من ملف نصي منسق ويصادف أن يكون لدينا واحد من خطوة التحليل السابقة. بمجرد أن نشير إلى gnuplot حيث توجد البيانات في الملف ، يمكننا رسم القيم المطلوبة. سأستخدم الوقت على المحور X ودرجة حرارتنا على المحور Y. يعد رسم الوقت من تجربتي هو الأصعب حيث يتعين عليك الحصول على تنسيق الوقت في gnuplot لمطابقة تنسيق الملف النصي. بعد اكتمال جميع خيارات الرسوم البيانية ووفقًا لتفضيلاتك ، يمكن لـ Gnuplot بعد ذلك إنشاء صورة لهذا الرسم البياني. ستكون هذه هي الصورة التي سنستخدمها على صفحة الويب الخاصة بنا لاحقًا. اخترت استخدام صورة-p.webp

الخطوة 5: إعداد البرنامج - إعداد العتبة والبريد الإلكتروني

يجب أن يتم عتبة التنبيه عن طريق التجربة والخطأ في الإعداد الخاص بك. لا تحتوي الغرفة التي تضم الأنظمة على نوافذ ، لذا بمجرد توقف تكييف الهواء يمكن أن ترتفع درجة حرارتها بسرعة كبيرة. في البداية نظرت إلى مجموعة البيانات لبضعة أيام وشاهدت الاختلافات في درجة الحرارة قبل أن أقرر قيمة التنبيه البالغة 30 درجة مئوية. قد لا يبدو هذا مرتفعًا جدًا ولكن بمجرد تشغيل التنبيه ، ما زلت ترغب في منح نفسك الوقت لتصحيح المشكلة قبل أن تصبح حرجة.

للتبسيط ، أرسل رسائل بريد إلكتروني فردية إلى القائمة البريدية. نظرًا لأن القائمة البريدية قصيرة ، لم أزعج نفسي مطلقًا بإرسال بريد إلكتروني واحد إلى عدة مستلمين. هناك شيء واحد يجب ملاحظته هنا ، نظرًا لأنني أقوم بتشغيل هذا البرنامج النصي كوظيفة cron كل 5 دقائق ، فأنت لا تريد إرسال رسائل بريد إلكتروني كل 5 دقائق بمجرد تشغيل العتبة. للتغلب على هذا ، أكتب تاريخ ووقت التنبيه إلى ملف وأتحقق من هذا الملف قبل إرسال أي رسائل بريد إلكتروني لمعرفة ما إذا كان النظام في حالة تنبيه بالفعل. بمجرد وصوله إلى حالة التنبيه ، سيعيد إرسال بريد إلكتروني فقط كل ساعة بعد المشغل الأول طالما كان النظام في حالة التنبيه. بهذه الطريقة لا يمنع Gmail بريدك الإلكتروني من إرسال عدد كبير جدًا من رسائل البريد الإلكتروني في فترة زمنية قصيرة.

الخطوة 6: إعداد البرنامج - HTML

تتم مراقبة النظام بأكمله عبر صفحة ويب وهناك حاجة إلى نص برمجي HTML أساسي جدًا لهذا الغرض. الصور التي أنشأها Gnuplot أنا فقط أستخدم نفس أبعاد الصورة. أعتقد أنني مررت بثلاثة أحجام لهذه الصور والتي أعطت أفضل ملاءمة لشاشتي. قبل أن ننشئ سكربت html ، دعونا ننشئ مجلدًا له. بشكل افتراضي ، يوجد مجلد استضافة الويب في / var / www /. على الرغم من أن الغرض الوحيد من Raspberry pi هو مراقبة هذه الغرفة وإصدار تنبيهات عبر البريد الإلكتروني ، فقد قمت بإنشاء مجلد منفصل في المجلد / var / www / للحفاظ على المنزل الجيد. نظرًا لأن هذا المجلد ينتمي إلى المستخدم الجذر ، يجب عليك استخدام sudo لإنشاء مجلد هو هذا الموقع. sudo mkdir / var / www / temperature في هذا المثال ، استخدمت درجة الحرارة كاسم للمجلد ولكن يمكنك استخدام أي اسم هنا ولكن تذكر أنه سيتعين إدخال هذا في شريط العناوين لعرض هذه الصفحة. يتم تخزين هذا المسار في متغير داخل نص Python النصي. حتى في حالة الحاجة إلى تغيير موقع الاستضافة أو تعديل البرنامج النصي لنظام آخر ، يمكن تغييره من هذا الموقع فقط ، والآن يمكننا إنشاء نص html الخاص بنا في هذا المجلد مع تذكر استخدام sudo أمام أي أوامر لك تريد تنفيذ هنا. أود أن أوصيك بتسمية نص html index.html لأن هذا من شأنه أن يبسط ذلك عند محاولة العثور على هذه الصفحة ، والشيء المهم هو التأكد من أن حجم الصورة هو نفس حجم الصورة من Gnuplot. لعرض هذه الصفحة ، عليك ببساطة إدخال عنوان IP الخاص بـ Raspberry Pi متبوعًا بـ / temperature (أو أيًا كانت تسميته بالمجلد الخاص بك) لدي العديد من الأنظمة في العمل لمراقبة أشياء مختلفة وكلها تنتج بعض المخرجات الرسومية لنتائجها. لذلك قمت بإنشاء صفحة بها روابط لجميع هذه الصفحات ، لذلك لا داعي للقلق بشأن إدخال العنوان في كل مرة أرغب في الوصول إلى هذه الصفحات.

الخطوة 7: أنا على قيد الحياة…

لقد استخدمت هذا لمراقبة درجة الحرارة في غرفة الكمبيوتر ، لكن من الممكن أن تكون بيانات من أي مصدر. بمجرد أن يتم تخزينه في ملف نصي وأنت تعلم أنه يمكن لـ Gnuplot القيام بالباقي. أحد الأشياء التي أضفتها مؤخرًا إلى هذا المشروع هو إرسال بريد إلكتروني "نبضات القلب" من نوع ما. هذا في الأول من الشهر في الساعة 9 صباحًا ، لدي برنامج نصي يعمل على إرسال رسائل البريد الإلكتروني إلى القائمة البريدية لإعلامهم بأن النظام يعمل كما ينبغي وأن كل شيء على ما يرام في الغرفة.

استخدام قائمة cronjob على النحو التالي:

موصى به: