Мазмұны:

RaspberryPi және Cloud4Rpi көмегімен DIY үйінің мониторингі: 5 қадам
RaspberryPi және Cloud4Rpi көмегімен DIY үйінің мониторингі: 5 қадам

Бейне: RaspberryPi және Cloud4Rpi көмегімен DIY үйінің мониторингі: 5 қадам

Бейне: RaspberryPi және Cloud4Rpi көмегімен DIY үйінің мониторингі: 5 қадам
Бейне: Гаджеты: обзор модуля Raspberry PI Compute Module 4, плат для него и тестирование NVMe PCIe дисков 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 температура датчигін қалай қосуға болады? Мұны қалай жасау керектігін гуглден біліңіз, сонда сіз көптеген суреттерді көресіз:

Менің жағдайда менде қара, сары және қызыл сымдар болды. Қара жерлендірілген, жерге тұйықталуға, қызыл - қуатқа - 3,3в істікшеге, ал сары - деректерге - GPIO4 түйреуішіне өтуі керек, деректер мен қуат арасында 4,7 кОм резистор қосылған. параллель (олар цифрлық және әр түрлі адрестерге ие) сізге тек бір резистор қажет. Сенсорды қосқаннан кейін 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/құрылғылар/28–00044eae2dff w1_bus_master1

28–00044eae2dff - бұл біздің температура сенсоры.

Аппараттық құрал дайын. Енді маған бақылау бөлігін орнату керек. Маған деректерді көрсететін және құрылғы уақытша ажыратылғанда немесе қуат жоқ болса немесе температура төмен болса, маған хабар беретін нәрсе қажет. Әлбетте, бұл таңқурай пи болуы мүмкін емес, интернетте менің құрылғымды бақылайтын сервер немесе қызмет болуы керек.

Мен қарапайым сервер жасай аламын, хостинг ала аламын және бәрін реттей аламын, бірақ мен мұны қаламаймын. Бақытымызға орай, біреу бұл туралы ойлады және сіздің құрылғыңызға арналған 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 install 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 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] 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

Содан кейін мен UPS -ке usb арқылы қосылу үшін apcupsd.conf өңдеймін.

sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE/dev/ttyS0 usb DEVICE UPSTYPE

Енді UPS -тен RaspberryPi -ге USB кабелін қосып, UPS табылғанын тексере аламын.

sudo аптесті

Ол сізге қате туралы хабар бермеуі керек.

Енді sevice apcupsd іске қосылуы керек:

sudo systemctl apcupsd іске қосылады

UPS күйін сұрау үшін мен күй пәрменін пайдалана аламын:

sudo /etc/init.d/apcupsd күйі

Және бұл келесідей шығарады:

APC: 001, 035, 0855КҮНІ: 2018-10-14 16:55:30 +0300 ХОСТИН: vcontrol НҰСҚАСЫ: 3.14.14 (31 мамыр 2016 ж.) Debian UPSNAME: vcontrol CABLE: USB кабельдік жүргізуші: USB UPS драйвері UPSMODE: Жалғыз тұру БАСТАУ УАҚЫТЫ: 2018-10-14 16:54:28 +0300 МОДЕЛІ: Back-UPS XS 650CI МӘРТЕБЕСІ: Желідегі желі: 238,0 Вольт ЖҮК: 0,0 пайыздық BCHARGE: 100,0 пайыз УАҚЫТ: 293,3 минут MBATTCHG: 5 пайыз мини: 3 минут MAXTIME: 0 секунд сезім: Орташа лотран: 140,0 вольт HITRANS: 300,0 вольт ALARMDEL: 30 секунд BATTV: 14,2 вольт LASTXFER: турноннан бері аударымдар жоқ NUMXFERS: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATF0: N2/A08: 2014-06-10 NOMINV: 230 Вольт NOMBATTV: 12.0 Вольт NOMPOWER: 390 Ватт ЖАБДЫҚТАР: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300

Маған статус қажет - бұл «МӘРТЕБЕСІ» жолы.

Cloud4rpi кітапханасында хост атауы немесе процессордың температурасы сияқты Raspberry Pi жүйесінің параметрлерін қайтаратын 'rpy.py' модулі бар. Бұл барлық параметрлер кейбір командаларды орындау мен шығаруды талдаудың нәтижесі болғандықтан, онда маған қажет нәрсені жасайтын ыңғайлы 'parse_output' функциясы бар. Менің UPS мәртебемді осылай алуға болады:

def ups_status (): нәтиже = 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 минут сайын бұлтқа жіберіледі, ал диагностикалық ақпарат - әр сағат сайын.

# ТұрақтыDATA_SENDING_INTERVAL = 300 # сек DIAG_SENDING_INTERVAL = 3600 # sec 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 = егер 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 # Қажетті-Бастау: $ барлығы # Міндетті-Тоқтату: # Әдепкі-Бастау: 2 3 4 5 # Әдепкі тоқтату: # Қысқа сипаттама: APC UPS демоны… ### 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:

айнымалылар = {'RoomTemp': {'түрі': 'сандық', 'байланыстыру': ds_sensors [0]}, 'UPSStatus': {'түрі': 'жол', 'байланыстыру': ups_status}}

Мен 3 виджет қостым - RoomTemp нөмірі, UPSStatus мәтіні және RoomTemp диаграммасы.

Мен ескертулерді орната аламын, сондықтан температура белгіленген диапазонда болмаған кезде, электрондық пошта аламын, UPS желіден тыс күйге өтті немесе құрылғының өзі деректерді жіберу керек емес. Егер бірдеңе дұрыс болмаса, мен көршілерге қоңырау шалып, не болып жатқанын тексеруді сұраймын. Міне, control.py нақты коды.

Ұсынылған: