Мазмуну:
- 1 -кадам: Температураны көзөмөлдөө
- 2 -кадам: Cloud4Rpi.io орнотуу
- 3 -кадам: UPS мониторинги
- 4 -кадам: "Өндүрүшкө" даярдоо
- 5 -кадам: Башкаруу панелин орнотуу
Video: RaspberryPi жана Cloud4Rpi менен DIY үйүн көзөмөлдөө: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бир кышкы дем алыш күнү мен өз үйүмө бардым, ал жакта абдан суук экенин билдим. Электр менен бир нерсе болгон жана 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 түзмөгүңүзгө 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тин абалын көзөмөлдөгүм келет, андыктан электр энергиясы үзгүлтүккө учураса, мен баары ажыратылганга чейин билем.
Менде 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 чыныгы коду.
Сунушталууда:
NODE MCU ЖАНА BLYNK колдонуу менен температура жана нымдуулукту көзөмөлдөө: 5 кадам
NODE MCU ЖАНА BLYNK колдонуу менен температура жана нымдуулукту көзөмөлдөө: Саламатсыздарбы, бул көрсөтмө бизге DHT11-Температура жана нымдуулук сенсорунун жардамы менен Node MCU жана BLYNK тиркемесин колдонуп, атмосферанын температурасын жана нымдуулугун кантип алууну үйрөнөлү
Bluetooth LE жана RaspberryPi менен температураны көзөмөлдөө жана жаздыруу: 9 кадам (сүрөттөр менен)
Bluetooth LE жана RaspberryPi менен температураны көзөмөлдөп жана жаздырыңыз: Бул көрсөтмө Blue Lios (BLEHome) жана RaspberryPi 3B Bluetooth LE сенсорунун катасы менен көп түйүндүү температураны көзөмөлдөө тутумун кантип чогултуу жөнүндө. Bluetooth LE стандартынын өнүгүшүнө рахмат. азыр жеткиликтүү
OpenHAB колдонуу менен RaspberryPi үйүн автоматташтыруу: 9 кадам
OpenHAB менен RaspberryPi Үйдү Автоматташтыруу: Raspberry Pi 3B жана OpenHAB аркылуу үйдү автоматташтыруу. [Милдеттүү эмес] Биз үн менен башкарууну иштетүү үчүн Google Home (же Google Жардамчы) колдонобуз
Esp8266: 5 кадамдарды колдонуп, шаймандарды көзөмөлдөө жана аба ырайын көзөмөлдөө үчүн IoT түзмөгүн кантип жасоо керек
Esp8266 менен шаймандарды көзөмөлдөө жана аба ырайын көзөмөлдөө үчүн IoT түзмөгүн кантип жасоо керек: Интернеттин нерселери (IoT)-бул физикалык түзмөктөрдүн ("туташкан түзмөктөр" жана "акылдуу түзмөктөр" деп да аталат) имараттары, жана башка буюмдар - электроника, программалык камсыздоо, сенсорлор, аткаргычтар жана
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: 9 кадам (сүрөттөр менен)
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: Биз кайыр суроочу робот кылабыз. Бул робот кыжырдантууга же өтүп бара жаткан адамдардын көңүлүн бурууга аракет кылат. Бул алардын жүздөрүн аныктап, аларга лазер менен атууга аракет кылат. Эгер роботко тыйын берсеңиз, ал ыр ырдайт жана бийлейт. Роботко керек болот