Talaan ng mga Nilalaman:
- Hakbang 1: Pagsubaybay sa Temperatura
- Hakbang 2: Pag-set up ng Cloud4Rpi.io
- Hakbang 3: Pagsubaybay sa UPS
- Hakbang 4: Paghahanda sa "produksyon"
- Hakbang 5: Pagse-set up ng isang Control Panel
Video: Pagmamanman ng DIY House Sa RaspberryPi at Cloud4Rpi: 5 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Isang katapusan ng linggo ng taglamig nagpunta ako sa aking bahay na bayan, at nalaman na sobrang lamig doon. May nangyari sa kuryente at pinatay ito ng RCD breaker, at namatay din ang pag-init. Mapalad ako na napunta ako roon, kung hindi man sa maraming araw ang lahat ay na-freeze na napakasama para sa mga tubo at radiator.
Mayroon akong maraming Raspberry Pi's sa paligid, at isang thermal sensor, kaya naisip ko - bakit hindi ako gumawa ng isang simpleng aparato sa pagsubaybay? Ipinapalagay ng mga tagubilin sa ibaba mayroon kang isang Raspberry Pi na may naka-set up na Raspbian at koneksyon sa network. Sa aking kaso ito ay ang Raspberry Pi B + kasama ang Raspbian (2018-06-27-raspbian-stretch-lite).
Hakbang 1: Pagsubaybay sa Temperatura
Paano ikonekta ang isang sensor ng temperatura ng DS18B20? Google lang kung paano ito gawin, at makikita mo ang maraming mga larawan tulad nito:
Sa aking kaso mayroon akong mga Black, Yellow at Red wires. Ang itim ay lupa, napupunta sa Ground pin, ang pula ay kapangyarihan - napupunta sa 3.3v pin, at ang dilaw ay data - dapat pumunta sa GPIO4 pin, na may 4.7 kOm risistor na konektado sa pagitan ng data at lakas. Tandaan, maaari mong ikonekta ang maraming mga sensor sa kahanay (ang mga ito ay digital, at may iba't ibang mga address), kailangan mo lamang ng isang risistor. Matapos ikonekta ang iyong sensor, dapat mong paganahin ang 1Wire sa raspi-config:
sudo raspi-config
Pumunta sa 5 mga pagpipilian sa Interfacing, paganahin ang P7 1-Wire at i-reboot.
Pagkatapos ay maaari mong subukan kung nakikita mo ang sensor:
sudo modprobe w1-gpiosudo modprobe w1-thermls / sys / bus / w1 / device /
Dapat mong makita ang isang bagay tulad nito:
pi @ vcontrol: ~ $ ls / sys / bus / w1 / aparato / 28–00044eae2dff w1_bus_master1
28–00044eae2dff ang aming sensor ng temperatura.
Handa na ang hardware. Ngayon kailangan kong i-set up ang bahagi ng pagsubaybay. Kailangan ko ng isang bagay na magpapakita sa akin ng data at aabisuhan ako kung ang aparato ay naka-disconnect sandali o walang lakas, o mababa ang temperatura. Malinaw na hindi ito maaaring maging raspberry pi mismo, dapat mayroong ilang server o serbisyo sa internet na sinusubaybayan ang aking aparato.
Maaari akong lumikha ng isang simpleng server, makakuha ng isang pagho-host at i-set up ang lahat, ngunit sa honesly, ayoko. Sa kabutihang palad, may naisip na tungkol dito at lumikha ng cloud4rpi.io - isang cloud control panel para sa iyong aparato.
Hakbang 2: Pag-set up ng Cloud4Rpi.io
Nagbibigay ang Cloud4Rpi ng isang serbisyo na hinahayaan ang iyong aparato na magpadala at tumanggap ng data gamit ang MQTT o HTTP na mga protocol. Mayroon silang client library para sa Python, kaya gagamitin ko ang Python.
Ang mga halimbawa ng Python na kasama ng serbisyo ng Cloud4Rpi ay naglalaman ng code para sa DS18B20 temp sensor.
Kaya't nagpunta ako sa https://cloud4rpi.io, lumikha ng isang account at nagdagdag ng isang bagong aparato doon. Ang pahina ng aparato ay may isang token - isang string na tumutukoy sa aparato, at alin ang dapat na tukuyin sa program na nagpapadala ng data.
Upang magsimula, palaging isang magandang ideya na mag-update ng isang manager ng package at mag-upgrade ng mga pakete (tandaan: maaaring tumagal ng oras kung hindi mo na-upgrade nang ilang sandali):
sudo apt-get update && sudo apt-get upgrade
Pagkatapos, i-install ang git, Python at ang manager ng package nito na Pip:
sudo apt-get install git python python-pip
Pagkatapos, i-install ang cloud4rpi Python library:
sudo pip install cloud4rpi
Sa wakas, handa na akong isulat ang aking control program. Nagsisimula ako mula sa halimbawang magagamit sa
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Ang pangunahing file ng programa ay control.py - Kailangan kong baguhin ito para sa aking mga pangangailangan. Una, i-edit ang programa at i-paste ang isang token:
sudo nano control.py
Humanap ng isang linya na DEVICE_TOKEN = '…'] at tukuyin ang isang token ng aparato doon. Pagkatapos nito ay maaari ko nang patakbuhin ang programa: Gumagana ito at nag-uulat ng isang temperatura sa variable ng RoomTemp:
sudo python control.py
Gumagana ito at nag-uulat ng isang temperatura sa variable ng RoomTemp.
Tandaan na natuklasan nito ang lahat ng mga onewire ds18b20 sensor
ds_sensors = ds18b20. DS18B20.find_all ()
at ginagamit ang unang nahanap na sensor:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] kung ds_sensors iba pa}
Ok, madali iyon, dahil ang sample na programa ay mayroong lahat na muling kinakailangan upang gumana sa sensor ng ds18b20 sa Raspberry Pi. Ngayon kailangan kong maghanap ng paraan upang maiulat ang katayuan ng kuryente.
Hakbang 3: Pagsubaybay sa UPS
Susunod na bagay na nais kong subaybayan ay ang katayuan ng UPS, kaya kung may pagkawala ng kuryente, malalaman ko ang tungkol dito bago mag-disconnect ang lahat.
Mayroon akong isang APC UPS na may kontrol sa USB, kaya't mabilis akong nag-google at nalaman na kailangan ko ng apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Sinubukan ko ng maraming beses upang mai-install ito sa pamamagitan ng apt-get, at hindi ito gumagana para sa akin para sa iba't ibang mga kadahilanan. Ipapakita ko kung paano ito mai-install mula sa mga mapagkukunan.
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
Pagkatapos ay i-edit ko ang apcupsd.conf upang kumonekta sa aking UPS sa pamamagitan ng usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE / dev / ttyS0 UPSTYPE usb DEVICE
Ngayon ay maaari kong mai-plug ang USB cable mula sa UPS hanggang sa RaspberryPi at subukan kung ang UPS ay matatagpuan.
sudo apctest
Dapat itong bigyan ka ng walang mga mensahe ng error.
Ngayon dapat na magsimula ang sevice apcupsd:
sudo systemctl simulan ang apcupsd
Upang quiery status ng UPS maaari akong gumamit ng isang utos ng katayuan:
sudo /etc/init.d/apcupsd katayuan
At maglalabas ito tulad nito:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 May 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 Porsyento BCHARGE: 100.0 Porsyento TIMELEFT: 293.3 Minuto MBATTCHG: 5 Porsyento MINTIMEL: 3 Minuto MAXTIME: 0 Segundo SENSE: Katamtaman LOTRANS: 140.0 Volts HITRANS: 300.0 Volts ALARMDEL: 30 Segundo BATTV: 14.2 Volts LASTXFER: Walang paglilipat mula noong turnon: 2014-06-10 NOMINV: 230 Volts NOMBATTV: 12.0 Volts NOMPOWER: 390 Watts FIRMWARE: 892. R3. USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Kailangan ko ng katayuan - alin ang linya na "STATUS:".
Naglalaman ang library ng Cloud4rpi ng isang module na 'rpy.py' na nagbabalik ng mga parameter ng system ng Raspberry Pi tulad ng hostname o temperatura ng CPU. Dahil ang lahat ng mga param na iyon ay mga resulta ng pagpapatakbo ng ilang mga utos at pag-parse ng output, naglalaman din ito ng isang madaling gamiting pagpapaandar na 'parse_output' na eksaktong ginagawa ko. Ito kung paano makukuha ang aking katayuan sa UPS:
def ups_status (): resulta = rpi.parse_output (r'STATUS / s +: / s + ( S +) ', [' /etc/init.d/apcupsd ',' status ']) kung resulta: bumalik sa ibang resulta: bumalik 'HINDI KILALA'
Upang maipadala ang katayuang ito sa cloud4rpi, kailangan kong ideklara ang isang variable na UPSStatus at igapos ito sa aking ups_status function: Ngayon ay maaari kong patakbuhin ang aking programa:
variable = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
At nakikita ko kaagad ang aking variable sa pahina ng aparato ng cloud4rpi.
Hakbang 4: Paghahanda sa "produksyon"
Gumagana ang Everyting, at ngayon kailangan kong ihanda ang aking aparato sa mode na walang pag-aalaga.
Upang magsimula, aayusin ko ang mga agwat ng oras. Tinutukoy ng agwat ng poll kung gaano kadalas sinusuri ng programa ang temperatura at katayuan ng UPS - itakda ito sa isang segundo.
Ang mga resulta ay ipinapadala sa cloud bawat 5 minuto, at impormasyon sa diagnostic - bawat oras.
# ConstantsDATA_SENDING_INTERVAL = 300 # sec DIAG_SENDING_INTERVAL = 3600 # sec POLL_INTERVAL = 1 # sec
Kapag nagbago ang katayuan ng UPS - ayokong maghintay ng 5 minuto ang aking aparato, at magpapadala agad ako ng data. Kaya't medyo binago ko ang pangunahing loop at ganito ang hitsura:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' habang True: newUPS = ups_status () kung (data_timer <= 0) o (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS kung diag_timer aparato.publish_diag () diag_timer = DIAG_SENDING_INTERVAL pagtulog (POLL_INTERVAL) diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL
Pagsubok: magpatakbo ng script:
sudo python control.py
At maaari kong panoorin ang katayuan ng UPS sa aking pahina ng aparato.
Kung pinapatay ko ang lakas ng UPS, nagbabago ang katayuan sa loob ng ilang segundo, kaya gumagana ang lahat. Ngayon kailangan kong simulan ang apcupsd at ang aking control.py sa pagsisimula ng system. Ang serbisyo ng Apcupsd ay luma na at upang simulan ito sa modernong raspbian, dapat kong baguhin ang /etc/init.d/apcupsd file, sa pamamagitan ng pagdaragdag ng mga linya na ito sa isang lugar sa tuktok:
### BEGIN INIT INFO # Nagbibigay: apcupsd # Kinakailangan-Start: $ lahat # Kinakailangan-Itigil: # Default-Start: 2 3 4 5 # Default-Stop: # Maikling Paglalarawan: APC UPS daemon… ### END INIT INFO #
Pagkatapos paganahin ang serbisyo:
sudo systemctl paganahin ang apcupsd
Pagkatapos simulan ang serbisyo:
sudo systemctl simulan ang apcupsd
Ngayon apcupsd ay magsisimula sa pagsisimula ng system.
Upang mai-install ang control.py bilang isang serbisyo, ginamit ko ang ibinigay na service_install.sh script:
sudo bash service_install.sh ~ / cloud4rpi / control.py
Ngayon ang serbisyo ay nagsimula at ito shouls makaligtas sa isang reboot.
Hakbang 5: Pagse-set up ng isang Control Panel
Pinapayagan ako ng Cloud4rpi na mag-set up ng isang control panel para sa aking aparato. Maaari kang magdagdag ng "mga widget" at maiugnay ito sa mga variable ng aparato.
Nagbibigay ang aking aparato ng dalawang variable na nabasa lamang - RoomTemp at UPSStatus:
variable = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Nagdagdag ako ng 3 mga widget - Bilang para sa RoomTemp, Text para sa UPSStatus at isang Tsart para sa RoomTemp.
Maaari akong mag-set up ng mga alerto, kaya nakatanggap ako ng isang email kapag ang temperatura ay wala sa tinukoy na saklaw, ang UPS ay nag-offline o ang aparato mismo ay hindi nagpapadala ng data kung kailan ito dapat. Ngayon ay nakasisiguro akong ok ang aking bahay sa bansa, at maaari akong maabisuhan kapag may isang bagay na mali, kaya't maaari akong tumawag sa mga kapitbahay at hilingin sa kanila na suriin kung ano ang nangyayari. Narito ang aktwal na code ng control.py.
Inirerekumendang:
Pagmamanman ng Temperatura sa Temperatura at Humidity Gamit ang Cloud ng ESP32 at AskSensors: 6 na Hakbang
Pagsubaybay sa Temperatura ng Temperatura at Humidity Sa Cloud ng ESP32 at AskSensors: Sa tutorial na ito matututunan mo kung paano subaybayan ang temperatura at halumigmig ng iyong silid o desk gamit ang DHT11 at ang ESP32 na konektado sa cloud. Ang aming mga pag-update ng tutorial ay matatagpuan dito. DHT11 Mga detalye: Ang sensor ng DHT11 ay maaaring masukat ang temperatura
Ang Smart Coffee Machine Pump na Kinokontrol ng Raspberry Pi & HC-SR04 Ultrasonic Sensor at Cloud4RPi: 6 na Hakbang
Ang Smart Coffee Machine Pump na Kinokontrol ng Raspberry Pi & HC-SR04 Ultrasonic Sensor at Cloud4RPi: Sa teorya, sa tuwing pupunta ka sa coffee machine para sa iyong morning cup, mayroon lamang isang isang-dalawampung pagkakataon na mapunan mo ang tubig tangke Sa pagsasagawa, gayunpaman, tila ang makina ay sa anumang paraan ay nakakahanap ng isang paraan upang palaging ilagay ang gawaing ito sa iyo. Ang
DIY Rainbow House Decor: 5 Hakbang
DIY Rainbow House Decor: Maligayang pagdating sa aking bagong artikulo … Paggawa ng isang DIY Dekorasyon ng Rainbow House! Ang Arduino ay maaaring magamit upang gumawa ng halos anumang proyekto sa electronics. Dito ko ito ginamit upang makagawa ng isang magandang palamuti para sa iyong bahay. Ang " bahaghari " bahagi ng proyektong ito ay
Remote na Temperatura at Pagmamanman ng Humidity Sa ESP8266 at Blynk App: 15 Mga Hakbang
Remote na Temperatura at Pagmamanman ng Humidity Sa ESP8266 at Blynk App: Ito ang aking unang proyekto sa ESP8266 chip. Nagtayo lang ako ng isang bagong greenhouse malapit sa aking bahay at ito ay kagiliw-giliw para sa akin kung ano ang nangyayari doon sa isang araw? Ibig kong sabihin kung paano nagbabago ang temperatura at halumigmig? Sapat na ang bentilasyon ng greenhouse? Kaya't ako ay nag-dec
Pagmamanman ng Humidity at Temperatura sa Bahay: 11 Mga Hakbang
Kamalayan ng Humidity at Temperatura sa Bahay: Kamusta po kayo! Upang makapagsimula sa pinakamahusay na paraan, isang maliit na kwento tungkol sa proyekto. Kamakailan lang ay nagtapos ako at lumipat sa Austria para sa aking unang posisyon bilang isang engineer. Ang bansa ay maganda ngunit napaka lamig & mahalumigmig sa panahon ng taglamig. Mabilis akong nagsimula