جدول المحتويات:
- الخطوة 1: مراقبة درجة الحرارة
- الخطوة 2: إعداد Cloud4Rpi.io
- الخطوة 3: مراقبة UPS
- الخطوة 4: التحضير "للإنتاج"
- الخطوة الخامسة: إعداد لوحة التحكم
فيديو: مراقبة المنزل باستخدام RaspberryPi و Cloud4Rpi: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
ذهبت إلى منزلي الريفي في إحدى عطلات نهاية الأسبوع الشتوية ، واكتشفت أن الجو بارد جدًا هناك. حدث شيء ما بالكهرباء وقام قاطع التجمع الكونغولي من أجل الديمقراطية بإيقافه ، وانطفأت التدفئة أيضًا. كنت محظوظًا لأنني أتيت إلى هناك ، وإلا فقد تم تجميد كل شيء في عدة أيام وهو أمر سيء للغاية بالنسبة للأنابيب والرادياتير.
كان لدي العديد من أجهزة Raspberry Pi ، وجهاز استشعار حراري ، لذلك فكرت - لماذا لا أصنع جهاز مراقبة بسيطًا؟ تفترض الإرشادات أدناه أن لديك Raspberry Pi مع Raspbian وإعداد اتصال بالشبكة. في حالتي هو Raspberry Pi B + مع Raspbian (2018–06–27-raspbian-stretch-lite).
الخطوة 1: مراقبة درجة الحرارة
كيفية توصيل جهاز استشعار درجة الحرارة DS18B20؟ ما عليك سوى البحث في google عن كيفية القيام بذلك ، وسترى الكثير من الصور مثل هذه:
في حالتي كان لدي أسلاك سوداء وصفراء وحمراء. الأسود هو الأرض ، يذهب إلى الدبوس الأرضي ، والأحمر هو الطاقة - يذهب إلى 3.3 فولت ، والأصفر هو البيانات - يجب أن ينتقل إلى دبوس GPIO4 ، مع المقاوم 4.7 كيلو أوم متصل بين البيانات والطاقة. ملاحظة ، يمكنك توصيل العديد من أجهزة الاستشعار بالتوازي (فهي رقمية ولها عناوين مختلفة) ، فأنت تحتاج فقط إلى مقاوم واحد. بعد توصيل المستشعر الخاص بك ، يجب تمكين 1Wire في raspi-config:
sudo raspi-config
انتقل إلى 5 خيارات Interfacing ، وقم بتمكين P7 1-Wire وأعد التشغيل.
ثم يمكنك اختبار ما إذا كان بإمكانك رؤية المستشعر:
sudo modprobe w1-gpiosudo modprobe w1-thermls / sys / bus / w1 / الأجهزة /
يجب أن نرى شيئا من هذا القبيل:
pi @ vcontrol: ~ $ ls / sys / bus / w1 / devices / 28–00044eae2dff w1_bus_master1
28–00044eae2dff هو مستشعر درجة الحرارة لدينا.
الأجهزة جاهزة. الآن أنا بحاجة إلى إعداد جزء المراقبة. أحتاج إلى شيء من شأنه أن يعرض لي البيانات ويخطرني إذا تم فصل الجهاز لفترة من الوقت أو عدم وجود طاقة ، أو انخفاض درجة الحرارة. من الواضح أن هذا لا يمكن أن يكون raspberry pi نفسه ، يجب أن يكون هناك خادم أو خدمة في الإنترنت تراقب جهازي.
يمكنني إنشاء خادم بسيط ، والحصول على استضافة وإعداد كل شيء ، ولكن بإحساس رائع ، لا أريد ذلك. لحسن الحظ ، فكر شخص ما في هذا الأمر بالفعل وأنشأ cloud4rpi.io - لوحة تحكم سحابية لجهازك.
الخطوة 2: إعداد Cloud4Rpi.io
توفر Cloud4Rpi خدمة تتيح لجهازك إرسال واستقبال البيانات باستخدام بروتوكولات MQTT أو HTTP. لديهم مكتبة عميل لبايثون ، لذلك سأستخدم بايثون.
أمثلة Python التي تأتي مع خدمة Cloud4Rpi تحتوي بالفعل على رمز لمستشعر درجة الحرارة DS18B20.
لذلك ذهبت إلى https://cloud4rpi.io وأنشأت حسابًا وأضفت جهازًا جديدًا هناك. تحتوي صفحة الجهاز على رمز مميز - سلسلة تحدد الجهاز ، والتي يجب تحديدها في البرنامج الذي يرسل البيانات.
بادئ ذي بدء ، من الأفضل دائمًا تحديث مدير الحزم وترقية الحزم (ملاحظة: قد يستغرق الأمر ساعات إذا لم تقم بالترقية لبعض الوقت):
sudo apt-get update && sudo apt-get Upgrade
بعد ذلك ، قم بتثبيت git و Python ومدير الحزم الخاص بها Pip:
sudo apt-get install git python python-pip
بعد ذلك ، قم بتثبيت مكتبة Cloud4rpi Python:
تثبيت sudo pip cloud4rpi
أخيرًا ، أنا مستعد لكتابة برنامج التحكم الخاص بي. أبدأ من المثال المتاح على
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
ملف البرنامج الرئيسي هو control.py - أحتاج إلى تعديله حسب احتياجاتي. أولاً ، قم بتحرير البرنامج والصق رمزًا مميزًا:
sudo نانو 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] if ds_sensors else None}
حسنًا ، كان ذلك سهلاً ، لأن البرنامج النموذجي يحتوي على كل ما هو مطلوب للعمل مع مستشعر ds18b20 على Raspberry Pi. الآن أنا بحاجة إلى إيجاد طريقة للإبلاغ عن حالة الطاقة.
الخطوة 3: مراقبة UPS
الشيء التالي الذي أريد مراقبته هو حالة UPS ، لذلك إذا كان هناك انقطاع في التيار الكهربائي ، فسأعرف عنه قبل أن ينقطع كل شيء.
لديّ APC UPS مع تحكم USB ، لذا سرعان ما بحثت في goog ووجدت أنني بحاجة إلى 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 - تمكين USB sudo جعل sudo يقوم بالتثبيت
ثم أقوم بتحرير apcupsd.conf للاتصال بـ UPS الخاص بي عبر USB.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE USB # #UPSTYPE apcsmart #DEVICE / dev / ttyS0 UPSTYPE USB DEVICE
يمكنني الآن توصيل كبل USB من UPS إلى RaspberryPi واختبار ما إذا كان سيتم العثور على UPS.
sudo apctest
يجب ألا يعطيك أي رسائل خطأ.
الآن يجب أن تبدأ خدمة apcupsd:
يبدأ نظام sudo systemctl apcupsd
للاستعلام عن حالة UPS ، يمكنني استخدام أمر الحالة:
sudo /etc/init.d/apcupsd
وسيخرج شيئًا مثل هذا:
APC: 001، 035، 0855 التاريخ: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol الإصدار: 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 الحالة: الخط المباشر عبر الإنترنت: 238.0 فولت LOADPCT: 0.0 بالمائة تكلفة الشحن: 100.0 بالمائة الوقت: 293.3 دقيقة MBATTCHG: 5 بالمائة MINTIMEL: 3 دقائق MAXTIME: 0 ثوانٍ التحسس: متوسط اللوترين: 140.0 فولت هيترانس: 300.0 فولت ALARMDEL: 30 ثانية BATTV: 14.2 فولت LASTXFER: لا توجد عمليات نقل منذ Turnon NUMXFERS: 0 TONBATT: 0 ثوانٍ CUMONBATT: 0 ثانية XOFFBATT: N / A STO0008B314:: 2014-06-10 NOMINV: 230 فولت NOMBATTV: 12.0 Volts NOMPOWER: 390 Watts FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
أحتاج إلى حالة - وهي سطر "الحالة:".
تحتوي مكتبة Cloud4rpi على وحدة "rpy.py" تعرض معلمات نظام Raspberry Pi مثل اسم المضيف أو درجة حرارة وحدة المعالجة المركزية. نظرًا لأن كل هذه المعلمات هي نتائج تشغيل بعض الأوامر وتحليل الإخراج ، فإنها تحتوي أيضًا على وظيفة "parse_output" سهلة الاستخدام تقوم بما أحتاجه بالضبط. هذه هي كيفية الحصول على حالة UPS الخاصة بي:
def ups_status (): result = rpi.parse_output (r'STATUS / s +: / s + (S +) '، [' /etc/init.d/apcupsd '،' status ']) إذا كانت النتيجة: إرجاع نتيجة أخرى: إرجاع 'غير معروف'
لإرسال هذه الحالة إلى cloud4rpi ، أحتاج إلى إعلان حالة UPS متغيرة وربطها بوظيفة ups_status الخاصة بي: الآن يمكنني تشغيل البرنامج الخاص بي:
المتغيرات = {'RoomTemp': {'type': 'numeric'، 'bind': ds_sensors [0]}، 'UPSStatus': {'type': 'string'، 'bind': ups_status}}
ويمكنني رؤية المتغير الخاص بي على الفور في صفحة جهاز cloud4rpi.
الخطوة 4: التحضير "للإنتاج"
كل شيء يعمل ، والآن أحتاج إلى إعداد جهازي إلى الوضع غير المراقب.
بادئ ذي بدء ، سأقوم بضبط الفترات الزمنية. يحدد الفاصل الزمني للاستقصاء عدد المرات التي يتحقق فيها البرنامج من درجة الحرارة وحالة UPS - اضبطه على ثانية واحدة.
يتم إرسال النتائج إلى السحابة كل 5 دقائق ، ومعلومات التشخيص - كل ساعة.
# ConstantsDATA_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 = newUPS if diag_timer <= 0 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 # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: 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
الآن بدأت الخدمة ويجب أن تنجو من إعادة التشغيل.
الخطوة الخامسة: إعداد لوحة التحكم
تتيح لي Cloud4rpi إعداد لوحة تحكم لجهازي. يمكنك إضافة "أدوات" وربطها بمتغيرات الجهاز.
يوفر جهازي متغيرين للقراءة فقط - RoomTemp و UPSStatus:
المتغيرات = {'RoomTemp': {'type': 'numeric'، 'bind': ds_sensors [0]}، 'UPSStatus': {'type': 'string'، 'bind': ups_status}}
لقد أضفت 3 عناصر واجهة مستخدم - رقم RoomTemp و Text لـ UPSStatus ومخطط لـ RoomTemp.
يمكنني إعداد التنبيهات ، لذلك أتلقى بريدًا إلكترونيًا عندما تكون درجة الحرارة خارج النطاق المحدد ، أو عندما يكون UPS غير متصل بالإنترنت أو لا يرسل الجهاز نفسه البيانات عندما ينبغي ذلك. يمكنني الآن التأكد من أن منزلي الريفي على ما يرام ، ويمكن إخطاري عندما يكون هناك خطأ ما ، لذلك يمكنني الاتصال بالجيران واطلب منهم التحقق مما يحدث. هذا هو الكود الفعلي لـ control.py.
موصى به:
كيفية جعل المنزل الذكي باستخدام وحدة التحكم في ترحيل Arduino - أفكار أتمتة المنزل: 15 خطوة (بالصور)
كيفية جعل المنزل الذكي باستخدام وحدة التحكم في ترحيل Arduino | أفكار أتمتة المنزل: في مشروع أتمتة المنزل هذا ، سنصمم وحدة ترحيل منزلية ذكية يمكنها التحكم في 5 أجهزة منزلية. يمكن التحكم في وحدة الترحيل هذه من الهاتف المحمول أو الهاتف الذكي أو جهاز التحكم عن بعد بالأشعة تحت الحمراء أو جهاز التحكم عن بعد في التلفزيون أو المفتاح اليدوي. يمكن لهذا التتابع الذكي أيضًا أن يستشعر r
كاميرا IP باستخدام Raspberry Pi Zero (الجزء الأول من مراقبة المنزل): 5 خطوات
كاميرا IP باستخدام Raspberry Pi Zero (الجزء الأول من المراقبة المنزلية): هذه أول مشاركة في سلسلة مصغرة جديدة ، حيث نقوم ببناء نظام مراقبة منزلي ، باستخدام Raspberry Pis بشكل أساسي. في هذا المنشور ، نستخدم Raspberry PI zero وننشئ كاميرا IP تقوم ببث الفيديو عبر RTSP. الفيديو الناتج هو أعلى من ذلك بكثير
مراقبة وتسجيل درجة الحرارة باستخدام Bluetooth LE و RaspberryPi: 9 خطوات (بالصور)
مراقبة وتسجيل درجة الحرارة باستخدام Bluetooth LE و RaspberryPi: يدور هذا التوجيه حول كيفية تجميع نظام مراقبة درجة الحرارة متعدد العقد مع خلل مستشعر Bluetooth LE من Blue Radios (BLEHome) و RaspberryPi 3B بفضل تطوير معيار Bluetooth LE ، هناك متاح الآن بسهولة
أتمتة المنزل باستخدام Android و Arduino: افتح البوابة عندما تصل إلى المنزل: 5 خطوات
أتمتة المنزل باستخدام Android و Arduino: افتح البوابة عندما تصل إلى المنزل: يدور هذا Instructable حول إعداد نظام التشغيل الآلي للمنزل ليتم التحكم فيه عبر الهاتف الذكي ، باستخدام اتصال بالإنترنت ، بحيث يمكن الوصول إليه من أي مكان تريده. علاوة على ذلك ، سيتم تنفيذ إجراءات معينة عندما تكون المعايير م
مراقبة المنزل الذكي باستخدام Alexa و Arduino: 9 خطوات (بالصور)
مراقبة المنزل الذكي باستخدام Alexa و Arduino: في العالم الحالي يقضي الناس وقتًا أطول في مكان العمل بدلاً من منازلهم. ومن ثم هناك حاجة إلى نظام مراقبة المنزل حيث يمكن للناس التعرف على ظروف المنزل أثناء وجودهم في العمل. سيكون من الأفضل لو ج