Мазмұны:
- 1 -қадам: Температураны бақылау
- 2 -қадам: Cloud4Rpi.io орнату
- 3 -қадам: UPS мониторингі
- 4 -қадам: «Өндіріске» дайындық
- 5 -қадам: Басқару тақтасын орнату
Бейне: RaspberryPi және Cloud4Rpi көмегімен DIY үйінің мониторингі: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Қыстың бір демалысында мен өз үйіме бардым, онда өте суық екенін білдім. Электрмен бірдеңе болды, 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 сіздің құрылғыңызға 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 күйі, сондықтан егер электр қуаты үзілсе, мен бәрі ажыратылмас бұрын бұл туралы білетін боламын.
Менде 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 нақты коды.
Ұсынылған:
Google Assistant көмегімен басқару үйінің шамдары Arduino көмегімен: 7 қадам
Google Assistant көмегімен басқару үйінің шамдары Arduino қолданады: (2020 ж. 22 тамыздағы жаңартулар: Бұл нұсқаулық 2 жаста және кейбір үшінші тарап қосымшаларына негізделген. Олардың кез келген өзгерісі бұл жобаны жұмыс істемеуі мүмкін. Ол мүмкін немесе мүмкін емес) қазір жұмыс істеңіз, бірақ сіз оны сілтеме ретінде орындап, сәйкес өзгерте аласыз
СӨЙЛЕУ ЖӘНЕ NODEMCU ҚОЛДАНУЛЫ ҚОЛДАНУДЫ MQ7-ЛАУЛАНУ МОНИТОРИНГІ: 4 қадам
СӨЙЛЕУ ЖӘНЕ НОДЕМКУДІ ҚОЛДАНУДЫ ҚОЛДАНУҒА MQ7-ЛАУЛАНУ МОНИТОРИНГІ: Ластану-біздің қазіргі әлемнің басты мәселесі, бірақ біз өзіміздің ластануымызды қалай жақын арада бақылай аламыз, енді оны бастау оңай
Bluetooth LE және RaspberryPi көмегімен температураны бақылау және жазу: 9 қадам (суреттермен)
Bluetooth LE және RaspberryPi көмегімен температураны бақылау және тіркеу: Бұл нұсқаулық Blue RADIO (BLEHome) мен RaspberryPi 3B Bluetooth LE сенсорлы қатесі бар температуралық бақылаудың көп түйінді жүйесін қалай қосуға болатындығы туралы. Bluetooth LE стандартының арқасында. қазір қол жетімді
ESP8266 және AskSensors IoT Cloud көмегімен өсімдіктердің мониторингі мен ескертулері: 6 қадам
ESP8266 мен AskSensors IoT Cloud көмегімен өсімдіктердің мониторингі мен ескертулері: Бұл жоба ESP8266 мен AskSensors IoT платформасын қолдана отырып, өсімдіктерді бақылаудың ақылды жүйесін құруға бағытталған. Бұл жүйе суару шешімдерінің объективті критерийлерін қамтамасыз ету үшін топырақтың ылғалдылық деңгейін бақылау үшін пайдаланылуы мүмкін. олар суаруды қамтамасыз етеді
MQTT/Google үйінің есік қоңырауы ESP-01 көмегімен: 6 қадам
ESP-01 көмегімен MQTT/Google үйінің есік қоңырауы: Сіз есік қоңырауының дыбысын естімейтін үйдің бір бөлігінде болғандықтан, сіздің қоңырауыңызды басқан қонаққа жауап бермедіңіз бе? мысалы, жертөле, жабық жатын бөлме, немесе сіз теледидар көріп немесе музыка тыңдап жүрген шығарсыз