فهرست مطالب:
- مرحله 1: نظارت بر دما
- مرحله 2: راه اندازی Cloud4Rpi.io
- مرحله 3: نظارت بر UPS
- مرحله 4: آماده سازی برای "تولید"
- مرحله 5: تنظیم کنترل پنل
تصویری: نظارت بر خانه DIY با RaspberryPi و Cloud4Rpi: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
یک آخر هفته زمستانی به خانه روستایی خود رفتم و متوجه شدم آنجا بسیار سرد است. اتفاقی در مورد برق افتاده بود و RCD breaker آن را خاموش کرده بود و گرمایش نیز خاموش شد. خوش شانس بودم که به آنجا آمدم ، وگرنه در چند روز همه چیز یخ زده بود که برای لوله ها و رادیاتورها بسیار بد است.
من چندین رزبری پای در اطراف خود داشتم و یک سنسور حرارتی داشتم ، بنابراین فکر کردم - چرا یک دستگاه نظارت ساده نمی سازم؟ در دستورالعمل های زیر فرض می شود که شما رزبری پای با Raspbian و اتصال شبکه راه اندازی کرده اید. در مورد من این Raspberry Pi B+ با Raspbian (2018–06–27-raspbian-stretch-lite) است.
مرحله 1: نظارت بر دما
چگونه سنسور دما DS18B20 را وصل کنیم؟ فقط نحوه انجام این کار را در گوگل جستجو کنید و تصاویر زیادی مانند این را خواهید دید:
در مورد من سیمهای مشکی ، زرد و قرمز داشتم. رنگ مشکی زمین است ، به پین Ground می رود ، قرمز قدرت است - به 3.3v پین می رود و رنگ زرد داده است - باید به پین GPIO4 برود ، با مقاومت 4.7 کیلو آمپر بین داده و قدرت متصل شده است. توجه داشته باشید ، می توانید چندین سنسور را وصل کنید به طور موازی (آنها دیجیتال هستند و آدرس های مختلفی دارند) ، شما فقط به یک مقاومت احتیاج دارید. پس از اتصال سنسور خود ، باید 1Wire را در raspi-config فعال کنید:
sudo raspi-config
به 5 گزینه Interfacing بروید ، P7 1-Wire را فعال کرده و راه اندازی مجدد کنید.
سپس می توانید سنسور را مشاهده کنید:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
شما باید چیزی شبیه به این را ببینید:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff سنسور دمای ما است.
سخت افزار آماده است. اکنون باید قسمت نظارت را تنظیم کنم. من به چیزی نیاز دارم که داده ها را به من نشان دهد و اگر دستگاه برای مدتی قطع شود یا برق نباشد یا درجه حرارت پایین باشد به من اطلاع دهد. بدیهی است که این نمی تواند تمشک pi باشد ، باید برخی از سرورها یا سرویس ها در اینترنت وجود داشته باشد که دستگاه من را نظارت می کند.
من می توانم یک سرور ساده ایجاد کنم ، میزبانی بگیرم و همه چیز را تنظیم کنم ، اما به طور عادی ، نمی خواهم. خوشبختانه ، کسی قبلاً به این موضوع فکر کرده است و cloud4rpi.io را ایجاد کرده است - یک کنترل پنل ابری برای دستگاه شما.
مرحله 2: راه اندازی Cloud4Rpi.io
Cloud4Rpi سرویسی را ارائه می دهد که به دستگاه شما اجازه می دهد داده ها را با استفاده از پروتکل های MQTT یا HTTP ارسال و دریافت کند. آنها یک کتابخانه مشتری برای پایتون دارند ، بنابراین من از پایتون استفاده می کنم.
نمونه های پایتون که با سرویس Cloud4Rpi ارائه می شود از قبل حاوی کد برای سنسور دمای DS18B20 است.
بنابراین به https://cloud4rpi.io رفتم ، یک حساب ایجاد کردم و دستگاه جدیدی را در آنجا اضافه کردم. صفحه دستگاه دارای یک توکن است - رشته ای که دستگاه را شناسایی می کند و باید در برنامه ارسال کننده داده مشخص شود.
برای شروع ، همیشه ایده خوبی است که یک بسته بسته را به روز کنید و بسته ها را ارتقا دهید (توجه داشته باشید که اگر مدتی به روز نکرده باشید ممکن است ساعت ها طول بکشد):
sudo apt-get update && sudo apt-get upgrade
سپس ، git ، Python و Pip manager آن را نصب کنید:
sudo apt-get git python python-pip را نصب کنید
سپس ، کتابخانه cloud4rpi Python را نصب کنید:
sudo pip را نصب کنید cloud4rpi
در نهایت ، من آماده هستم که برنامه کنترل خود را بنویسم. شروع می کنم از مثال موجود در
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
فایل اصلی برنامه control.py است - باید برای نیازهای خود آن را تغییر دهم. ابتدا برنامه را ویرایش کرده و یک توکن بچسبانید:
sudo nano control.py
خط DEVICE_TOKEN = '…'] را بیابید و توکن دستگاه را در آنجا مشخص کنید. پس از آن می توانم به سادگی برنامه را اجرا کنم: کار می کند و دما را در متغیر RoomTemp گزارش می دهد:
sudo python control.py
کار می کند و دما را در متغیر RoomTemp گزارش می دهد.
توجه داشته باشید که تمام سنسورهای onewire ds18b20 را کشف می کند
ds_sensors = ds18b20. DS18B20.find_all ()
و از اولین سنسور پیدا شده استفاده می کند:
RoomTemp ': {' type ':' numeric '،' bind ': ds_sensors [0] اگر ds_sensors دیگری هیچکدام}
خوب ، این آسان بود ، زیرا برنامه نمونه دارای همه مواردی است که برای کار با سنسور ds18b20 در رزبری پای مورد نیاز است. اکنون باید راهی برای گزارش وضعیت قدرت پیدا کنم.
مرحله 3: نظارت بر UPS
مورد بعدی که می خواهم نظارت کنم وضعیت UPS است ، بنابراین در صورت قطع برق ، قبل از قطع همه چیز در مورد آن اطلاع خواهم داشت.
من یک APC UP با کنترل USB دارم ، بنابراین سریع در گوگل جستجو کردم و متوجه شدم که به apcupsd نیاز دارم. https://www.anites.com/2013/09/monitoring-ups.html… من چندین بار سعی کردم آن را از طریق apt-get نصب کنم ، اما به دلایل مختلف برای من کار نمی کرد. نحوه نصب آن را از منابع نشان خواهم داد.
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install
سپس apcupsd.conf را ویرایش می کنم تا از طریق usb به UPS خود متصل شوم.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
اکنون می توانم کابل USB را از UPS به RaspberryPi وصل کنم و آزمایش کنم که آیا UPS پیدا می شود یا خیر.
sudo apctest
نباید هیچ پیام خطایی به شما بدهد.
اکنون سرویس apcupsd باید راه اندازی شود:
sudo systemctl شروع apcupsd
برای پرسیدن وضعیت UPS می توانم از دستور status استفاده کنم:
sudo /etc/init.d/apcupsd وضعیت
و چیزی شبیه به این تولید می کند:
APC: 001 ، 035 ، 0855 تاریخ: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 مه 2016) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Driver UPSMODE: Stand Alone زمان شروع: 2018-10-14 16:54:28 +0300 مدل: Back-UPS XS 650CI وضعیت: آنلاین LINEV: 238.0 ولت LOADPCT: 0.0 درصد هزینه: 100.0 درصد زمان: 293.3 دقیقه MBATTCHG: 5 درصد دقیقه: 3 دقیقه حداکثر 0 ثانیه حس: LOTRANS متوسط: 140.0 ولت HITRANS: 300.0 ولت ALARMDEL: 30 ثانیه BATTV: 14.2 ولت LASTXFER: بدون انتقال از زمان تبدیل NUMXFERS: 0 TONBATT: 0 ثانیه CUMONBATT: 0 ثانیه XOFFBATTT00: N45: 2014-06-10 NOMINV: 230 ولت NOMBATTV: 12.0 ولت NOMPOWER: 390 وات FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
من به وضعیتی نیاز دارم - که خط "STATUS:" است.
کتابخانه Cloud4rpi شامل یک ماژول ‘rpy.py’ است که پارامترهای سیستم رزبری پای مانند نام میزبان یا دمای پردازنده را برمی گرداند. از آنجایی که همه آن پارام ها نتایج اجرای برخی دستورات و تجزیه خروجی هستند ، همچنین دارای یک عملکرد مفید "parse_output" است که دقیقاً آنچه را که من نیاز دارم انجام می دهد. نحوه بدست آوردن وضعیت UPS من به شرح زیر است:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) '، [' /etc/init.d/apcupsd '،' status ']) در صورت نتیجه: نتیجه دیگر را بازگردانید: بازگشت 'ناشناس'
برای ارسال این وضعیت به cloud4rpi ، باید یک متغیر UPSStatus اعلام کنم و آن را به تابع ups_status خود متصل کنم: اکنون می توانم برنامه خود را اجرا کنم:
variables = {'RoomTemp': {'type': 'numeric'، 'bind': ds_sensors [0]}، 'UPSStatus': {'type': 'string'، 'bind': ups_status}}
و من بلافاصله می توانم متغیر خود را در صفحه دستگاه cloud4rpi ببینم.
مرحله 4: آماده سازی برای "تولید"
همه چیز در حال کار است و اکنون باید دستگاه خود را برای حالت بدون مراقبت آماده کنم.
برای شروع ، من فواصل زمانی را تنظیم می کنم. فاصله نظرسنجی مشخص می کند که برنامه چگونه دمای و وضعیت UPS را بررسی می کند - آن را روی یک ثانیه تنظیم کنید.
نتایج هر 5 دقیقه به ابر ارسال می شود و اطلاعات تشخیصی - هر ساعت.
# ثابت DATA_SENDING_INTERVAL = 300 # ثانیه DIAG_SENDING_INTERVAL = 3600 # ثانیه POLL_INTERVAL = 1 # ثانیه
وقتی وضعیت UPS تغییر می کند - من نمی خواهم دستگاه من 5 دقیقه منتظر بماند و بلافاصله داده ها را ارسال می کنم. بنابراین من حلقه اصلی را کمی تغییر داده ام و به نظر می رسد:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' در حالیکه True: newUPS = ups_status () if (data_timer <= 0) یا (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUps = new = device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL خواب (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
تست: اجرای اسکریپت:
sudo python control.py
و می توانم وضعیت UPS را در صفحه دستگاه خود تماشا کنم.
اگر قدرت UPS را خاموش کنم ، وضعیت در عرض چند ثانیه تغییر می کند ، بنابراین همه چیز در حال کار است. در حال حاضر من باید apcupsd و control.py خود را در هنگام راه اندازی سیستم شروع کنم. سرویس Apcupsd قدیمی است و برای شروع آن در raspbian مدرن ، باید فایل /etc/init.d/apcupsd را با افزودن این خطوط در جایی در بالا تغییر دهم:
### شروع اطلاعات # ارائه می دهد: apcupsd # مورد نیاز-شروع: $ all # مورد نیاز-توقف: # پیش فرض-شروع: 2 3 4 5 # توقف پیش فرض: # توضیح کوتاه: APC UPS daemon… ### END INIT اطلاعات#
سپس سرویس را فعال کنید:
sudo systemctl apcupsd را فعال کنید
سپس سرویس را شروع کنید:
sudo systemctl شروع apcupsd
اکنون apcupsd هنگام راه اندازی سیستم راه اندازی می شود.
برای نصب control.py به عنوان سرویس ، از اسکریپت service_install.sh ارائه شده استفاده کردم:
sudo bash service_install.sh/cloud4rpi/control.py
در حال حاضر سرویس شروع شده است و می تواند هنگام راه اندازی مجدد زنده بماند.
مرحله 5: تنظیم کنترل پنل
Cloud4rpi به من امکان می دهد یک کنترل پنل برای دستگاه خود تنظیم کنم. می توانید "ویجت" را اضافه کرده و آنها را به متغیرهای دستگاه متصل کنید.
دستگاه من دو متغیر فقط خواندنی ارائه می دهد - RoomTemp و UPSStatus:
variables = {'RoomTemp': {'type': 'numeric'، 'bind': ds_sensors [0]}، 'UPSStatus': {'type': 'string'، 'bind': ups_status}}
من 3 ویجت اضافه کردم - شماره برای RoomTemp ، متن برای UPSStatus و نمودار برای RoomTemp.
من می توانم هشدارها را تنظیم کنم ، بنابراین هنگامی که دما خارج از محدوده مشخص شده است ، ایمیلی دریافت می کنم ، UPS آفلاین شد یا دستگاه در مواقعی که باید اطلاعات را ارسال نمی کند. در حال حاضر می توانم مطمئن شوم که خانه کشورم خوب است و می توانم به من اطلاع داده شود وقتی مشکلی پیش می آید ، بنابراین می توانم با همسایه ها تماس بگیرم و از آنها بخواهم آنچه را که در جریان است بررسی کنند. در اینجا کد واقعی control.py آمده است.
توصیه شده:
دوربین IP با استفاده از Raspberry Pi Zero (قسمت 1 نظارت خانه): 5 مرحله
دوربین IP با استفاده از Raspberry Pi Zero (بخش نظارت خانگی قسمت 1): این اولین پست در مینی سری جدید است ، جایی که ما یک سیستم نظارت خانگی ، عمدتا با استفاده از Raspberry Pis ، ایجاد می کنیم. در این پست ، ما از Raspberry PI zero استفاده می کنیم و یک دوربین IP ایجاد می کنیم که ویدیو را از طریق RTSP پخش می کند. ویدئوی خروجی کیفیت بسیار بالاتری دارد
نظارت بر خانه سبز با IOT: 5 مرحله
نظارت بر خانه سبز با IOT: وقتی صحبت از کشاورزی می شود ، نظارت بر دما و آمپر ؛ رطوبت گیاهان عامل مهمی برای زنده ماندن آنها است. در حال حاضر ، مردم از دماسنج های متصل در گلخانه استفاده می کنند تا کشاورزان بتوانند دما را اندازه گیری کنند. با این حال ، این برنامه دستی
لایه حسگر بی سیم IOT جدید برای سیستم نظارت بر محیط زیست در خانه: 5 مرحله (همراه با تصاویر)
لایه حسگر IOT بی سیم جدید برای سیستم نظارت بر محیط زیست در خانه: این دستورالعمل یک لایه حسگر IOT بی سیم با هزینه کمتر و باتری را برای دستورالعمل قبلی من توصیف می کند: سیستم نظارت بر محیط زیست LoRa IOT Home. اگر هنوز این دستورالعمل قبلی را مشاهده نکرده اید ، توصیه می کنم مقدمه را بخوانید
سیستم نظارت بر آب و هوای خانه اینترنت اشیا با پشتیبانی از برنامه Android (Mercury Droid): 11 مرحله
سیستم نظارت بر آب و هوا IoT Home با پشتیبانی از برنامه Android (Mercury Droid): مقدمه Merkur Droid یک نوع سیستم جاسازی شده IoT (اینترنت اشیاء) است که بر اساس برنامه تلفن همراه Android Mercury Droid ساخته شده است. که قادر به اندازه گیری & amp؛ نظارت بر فعالیت آب و هوای خانه این سیستم نظارت بر آب و هوای خانگی بسیار ارزان است
DIY Voice/Internet کنترل خانه و نظارت با استفاده از ESP8266 و Google Home Mini: 6 مرحله
DIY Voice/Internet کنترل خودکار و نظارت بر خانه با استفاده از ESP8266 و Google Home Mini: سلام !! پس از یک استراحت طولانی ، من اینجا هستم زیرا همه ما باید کاری خسته کننده (شغلی) انجام دهیم تا بتوانیم درآمد کسب کنیم. بعد از همه مقالات HOME AUTOMATION که من از BLUETOOTH ، IR ، Local WIFI ، Cloud یعنی موارد دشوار نوشته ام ، * اکنون * می آید ساده ترین اما کارآمدترین