فهرست مطالب:

نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: 7 مرحله
نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: 7 مرحله

تصویری: نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: 7 مرحله

تصویری: نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: 7 مرحله
تصویری: دوره آموزش IoT با سی شارپ | دوره اینترنت اشیاء با زبان سی شارپ 2024, ژوئن
Anonim
رزبری پای کنترل دمای اتاق با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل
رزبری پای کنترل دمای اتاق با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل

جایی که من کار می کنم ، یک اتاق بسیار مهم وجود دارد که تعداد زیادی کامپیوتر در آن قرار دارد. برای بهینه سازی عملکرد این سیستم ها ، دمای محیط این اتاق باید بسیار سرد باشد. از من خواسته شد که یک سیستم نظارتی ارائه دهم که بتواند نوعی هشدار را برای چند نفر ارسال کند که به آنها اطلاع می دهد که در تهویه مطبوع آن اتاق مشکلی وجود دارد. من از سخت افزار این ساخت ، از Raspberry pi استفاده کردم و سنسور دما و رطوبت USB برای نظارت ، من از Gnuplot برای ترسیم سه نمودار دما و ایجاد تصویر از آنها استفاده کردم. سپس یک صفحه اختصاصی HTML ایجاد کردم که روی Raspberry pi میزبانی می شود ، بنابراین شرایط فعلی ، تصاویر خروجی gnuplot ، می تواند از یک صفحه وب در شبکه ما نظارت شود. برای هشدار دادن ، من تصمیم گرفتم با Gmail کار کنم. من یک کد نمونه در مجله کاربر لینوکس پیدا کرده بودم. (البته هنگامی که وظایف مورد نیاز پورت را می دانید ، می توانید از هر سرور ایمیل استفاده کنید.) برای این منظور ، یک حساب ایمیل اختصاصی Gmail برای این هشدارها ایجاد کردم. همچنین به عنوان یک ویژگی اضافی ، هنگامی که یک هشدار فعال می شود ، یک نمودار را به ایمیل ضمیمه می کنم تا فرد دریافت کننده ایمیل از میزان افزایش شدید این هشدار مطلع شود.

مرحله 1: راه اندازی سخت افزار

راه اندازی سخت افزار
راه اندازی سخت افزار

راه اندازی سخت افزار زیاد نیست. Raspberry pi Raspian را اجرا می کند و سنسور دما USB به سادگی مستقیماً به یکی از پورت های USB متصل می شود. مصرف برق این سنسور حداقل است و در نتیجه آن را مستقیماً از Raspberry pi تغذیه کردم. با این حال ، برای دستگاه های دارای USB با مصرف کمی بیشتر ، توصیه می کنم آنها را از طریق یک هاب USB تغذیه کنید و مستقیماً از پورت USB Raspberry pi استفاده نکنید. هنگامی که سنسور دما تغذیه می شود ، یک رشته سریال ارائه می دهد که شامل دما و میزان رطوبت شرایط فعلی درجه حرارت = 20.9 درجه سانتی گراد رطوبت = 62.7٪ نقطه شبنم = 13.0 درجه CA خط پایتون این رشته را تجزیه می کند و مقادیر دما و رطوبت را در هر پنج دقیقه در سه فایل متنی ذخیره می کند. یک فایل متنی روزانه ، 24 ساعت و 48 ساعت (تفاوتها بعداً در بخش HTML مورد بحث قرار می گیرد). از این فایل ها ، Gnuplot نمودارها و متعاقباً تصاویر مجموعه داده ها را در هر فایل ایجاد می کند. قبل از بحث در مورد اسکریپت پایتون ، در مورد تهیه Raspberry pi صحبت خواهم کرد. از آنجا که نظارت باید به صورت آنلاین انجام شود ، یک سرور وب باید نصب شود. من چند مورد از آنها را در زمان Raspberry pi امتحان کردم اما اگرچه کمی بزرگ است اما من آپاچی را ترجیح می دهم. برای نصب Apache بر روی Raspberry pi خود به سادگی تایپ کنید: انجام شد ، شما باید دو افزونه python را نصب کنید: python-serial و python-gnuplot plug. (اگرچه متوجه شده ام که نسخه های جدید Raspian دارای افزونه سریال پایتون سری هستند اما فقط برای ایمن هستند.) برای نصب مواردی که تایپ می کنید: -ins نصب خواهد شد و با آن تنظیم سخت افزار به پایان رسید.

مرحله 2: راه اندازی نرم افزار - راه اندازی ایمیل و گیرندگان

قبل از اینکه در مورد نرم افزار زیاد صحبت کنیم ، زمان خوبی برای ایجاد یک حساب Gmail برای ارسال هشدارهای ایمیل از طرف شما خواهد بود. (در این مثال از GMail استفاده می شود اما وقتی از تنظیمات پورت smtp مطلع شدیم می توان از هر سرور ایمیل استفاده کرد) کد پایتون تقریباً مستقیم است اما واردات مورد نیاز بسیار مهم است. بدون آنها هیچ چیز کار نمی کند. از زمان واردات *زمان واردات واردات واردات سریال smtplib import Gnuplot import os import sys در نهایت ، لیست پستی. البته ما باید گیرندگان ایمیل را اضافه کنیم. هر آدرس ایمیل در یک متغیر ذخیره می شود. from_address ='[email protected]'to_address1 = 'receptient1.mail.com' to_address2 = 'receptient2.mail.com'username =' [email protected] 'password =' custom_email_password '

مرحله 3: راه اندازی نرم افزار - راه اندازی و تجزیه سریال

در مرحله بعد تنظیمات سریال را بررسی می کنیم. این فقط یک پارامتر است که با خروجی سریال از سنسور مطابقت دارد. سنسور یک رشته سریال را در 9600 8 N 1 که یک فرمت استاندارد است ، خروجی می دهد. پس از دریافت رشته ، چندین روش برای تجزیه این رشته در پایتون وجود دارد و احتمالاً با اطمینان بیشتر. روش من این است که به دنبال کاراکترهای "temp" در رشته سریال بگردم. پس از قرار گرفتن ، فقط باید 46 کاراکتر سریال بعدی را در یک رشته بخوانید. رشته جمع آوری شده اکنون می تواند مانند عناصر موجود در یک آرایه آدرس دهی شود. داده های مورد نظر از رشته تجزیه و در سه فایل همراه با stamp time time.timestamp = strftime ("٪ d٪ b٪ Y٪ H:٪ M:٪ S" ، زمان محلی ()) ذخیره می شود.

مرحله 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 ایجاد کرد من فقط از همان ابعاد تصویر استفاده می کنم. من معتقدم که برای این تصاویر 3 اندازه را انتخاب کردم که بهترین تناسب را روی صفحه من ایجاد کرد. قبل از ایجاد اسکریپت html ، اجازه دهید یک پوشه برای آن ایجاد کنیم. به طور پیش فرض پوشه میزبانی وب در/var/www/قرار دارد. اگرچه تنها هدف Raspberry pi نظارت بر این اتاق و صدور هشدارهای ایمیل است ، اما برای نگهداری خوب من یک پوشه جداگانه در پوشه/var/www/ایجاد کردم. از آنجا که این پوشه متعلق به کاربر اصلی است ، باید از sudo برای ایجاد یک پوشه در این مکان استفاده کنید. sudo mkdir/var/www/temperature در این مثال من از دما به عنوان نام پوشه استفاده کردم اما می توانید از هر نامی در اینجا استفاده کنید اما به خاطر داشته باشید زیرا برای مشاهده این صفحه باید در نوار آدرس وارد شود. این مسیر در متغیری در اسکریپت پایتون ذخیره می شود. حتی اگر مکان میزبانی باید تغییر کند یا اسکریپت باید برای سیستم دیگری تغییر کند ، می توان آن را از این مکان تغییر داد. اکنون ما می توانیم اسکریپت html خود را در این پوشه ایجاد کنیم تا از sudo در مقابل هر گونه فرمان استفاده کنیم. می خواهید در اینجا اجرا کنید توصیه می کنم اسکریپت html را "index.html" نامگذاری کنید زیرا هنگام پیدا کردن این صفحه این امر ساده می شود. نکته مهم این است که مطمئن شوید اندازه تصویر با اندازه تصویر Gnuplot یکسان است. برای مشاهده این صفحه ، شما به سادگی باید آدرس IP رزبری پای را وارد کنید (درجه حرارت) (یا پوشه خود را نام ببرید) من چندین سیستم در حال کار دارم که چیزهای مختلف را زیر نظر دارند و همه آنها خروجی گرافیکی از نتایج خود را تولید می کنند. بنابراین صفحه ای ایجاد کردم که دارای پیوندهایی به همه این صفحات است ، بنابراین نیازی نیست نگران وارد کردن آدرس باشم هر زمان که می خواهم به این صفحات دسترسی پیدا کنم.

مرحله 7: من زنده ام…

من از این دستگاه برای نظارت بر دمای اتاق کامپیوتر استفاده کردم ، اما این می تواند تقریباً داده های هر منبع باشد. هنگامی که می توانید آن را در یک فایل متنی ذخیره کنید و بدانید که فرمت آن Gnuplot می تواند بقیه کارها را انجام دهد. یکی از مواردی که اخیراً به این پروژه اضافه کردم ارسال نوعی ایمیل "ضربان قلب" است. این همان اول ماه ساعت 9 صبح است که من یک اسکریپت دارم که لیست ایمیل ها را ارسال می کند تا به آنها اطلاع دهند که سیستم آنطور که باید کار می کند و همه چیز در اتاق خوب است.

استفاده از فهرست cronjob به عنوان:

توصیه شده: