Мазмуну:

RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө: 5 кадам
RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө: 5 кадам

Video: RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө: 5 кадам

Video: RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө: 5 кадам
Video: Женщина вышла замуж за Африканца и родила близнецов, вот что с ними сейчас! 2024, Ноябрь
Anonim
RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө
RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө

Бир кышкы дем алыш күнү мен өз үйүмө бардым, ал жакта абдан суук экенин билдим. Электр менен бир нерсе болгон жана RCD өчүргүч аны өчүрүп койгон, жана жылытуу да өчүп калган. Мен ал жакка келгениме бактылуу болдум, антпесе бир нече күндүн ичинде баары тоңуп калмак, бул түтүктөр менен радиаторлор үчүн абдан жаман.

Менде бир нече Raspberry Pi тегереги жана жылуулук сенсору бар болчу, ошондуктан мен ойлодум - эмне үчүн мен жөнөкөй көзөмөлдөөчү түзүлүш жасабайм? Төмөндөгү көрсөтмөлөр сизде Raspbian менен Raspberry Pi бар жана тармакка туташуу бар деп болжолдонот. Менин учурда бул Raspberry Pi B+ менен Raspbian (2018–06–27-raspbian-stretch-lite).

1 -кадам: Температураны көзөмөлдөө

Температураны көзөмөлдөө
Температураны көзөмөлдөө
Температураны көзөмөлдөө
Температураны көзөмөлдөө

DS18B20 температура сенсорун кантип туташтыруу керек? Муну кантип жасоо керектигин гуглда көрүңүз, жана сиз ушул сыяктуу көптөгөн сүрөттөрдү көрөсүз:

Менин учурда менде кара, сары жана кызыл зымдар болгон. Кара - жерге, жерге - пинге, кызылга - кубатка - 3.3v пинге, ал эми сарыга - маалыматка - GPIO4 пинине өтүү керек, 4.7 кОм резистору менен маалымат менен бийликтин ортосунда туташкан. параллелдүү (алар санарип, жана ар кандай даректерге ээ), сизге бир гана резистор керек. Сенсорду туташтыргандан кийин, raspi-configде 1Wire иштетүү керек:

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 - бул биздин температура сенсорубуз.

Аппаратура даяр. Эми мен мониторинг бөлүгүн орнотушум керек. Мага маалымат көрсөтүүчү жана түзмөк бир азга ажыратылганда же электр энергиясы жок болсо же температура төмөн болсо мага кабар бере турган нерсеге муктажмын. Албетте, бул малина пи болушу мүмкүн эмес, интернетте менин түзмөгүмдү көзөмөлдөгөн сервер же кызмат болушу керек.

Мен жөнөкөй серверди түзүп, хостинг алып, баарын орното алам, бирок күлкү келбейт. Бактыга жараша, кимдир бирөө бул жөнүндө ойлонуп, түзмөгүңүз үчүн 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 нано башкаруу.py

DEVICE_TOKEN = '…'] сызыгын таап, ошол жердеги түзмөктүн энбелгисин көрсөтүңүз. Андан кийин мен программаны жөн эле иштете алам: Бул RoomTemp өзгөрмөсүндө температура иштейт жана кабарлайт:

sudo python башкаруу.py

Бул RoomTemp өзгөрмөсүндө температура жөнүндө иштейт жана кабарлайт.

Белгилей кетчү нерсе, ал бардык onewire ds18b20 сенсорлорун ачат

ds_sensors = ds18b20. DS18B20.find_all ()

жана биринчи табылган сенсорду колдонот:

RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}

Макул, бул оңой эле, анткени үлгү программасында Raspberry Piдеги ds18b20 сенсору менен иштөө үчүн керектүү нерселердин баары бар. Эми мен бийликтин абалын билдирүүнүн жолун табышым керек.

3 -кадам: UPS мониторинги

UPS мониторинги
UPS мониторинги

Кийинки нерсе, UPSтин абалын көзөмөлдөгүм келет, андыктан электр энергиясы үзгүлтүккө учураса, мен баары ажыратылганга чейин билем.

Менде USB көзөмөлү бар APC UPS бар, ошондуктан мен тез арада googled жана 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 UPSTYPE usb DEVICE

Эми мен UPSтен USB кабелин RaspberryPiге туташтырып, UPS табылаарын текшере алам.

sudo apctest

Бул сизге эч кандай ката билдирүүлөрдү бербеши керек.

Эми sevice apcupsd баштоо керек:

sudo systemctl apcupsd баштайт

UPS статусун сураш үчүн мен статус буйругун колдоно алам:

sudo /etc/init.d/apcupsd абалы

Жана ал мындай бир нерсе чыгарат:

APC: 001, 035, 0855DATE: 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 STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 пайыз BCHARGE: 100.0 пайыз TIMELEFT: 293.3 мүнөт MBATTCHG: 5 пайыз MINTIMEL: 3 мүнөт MAXTIME: 0 секунда сезими: орто лотранстар: 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 Уоттссссссссссссссссссссссяси;: 892. R3. МИН USB FW: R3 АТК: 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 ']) if result: return result else: return 'Белгисиз'

Бул абалды 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, ал эми 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 башкаруу.py

Мен UPS статусун түзмөгүмдүн баракчасынан көрө алам.

Эгерде мен UPSти өчүрсөм, абал бир нече секунданын ичинде өзгөрөт, андыктан баары иштейт. Эми мен apcupsd жана control.py системасын баштоодо башташым керек. Apcupsd кызматы эски жана аны заманбап raspbianдан баштоо үчүн, /etc/init.d/apcupsd файлын жогорудагы бир жерге кошуу менен өзгөртүү керек:

### INIT 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:

variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}

Мен 3 виджет коштум - RoomTemp үчүн номер, UPSStatus үчүн текст жана RoomTemp үчүн диаграмма.

Мен эскертмелерди орното алам, ошондуктан температура көрсөтүлгөн чектен чыкканда электрондук кат алам, UPS оффлайнга чыкты же түзмөк өзү керек болгондо маалыматтарды жөнөтпөйт бир нерсе туура эмес болгондо, мен коңшуларыма телефон чалып, эмне болуп жатканын текшерүүсүн суранам. Бул жерде control.py чыныгы коду.

Сунушталууда: