Orodha ya maudhui:
- Hatua ya 1: Ufuatiliaji wa Joto
- Hatua ya 2: Kuanzisha Cloud4Rpi.io
- Hatua ya 3: Ufuatiliaji wa UPS
- Hatua ya 4: Kujiandaa na "uzalishaji"
- Hatua ya 5: Kuweka Jopo la Udhibiti
Video: Ufuatiliaji wa Nyumba ya DIY na RaspberryPi na Cloud4Rpi: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Wikiendi moja ya msimu wa baridi nilienda nyumbani kwa nchi yangu, na nikapata kuwa kulikuwa na baridi sana hapo. Kuna kitu kilikuwa kimetokea na umeme na mhalifu wa RCD alikuwa ameizima, na inapokanzwa pia ilizima. Nilikuwa na bahati nimekuja pale, vinginevyo kwa siku kadhaa kila kitu kingekuwa kimehifadhiwa ambayo ni mbaya sana kwa bomba na radiator.
Nilikuwa na Raspberry Pi kadhaa, na sensorer ya joto, kwa hivyo nilifikiri - kwa nini sifanyi kifaa rahisi cha ufuatiliaji? Maagizo hapa chini hudhani una Raspberry Pi na Raspbian na unganisho la mtandao limewekwa. Kwa upande wangu ni Raspberry Pi B + na Raspbian (2018-06-27-raspbian-stretch-lite).
Hatua ya 1: Ufuatiliaji wa Joto
Jinsi ya kuunganisha sensor ya joto ya DS18B20? Google tu jinsi ya kufanya hivyo, na utaona picha nyingi kama hii:
Kwa upande wangu nilikuwa na waya Nyeusi, Njano na Nyekundu. Nyeusi imepigwa chini, huenda kwenye pini ya Ground, nyekundu ni nguvu - huenda kwa pini 3.3v, na manjano ni data - inapaswa kwenda kwenye pini ya GPIO4, na kontena la 4.7 kOm limeunganishwa kati ya data na nguvu. Kumbuka, unaweza kuunganisha sensorer kadhaa sambamba (ni za dijiti, na zina anwani tofauti), unahitaji kontena moja tu. Baada ya kuunganisha sensa yako, unapaswa kuwezesha 1Wire kwenye raspi-config:
Sudo raspi-config
Nenda kwa chaguzi 5 za Kuingiliana, wezesha P7 1-Wire na uwashe upya.
Basi unaweza kujaribu ikiwa unaweza kuona sensa:
Sudo modprobe w1-gpiosudo modprobe w1-thermls / sys / basi / w1 / vifaa /
Unapaswa kuona kitu kama hiki:
pi @ vcontrol: ~ $ ls / sys / basi / w1 / vifaa / 28–00044eae2dff w1_bus_master1
28-00044eae2dff ni sensorer ya joto.
Vifaa viko tayari. Sasa ninahitaji kuanzisha sehemu ya ufuatiliaji. Ninahitaji kitu ambacho kitanionesha data na kunijulisha ikiwa kifaa kimeunganishwa kwa muda au hakuna nguvu, au joto ni la chini. Kwa wazi hii haiwezi kuwa raspberry pi yenyewe, inapaswa kuwa na seva au huduma kwenye mtandao ambayo inafuatilia kifaa changu.
Ninaweza kuunda seva rahisi, kupata mwenyeji na kuweka kila kitu, lakini kwa unyenyekevu, sitaki. Kwa bahati nzuri, mtu amefikiria juu ya hii tayari na ameunda cloud4rpi.io - jopo la kudhibiti wingu kwa kifaa chako.
Hatua ya 2: Kuanzisha Cloud4Rpi.io
Cloud4Rpi hutoa huduma ambayo inaruhusu kifaa chako kutuma na kupokea data kwa kutumia itifaki za MQTT au HTTP. Wana maktaba ya mteja kwa Python, kwa hivyo nitatumia Python.
Mifano ya chatu ambayo inakuja na huduma ya Cloud4Rpi tayari ina nambari ya DS18B20 sensor ya temp.
Kwa hivyo nilienda https://cloud4rpi.io, nikaunda akaunti na nikaongeza kifaa kipya hapo. Ukurasa wa kifaa una ishara - kamba inayotambulisha kifaa, na ambayo inapaswa kutajwa katika programu inayotuma data.
Kwanza, daima ni wazo nzuri kusasisha meneja wa kifurushi na kusasisha vifurushi (kumbuka: inaweza kuchukua masaa ikiwa haujasasisha kwa muda):
Sudo apt-pata sasisho && sudo apt-pata sasisho
Kisha, weka git, Python na msimamizi wake wa kifurushi Pip:
Sudo apt-get kufunga git python python-pip
Kisha, weka maktaba ya wingu ya Python4rpi:
Sudo pip kufunga cloud4rpi
Mwishowe, niko tayari kuandika programu yangu ya kudhibiti. Ninaanza kutoka kwa mfano unaopatikana kwenye
clone ya git https://github.com/cloud4rpi/cloud4rpi-raspberrypi ……. cloud4rpicd cloud4rpi
Faili kuu ya programu ni kudhibiti.py - Ninahitaji kuibadilisha kwa mahitaji yangu. Kwanza, hariri programu na ubandike ishara:
udhibiti wa nano ya sudo.py
Pata laini DEVICE_TOKEN = '…'] na taja ishara ya kifaa hapo. Baada ya hapo ninaweza tu kuendesha programu: Inafanya kazi na inaripoti hali ya joto katika tofauti ya RoomTemp:
udhibiti wa chatu ya sudo.py
Inafanya kazi na inaripoti hali ya joto katika ubadilishaji wa RoomTemp.
Kumbuka kuwa hugundua sensorer zote za ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
na hutumia sensorer ya kwanza kupatikana:
Chumba cha Muda: "{'aina': 'nambari', 'funga': ds_sensors [0] ikiwa ds_sensors mwingine Hakuna}
Ok, hiyo ilikuwa rahisi, kwa sababu programu ya sampuli ina kila kitu kinachohitajika kufanya kazi na ds18b20 sensor kwenye Raspberry Pi. Sasa ninahitaji kutafuta njia ya kuripoti hali ya nguvu.
Hatua ya 3: Ufuatiliaji wa UPS
Jambo linalofuata ninataka kufuatilia ni hali ya UPS, kwa hivyo ikiwa kukatika kwa umeme, nitajua juu yake kabla ya kila kitu kukatika.
Nina APC UPS na udhibiti wa USB, kwa hivyo nilienda haraka na kugundua kuwa ninahitaji apcupsd. https://www.anites.com/2013/09/monitoring-ups.html …… Nilijaribu mara kadhaa kuiweka kupitia apt-get, na haikuwa ikinifanyia kazi kwa sababu anuwai. Nitaonyesha jinsi ya kuiweka kutoka kwa vyanzo.
wget
Kisha mimi huhariri apcupsd.conf kuungana na UPS yangu kupitia usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE / dev / ttyS0 UPSTYPE usb DEVICE
Sasa naweza kuziba kebo ya USB kutoka UPS hadi RaspberryPi na ujaribu ikiwa UPS itapatikana.
sudo apctest
Haipaswi kukupa ujumbe wowote wa kosa.
Sasa sevice apcupsd inapaswa kuanza:
Sudo systemctl kuanza apcupsd
Kutuliza hali ya UPS naweza kutumia amri ya hali:
hali ya sudo /etc/init.d/apcupsd
Na itatoa somethig kama hii:
APC: 001, 035, 0855 TAREHE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 Mei 2016) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Dereva UPSMODE: Simama peke yako MUDA WA KUANZA: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 Asilimia BCHARGE: 100.0 Asilimia TIMELEFT: Dakika 293.3 MBATTCHG: 5 Asilimia MINTIMEL: Dakika 3 MDAU MUHIMU: 0 Seconds SENSE: kati LOTRANS: 140.0 Volts HITRANS: 300.0 Volts ALARMDEL: 30 Seconds BATTV: 14.2 Volts LASTXFER: Hakuna uhamisho tangu NUMXFERS turnon: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATT: N / A STATFLAG: 0x05000008 SERIALNO: 3B1424X02945 BATTDATE: 2014-06-10 NOMINV: Volts 230 NOMBATTV: 12.0 Volts NOMPOWER: 390 Watts FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Ninahitaji hadhi - ambayo ni "STATUS:" line.
Maktaba ya Cloud4rpi ina moduli 'rpy.py' ambayo inarudisha vigezo vya mfumo wa Raspberry Pi kama jina la mwenyeji au joto la cpu. Kwa kuwa vifungu vyote hivyo ni matokeo ya kutekeleza maagizo kadhaa na kutoa mazao, pia ina kazi ya 'parse_output' inayofaa ambayo hufanya kile ninachohitaji. Hii ndio njia ya kupata hali yangu ya UPS:
def ups_status (): result = rpi.parse_output (r'STATUS / s +: / s + ( S +) ', [' /etc/init.d/apcupsd ',' status ']) ikiwa matokeo: rudisha matokeo mengine: kurudi 'HAIJULIKANI'
Kutuma hali hii kwa cloud4rpi, ninahitaji kutangaza UPSStatus inayobadilika na kuifunga kwa kazi yangu ya up_status: Sasa naweza kuendesha programu yangu:
vigezo = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Na ninaweza kuona mara moja tofauti yangu kwenye ukurasa wa kifaa cha cloud4rpi.
Hatua ya 4: Kujiandaa na "uzalishaji"
Kila kitu kinafanya kazi, na sasa ninahitaji kuandaa kifaa changu kwa hali isiyotarajiwa.
Kwanza, nitarekebisha vipindi vya muda. Muda wa kura hufafanua ni mara ngapi programu inakagua hali ya joto na hali ya UPS - iweke kwa sekunde moja.
Matokeo hutumwa kwa wingu kila dakika 5, na habari ya utambuzi - kila saa.
# ConstantsDATA_SENDING_INTERVAL = 300 # sekunde #UCHUNGUZA_UJITUMIA_UHUSU = 3600 # sekunde POLL_INTERVAL = sekunde #
Wakati hali ya UPS inabadilika - sitaki kifaa changu kusubiri kwa dakika 5, na ninatuma data mara moja. Kwa hivyo nimebadilisha kidogo kitanzi kuu na inaonekana kama hii:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' wakati ni Kweli: newUPS = ups_status () ikiwa (data_timer <= 0) au (newUPS! = prevUPS): kifaa.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS = newUPS = newUPS kifaa.publish_diag () diag_timer = DIAG_SENDING_INTERVAL usingizi (POLL_INTERVAL) diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL
Upimaji: endesha hati:
udhibiti wa chatu ya sudo.py
Na ninaweza kutazama hali ya UPS kwenye ukurasa wangu wa kifaa.
Ikiwa nitazima nguvu ya UPS, hali hubadilika kwa sekunde kadhaa, kwa hivyo kila kitu kinafanya kazi. Sasa ninahitaji kuanza apcupsd na udhibiti wangu.py kwenye uanzishaji wa mfumo. Huduma ya Apcupsd ni ya zamani na kuianza kwa raspbian ya kisasa, napaswa kurekebisha faili ya /etc/init.d/apcupsd, kwa kuongeza mistari hii mahali hapo juu:
### ANZA INIT INFO # Inatoa: apcupsd # Inahitajika-Anza: $ zote # Inahitajika-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Maelezo mafupi: APC UPS daemon… ### END INIT HABARI #
Kisha wezesha huduma:
Sudo systemctl kuwezesha apcupsd
Kisha anza huduma:
Sudo systemctl kuanza apcupsd
Sasa apcupsd itaanza kwenye uanzishaji wa mfumo.
Kusanikisha control.py kama huduma, nilitumia hati iliyotolewa ya huduma_install.sh:
huduma ya sudo bash_install.sh ~ / cloud4rpi / control.py
Huduma sasa imeanza na inashindwa kufanya kazi wakati wa kuanza upya.
Hatua ya 5: Kuweka Jopo la Udhibiti
Cloud4rpi inaniruhusu kusanidi jopo la kudhibiti kifaa changu. Unaweza kuongeza "vilivyoandikwa" na kuzifunga kwa anuwai ya kifaa.
Kifaa changu kinapeana vigeuzi viwili vya kusoma tu - RoomTemp na UPSStatus:
vigezo = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Niliongeza vilivyoandikwa 3 - Nambari ya RoomTemp, Nakala ya UPSStatus na Chati ya RoomTemp.
Ninaweza kuweka arifu, kwa hivyo ninapokea barua pepe wakati halijoto iko nje ya anuwai maalum, UPS ilitoka nje ya mtandao au kifaa chenyewe hakitumii data wakati inapaswa. Sasa ninaweza kuwa na hakika nyumba yangu ya nchi iko sawa, na ninaweza kujulishwa wakati kitu kibaya, kwa hivyo naweza kupiga simu kwa majirani na kuwauliza waangalie kinachoendelea. Hapa kuna nambari halisi ya kudhibiti.py.
Ilipendekeza:
Chomeka na Cheza Uonyesho wa Sura ya CO2 Pamoja na NodeMCU / ESP8266 ya Shule, Bustani za Nyumba au Nyumba Yako: Hatua 7
Chomeka na Cheza Onyesho la Sura ya CO2 Pamoja na NodeMCU / ESP8266 kwa Shule, Bustani za Nyumba au Nyumba Yako: Nitaenda kukuonyesha jinsi ya kujenga haraka kuziba & cheza sensa ya CO2 ambapo vitu vyote vya mradi vitaunganishwa na nyaya za DuPont. Kutakuwa na vidokezo 5 tu ambavyo vinahitaji kuuzwa, kwa sababu sikuuza kabla ya mradi huu kabisa
Ufuatiliaji wa Nyumba ya Kijani na IOT: Hatua 5
Ufuatiliaji wa Nyumba ya Kijani Pamoja na IOT: Linapokuja suala la kilimo, kufuatilia hali ya joto & unyevu wa mimea ni jambo muhimu kwa uhai wao. Hivi sasa, watu hutumia vipima joto vilivyounganishwa kwenye chafu ili wakulima waweze kupima joto. Walakini, programu hii ya mwongozo
Nyumba ya Android (dhibiti Nyumba Yako Kutoka Kwenye Simu Yako): Hatua 4
Nyumba ya Android (dhibiti Nyumba Yako Kutoka Kwenye Simu Yako): Mpango wangu wa mwisho ni kuwa na nyumba yangu mfukoni, swichi zake, sensorer na usalama. halafu auto mate itUtangulizi: Halo Ich bin zakriya na hii " Nyumba ya Android " ni mradi wangu, mradi huu ni wa kwanza kutoka kwa mafundisho manne yanayokuja, Katika
Chaguzi za NVR kwa Mfumo wa Ufuatiliaji wa Nyumba ya DIY: Hatua 3
Chaguzi za NVR kwa Mfumo wa Ufuatiliaji wa Nyumba ya DIY: Katika sehemu ya 3 ya safu hii, tunatathmini chaguzi za NVR kwa Raspberry Pi na kwa Windows PC. Tunajaribu MotionEye OS kwenye Raspberry Pi 3 na kisha tunaangalia iSpy, ambayo ni suluhisho inayoongoza, chanzo wazi, ufuatiliaji wa video na suluhisho la usalama
Ufuatiliaji wa Chumba cha Msaidizi wa Nyumba: Hatua 6
Ufuatiliaji wa Chumba cha Msaidizi wa Nyumba: Baada ya kuandaa Raspberry Pi na Msaidizi wa Nyumbani kusimamia nafasi anuwai, niligundua kuwa moja ya habari ya kimsingi ya kila nafasi ni joto na unyevu. Tunaweza kununua sensorer kadhaa zinazopatikana kwenye soko linalolingana na Msaada wa Nyumbani