Mundarija:
- 1 -qadam: haroratni nazorat qilish
- 2 -qadam: Cloud4Rpi.io -ni sozlash
- 3 -qadam: UPS monitoringi
- 4 -qadam: "ishlab chiqarishga" tayyorgarlik
- 5 -qadam: Boshqarish panelini sozlash
Video: RaspberryPi va Cloud4Rpi yordamida DIY uylarini kuzatish: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Qishki dam olish kunlarining birida men o'z uyimga bordim va u erda juda sovuq ekanini bildim. Elektr bilan nimadir sodir bo'ldi va RCD uzgichi uni o'chirib qo'ydi va isitish ham o'chdi. Men u erga kelganimga omad kulib boqdi, aks holda bir necha kun ichida hamma narsa muzlab ketardi, bu quvurlar va radiatorlar uchun juda yomon.
Menda bir nechta Raspberry Pi va termal sensor bor edi, shuning uchun men o'yladim - nima uchun men oddiy kuzatuv moslamasini qilmayman? Quyidagi ko'rsatmalarga ko'ra, sizda Raspbian va tarmoq ulanishi o'rnatilgan Raspberry Pi bor. Mening holimda bu Raspbian bilan Raspberry Pi B+ (2018–06–27-raspbian-stretch-lite).
1 -qadam: haroratni nazorat qilish
DS18B20 harorat sensori qanday ulanadi? Buni qanday qilish kerak, google -da, va siz shunga o'xshash ko'plab rasmlarni ko'rasiz:
Mening holatimda menda qora, sariq va qizil simlar bor edi. Qora - erga, erga - pin, qizil - quvvatga - 3,3v pinli, sariq - ma'lumotga - GPIO4 piniga, ma'lumot va quvvat o'rtasida 4,7 kOm qarshilikka ulangan bo'lishi kerak. parallel ravishda (ular raqamli va har xil manzilga ega) sizga faqat bitta rezistor kerak. Sensorni ulaganingizdan so'ng, raspi-configda 1Wire-ni yoqishingiz kerak:
sudo raspi-config
5 ta interfeysga o'ting, P7 1-Wire-ni yoqing va qayta yoqing.
Keyin siz sensorni ko'rishingiz mumkinligini tekshirishingiz mumkin:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Siz shunga o'xshash narsani ko'rishingiz kerak:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff - bu bizning harorat sensori.
Uskunalar tayyor. Endi men monitoring qismini o'rnatishim kerak. Menga ma'lumotni ko'rsatadigan va agar qurilma bir muddat uzilib qolsa yoki quvvat bo'lmasa yoki harorat past bo'lsa, menga xabar beradigan biror narsa kerak. Shubhasiz, bu malina pi bo'lishi mumkin emas, Internetda mening qurilmamni kuzatadigan server yoki xizmat bo'lishi kerak.
Men oddiy server yaratishim, xosting olishim va hamma narsani sozlashim mumkin, lekin men xohlamayman. Yaxshiyamki, kimdir bu haqda o'ylagan va sizning qurilmangiz uchun bulutli boshqaruv paneli - cloud4rpi.io yaratgan.
2 -qadam: Cloud4Rpi.io -ni sozlash
Cloud4Rpi sizning qurilmangizga MQTT yoki HTTP protokollari yordamida ma'lumotlarni yuborish va qabul qilish imkonini beradigan xizmatni taqdim etadi. Ularda Python uchun mijozlar kutubxonasi bor, shuning uchun men Pythondan foydalanaman.
Cloud4Rpi xizmati bilan ta'minlangan Python misollarida allaqachon DS18B20 harorat sensori kodi mavjud.
Shunday qilib, men https://cloud4rpi.io saytiga kirib, hisob yaratdim va u erda yangi qurilma qo'shdim. Qurilma sahifasida token mavjud - bu qurilmani aniqlaydigan va ma'lumotlarni yuboradigan dasturda ko'rsatilishi kerak bo'lgan satr.
Birinchidan, paket menejerini yangilash va paketlarni yangilash har doim yaxshi bo'ladi (eslatma: agar siz bir muncha vaqt yangilanmagan bo'lsangiz, soatlab vaqt ketishi mumkin):
sudo apt-get update && sudo apt-get upgrade
Keyin git, Python va uning paket menejeri Pip -ni o'rnating:
sudo apt-get install python python-pip ni o'rnating
Keyin, cloud4rpi Python kutubxonasini o'rnating:
sudo pip cloud4rpi -ni o'rnatadi
Nihoyat, men o'z nazorat dasturimni yozishga tayyorman. Men https://github.com/cloud4rpi/cloud4rpi-raspberrypi manzilidagi misoldan boshlayman.
git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Asosiy dastur fayli - control.py - men uni ehtiyojlarim uchun o'zgartirishim kerak. Birinchidan, dasturni tahrirlang va belgini qo'ying:
sudo nano control.py
DEVICE_TOKEN = '…'] qatorini toping va u erda qurilma belgisini ko'rsating. Shundan so'ng men dasturni ishga tushirishim mumkin: u RoomTemp o'zgaruvchisida haroratni ishlaydi va hisobot beradi:
sudo python control.py
Bu RoomTemp o'zgaruvchisidagi harorat haqida ishlaydi va xabar beradi.
E'tibor bering, u bitta dw18b20 datchiklarini topadi
ds_sensors = ds18b20. DS18B20.find_all ()
va birinchi topilgan sensordan foydalanadi:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else No}
OK, bu oson edi, chunki namuna dasturida Raspberry Pi ds18b20 sensori bilan ishlash uchun kerak bo'lgan hamma narsa bor. Endi men kuch holatini xabar qilishning yo'lini topishim kerak.
3 -qadam: UPS monitoringi
Men kuzatmoqchi bo'lgan keyingi narsa - bu UPS holati, shuning uchun agar elektr uzilib qolsa, hamma narsa uzilishidan oldin bu haqda bilib olaman.
Menda USB boshqaruvli APC UPS bor, shuning uchun men tezda Google -ni tekshirib ko'rdim va menga apcupsd kerak ekanligini aniqladim. https://www.anites.com/2013/09/monitoring-ups.html… Men uni apt-get orqali o'rnatishga bir necha bor urinib ko'rdim va u turli sabablarga ko'ra men uchun ishlamadi. Men uni manbalardan qanday o'rnatishni ko'rsataman.
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
Keyin usc orqali UPS -ga ulanish uchun apcupsd.conf -ni tahrir qilaman.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 usb DEVICE -ni yangilang
Endi men USB kabelini UPS -dan RaspberryPi -ga ulashim va UPS topilganligini tekshirishim mumkin.
sudo apktest
Bu sizga xato haqida xabar bermasligi kerak.
Endi sevice apcupsd ishga tushirilishi kerak:
sudo systemctl apcupsd -ni ishga tushiring
UPS holatini so'rash uchun men status buyrug'idan foydalanishim mumkin:
sudo /etc/init.d/apcupsd holati
Va shunga o'xshash narsa chiqadi:
APC: 001, 035, 0855 DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 may 2016) debian UPSNAME: vcontrol CABLE: USB kabel haydovchisi: USB UPS drayveri UPSMODE: yolg'iz Boshlanish vaqti: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 foiz BCHARGE: 100.0 foiz TIMELEFT: 293.3 daqiqa MBATTCHG: 5 foiz minut: 3 minut MAXTIME: 0 soniya SENSE: O'rta LOTRANLAR: 140.0 Volt HITRANS: 300.0 Volt ALARMDEL: 30 soniya BATTV: 14.2 Volt LASTXFER: Turnondan beri hech qanday transfer yo'q NUMXFERS: 0 TONBATT: 0 soniya CUMONBATT: 0 soniya XOFFATBATT0: N2: 2014-06-10 NOMINV: 230 voltlik NOMBATTV: 12,0 voltlik NOMPOWER: 390 vattli dasturiy ta'minot: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Menga status kerak - bu "STATUS:" qatori.
Cloud4rpi kutubxonasida "rpy.py" moduli mavjud bo'lib, u Raspberry Pi tizimining parametrlarini qaytaradi, masalan, xost nomi yoki protsessor harorati. Bu parametrlarning barchasi ba'zi buyruqlarni bajarish va chiqishni tahlil qilish natijalari bo'lgani uchun, u menga kerakli narsani bajaradigan qulay "parse_output" funktsiyasini ham o'z ichiga oladi. UPS maqomini qanday olishim mumkin:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+( S+) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return "BILMAYDI"
Bu holatni cloud4rpi -ga yuborish uchun UPSStatus o'zgaruvchisini e'lon qilishim va uni ups_status funktsiyasiga bog'lashim kerak: Endi men o'z dasturimni ishga tushirishim mumkin:
o'zgaruvchilar = {'RoomTemp': {'turi': 'raqamli', 'bog'lash': ds_sensors [0]}, 'UPSStatus': {'turi': 'qator', 'bog'lash': ups_status}}
Va men o'z o'zgaruvchimni darhol cloud4rpi qurilma sahifasida ko'rishim mumkin.
4 -qadam: "ishlab chiqarishga" tayyorgarlik
Hammasi ishlamoqda, endi men qurilmamni qarovsiz rejimga tayyorlashim kerak.
Boshlash uchun men vaqt oralig'ini sozlayman. So'rovlar oralig'i dastur harorati va UPS holatini qanchalik tez -tez tekshirib turishini aniqlaydi - uni bir soniyaga o'rnating.
Natijalar har 5 daqiqada bulutga, diagnostika ma'lumotlari esa - har soatda yuboriladi.
# KonstantalarDATA_SENDING_INTERVAL = 300 # son DIAG_SENDING_INTERVAL = 3600 # son POLL_INTERVAL = 1 # sek
UPS holati o'zgarganda - men qurilmam 5 daqiqa kutishini xohlamayman va men darhol ma'lumotlarni yuboraman. Shunday qilib, men asosiy pastadirni biroz o'zgartirdim va shunday ko'rinadi:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' esa True: newUPS = ups_status () if (data_timer <= 0) yoki (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS = agar diag_ bo'lsa device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL uyqu (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Sinov: skriptni ishga tushirish:
sudo python control.py
Va men UPS holatini qurilmam sahifasida ko'rishim mumkin.
Agar men UPS quvvatini o'chirib qo'ysam, vaziyat bir necha soniya ichida o'zgaradi, shuning uchun hamma narsa ishlaydi, endi tizimni ishga tushirishda apcupsd va control.py ni ishga tushirishim kerak. Apcupsd xizmati eski va uni zamonaviy raspbian -da ishga tushirish uchun /etc/init.d/apcupsd faylini o'zgartirish kerak, bu satrlarni yuqoriga qo'shib:
### INIT INFO INFO-ni boshlang # Ta'minlaydi: apcupsd # Majburiy-Boshlash: $ all # Kerakli-To'xtatish: # Standart-Boshlash: 2 3 4 5 # Standart-To'xtatish: # Qisqa tavsif: APC UPS-daemon… ### END INIT INFO#
Keyin xizmatni yoqing:
sudo systemctl apcupsd -ni yoqadi
Keyin xizmatni boshlang:
sudo systemctl apcupsd -ni ishga tushiring
Endi apcupsd tizimni ishga tushirishda boshlanadi.
Control.py -ni xizmat sifatida o'rnatish uchun men berilgan service_install.sh skriptidan foydalandim:
sudo bash service_install.sh ~/cloud4rpi/control.py
Endi xizmat boshlandi va u qayta yuklashdan omon qoladi.
5 -qadam: Boshqarish panelini sozlash
Cloud4rpi menga qurilmam uchun boshqaruv panelini o'rnatish imkonini beradi. Siz "vidjetlar" qo'shishingiz va ularni qurilma o'zgaruvchilariga ulashingiz mumkin.
Mening qurilmam faqat o'qish uchun ikkita o'zgaruvchini ta'minlaydi - RoomTemp va UPSStatus:
o'zgaruvchilar = {'RoomTemp': {'turi': 'raqamli', 'bog'lash': ds_sensors [0]}, 'UPSStatus': {'turi': 'qator', 'bog'lash': ups_status}}
Men 3 ta vidjet qo'shdim - RoomTemp uchun raqam, UPSStatus uchun matn va RoomTemp uchun jadval.
Men ogohlantirishlarni sozlashim mumkin, shuning uchun harorat belgilangan diapazondan tashqarida bo'lganda, men elektron pochta xabarini olaman, UPS oflayn rejimga o'tdi yoki qurilmaning o'zi kerakli vaqtda ma'lumotlarni yubormadi. Endi mening uyim yaxshi ekanligiga ishonchim komil bo'lishi mumkin va menga xabar berish mumkin Agar biror narsa noto'g'ri bo'lsa, men qo'shnilarimga qo'ng'iroq qilib, nima bo'layotganini tekshirishni so'rashim mumkin. Bu erda control.py ning haqiqiy kodi.
Tavsiya:
MPU-6000 va zarracha foton yordamida harakatni kuzatish: 4 qadam
MPU-6000 va zarracha foton yordamida harakatni kuzatish: MPU-6000-bu 6 o'qli harakatni kuzatish sensori, unga 3 o'qli akselerometr va 3 o'qli giroskop o'rnatilgan. Bu sensor ob'ektning 3 o'lchovli tekislikdagi aniq joylashuvi va joylashuvini samarali kuzatishga qodir. Uni ishga olish mumkin
MPU-6000 va Arduino Nano yordamida harakatni kuzatish: 4 qadam
MPU-6000 va Arduino Nano yordamida harakatni kuzatish: MPU-6000-bu 6 o'qli harakatni kuzatish sensori, unga 3 o'qli akselerometr va 3 o'qli giroskop o'rnatilgan. Bu sensor ob'ektning 3 o'lchovli tekislikdagi aniq joylashuvi va joylashuvini samarali kuzatishga qodir. Uni ishga olish mumkin
Python yordamida Raspberry Pi va AIS328DQTR yordamida tezlashtirishni kuzatish: 6 qadam
Python yordamida Raspberry Pi va AIS328DQTR yordamida tezlashtirishni kuzatish: Menimcha, tezlanish- bu fizikaning ba'zi qonunlariga muvofiq.- Terri Rayli Gepard quvishda tezlikni tez o'zgarishini va tez o'zgarishini qo'llaydi. Eng tez qirg'oqqa chiqadigan jonivor, o'ljani tutish uchun tezligidan foydalanadi.
Python yordamida Raspberry Pi va MMA7455 yordamida tezlashuv turlarini kuzatish: 6 qadam
Python yordamida Raspberry Pi va MMA7455 yordamida tezlashuv turlarini kuzatish: men qoqilmadim, tortish kuchini sinab ko'rdim. Bu hali ham ishlaydi … Tezlashib borayotgan kosmik kemaning tasviri shuni ko'rsatdiki, tortishish vaqtining kengayishi tufayli, sayyoraning eng yuqori nuqtasida joylashgan soat bazadagi tezlikdan ko'ra tezroq bo'ladi. Biroz
Bluetooth LE va RaspberryPi yordamida haroratni kuzatish va yozib olish: 9 qadam (rasmlar bilan)
Bluetooth LE va RaspberryPi yordamida haroratni kuzatish va yozib olish: Bu ko'rsatma Blue Ladios (BLEHome) va RaspberryPi 3B Bluetooth LE sensori bilan ko'p tugunli haroratni kuzatish tizimini qanday yig'ish haqida. Bluetooth LE standartining ishlab chiqilishi tufayli. hozirda mavjud