Satura rādītājs:
- 1. darbība: temperatūras kontrole
- 2. darbība. Cloud4Rpi.io iestatīšana
- 3. solis: UPS uzraudzība
- 4. darbība: sagatavošanās “ražošanai”
- 5. darbība: vadības paneļa iestatīšana
Video: DIY mājas uzraudzība, izmantojot RaspberryPi un Cloud4Rpi: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Kādā ziemas nedēļas nogalē es devos uz savu lauku māju un uzzināju, ka tur ir ļoti auksts. Kaut kas bija noticis ar elektrību, un RCD slēdzis to bija izslēdzis, un arī apkure tika izslēgta. Man paveicās, ka es tur ierados, pretējā gadījumā pēc vairākām dienām viss būtu sasalis, kas ir ļoti slikti caurulēm un radiatoriem.
Man apkārt bija vairāki Raspberry Pi un siltuma sensors, tāpēc es domāju - kāpēc es neizveidoju vienkāršu uzraudzības ierīci? Turpmākajos norādījumos tiek pieņemts, ka jums ir iestatīts Raspberry Pi ar Raspbian un ir izveidots tīkla savienojums. Manā gadījumā tas ir Raspberry Pi B+ ar Raspbian (2018–06–27-raspbian-stretch-lite).
1. darbība: temperatūras kontrole
Kā pieslēgt temperatūras sensoru DS18B20? Vienkārši google, kā to izdarīt, un jūs redzēsit daudz šādu attēlu:
Manā gadījumā man bija melni, dzelteni un sarkani vadi. Melnais ir iezemēts, iet uz zemes tapu, sarkanais ir strāvas stiprums - līdz 3,3 voltu tapai, un dzeltenais ir dati - jāiet uz GPIO4 tapu, ar 4,7 kOm rezistoru, kas savienots starp datiem un barošanu. Piezīme. Jūs varat pievienot vairākus sensorus paralēli (tie ir digitāli un tiem ir dažādas adreses), jums ir nepieciešams tikai viens rezistors. Pēc sensora pievienošanas raspi konfigurācijā jāiespējo 1Wire:
sudo raspi-config
Dodieties uz 5 saskarnes opcijām, iespējojiet P7 1-Wire un pārstartējiet.
Pēc tam varat pārbaudīt, vai redzat sensoru:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Jums vajadzētu redzēt kaut ko līdzīgu šim:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff ir mūsu temperatūras sensors.
Aparatūra ir gatava. Tagad man jāiestata uzraudzības daļa. Man vajag kaut ko, kas parādītu man datus un paziņotu, ja ierīce kādu laiku ir atvienota vai nav strāvas, vai temperatūra ir zema. Acīmredzot tas nevar būt pats aveņu pi, internetam vajadzētu būt kādam serverim vai pakalpojumam, kas uzrauga manu ierīci.
Es varu izveidot vienkāršu serveri, iegūt mitināšanu un visu iestatīt, bet es negribu. Par laimi, kāds par to jau ir padomājis un izveidojis cloud4rpi.io - mākoņa vadības paneli jūsu ierīcei.
2. darbība. Cloud4Rpi.io iestatīšana
Cloud4Rpi nodrošina pakalpojumu, kas ļauj jūsu ierīcei nosūtīt un saņemt datus, izmantojot MQTT vai HTTP protokolus. Viņiem ir klientu bibliotēka Python, tāpēc es izmantošu Python.
Python piemēros, kas iekļauti pakalpojumā Cloud4Rpi, jau ir DS18B20 temperatūras sensora kods.
Tāpēc es devos uz vietni https://cloud4rpi.io, izveidoju kontu un pievienoju jaunu ierīci. Ierīces lapā ir marķieris - virkne, kas identificē ierīci un kas jānorāda programmā, kas sūta datus.
Sākumā vienmēr ieteicams atjaunināt pakotņu pārvaldnieku un jaunināt pakotnes (piezīme: var paiet stundas, ja neesat kādu laiku jauninājis):
sudo apt-get update && sudo apt-get upgrade
Pēc tam instalējiet git, Python un tā pakotņu pārvaldnieku Pip:
sudo apt-get instalēt git python python-pip
Pēc tam instalējiet cloud4rpi Python bibliotēku:
sudo pip instalēt cloud4rpi
Visbeidzot, es esmu gatavs uzrakstīt savu kontroles programmu. Sāku ar piemēru, kas pieejams vietnē
git klons https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Galvenais programmas fails ir control.py - man tas ir jāpārveido savām vajadzībām. Vispirms rediģējiet programmu un ielīmējiet marķieri:
sudo nano control.py
Atrodiet rindu DEVICE_TOKEN = '…'] un norādiet tur ierīces marķieri. Pēc tam es varu vienkārši palaist programmu: tā darbojas un ziņo par temperatūru RoomTemp mainīgajā:
sudo python control.py
Tas darbojas un ziņo par temperatūru RoomTemp mainīgajā.
Ņemiet vērā, ka tas atklāj visus onewire ds18b20 sensorus
ds_sensors = ds18b20. DS18B20.find_all ()
un izmanto pirmo atrasto sensoru:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0], ja ds_sensors cits Nav}
Labi, tas bija viegli, jo paraugprogrammā ir viss nepieciešamais, lai darbotos ar Raspberry Pi sensoru ds18b20. Tagad man jāatrod veids, kā ziņot par jaudas statusu.
3. solis: UPS uzraudzība
Nākamā lieta, ko vēlos uzraudzīt, ir UPS statuss, tādēļ, ja ir strāvas padeves pārtraukums, es par to uzzināšu, pirms viss tiek atvienots.
Man ir APC UPS ar USB vadību, tāpēc ātri pameklēju google un atklāju, ka man ir nepieciešams apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Es vairākas reizes mēģināju to instalēt, izmantojot apt-get, un dažādu iemeslu dēļ tas man nedarbojās. Es parādīšu, kā to instalēt no avotiem.
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
Tad es rediģēju apcupsd.conf, lai izveidotu savienojumu ar manu UPS, izmantojot USB.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Tagad es varu pievienot USB kabeli no UPS uz RaspberryPi un pārbaudīt, vai UPS tiks atrasts.
sudo apctest
Tam nevajadzētu sniegt nekādus kļūdu ziņojumus.
Tagad jāsāk lietot pakalpojumu apcupsd:
sudo systemctl sākt apcupsd
Lai uzzinātu UPS statusu, varu izmantot statusa komandu:
sudo /etc/init.d/apcupsd statuss
Un tas izdos kaut ko līdzīgu šim:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSIJA: 3.14.14 (2016. gada 31. maijs) STARTTIME: 2018-10-14 16:54:28 +0300 MODELIS: Back-UPS XS 650CI STATUSS: ONLINE LINEV: 238.0 volti LOADPCT: 0.0 procenti BCHARGE: 100.0 procenti LAIKS: 293.3 minūtes MBATTCHG: 5 procenti MINTIMEL: 3 minūtes MAXTIME: 0 sekundes SENSE: vidēji LOTRĀNI: 140.0 volti HITRĀNI: 300.0 volti ALARMDEL: 30 sekundes BATTV: 14.2 volti LASTXFER: nav pārsūtīšanas kopš kārtas NUMXFERS: 0 TONBATT: 0 sekundes CUMONBATT: 0 sekundes XOFFBATT: N/A 3 STAT0000: 2014-06-10 NOMINV: 230 volti NOMBATTV: 12,0 volti NOMPOWER: 390 vati FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Man ir nepieciešams statuss - rinda “STATUS:”.
Cloud4rpi bibliotēkā ir modulis “rpy.py”, kas atgriež Raspberry Pi sistēmas parametrus, piemēram, resursdatora nosaukumu vai CPU temperatūru. Tā kā visi šie parametri ir dažu komandu izpildes un izvades rezultātu rezultāti, tajā ir arī ērta funkcija “parses izvade”, kas dara tieši to, kas man nepieciešams. UPS statusu var iegūt šādi:
def ups_status (): rezultāts = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) ja rezultāts: atgriešanās rezultāts cits: atgriešanās "NEZINĀTS"
Lai nosūtītu šo statusu uz cloud4rpi, man ir jādeklarē mainīgais UPSStatus un jāsaista tas ar funkciju ups_status: Tagad es varu palaist savu programmu:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Un es uzreiz varu redzēt savu mainīgo cloud4rpi ierīces lapā.
4. darbība: sagatavošanās “ražošanai”
Viss darbojas, un tagad man ir jāsagatavo ierīce bez uzraudzības režīmam.
Sākumā es pielāgošu laika intervālus. Aptaujas intervāls nosaka, cik bieži programma pārbauda temperatūru un UPS statusu - iestatiet to uz vienu sekundi.
Rezultāti tiek nosūtīti uz mākoni ik pēc 5 minūtēm, bet diagnostikas informācija - katru stundu.
# KonstantesDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Kad mainās UPS statuss - es nevēlos, lai mana ierīce gaidītu 5 minūtes, un es nekavējoties sūtu datus. Tāpēc esmu nedaudz mainījis galveno cilpu, un tas izskatās šādi:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE', kamēr True: newUPS = ups_status () ja (data_timer <= 0) vai (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS = diag device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL miega režīms (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Pārbaude: palaidiet skriptu:
sudo python control.py
Un es savā ierīces lapā varu skatīties UPS statusu.
Ja es izslēdzu UPS barošanu, statuss mainās pēc pāris sekundēm, tāpēc viss darbojas. Tagad man ir jāuzsāk apcupsd un mana control.py sistēmas palaišanas laikā. Apcupsd pakalpojums ir vecs, un, lai to sāktu ar mūsdienu raspbian, man jāmaina /etc/init.d/apcupsd fails, pievienojot šīs rindiņas kaut kur augšpusē:
### SĀKT INIT INFO # Sniedz: apcupsd # Obligāts sākums: $ viss # Obligāts apstāšanās: # Noklusējuma sākums: 2 3 4 5 # Default-Stop: # Īss apraksts: APC UPS dēmons… ### END INIT INFO#
Pēc tam iespējojiet pakalpojumu:
sudo systemctl iespējot apcupsd
Pēc tam sāciet pakalpojumu:
sudo systemctl sākt apcupsd
Tagad apcupsd tiks palaists sistēmas startēšanas laikā.
Lai instalētu control.py kā pakalpojumu, es izmantoju komplektā iekļauto skriptu service_install.sh:
sudo bash service_install.sh ~/cloud4rpi/control.py
Tagad pakalpojums ir sākts, un tam ir jāizdzīvo pēc atsāknēšanas.
5. darbība: vadības paneļa iestatīšana
Cloud4rpi ļauj man ierīcē iestatīt vadības paneli. Varat pievienot “logrīkus” un saistīt tos ar ierīces mainīgajiem.
Mana ierīce nodrošina divus tikai lasāmus mainīgos - RoomTemp un UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Es pievienoju 3 logrīkus - RoomTemp numurs, UPSStatus teksts un RoomTemp diagramma.
Es varu iestatīt brīdinājumus, tāpēc es saņemu e -pastu, kad temperatūra ir ārpus noteiktā diapazona, UPS pārgāja bezsaistē vai pati ierīce nesūta datus, kad vajadzētu. Tagad es varu būt pārliecināts, ka mana lauku māja ir kārtībā, un mani var informēt kad kaut kas nav kārtībā, tāpēc varu piezvanīt kaimiņiem un lūgt viņus pārbaudīt notiekošo. Šeit ir faktiskais control.py kods.
Ieteicams:
Paātrinājuma uzraudzība, izmantojot Raspberry Pi un AIS328DQTR, izmantojot Python: 6 soļi
Paātrinājuma uzraudzība, izmantojot Raspberry Pi un AIS328DQTR, izmantojot Python: Paātrinājums ir ierobežots, es domāju, ka saskaņā ar dažiem fizikas likumiem.- Terijs Rilejs A gepards, dzenoties pakaļ, izmanto pārsteidzošu paātrinājumu un ātras ātruma izmaiņas. Ātrākā radība krastā laiku pa laikam izmanto savu maksimālo tempu, lai noķertu laupījumu
DIY balss/interneta kontrolēta mājas automatizācija un uzraudzība, izmantojot ESP8266 un Google Home Mini: 6 soļi
DIY balss/interneta kontrolēta mājas automatizācija un uzraudzība, izmantojot ESP8266 un Google Home Mini: Hei !! Pēc ilga pārtraukuma es esmu šeit, jo mums visiem ir jādara kaut kas garlaicīgs (darbs), lai nopelnītu. Pēc visiem MĀJAS AUTOMĀCIJAS rakstiem, kurus esmu rakstījis no BLUETOOTH, IR, Local WIFI, Cloud, ti, sarežģītajiem, * TAGAD * nāk vieglākais, bet visefektīvākais
Raspberry Pi mājas uzraudzība ar Dropbox: 7 soļi
Raspberry Pi mājas uzraudzība, izmantojot Dropbox: šī apmācība parādīs, kā izveidot vienkāršu un paplašināmu mājas uzraudzības sistēmu, izmantojot Raspberry Pi, tīmekļa kameru, dažas elektriskās sastāvdaļas un savu Dropbox kontu. Gatavā sistēma ļaus jums attālināti pieprasīt un skatīt attēlus no
Mājas automatizācija, izmantojot Android un Arduino: atveriet vārtus, atgriežoties mājās: 5 soļi
Mājas automatizācija, izmantojot Android un Arduino: atveriet vārtus, kad atgriezīsities mājās: Šī pamācība ir paredzēta mājas automatizācijas sistēmas iestatīšanai, lai to kontrolētu, izmantojot viedtālruni, izmantojot interneta savienojumu, lai tai varētu piekļūt no jebkuras vietas, kur tas nepieciešams. Turklāt tā veiks noteiktas darbības ikreiz, kad tiks izpildīts kāds kritērijs
Viedās mājas uzraudzība, izmantojot Alexa un Arduino: 9 soļi (ar attēliem)
Viedās mājas uzraudzība, izmantojot Alexa un Arduino: Pašreizējā pasaulē cilvēki vairāk laika pavada darba vietā, nevis mājās. Tāpēc ir nepieciešama mājas uzraudzības sistēma, kurā cilvēki darba laikā var iepazīt mājas apstākļus. Būtu vēl labāk, ja viens