Turinys:

„Raspberry Pi“namų stebėjimas naudojant „Dropbox“: 7 žingsniai
„Raspberry Pi“namų stebėjimas naudojant „Dropbox“: 7 žingsniai

Video: „Raspberry Pi“namų stebėjimas naudojant „Dropbox“: 7 žingsniai

Video: „Raspberry Pi“namų stebėjimas naudojant „Dropbox“: 7 žingsniai
Video: Pigus namų asistento serveris pigus sprendimas #homeassistant #solarpanelsforhome 2024, Lapkritis
Anonim
„Raspberry Pi“namų stebėjimas naudojant „Dropbox“
„Raspberry Pi“namų stebėjimas naudojant „Dropbox“

Ši pamoka parodys, kaip sukurti paprastą ir išplėstinę namų stebėjimo sistemą naudojant „Raspberry Pi“, internetinę kamerą, keletą elektros komponentų ir „Dropbox“paskyrą. Užbaigta sistema leis nuotoliniu būdu prašyti ir peržiūrėti vaizdus iš savo internetinės kameros, taip pat naudojant skaitmeninį temperatūros jutiklį, kuris stebės jūsų namų temperatūrą internetu, naudojant „Dropbox“.

Tai buvo pirmasis projektas, kurį sugalvojau gavęs „Raspberry Pi 2“modelį B. Mano tikslas buvo sukurti „Python“stebėjimo sistemą, kurią galėčiau valdyti ir gauti duomenis iš interneto. Nors yra daug skirtingų būdų tai padaryti, nusprendžiau naudoti „Dropbox“kaip „Pi“ir interneto sąsają, nes jie turi paprastą „Python“API, leidžiančią įkelti, keisti ir ieškoti failų tam tikruose aplankuose naudojant kelias eilutes kodą.

Aš taip pat norėjau, kad mano sprendimas būtų lengvas ir paprastas ir kad mano „Pi“nebūtų užterštas nereikalingomis bibliotekomis ir programomis. Šio projekto programinės įrangos komponentas susideda iš vieno „Python“scenarijaus, o tai reiškia, kad galite ir toliau naudoti savo „Pi“kaip įprasta, net kai veikia stebėjimo sistema.

Šiam projektui jums reikės:

Aviečių Pi. Bet koks modelis turėtų veikti, aš naudojau „viskas viename“pradinį rinkinį, bet galbūt jums reikia tik centrinio įrenginio

USB kamera. Aš nusipirkau pigų ADVENT AWC72015, kuris atsitiko gerai. Gali būti gera idėja perskaityti šį internetinių kamerų, kurios, kaip patvirtinta, veikia su „Pi“, sąrašą. Atkreipkite dėmesį, kad kai kuriems reikalingas maitinamas USB šakotuvas (mano puikiai veikia be jo)

„Dropbox“paskyra. Aš naudoju savo standartinę nemokamą paskyrą, nes šiam projektui nereikia daug vietos

DS18B20 skaitmeninis temperatūros jutiklis ir 4,7 k rezistorius. Jutiklį galite nusipirkti čia, ir galbūt verta paimti įvairių rezistorių paketą

Kai kurie grandinės kūrimo priedai. Kad grandinės kūrimo procesas būtų kuo lengvesnis, rekomenduočiau naudoti duonos lentą ir kai kuriuos trumpiklius

[Jei nuspręsite įsigyti bet kurį iš šių produktų, būčiau labai dėkingas, jei pateksite į sąrašus naudodami aukščiau pateiktas nuorodas - tokiu būdu aš gausiu nedidelę pelno dalį be jokių papildomų mokesčių!]

1 veiksmas: nustatykite aparatūrą

Nustatykite aparatūrą
Nustatykite aparatūrą

Pirmasis žingsnis yra užtikrinti, kad jūsų „Pi“ir susiję išoriniai įrenginiai būtų nustatyti.

Pirmiausia prijunkite „Pi“prie interneto. Tai būtina norint užtikrinti, kad stebėjimo programa galėtų priimti jūsų užklausas ir įkelti duomenis į „Dropbox“. Aš naudoju eterneto ryšį, kad užtikrintų patikimumą, tačiau „Wi-Fi“ryšys taip pat turėtų veikti gerai, tuo pat metu turėdamas geresnį perkeliamumą. Jei pasirinksite „Wi-Fi“, aš rekomenduočiau šį USB raktą „Pi“.

Tada prijunkite savo internetinę kamerą prie „Pi“, prijungdami ją prie vieno iš USB prievadų. Nors mano „Advent“internetinės kameros instrukcijose nebuvo aiškiai pasakyta, kad ji veiks su „Linux“, man tereikėjo ją prijungti ir paleisti „Pi“. Daugiau diegti nereikėjo. Kitos kameros gali skirtis. Galite patikrinti, ar jūsų interneto kamerą aptiko „Linux“, naudodami šią komandą:

lsusb

Aukščiau esančiame paveikslėlyje mano kamera yra nurodyta kaip „0c45: 6340 Microdia“

Galiausiai galite prijungti savo DS18B20 temperatūros jutiklį prie „Pi“GPIO antraštės. Aš naudoju savo duonos lentą, kad palengvintų grandinių kūrimo procesą, ir aš rekomenduočiau jums tai padaryti, ypač todėl, kad DS18B20 reikalauja, kad tarp dviejų iš trijų kaiščių būtų 4,7 k rezistorius. Šioje nuorodoje pateikiama gera elektros instaliacijos schema, parodanti, kaip galima naudoti duonos lentą, norint prisijungti prie šio temperatūros jutiklio.

Kitame aukščiau pateiktos pamokos puslapyje taip pat aprašomi veiksmai, kurių reikia norint perskaityti duomenis iš DS18B20, ir parodoma, kaip patikrinti, ar jie veikia. Prieš atliekant šio projekto naudojimą DS18B20, svarbu atlikti šiuos sąrankos veiksmus. Mes taip pat integruosime „Python“scenarijaus pavyzdį iš mokymo programos į mūsų stebėjimo programą, todėl galbūt norėsite greitai peržiūrėti šį kodą.

Taip pat atkreipkite dėmesį į unikalų savo DS18B20 numerį. Tai skaičius, prasidedantis „28-“, su kuriuo susiduriate sąrankos pamokoje. Turėsite jį įvesti į būsimą „Python“programą, kad ji galėtų skaityti temperatūroje.

2 veiksmas: nustatykite „Dropbox“

Nustatykite „Dropbox“
Nustatykite „Dropbox“

Kad jūsų „Pi“sąsaja būtų su „Dropbox“, turite nustatyti naują „Dropbox“programą. Tai suteiks jums išsamią informaciją, reikalingą jūsų „Pi“atlikti internetinį failų valdymą naudojant „Python“. Darant prielaidą, kad sukūrėte „Dropbox“paskyrą ir esate prisijungę, galite sukurti naują programą naudodami meniu „Kūrėjai“parinktį. Aukščiau pateiktame paveikslėlyje rasite svarbių veiksmų santrauką.

Meniu „Kūrėjai“pasirinkite „Mano programos“, tada paspauskite mygtuką „Kurti programą“. Norėdami užpildyti gautą formą, pasirinkite „Dropbox“API, po to - „Programos aplankas“. Galiausiai „Dropbox“galite pasirinkti unikalų programos pavadinimą. Spustelėkite „Sukurti programą“.

Tada būsite nukreipti į savo programos nustatymų puslapį „Dropbox“. Čia reikia padaryti tik vieną kitą dalyką - susikurti sau prieigos raktą. Norėdami tai padaryti, slinkite žemyn iki skyriaus „OAuth 2“ir skiltyje „Sukurtas prieigos raktas“spustelėkite mygtuką „Generuoti“.

Tai suteiks jums ilgą simbolių eilutę, reikalingą norint pasiekti „Dropbox“paskyrą naudojant „Python“. Užsirašykite šį prieigos raktą, nes vėliau turėsite jį nurodyti savo kode. Jei pametate prieigos raktą, galite grįžti prie savo programos nustatymų spustelėję „Mano programos“skiltyje „Kūrėjai“„Dropbox“ir sugeneruoti naują prieigos raktą.

Kitus nustatymus galite palikti tokius, kokie jie yra. Norėdami patvirtinti, kad jūsų programa sukūrė reikiamus aplankus jūsų „Dropbox“paskyroje, eikite į saugyklos pagrindinį puslapį ir ieškokite aplanko „Programos“. Šiame aplanke turėtų būti poaplankas su pavadinimu, kurį pasirinkote naujai programai. Čia bus patalpinti visi jūsų stebėjimo sistemos failai.

3 žingsnis: „Dropbox“programos aplanko paruošimas

„Dropbox“programos aplanko paruošimas
„Dropbox“programos aplanko paruošimas

Nustatę „Dropbox“programą, laikas pagalvoti, kaip naudosite gautą aplanką „Dropbox“paskyroje, kad galėtumėte bendrauti su „Pi“. Tai pasiekiama gana paprastai. „Python“scenarijus, kuris bus paleistas „Pi“, naudos „Dropbox“API komandų pogrupį, kad ieškotų ir pakeistų kai kurių tuščių failų be plėtinių pavadinimus jūsų programos aplanke. Šiuos failus vadinsime „parametrų failais“, nes kiekvienas iš jų leis jums kontroliuoti skirtingą stebėjimo sistemos elgesio aspektą. Aukščiau esančiame paveikslėlyje rodomi keturi parametrų failai, kurie turi būti jūsų šio projekto „Dropbox“programos aplanke. Juos sukurti paprasta:

Pradėdami nuo visiškai tuščio programos aplanko, kompiuteryje atidarykite teksto rengyklės programą. Nors tai buvo galima padaryti naudojant „Pi“, man buvo lengviau naudoti „Windows“nešiojamąjį kompiuterį šiam sąrankos etapui. Kai teksto rengyklė bus atidaryta („Windows 7“naudoju „Notepad“), viskas, ką jums reikia padaryti, yra išsaugoti visiškai tuščią teksto failą bet kurioje kompiuterio vietoje. Kaip pirmąjį pavyzdį sukursime pirmąjį parametrą antraštės vaizde. Išsaugodami failą pavadinkite „delay = 10“.

Apibendrinant, dabar jūsų kompiuteryje turėtų būti tuščias teksto failas pavadinimu „delay = 10“. Failas taip pat turės plėtinį „.txt“, kuris gali būti nematomas.

Kitas žingsnis yra įkelti šį failą į „Dropbox“programos aplanką. Tai kaip ir bet kuris kitas „Dropbox“įkėlimas. Tiesiog eikite į savo programos aplanką ir spustelėkite „Įkelti“ir pasirinkite failą „delay = 10“.

Kai šis failas bus įkeltas, turite pašalinti „.txt“plėtinį, kuris dabar turėtų būti matomas failo pavadinime. Norėdami tai padaryti, tiesiog dešiniuoju pelės mygtuku spustelėkite failą ir pasirinkite „Pervardyti“. Pašalinkite failo pavadinimo „.txt“dalį. Dabar turėtumėte palikti failą pavadinimu „delay = 10“be failo plėtinio, kaip parodyta antraštės paveikslėlyje.

Parametrų failas „uždelsimas“yra vienas iš keturių, kurį naudos stebėjimo programa. Norėdami sukurti kitus, galite tiesiog nukopijuoti ir pervardyti „uždelsimo“failą dešiniuoju pelės klavišu. Sukūrę tris kopijas, pavadinkite jas taip, kaip parodyta antraštės paveikslėlyje, kad jūsų programos aplankas būtų identiškas rodomam šio veiksmo pradžioje.

4 žingsnis: Darbo su kodu pradžia

Kaip aptarta, mūsų stebėjimo sistemos pagrindą sudarys vienas „Python“scenarijus, kuris sąveikaus su „Dropbox“. Kad stebėjimo programa būtų aktyvi, šis scenarijus turės veikti jūsų „Pi“fone. Manau, tai tiksliausiai apibūdinama kaip „demono“scenarijus, o tai reiškia, kad galite tiesiog nustatyti, kad jis veiktų, ir pamiršti. Scenarijus pridedamas prie šio veiksmo, todėl nėra prasmės čia kartoti kodo. Dabar gali būti tinkamas laikas jį atsisiųsti ir susipažinti.

Kad galėtumėte paleisti scenarijų, svarbu įsitikinti, kad turite įdiegtas atitinkamas „Python“bibliotekas. Jums reikalingi yra išvardyti pridedamo scenarijaus viršuje. Jie yra:

importuoti „dropbox“

importuoti pygame.camera importuoti os importo laiką

Į „Python“diegimą mano „Pi“jau buvo įtraukta „pygame“, OS ir laikas, todėl vienintelis, kurį turėjau įdiegti, buvo „Dropbox“. Aš tai padariau naudodamas labai paprastas jų įdiegimo instrukcijas su pip.

Kai jūsų bibliotekos bus nustatytos, turėsite redaguoti dvi viršutines pridėto scenarijaus eilutes, kad jos atitiktų jūsų „Dropbox“prieigos raktą ir unikalų jūsų DS18B20 temperatūros jutiklio identifikatorių. Tai yra dvi eilutės, kurias reikia redaguoti:

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

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

Tiesiog pakeiskite **** vertes teisingomis vertėmis. Šiuo metu jūs iš tikrųjų esate pasirengęs pradėti naudoti stebėjimo programą! Užuot tik šokinėjęs, rekomenduočiau tęsti kitą žingsnį, kad gautumėte bendrą kodo apžvalgą.

SVARBU: Kai vykdote šį scenarijų, norite, kad jis būtų rodomas fone, kad a) galėtumėte ir toliau naudoti „Pi“ir b) kai uždarysite SSH seansą, scenarijus ir toliau bus vykdomas. Šią komandą naudoju paleisdamas scenarijų:

nohup python DropCamTherm.py &

Tai atliks tris dalykus: jis paleis scenarijų („python DropCamTherm.py“), nedelsdamas grąžins valdymą į komandų eilutę, kad galėtumėte toliau naudoti „Pi“(„&“), ir atsiųs „Python“išvestis, kurios paprastai rodomas komandų eilutėje į failą pavadinimu „nohup.out“. Tai galima perskaityti naudojant „Linux“teksto rengyklę (mano mėgstamiausia yra „nano“) ir ji bus automatiškai sukurta kataloge, iš kurio vykdomas scenarijus.

5 žingsnis: įsigilinkite į kodą

Atidarę scenarijų pastebėsite, kad jis susideda iš trijų funkcijų ir kodo bloko, kuris įgyvendina šias funkcijas, kai vykdomas scenarijus. Funkcijos naudoja „Dropbox“API ir pasiekia DS18B20 temperatūros žurnalo failą, kad galėtų klausytis „Dropbox“komandų ir įkelti naujausią temperatūros rodmenį. Žemiau pateikiama funkcijų apžvalga ir kaip jos naudojamos stebėjimo sistemai veikti:

- poll_parameter ():

Ši funkcija parodo „Dropbox“parametrų failų, kuriuos sukūrėme atlikdami 3 veiksmą, paskirtį. Ji ieško „Dropbox“programos aplanke failo, kuriame yra tekstas „param =“. Tada jis ištraukia tekstą po „=“ir bando jį paversti sveiku skaičiumi. Matote, kad tai leidžia mums valdyti programą rankiniu būdu pridedant atitinkamus skaičius prie parametrų failų pabaigos. Kitame žingsnyje bus trumpas naudojimo vadovas, kuriame bus parodyta, kaip naudoti kiekvieną parametrų failą tam tikram programos aspektui valdyti.

- set_parameter ():

Ši funkcija leidžia programai pervadinti parametrų failą iš „Python“. Tai daroma keletą kartų, daugiausia siekiant sumažinti poreikį per daug rankiniu būdu pervardyti failus.

- set_latest_temp ():

Ši funkcija naudoja set_parameter (), norėdama įkelti naujausią temperatūrą į „Dropbox“programos aplanką, pridėdama ją prie „temperatūros“parametrų failo. Funkcija nuskaito naujausią temperatūrą iš DS18B20 žurnalo failo (kuris prieinamas „Linux“kelyje THERMOMETER_FILE).

Paskutinėje programos dalyje yra kodas, kuris bus vykdomas paleidus scenarijų. Po tam tikrų sąrankos veiksmų, reikalingų DS18B20 jutikliui, jis atidaro „Dropbox“seansą naudodamas jūsų prieigos raktą ir naudoja „pygame“, kad ieškotų jūsų internetinės kameros. Jei bus rasta internetinė kamera, ji pateks į kilpą, kur ji naudoja poll_parameter () norėdama išgauti informaciją iš „Dropbox“ir veikti.

SVARBU: pastebėsite šią kodo eilutę:

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

… taip bandoma sukurti naudojamą fotoaparato sąsają iš pirmosios internetinės kameros, kurią aptinka „pygame“. Gali tekti pakeisti skiriamąją gebą, kad ji atitiktų jūsų internetinę kamerą. Eksperimentuokite su daugybe vertybių, kad surastumėte tai, kas geriausiai tinka.

6 veiksmas: „Dropbox“parametrų failų naudojimas

Taigi dabar turėtumėte turėti darbo scenarijų, kuris, paleidžiant pagal 4 veiksmo instrukcijas, leis jūsų „Pi“pradėti stebėti jūsų įvesties programos aplanką. Pirmą kartą paleidus, programos aplanke turėtų būti šie parametrų failai:

vėlavimas = 10

exitprogram = 0 imagerequest = 0 temperatūra = 0

Sąveika su programa pasiekiama rankiniu būdu pervadinant parametrų failus per „Dropbox“. Norėdami tai padaryti, tiesiog dešiniuoju pelės mygtuku spustelėkite vieną iš failų ir pasirinkite „pervardyti“. Kiekvienas parametrų failas turi skirtingą funkciją:

- delsimas:

Šis failas nurodo stebėjimo programai, kiek sekundžių reikia laukti tarp kiekvieno stebėjimo ciklo kartojimo. Kai žinau, kad nelabai bendrausiu su programa, nustatiau ją į 60 arba 120. Kai žinau, kad noriu dažnai prašyti duomenų iš „Pi“, nustatiau jį į 10.

- išėjimo programa:

Tai turėtų būti nustatyta į 1 arba 0. Jei programa nustato, kad ji nustatyta į 1, ji užbaigs scenarijų. Jei nustatysite jį į 1 ir scenarijus išeis, turėsite dar kartą prisijungti prie „Pi“, kad pradėtumėte atsarginę kopiją. Šis parametras egzistuoja tam, kad galėtumėte gražiai užbaigti stebėjimo programą, kai jos nebereikia paleisti (pavyzdžiui, jei grįžote namo ir nebenorite nuotoliniu būdu stebėti kameros).

- vaizdo prašymas:

Tai turbūt svarbiausias parametras. Tai turėtų būti nustatyta į 1 arba 0. Jei programa nustato, kad ji nustatyta į 1, ji paprašys vaizdo iš žiniatinklio kameros ir įkels jį į programų aplanką (pavadinimu „image.jpg“). Jei egzistuoja kitas „image.jpg“, jis jį perrašys.

- temperatūra:

Tai DS18B20 temperatūros rodinys, nustatytas funkcijos set_latest_temp (). Jums niekada nereikės redaguoti šio parametro failo - jį automatiškai nustato programa.

Atminkite, kad jei nustatysite „exitprogram“arba „imagerequest“į 1, programa automatiškai grąžins juos į 0 prieš vykdydama atitinkamą kodą. Tai yra dėl patogumo. Taip pat galite pastebėti, kad kode yra daug „try“ir „išskyrus“blokų, apimančių daugelį svarbių funkcijų. Taip siekiama užtikrinti, kad scenarijus nesukeltų išimčių (taigi ir nustotų veikti), jei kažkas negerai (pvz., Interneto ryšio problema, neleidžianti pasiekti „Dropbox“).

7 žingsnis: Išvada

Šis projektas pristatė būdą valdyti „Raspberry Pi“naudojant „Python“ir „Dropbox“. Nors šiame projekte naudojama aparatūra yra temperatūros jutiklis ir USB internetinė kamera, yra daug kitų šio Pi valdymo metodo taikomųjų programų. Tiesą sakant, bet kokį aparatūros komponentą, prieinamą per GPIO, galima valdyti naudojant panašią programos struktūrą, todėl sistemą labai lengva išplėsti.

Kitas žingsnis, taip pat galite naudoti GUI biblioteką, pvz., „Tkinter“, kartu su „Dropbox“API, kad sukurtumėte kliento programą, kuri leistų jums keisti parametrų failus net neprisijungus prie „Dropbox“.

Tikiuosi, kad ši pamoka buvo aiški, ir jei turite kokių nors klausimų ar norite, kad ką nors paaiškintų, rašykite komentarą!

Rekomenduojamas: