Агуулгын хүснэгт:

RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт: 5 алхам
RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт: 5 алхам

Видео: RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт: 5 алхам

Видео: RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт: 5 алхам
Видео: Замена отопления в новостройке. Подключение. Опрессовка. #17 2024, Арваннэгдүгээр
Anonim
RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт
RaspberryPi болон Cloud4Rpi ашиглан DIY байшингийн хяналт

Нэг өвлийн амралтын өдөр би хөдөө байшиндаа очоод тэнд маш хүйтэн байгааг мэдэв. Цахилгаантай холбоотой ямар нэгэн зүйл тохиолдсон бөгөөд RCD таслагч унтраасан бөгөөд халаалт нь бас унтарсан байна. Би тэнд ирсэн нь азтай байсан, эс тэгвээс хэд хоногийн дараа бүх зүйл хөлдөх байсан бөгөөд энэ нь хоолой, радиаторын хувьд маш муу юм.

Надад хэд хэдэн Raspberry Pi, дулааны мэдрэгч байсан тул би яагаад энгийн хяналтын төхөөрөмж хийхгүй байна гэж бодлоо. Доорх заавар нь танд Raspbian, сүлжээний холболттой Raspberry Pi байна гэж үзнэ. Миний хувьд энэ бол Raspberry-тай Raspberry Pi B+ (2018–06–27-raspbian-stretch-lite) юм.

Алхам 1: Температурын хяналт

Температурын хяналт
Температурын хяналт
Температурын хяналт
Температурын хяналт

DS18B20 температур мэдрэгчийг хэрхэн холбох вэ? Үүнийг хэрхэн яаж хийхийг google -ээс харвал ийм зураг маш олон харагдах болно.

Миний хувьд хар, шар, улаан утастай байсан. Хар нь газардуулгатай, газардуулгын зүү рүү, улаан нь 3.3v зүү рүү, шар нь өгөгдөлтэй байдаг - өгөгдөл ба тэжээлийн хооронд 4.7 кОм эсэргүүцэлтэй холбогдсон GPIO4 зүү рүү очих ёстой. зэрэгцээ (тэдгээр нь дижитал хэлбэртэй, өөр өөр хаягтай) танд зөвхөн нэг эсэргүүцэл хэрэгтэй болно. Мэдрэгчээ холбосны дараа raspi-config дээр 1Wire-ийг идэвхжүүлэх хэрэгтэй.

sudo raspi-config

Интерфэйсийн 5 сонголт руу очоод 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 бол бидний температур мэдрэгч юм.

Тоног төхөөрөмж бэлэн байна. Одоо би хяналтын хэсгийг тохируулах хэрэгтэй. Надад өгөгдлийг харуулах зүйл хэрэгтэй бөгөөд хэрэв төхөөрөмж хэсэг хугацаанд салгагдсан эсвэл цахилгаангүй эсвэл температур бага байвал надад мэдэгдэх болно. Мэдээжийн хэрэг, энэ нь өөрөө бөөрөлзгөнө pi биш байж магадгүй, интернетэд миний төхөөрөмжийг хянадаг сервер эсвэл үйлчилгээ байх ёстой.

Би энгийн сервер үүсгэж, хостинг хийж, бүх зүйлийг тохируулж чадна, гэхдээ би хүсэхгүй байна. Аз болоход хэн нэгэн энэ талаар аль хэдийн бодож, таны төхөөрөмжид зориулсан cloud4rpi.io үүсгэсэн байна.

Алхам 2: Cloud4Rpi.io -г тохируулах

Cloud4Rpi.io -ийг тохируулж байна
Cloud4Rpi.io -ийг тохируулж байна

Cloud4Rpi нь таны төхөөрөмжийг MQTT эсвэл HTTP протокол ашиглан өгөгдөл илгээх, хүлээн авах боломжийг олгодог үйлчилгээ үзүүлдэг. Тэд Python -ийн үйлчлүүлэгчийн номын сантай тул би Python ашиглах болно.

Cloud4Rpi үйлчилгээнд дагалддаг Python жишээнд DS18B20 температур мэдрэгчийн код аль хэдийн орсон байдаг.

Тиймээс би https://cloud4rpi.io руу орж, данс үүсгэж, тэнд шинэ төхөөрөмж нэмсэн. Төхөөрөмжийн хуудас нь жетонтой бөгөөд төхөөрөмжийг тодорхойлдог мөр бөгөөд өгөгдлийг илгээдэг програмд зааж өгөх ёстой.

Эхлэхийн тулд багцын менежерийг шинэчлэх, багцыг шинэчлэх нь үргэлж зөв байдаг (анхаарна уу: хэрэв та хэсэг хугацаанд сайжруулаагүй бол хэдэн цаг зарцуулж магадгүй юм):

sudo apt-get update && sudo apt-get upgrade

Дараа нь git, Python болон түүний багцын менежер Pip -ийг суулгаарай:

sudo apt-get суулгах python python-pip

Дараа нь cloud4rpi Python номын санг суулгаарай:

sudo pip cloud4rpi суулгана уу

Эцэст нь би хяналтын програмаа бичихэд бэлэн байна. Би https://github.com/cloud4rpi/cloud4rpi-raspberrypi вэбсайтаас авах боломжтой жишээнээс эхэлж байна.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi

Програмын үндсэн файл бол control.py - Би үүнийг өөрийн хэрэгцээнд нийцүүлэн өөрчлөх хэрэгтэй. Нэгдүгээрт, програмыг засаад жетоныг оруулна уу:

sudo нано хяналт.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 өөр байхгүй бол}

За, энэ нь хялбар байсан, учир нь дээжийн програм нь Raspberry Pi дээр ds18b20 мэдрэгчтэй ажиллахад шаардлагатай бүх зүйлийг агуулдаг. Одоо би хүчний статусыг мэдээлэх арга замыг олох хэрэгтэй байна.

Алхам 3: UPS -ийн хяналт

UPS хяналт
UPS хяналт

Дараагийн ажиглахыг хүсч буй зүйл бол UPS -ийн статус, тиймээс хэрэв цахилгаан тасарсан бол бүх зүйл салгахаас өмнө би энэ талаар мэдэх болно.

Би USB удирдлагатай APC UPS -тэй тул маш хурдан Google -ийг шалгаж үзээд 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

Дараа нь би usc -ээр дамжуулан UPS -тэй холбогдохын тулд apcupsd.conf файлыг засдаг.

sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE ухаалаг UPSCABLE usb # #UPSTYPE apcsmart #DEVICE/dev/ttyS0 usb DEVICE -ийг UPSTYPE

Одоо би USB кабелийг UPS -ээс RaspberryPi -д холбож, UPS олдох эсэхийг шалгаж болно.

sudo apestest

Энэ нь танд алдааны мэдэгдэл өгөх ёсгүй.

Одоо sevice 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 (2016 оны 5-р сарын 31) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Driver UPSMODE: ганцаараа ЭХЛЭХ ЦАГ: 2018-10-14 16:54:28 +0300 ЗАГВАР: Back-UPS XS 650CI БАЙДАЛ: ОНЛАЙН ЛИНЕВ: 238.0 Вольт LOADPCT: 0.0 хувь BCHARGE: 100.0 хувь TIMELEFT: 293.3 минут MBATTCHG: 5 хувь MINTIMEL: 3 минут MAXTIME: 0 секундын мэдрэхүй: дунд LOTRANS: 140.0 вольт HITRANS: 300.0 вольт ALARMDEL: 30 секунд BATTV: 14.2 вольт LASTXFER: турноос хойш шилжүүлэг хийгээгүй NUMXFERS: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATF02: N2/A2: 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

Надад статус хэрэгтэй бөгөөд энэ нь "БАЙДАЛ:" мөр юм.

Cloud4rpi номын санд Raspberry Pi системийн параметрүүд, тухайлбал хостын нэр эсвэл cpu температурыг буцааж өгдөг "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 функцтэй холбох шаардлагатай байна: Одоо би програмаа ажиллуулж болно:

хувьсагчид = {'RoomTemp': {'төрөл': 'тоон', 'холбох': ds_sensors [0]}, 'UPSStatus': {'төрөл': 'мөр', 'холбох': ups_status}}

Тэгээд би хувьсагчаа cloud4rpi төхөөрөмжийн хуудаснаас шууд харах боломжтой.

Алхам 4: "үйлдвэрлэлд" бэлтгэх

"Үйлдвэрлэх" ажилд бэлдэж байна
"Үйлдвэрлэх" ажилд бэлдэж байна

Бүгд ажиллаж байна, одоо би төхөөрөмжийг хараа хяналтгүй горимд бэлтгэх хэрэгтэй.

Эхлээд би цагийн интервалыг тохируулах гэж байна. Санал асуулгын интервал нь програмын температур, UPS -ийн байдлыг хэр олон удаа шалгаж байгааг тодорхойлдог бөгөөд үүнийг нэг секундэд тохируулна.

Үр дүнг 5 минут тутамд үүл рүү, оношлогооны мэдээллийг цаг тутамд илгээдэг.

# ConstanttsDATA_SENDING_INTERVAL = 300 # sec DIAG_SENDING_INTERVAL = 3600 # sec POLL_INTERVAL = 1 # sec

UPS -ийн төлөв өөрчлөгдөхөд би төхөөрөмжөө 5 минут хүлээхийг хүсэхгүй байгаа бөгөөд би тэр даруй өгөгдлийг илгээдэг. Тиймээс би үндсэн гогцоог бага зэрэг өөрчилсөн бөгөөд иймэрхүү харагдаж байна.

data_timer = 0diag_timer = 0 prevUPS = 'ОНЛАЙН' байхад True: newUPS = ups_status () if (data_timer <= 0) эсвэл (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS = diag_ бол 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 файлыг өөрчлөх хэрэгтэй.

### INIT INFO INFO-г эхлүүлэх # Оруулдаг: apcupsd # Шаардлагатай-Эхлэл: $ all # Шаардлагатай-Stop: # Анхдагч-Эхлэл: 2 3 4 5 # Default-Stop: # Богино тайлбар: APC UPS демон… ### ТӨГСГӨЛ МЭДЭЭЛЭЛ#

Дараа нь үйлчилгээг идэвхжүүлнэ үү:

sudo systemctl apcupsd -ийг идэвхжүүлнэ

Дараа нь үйлчилгээг эхлүүлнэ үү:

sudo systemctl apcupsd эхлүүлнэ

Одоо apcupsd системийг эхлүүлэх үед эхлүүлэх болно.

Control.py -ийг үйлчилгээ болгон суулгахын тулд би нийлүүлсэн service_install.sh скриптийг ашигласан болно.

sudo bash service_install.sh ~/cloud4rpi/control.py

Одоо үйлчилгээ эхэлж, дахин ачаалахад амьд үлдэх болно.

Алхам 5: Хяналтын самбарыг тохируулах

Хяналтын самбарыг тохируулах
Хяналтын самбарыг тохируулах

Cloud4rpi нь миний төхөөрөмжийн хяналтын самбарыг тохируулах боломжийг олгодог. Та "виджет" нэмж, тэдгээрийг төхөөрөмжийн хувьсагчдад холбох боломжтой.

Миний төхөөрөмж RoomTemp ба UPSStatus гэсэн зөвхөн унших боломжтой хоёр хувьсагчтай.

хувьсагчид = {'RoomTemp': {'төрөл': 'тоон', 'холбох': ds_sensors [0]}, 'UPSStatus': {'төрөл': 'мөр', 'холбох': ups_status}}

Би 3 виджет нэмсэн - RoomTemp -ийн тоо, UPSStatus -ийн текст, RoomTemp -ийн диаграм.

Би сэрэмжлүүлэг тохируулж чаддаг тул температур нь заасан хязгаараас хэтэрсэн, UPS офлайн горимд шилжсэн эсвэл төхөөрөмж өөрөө өгөгдөл илгээхгүй байх үед имэйл хүлээн авдаг. Хэрэв ямар нэг зүйл буруу болвол би хөршүүдтэйгээ утсаар ярьж, юу болж байгааг шалгаж өгөхийг хүсч болно. Энд control.py -ийн бодит код байна.

Зөвлөмж болгож буй: