Sadržaj:
- Korak 1: Postavite hardver
- Korak 2: Postavite Dropbox
- Korak 3: Priprema mape aplikacija Dropbox
- Korak 4: Početak rada s kodom
- Korak 5: Kopanje dublje u kôd
- Korak 6: Upotreba datoteka parametara Dropbox
- Korak 7: Zaključak
Video: Raspberry Pi kućni nadzor s Dropboxom: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Ovaj će vam vodič pokazati kako stvoriti jednostavan i proširiv sustav za nadzor doma pomoću Raspberry Pi, web kamere, nekoliko električnih komponenti i vašeg Dropbox računa. Gotov sustav omogućit će vam daljinsko traženje i pregled slika s vaše web kamere, a također ćete koristiti i digitalni senzor temperature za prodaju koji vam je na raspolaganju za praćenje temperature vašeg doma putem interneta, a sve to pomoću Dropboxa.
Ovo je bio prvi projekt koji sam smislio nakon što sam dobio Raspberry Pi 2 model B. Moj cilj je bio stvoriti sustav za praćenje temeljen na Pythonu kojim bih mogao kontrolirati i primati podatke s interneta. Iako postoji mnogo različitih načina za to, odlučio sam upotrijebiti Dropbox kao sučelje između Pi i interneta jer imaju jednostavan Python API koji vam omogućuje prijenos, izmjenu i pretraživanje datoteka u određenim mapama koristeći nekoliko redaka kodirati.
Također sam želio da moje rješenje bude lagano i jednostavno, te da izbjegnem zatrpavanje svog Pi -a nepotrebnim knjižnicama i programima. Softverska komponenta ovog projekta sastoji se od jedne Python skripte, što znači da možete nastaviti koristiti Pi kao uobičajeno, čak i kad je sustav za nadzor pokrenut.
Za ovaj projekt trebat će vam:
Pivo od maline Pi. Bilo koji model bi trebao funkcionirati, koristio sam početni komplet sve u jednom, ali možda vam je potrebna samo središnja jedinica
USB web kamera. Kupio sam jeftin ADVENT AWC72015, koji je dobro funkcionirao. Možda bi bilo dobro pogledati ovaj popis web kamera za koje je potvrđeno da rade s Pi. Imajte na umu da neki zahtijevaju USB čvorište s napajanjem (moje radi bez toga)
Dropbox račun. Koristim svoj standardni besplatni račun jer ovaj projekt ne zahtijeva puno prostora za pohranu
Digitalni osjetnik temperature DS18B20 i otpornik od 4,7 k. Senzor možete kupiti ovdje, a možda bi bilo vrijedno i zgrabiti paket različitih otpornika
Neki pribor za izgradnju sklopova. Preporučio bih korištenje matične ploče i neke kratkospojne kabele kako bi proces izgradnje kruga bio što lakši
[Ako se odlučite za kupnju bilo kojeg od ovih proizvoda, bio bih vam zahvalan ako pristupite popisima pomoću gornjih veza - na taj način dobivam mali dio dobiti bez dodatnih troškova!]
Korak 1: Postavite hardver
Prvi korak je osigurati postavljanje vašeg Pi i pripadajućih perifernih uređaja.
Prvo povežite svoj Pi s internetom. To je potrebno kako bi se osiguralo da program za nadzor može primiti vaše zahtjeve i prenijeti podatke u Dropbox. Koristim ethernet vezu kako bih osigurao pouzdanost, ali i Wi-Fi veza trebala bi raditi dobro, a imati i prednost poboljšane prenosivosti. Ako odaberete Wi-Fi, preporučio bih ovaj USB ključ za Pi.
Zatim povežite svoju web kameru s Pi priključivanjem u jedan od USB priključaka. Iako upute moje web kamere s Adventa nisu izričito govorile da će raditi s Linuxom, sve što sam trebao učiniti je uključiti je i pokrenuti Pi. Dodatna instalacija nije bila potrebna. Ostale web kamere mogu se razlikovati. Pomoću sljedeće naredbe možete provjeriti je li Linux otkrio vašu web kameru:
lsusb
Na gornjoj slici moja je web kamera navedena kao '0c45: 6340 Microdia'
Konačno, svoj senzor temperature DS18B20 možete spojiti na Pi -jevo GPIO zaglavlje. Koristim svoju matičnu ploču kako bih olakšao proces stvaranja sklopova i preporučio bih vam da učinite isto, pogotovo jer DS18B20 zahtijeva otpornik od 4,7 k koji treba postaviti između dva od svoja tri pina. Ova veza pruža dobar dijagram ožičenja koji prikazuje kako se ploča može koristiti za povezivanje s ovim osjetnikom temperature.
Sljedeća stranica gornjeg vodiča također obuhvaća korake potrebne za čitanje podataka iz DS18B20 i pokazuje vam kako provjeriti radi li. Važno je izvršiti ove korake postavljanja prije nego što možete koristiti DS18B20 za ovaj projekt. Također ćemo integrirati uzorak Python skripte iz vodiča u naš program praćenja, pa biste mogli htjeti na brzinu pregledati ovaj kôd.
Također imajte na umu jedinstveni broj vašeg DS18B20. To je broj koji počinje s '28-'na koji naiđete tijekom vodiča za postavljanje. Morat ćete ga unijeti u nadolazeći program Python kako biste mu omogućili čitanje na temperaturi.
Korak 2: Postavite Dropbox
Da bi se vaš Pi sučelio s Dropboxom, morate postaviti novu aplikaciju Dropbox. To će vam pružiti detalje potrebne vašem Pi za izvođenje mrežnog upravljanja datotekama pomoću Pythona. Pod pretpostavkom da ste stvorili Dropbox račun i da ste prijavljeni, možete izraditi novu aplikaciju pomoću opcije izbornika 'Developers'. Sažetak važnih koraka pogledajte na gornjoj slici.
Na izborniku "Developers" odaberite "My apps", a zatim pritisnite gumb "Create app". Da biste ispunili rezultirajući obrazac, odaberite "Dropbox API", a zatim "Mapa aplikacije". Konačno, možete odabrati jedinstveno ime za svoju aplikaciju u Dropboxu. Kliknite "Izradi aplikaciju".
Zatim ćete biti preusmjereni na stranicu postavki svoje aplikacije u Dropboxu. Ovdje morate učiniti samo još jednu stvar - generirajte pristupni token. Da biste to učinili, pomaknite se dolje do odjeljka "OAuth 2" i pod "Generirani pristupni token" kliknite gumb "Generiraj".
Ovo će vam predstaviti dugi niz znakova koji su potrebni za pristup vašem Dropbox računu pomoću Pythona. Zabilježite ovaj pristupni token jer ćete ga kasnije morati navesti u kodu. Ako izgubite token, možete se vratiti na postavke svoje aplikacije klikom na 'Moje aplikacije' u odjeljku 'Developers' u Dropboxu i generirati novi token.
Ostale postavke možete ostaviti kakve jesu. Da biste potvrdili da je vaša aplikacija stvorila potrebne mape na vašem Dropbox računu, idite na svoju početnu stranicu za pohranu i potražite mapu "Aplikacije". Unutar ove mape trebala bi se nalaziti podmapa s imenom koje ste odabrali za svoju novu aplikaciju. Ovdje će se smjestiti sve datoteke vašeg nadzornog sustava.
Korak 3: Priprema mape aplikacija Dropbox
Nakon što postavite svoju Dropbox aplikaciju, vrijeme je da razmislite o tome kako ćete koristiti rezultirajuću mapu na svom Dropbox računu za interakciju sa svojim Pi. To se postiže vrlo jednostavno. Python skripta koja će se izvoditi na Pi-u koristit će podskup naredbi iz Dropbox API-ja za pretraživanje i izmjenu naziva nekih praznih datoteka bez proširenja u mapi vaše aplikacije. Te ćemo datoteke nazvati 'datotekama parametara' jer će vam svaka omogućiti kontrolu različitog aspekta ponašanja nadzornog sustava. Gornja slika prikazuje četiri datoteke parametara koje moraju biti prisutne u mapi vaših aplikacija Dropbox za ovaj projekt. Njihovo stvaranje je jednostavno:
Počevši s potpuno praznom mapom aplikacije, otvorite program za uređivanje teksta na računalu. Iako se to moglo učiniti pomoću Pi -a, bilo mi je lakše koristiti prijenosno računalo sa sustavom Windows za ovu fazu postavljanja. Nakon što je uređivač teksta otvoren (koristio sam Notepad u sustavu Windows 7), sve što trebate učiniti je spremiti potpuno praznu tekstualnu datoteku bilo gdje na računalu. Kao naš prvi primjer, izradit ćemo prvi parametar u slici zaglavlja. Datoteci dajte naziv 'delay = 10' kada je spremite.
Da ponovimo, sada biste na računalu trebali imati spremljenu praznu tekstualnu datoteku s nazivom 'delay = 10'. Datoteka će također imati ekstenziju '.txt' koja može, ali i ne mora biti vidljiva.
Sljedeći korak je učitavanje ove datoteke u mapu aplikacije Dropbox. Ovo je kao i svaki drugi prijenos s Dropboxa. Jednostavno se pomaknite do mape svoje aplikacije, kliknite "Prenesi" i odaberite datoteku "odgoda = 10".
Kad se ova datoteka učita, morate ukloniti ekstenziju '.txt' koja bi sada trebala biti vidljiva u nazivu datoteke. Da biste to učinili, jednostavno desnom tipkom miša kliknite datoteku i odaberite 'Preimenuj'. Uklonite '.txt' dio naziva datoteke. Sada bi vam trebala ostati datoteka pod nazivom 'delay = 10' bez nastavka datoteke, kao što je prikazano na slici zaglavlja.
Datoteka parametara 'kašnjenje' jedna je od četiri koje će koristiti program za nadzor. Da biste stvorili ostale, možete samo kopirati i preimenovati datoteku "odgode" tako da je pritisnete desnim gumbom miša. Nakon što ste izradili tri kopije, dajte im imena kako je prikazano na slici zaglavlja tako da mapa vaše aplikacije bude identična onoj prikazanoj na početku ovog koraka.
Korak 4: Početak rada s kodom
Kao što je već spomenuto, jezgru našeg nadzornog sustava činit će jedna Python skripta koja će biti sučelja s Dropboxom. Da bi program praćenja bio aktivan, ova će se skripta morati izvoditi u pozadini na vašem Pi. Pretpostavljam da se najtočnije opisuje kao 'daemon' skripta, što znači da ga možete jednostavno postaviti da zaboravi. Skripta je priložena ovom koraku, tako da ovdje nema smisla ponavljati kôd. Možda je sada dobro vrijeme da ga preuzmete i upoznate se s njim.
Prije nego što budete mogli pokrenuti skriptu, važno je provjeriti imate li instalirane odgovarajuće Python knjižnice. Oni koji su vam potrebni navedeni su na vrhu priložene skripte. Oni su:
uvoz dropbox
import pygame.camera import os vrijeme uvoza
Python instalacija na mom Pi već je uključivala pygame, os i vrijeme pa je jedino što sam morao instalirati bio Dropbox. Učinio sam to koristeći njihove vrlo jednostavne upute za instalaciju s pipom.
Nakon što postavite svoje knjižnice, morat ćete urediti dva gornja retka priložene skripte tako da odgovaraju vašem Dropbox Access Tokenu i jedinstvenom identifikatoru temperaturnog osjetnika vašeg DS18B20. Ovo su dva retka koja je potrebno urediti:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
Samo zamijenite **** s ispravnim vrijednostima. U ovom trenutku ste zapravo spremni za početak korištenja programa za nadzor! Umjesto da samo uskočite, preporučio bih vam da prijeđete na sljedeći korak radi općeg pregleda koda.
VAŽNO: Kada pokrenete ovu skriptu, želite da radi u pozadini kako biste a) mogli nastaviti koristiti Pi i b) kada zatvorite svoju SSH sesiju, skripta će se nastaviti izvoditi. Ovo je naredba koju koristim prilikom pokretanja skripte:
nohup python DropCamTherm.py &
Time se postižu tri stvari: Pokrenut će skriptu ('python DropCamTherm.py'), odmah će vratiti kontrolu u naredbeni redak kako biste mogli nastaviti koristiti Pi ('&') i slat će Python izlaze koji bi obično se prikazuje u naredbenom retku u datoteku pod nazivom 'nohup.out'. To se može pročitati pomoću uređivača teksta Linux (meni je najdraži nano), a automatski će se stvoriti u direktoriju iz kojeg se skripta pokreće.
Korak 5: Kopanje dublje u kôd
Kad otvorite skriptu, primijetit ćete da se sastoji od tri funkcije zajedno s blokom koda koji implementira te funkcije prilikom izvođenja skripte. Funkcije koriste Dropbox API i pristupaju datoteci dnevnika temperature DS18B20 kako bi slušale naredbe iz Dropboxa i učitavale najnovije očitanje temperature. U nastavku je pregled onoga što funkcije rade i kako se koriste za rad sustava za nadzor:
- poll_parameter ():
Ova funkcija prikazuje namjenu datoteka parametara Dropbox koje smo stvorili u 3. koraku. Pretražuje mapu aplikacije Dropbox za datoteku koja sadrži tekst 'param ='. Zatim ekstrahira tekst nakon '=' i pokušava ga pretvoriti u cijeli broj. Možete vidjeti da nam to omogućuje kontrolu programa dodavanjem odgovarajućih brojeva na kraj datoteka parametara ručno. Sljedeći korak sadržavat će kratki priručnik s uputama koji vam pokazuje kako koristiti svaku od datoteka parametara za upravljanje aspektom programa.
- set_parameter ():
Ova funkcija omogućuje programu da preimenuje datoteku parametara iz Pythona. To čini u nekoliko navrata, uglavnom radi smanjenja potrebe za pretjeranim ručnim preimenovanjem datoteka.
- set_latest_temp ():
Ova funkcija koristi set_parameter () za prijenos najnovije temperature u mapu aplikacije Dropbox dodavanjem u datoteku parametara 'temperature'. Funkcija čita najnoviju temperaturu iz zapisničke datoteke DS18B20 (koja je dostupna na Linuxu na putu na koji ukazuje varijabla THERMOMETER_FILE).
Završni dio programa sadrži kôd koji će se izvršiti pri pokretanju skripte. Nakon nekoliko koraka postavljanja koji su potrebni za senzor DS18B20, on otvara Dropbox sesiju pomoću vašeg Access Token -a i koristi pygame za pretraživanje vaše web kamere. Ako se pronađe web kamera, ona će ući u petlju gdje pomoću poll_parameter () izvlači informacije iz Dropboxa i djeluje na nju.
VAŽNO: Primijetit ćete sljedeći redak koda:
cam = pygame.camera. Camera (cam_list [0], (864, 480))
… ovo pokušava stvoriti upotrebljivo sučelje kamere od prve web kamere koju pygame detektira. Možda će se morati promijeniti razlučivost kako bi odgovarala vašoj web kameri. Eksperimentirajte s brojnim vrijednostima kako biste pronašli ono što najbolje funkcionira.
Korak 6: Upotreba datoteka parametara Dropbox
Dakle, sada biste trebali imati radnu skriptu koja će, kada se pokrene prema uputama iz koraka 4, omogućiti vašem Pi da počne nadzirati mapu aplikacije za vaše unose. Mapa aplikacije pri prvom pokretanju trebala bi sadržavati sljedeće datoteke parametara:
kašnjenje = 10
exitprogram = 0 imagerequest = 0 temperatura = 0
Interakcija s programom postiže se ručnim preimenovanjem datoteka parametara putem Dropboxa. Da biste to učinili, desnom tipkom miša kliknite jednu od datoteka i odaberite 'preimenuj'. Svaka datoteka parametara ima drugačiju funkciju:
- kašnjenje:
Ova datoteka govori programu za praćenje koliko sekundi treba čekati između svake iteracije nadzorne petlje. Kad znam da neću puno komunicirati s programom, postavio sam ga na 60 ili 120. Kad znam da želim često zahtijevati podatke od Pi, postavio sam ih na 10.
- izlazni program:
To bi trebalo biti postavljeno na 1 ili 0. Ako program otkrije da je postavljen na 1, završit će skriptu. Ako postavite na 1 i skripta izađe, morat ćete se ponovno prijaviti na Pi da biste je ponovno pokrenuli. Ovaj parametar postoji tako da možete ljubazno završiti program praćenja kada vam više ne treba da se izvodi (na primjer, ako ste se vratili kući i više ne želite daljinski nadzirati web kameru).
- zahtjev za sliku:
Ovo je možda najvažniji parametar. To bi trebalo biti postavljeno na 1 ili 0. Ako program otkrije da je postavljen na 1, zatražit će sliku s web kamere i prenijeti je u mapu aplikacije (s naslovom 'image.jpg'). Ako postoji drugi 'image.jpg', prebrisat će ga.
- temperatura:
Ovo je očitanje temperature DS18B20 postavljeno funkcijom set_latest_temp (). Ovu datoteku parametara nikada ne trebate uređivati - program je automatski postavlja.
Imajte na umu da ako postavite 'exitprogram' ili 'imagerequest' na 1, program će ih automatski vratiti na 0 prije izvršavanja odgovarajućeg koda. Ovo je radi praktičnosti. Možda ćete također primijetiti da kôd sadrži mnogo blokova 'pokušaj' i 'osim' koji okružuju mnoge kritične funkcije. Time se želi osigurati da skripta neće bacati iznimke (i stoga prestati izvoditi) ako nešto pođe po zlu (poput problema s internetskom vezom koji sprječava pristup Dropboxu).
Korak 7: Zaključak
Ovaj projekt predstavio je način kontrole Raspberry Pi -a pomoću Pythona i Dropboxa. Iako je hardver koji se koristi u ovom projektu senzor temperature i USB web kamera, postoje mnoge druge aplikacije za ovu metodu upravljanja Pi. Zapravo, bilo kojom hardverskom komponentom koja je dostupna putem GPIO -a može se upravljati pomoću slične programske strukture, što čini sustav vrlo lakim za proširenje.
Kao sljedeći korak, također možete upotrijebiti biblioteku grafičkog sučelja, poput Tkintera, zajedno s Dropbox API -jem za stvaranje klijentskog programa koji bi vam omogućio izmjenu datoteka parametara bez potrebe za prijavom na Dropbox.
Nadam se da je ovaj vodič bio jasan, a ako imate pitanja ili želite da nešto pojasnim, postavite komentar!
Preporučeni:
Kućni zvučni sustav: 6 koraka (sa slikama)
Kućni zvučni sustav: Ovaj audio sustav jednostavan je za izradu i jeftin (manje od 5 USD plus neki oporabljeni materijali pronađeni u mojoj radionici). Omogućuje dovoljno jaku audiciju za veliku prostoriju. Kao izvori signala mogu se koristiti: -Bluetooth sa bilo kojeg mobilnog telefona telefon. -MP3 iz memorije
EWON Raspberry Pi pogonski kućni robot: 7 koraka (sa slikama)
EWON Raspberry Pi Powered Home Robot: Nedavno sam se zaokupio gledajući mnogo Netflixovih serija zbog trenutne situacije, nadam se da ste svi na sigurnom, i vidio sam da je objavljena 5. sezona Black Mirrora. Antologijska serija koja se vrti oko skupine ljudi iz osobnog života
Kućni nadzor "uradi sam" s RaspberryPi i Cloud4Rpi: 5 koraka
Napravite kućni nadzor vlastitim rukama s RaspberryPi i Cloud4Rpi: Jednog zimskog vikenda otišao sam u svoju seosku kuću i otkrio da je tamo jako hladno. Nešto se dogodilo s električnom energijom i prekidač za isključenje sklopke ga je isključio, a nestalo je i grijanje. Imao sam sreću što sam došao tamo, inače za nekoliko dana
Novi bežični IOT senzorski sloj za kućni sustav za nadzor okoliša: 5 koraka (sa slikama)
Novi bežični IOT senzorski sloj za kućni sustav za nadzor okoliša: Ova uputa opisuje jeftiniji, bežični IOT senzorski sloj na bateriju za moj raniji Instructable: LoRa IOT sustav za nadzor okoliša kod kuće. Ako već niste pogledali ovaj raniji Instructable, preporučujem da pročitate uvod
Kućni nadzor putem Twittera i YouTubea: 6 koraka
Kućni nadzor putem Twittera i YouTubea: Najnovijom verzijom Yoics za Windows možete jednostavno pretvoriti bilo koju web kameru u svoj osobni nadzorni sustav, gdje se videozapisi automatski prenose na YouTube & šalje se obavijest na Twitteru