Satura rādītājs:

Raspberry Pi mājas uzraudzība ar Dropbox: 7 soļi
Raspberry Pi mājas uzraudzība ar Dropbox: 7 soļi

Video: Raspberry Pi mājas uzraudzība ar Dropbox: 7 soļi

Video: Raspberry Pi mājas uzraudzība ar Dropbox: 7 soļi
Video: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, Novembris
Anonim
Raspberry Pi mājas uzraudzība ar Dropbox
Raspberry Pi mājas uzraudzība ar 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 savas tīmekļa kameras, vienlaikus izmantojot arī digitālo temperatūras sensoru, lai uzraudzītu jūsu mājas temperatūru internetā, izmantojot Dropbox.

Šis bija pirmais projekts, ko es izdomāju pēc Raspberry Pi 2 modeļa B saņemšanas. Mans mērķis bija izveidot uz Python balstītu uzraudzības sistēmu, lai es varētu kontrolēt un saņemt datus no interneta. Lai gan ir daudz dažādu veidu, kā to izdarīt, es nolēmu izmantot Dropbox kā saskarni starp Pi un internetu, jo tiem ir vienkārša Python API, kas ļauj augšupielādēt, modificēt un meklēt failus noteiktās mapēs, izmantojot dažas rindiņas kods.

Es arī gribēju, lai mans risinājums būtu viegls un vienkāršs, un lai izvairītos no mana Pi pārblīvēšanas ar nevajadzīgām bibliotēkām un programmām. Šī projekta programmatūras komponents sastāv no viena Python skripta, kas nozīmē, ka jūs varat turpināt lietot savu Pi kā parasti, pat ja darbojas uzraudzības sistēma.

Šim projektam jums būs nepieciešams:

Aveņu Pi. Jebkuram modelim vajadzētu darboties, es izmantoju visu vienā starta komplektu, bet varbūt jums ir nepieciešama tikai centrālā ierīce

USB tīmekļa kamera. Es nopirku lētu ADVENT AWC72015, kas notika labi. Var būt laba ideja iepazīties ar šo tīmekļa kameru sarakstu, kuras ir apstiprinātas darbam ar Pi. Ņemiet vērā, ka dažiem ir nepieciešams darbināms USB centrmezgls (manējais darbojas bez tā)

Dropbox konts. Es izmantoju savu standarta bezmaksas kontu, jo šim projektam nav nepieciešams daudz vietas

DS18B20 digitālais temperatūras sensors un 4,7 k rezistors. Jūs varat iegādāties sensoru šeit, un varētu būt vērts paķert arī dažādu rezistoru komplektu

Daži ķēdes veidošanas piederumi. Es ieteiktu izmantot maizes dēli un dažus pārejas kabeļus, lai ķēdes veidošanas process būtu pēc iespējas vieglāks

[Ja jūs nolemjat iegādāties kādu no šiem produktiem, es būtu ļoti pateicīgs, ja piekļūtu sarakstiem, izmantojot iepriekš minētās saites - tādā veidā es saņemšu nelielu peļņas daļu bez papildu maksas!]

1. darbība: iestatiet aparatūru

Iestatiet aparatūru
Iestatiet aparatūru

Pirmais solis ir nodrošināt, lai jūsu Pi un ar to saistītās perifērijas ierīces būtu iestatītas.

Vispirms pievienojiet savu Pi internetam. Tas ir nepieciešams, lai nodrošinātu, ka uzraudzības programma var saņemt jūsu pieprasījumus un augšupielādēt datus Dropbox. Lai nodrošinātu uzticamību, es izmantoju Ethernet savienojumu, taču arī Wi-Fi savienojumam vajadzētu darboties labi, vienlaikus nodrošinot arī uzlabotu pārnesamību. Ja izvēlaties Wi-Fi, es ieteiktu šo USB dongle Pi.

Pēc tam pievienojiet savu tīmekļa kameru Pi, pievienojot to vienam no USB portiem. Lai gan manās Adventes tīmekļa kameras instrukcijās nebija skaidri teikts, ka tā darbosies ar Linux, man atlika tikai to pievienot un ieslēgt Pi. Tālāka uzstādīšana nebija nepieciešama. Citas tīmekļa kameras var atšķirties. Varat pārbaudīt, vai jūsu tīmekļa kameru ir noteikusi Linux, izmantojot šādu komandu:

lsusb

Iepriekš redzamajā attēlā mana tīmekļa kamera ir norādīta kā “0c45: 6340 Microdia”

Visbeidzot, jūs varat savienot savu DS18B20 temperatūras sensoru ar Pi GPIO galveni. Es izmantoju savu maizes dēli, lai atvieglotu shēmu izveides procesu, un es ieteiktu jums rīkoties tāpat, jo īpaši tāpēc, ka DS18B20 ir nepieciešams 4,7 k rezistors, kas jānovieto starp divām no trim tapām. Šī saite nodrošina labu elektroinstalācijas shēmu, kurā parādīts, kā maizes dēli var izmantot, lai izveidotu savienojumu ar šo temperatūras sensoru.

Iepriekš minētās apmācības nākamā lapa ietver arī darbības, kas nepieciešamas, lai nolasītu datus no DS18B20, un parāda, kā pārbaudīt, vai tā darbojas. Pirms DS18B20 izmantošanas šim projektam ir svarīgi veikt šīs iestatīšanas darbības. Mēs arī integrēsim Python skripta paraugu no apmācības mūsu uzraudzības programmā, tāpēc, iespējams, vēlēsities ātri pārlasīt šo kodu.

Lūdzu, ņemiet vērā arī sava DS18B20 unikālo numuru. Tas ir numurs, kas sākas ar '28-', ar kuru jūs saskaraties iestatīšanas apmācības laikā. Jums tas būs jāievada gaidāmajā Python programmā, lai tas varētu nolasīt temperatūrā.

2. darbība: iestatiet Dropbox

Iestatiet Dropbox
Iestatiet Dropbox

Lai jūsu Pi varētu saskarties ar Dropbox, jums ir jāiestata jauna Dropbox lietotne. Tas sniegs jums informāciju, kas nepieciešama, lai jūsu Pi veiktu tiešsaistes failu pārvaldību, izmantojot Python. Pieņemot, ka esat izveidojis Dropbox kontu un pieteicies, varat izveidot jaunu lietotni, izmantojot izvēlnes opciju Izstrādātāji. Svarīgo darbību kopsavilkumu skatiet iepriekš redzamajā attēlā.

Izvēlnē Izstrādātāji atlasiet Manas lietotnes, pēc tam nospiediet pogu Izveidot lietotni. Lai aizpildītu iegūto veidlapu, atlasiet “Dropbox API” un pēc tam “Lietotņu mape”. Visbeidzot, Dropbox varat izvēlēties savai lietotnei unikālu nosaukumu. Noklikšķiniet uz Izveidot lietotni.

Pēc tam jūs tiksit novirzīts uz lietotnes iestatījumu lapu pakalpojumā Dropbox. Šeit ir jādara tikai vēl viena lieta - ģenerējiet sev piekļuves marķieri. Lai to izdarītu, ritiniet uz leju līdz sadaļai “OAuth 2” un sadaļā “Ģenerēts piekļuves pilnvara” noklikšķiniet uz pogas “Ģenerēt”.

Tas parādīs jums garu rakstzīmju virkni, kas nepieciešama, lai piekļūtu jūsu Dropbox kontam, izmantojot Python. Pierakstiet šo piekļuves marķieri, jo tas būs jānorāda vēlāk savā kodā. Ja pazaudējat marķieri, varat atgriezties lietotnes iestatījumos, noklikšķinot uz “Manas lietotnes” sadaļā Dropbox “Izstrādātāji” un ģenerējot jaunu pilnvaru.

Pārējos iestatījumus varat atstāt tādus, kādi tie ir. Lai apstiprinātu, ka jūsu lietotne ir izveidojusi nepieciešamās mapes jūsu Dropbox kontā, dodieties uz krātuves sākumlapu un atrodiet mapi Lietotnes. Šajā mapē ir jābūt apakšmapei ar nosaukumu, kuru izvēlējāties savai jaunajai lietotnei. Šeit tiks ievietoti visi jūsu uzraudzības sistēmas faili.

3. darbība. Dropbox lietotnes mapes sagatavošana

Dropbox lietotnes mapes sagatavošana
Dropbox lietotnes mapes sagatavošana

Kad esat iestatījis lietotni Dropbox, ir pienācis laiks padomāt par to, kā izmantosit iegūto mapi savā Dropbox kontā, lai mijiedarbotos ar savu Pi. Tas tiek paveikts pavisam vienkārši. Python skripts, kas darbosies uz Pi, izmantos Dropbox API komandu apakškopu, lai meklētu un mainītu dažu tukšu, bez paplašinājuma failu nosaukumus jūsu lietotnes mapē. Mēs šos failus sauksim par “parametru failiem”, jo katrs no tiem ļaus jums kontrolēt citu uzraudzības sistēmas darbības aspektu. Iepriekš redzamajā attēlā ir redzami četri parametru faili, kuriem ir jābūt jūsu projekta Dropbox lietotnes mapē. To izveide ir vienkārša:

Sākot ar pilnīgi tukšu lietotņu mapi, datorā atveriet teksta redaktora programmu. Lai gan to varēja izdarīt, izmantojot Pi, man bija vieglāk izmantot savu Windows klēpjdatoru šai iestatīšanas fāzei. Kad teksta redaktors ir atvērts (es izmantoju Notepad operētājsistēmā Windows 7), viss, kas jums jādara, ir saglabāt pilnīgi tukšu teksta failu jebkurā datora vietā. Kā pirmo piemēru mēs izveidosim pirmo parametru galvenes attēlā. Saglabājot failu, piešķiriet tam nosaukumu “delay = 10”.

Apkopojot, tagad datorā vajadzētu saglabāt tukšu teksta failu ar nosaukumu 'delay = 10'. Failam būs arī paplašinājums.txt, kas var būt redzams.

Nākamais solis ir augšupielādēt šo failu savā Dropbox lietotnes mapē. Tas ir tāpat kā jebkura cita Dropbox augšupielāde. Vienkārši dodieties uz savas lietotnes mapi un noklikšķiniet uz Augšupielādēt un izvēlieties failu “delay = 10”.

Kad šis fails ir augšupielādēts, jums ir jānoņem paplašinājums “.txt”, kuram tagad vajadzētu būt redzamam faila nosaukumā. Lai to izdarītu, vienkārši ar peles labo pogu noklikšķiniet uz faila un atlasiet “Pārdēvēt”. Noņemiet faila nosaukuma daļu “.txt”. Tagad jums jāatstāj fails ar nosaukumu “delay = 10” bez faila paplašinājuma, kā parādīts galvenes attēlā.

Parametra fails “kavēšanās” ir viens no četriem, ko izmantos uzraudzības programma. Lai izveidotu citus, varat vienkārši nokopēt un pārdēvēt savu “kavējuma” failu, ar peles labo pogu noklikšķinot uz tā. Kad esat izveidojis trīs kopijas, nosauciet tās, kā parādīts galvenes attēlā, lai jūsu lietotnes mape būtu identiska tai, kas parādīta šīs darbības sākumā.

4. darbība. Darba sākšana ar kodu

Kā minēts iepriekš, mūsu uzraudzības sistēmas kodols sastāvēs no viena Python skripta, kas saskarē ar Dropbox. Lai uzraudzības programma būtu aktīva, šim skriptam jūsu Pi būs jāpalaiž fonā. Es domāju, ka tas ir visprecīzāk aprakstīts kā “dēmona” skripts, kas nozīmē, ka varat to vienkārši palaist un aizmirst. Skripts ir pievienots šim solim, tāpēc šeit nav jēgas atkārtot kodu. Tagad var būt īstais laiks to lejupielādēt un ar to iepazīties.

Pirms varēsit palaist skriptu, ir svarīgi pārliecināties, vai ir instalētas atbilstošās Python bibliotēkas. Nepieciešamie ir norādīti pievienotā skripta augšpusē. Viņi ir:

importēt dropbox

importēt pygame.camera importēt os importēšanas laiku

Python instalācija manā Pi jau ietvēra pygame, os un laiku, tāpēc vienīgā, kas man bija jāinstalē, bija Dropbox. Es to izdarīju, izmantojot viņu ļoti vienkāršās uzstādīšanas instrukcijas ar pip.

Kad jūsu bibliotēkas ir iestatītas, jums būs jārediģē pievienotās skripta divas augšējās rindas, lai tās atbilstu jūsu Dropbox piekļuves marķierim un jūsu DS18B20 temperatūras sensora unikālajam identifikatoram. Šīs ir divas rediģējamas rindas:

APP_ACCESS_TOKEN = '**********'

THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'

Vienkārši nomainiet **** ar pareizajām vērtībām. Šajā brīdī jūs faktiski esat gatavs sākt izmantot uzraudzības programmu! Tā vietā, lai tikai ielēktu, es ieteiktu jums turpināt nākamo darbību, lai iegūtu vispārīgu koda pārskatu.

SVARĪGI: palaižot šo skriptu, vēlaties, lai tas darbotos fonā, lai a) jūs varētu turpināt lietot Pi un b) aizverot SSH sesiju, skripts darbotos. Šo komandu izmantoju, palaižot skriptu:

nohup python DropCamTherm.py &

Tādējādi tiek izpildītas trīs lietas: tiks palaists skripts ("python DropCamTherm.py"), tā nekavējoties atgriezīs vadību komandrindā, lai jūs varētu turpināt lietot Pi ('&'), un tā nosūtīs Python izvadus, kas parasti tiek parādīta komandrindā failā ar nosaukumu “nohup.out”. To var nolasīt, izmantojot Linux teksta redaktoru (mans mīļākais ir nano), un tas tiks automātiski izveidots direktorijā, no kura skripts tiek palaists.

5. solis: dziļāk iedziļināties kodā

Atverot skriptu, pamanīsit, ka tas sastāv no trim funkcijām kopā ar koda bloku, kas šīs funkcijas īsteno skripta izpildes laikā. Funkcijas izmanto Dropbox API un piekļūst DS18B20 temperatūras žurnāla failam, lai noklausītos komandas no Dropbox un augšupielādētu jaunāko temperatūras rādījumu. Tālāk ir sniegts pārskats par to, ko funkcijas dara un kā tās tiek izmantotas, lai pārraudzības sistēma darbotos:

- poll_parameter ():

Šī funkcija parāda 3. darbībā izveidoto Dropbox parametru failu mērķi. Tā meklē lietotnes Dropbox mapē failu, kurā ir teksts 'param ='. Pēc tam tas izvelk tekstu aiz '=' un mēģina to pārvērst par veselu skaitli. Jūs varat redzēt, ka tas ļauj mums kontrolēt programmu, manuāli pievienojot atbilstošus ciparus parametru failu beigās. Nākamais solis ietvers īsu lietošanas pamācību, kurā parādīts, kā izmantot katru parametru failu, lai kontrolētu kādu programmas aspektu.

- set_parameter ():

Šī funkcija ļauj programmai pārdēvēt parametru failu no Python. Tas tiek darīts dažos gadījumos, galvenokārt, lai samazinātu nepieciešamību pārmērīgi manuāli pārdēvēt failus.

- set_latest_temp ():

Šī funkcija izmanto set_parameter (), lai augšupielādētu jaunāko temperatūru lietotnes Dropbox mapē, pievienojot to parametru failam 'temperatūra'. Funkcija nolasa jaunāko temperatūru no DS18B20 žurnāla faila (kas ir pieejams operētājsistēmā Linux pa ceļu, uz kuru norāda mainīgais THERMOMETER_FILE).

Programmas pēdējā daļā ir kods, kas tiks izpildīts skripta palaišanas laikā. Pēc dažām iestatīšanas darbībām, kas nepieciešamas DS18B20 sensoram, tā atver Dropbox sesiju, izmantojot jūsu piekļuves marķieri, un izmanto tiešsaistes spēles meklēšanu. Ja tiek atrasta tīmekļa kamera, tā ievadīs cilpu, kur tā izmantos poll_parameter (), lai iegūtu informāciju no Dropbox un rīkotos atbilstoši tai.

SVARĪGI: Jūs pamanīsit šādu koda rindu:

kamera = pygame.camera. Camera (cam_list [0], (864, 480))

… tas mēģina izveidot lietojamu kameras saskarni no pirmās tīmekļa kameras, kuru atklāj pygame. Iespējams, būs jāmaina izšķirtspēja, lai tā atbilstu jūsu tīmekļa kamerai. Eksperimentējiet ar vairākām vērtībām, lai atrastu to, kas vislabāk darbojas.

6. darbība. Dropbox parametru failu izmantošana

Tātad tagad jums vajadzētu būt darba skriptam, kas, palaižot, izmantojot 4. darbības norādījumus, ļaus jūsu Pi sākt uzraudzīt jūsu ievadīto lietotņu mapi. Pirmajā palaišanas reizē lietotņu mapē ir jābūt šādiem parametru failiem:

kavēšanās = 10

izejas programma = 0 imagerequest = 0 temperatūra = 0

Mijiedarbība ar programmu tiek panākta, manuāli pārdēvējot parametru failus, izmantojot Dropbox. Lai to izdarītu, vienkārši ar peles labo pogu noklikšķiniet uz viena no failiem un atlasiet “pārdēvēt”. Katram parametru failam ir atšķirīga funkcija:

- kavēšanās:

Šis fails norāda uzraudzības programmai, cik sekundes jāgaida starp katru pārraudzības cikla atkārtojumu. Kad es zinu, ka daudz nesadarbošos ar programmu, es to iestatīju uz 60 vai 120. Kad zinu, ka vēlos bieži pieprasīt datus no Pi, es to iestatīju uz 10.

- izejas programma:

Tam jābūt iestatītam uz 1 vai 0. Ja programma konstatē, ka tā ir iestatīta uz 1, tā skriptu pārtrauks. Ja iestatāt to uz 1 un skripts tiek aizvērts, jums būs jāpiesakās vēlreiz Pi, lai to sāktu dublēt. Šis parametrs pastāv, lai jūs varētu graciozi pārtraukt uzraudzības programmu, kad tā vairs nav nepieciešama (piemēram, ja esat atgriezies mājās un vairs nevēlaties attālināti uzraudzīt tīmekļa kameru).

- attēla pieprasījums:

Tas, iespējams, ir vissvarīgākais parametrs. Tam jābūt iestatītam uz 1 vai 0. Ja programma konstatē, ka tā ir iestatīta uz 1, tā pieprasīs attēlu no tīmekļa kameras un augšupielādēs to lietotņu mapē (ar nosaukumu 'image.jpg'). Ja pastāv cits fails “image.jpg”, tas to pārrakstīs.

- temperatūra:

Tas ir DS18B20 temperatūras nolasījums, ko iestatījusi funkcija set_latest_temp (). Jums nekad nevajadzētu rediģēt šo parametru failu - programma to automātiski nosaka.

Ņemiet vērā: ja iestatāt “exitprogram” vai “imagerequest” uz 1, programma pirms attiecīgā koda izpildes automātiski atgriezīs tos uz 0. Tas ir ērtības labad. Jūs varat arī pamanīt, ka kods satur daudz “izmēģināt” un “izņemot” blokus, kas aptver daudzas kritiskās funkcijas. Tas tiek darīts, lai nodrošinātu, ka skripts neradīs izņēmumus (un līdz ar to pārtrauks darboties), ja kaut kas noiet greizi (piemēram, interneta savienojuma problēma, kas neļauj piekļūt Dropbox).

7. solis. Secinājums

Šis projekts ir parādījis veidu, kā kontrolēt Raspberry Pi, izmantojot Python un Dropbox. Lai gan šajā projektā izmantotā aparatūra ir temperatūras sensors un USB tīmekļa kamera, šai Pi vadības metodei ir daudz citu lietojumu. Faktiski jebkuru aparatūras komponentu, kuram var piekļūt, izmantojot GPIO, var kontrolēt, izmantojot līdzīgu programmu struktūru, padarot sistēmu ļoti viegli paplašināmu.

Kā nākamo soli varat izmantot arī GUI bibliotēku, piemēram, Tkinter, kopā ar Dropbox API, lai izveidotu klienta programmu, kas ļautu mainīt parametru failus, pat nepiesakoties Dropbox.

Es ceru, ka šī apmācība ir bijusi skaidra, un, ja jums ir kādi jautājumi vai vēlaties, lai es kaut ko paskaidroju, lūdzu, ievietojiet komentāru!

Ieteicams: