Sadržaj:

Raspberry Pi kućni nadzor s Dropboxom: 7 koraka
Raspberry Pi kućni nadzor s Dropboxom: 7 koraka

Video: Raspberry Pi kućni nadzor s Dropboxom: 7 koraka

Video: Raspberry Pi kućni nadzor s Dropboxom: 7 koraka
Video: ПОЧЕМУ Я ЖДУ L4D3 2024, Novembar
Anonim
Raspberry Pi kućni nadzor s Dropboxom
Raspberry Pi kućni nadzor s Dropboxom

Ovaj vodič će vam pokazati kako stvoriti jednostavan i proširiv sistem za nadzor doma koristeći Raspberry Pi, web kameru, nekoliko električnih komponenti i vaš Dropbox račun. Završeni sistem će vam omogućiti da daljinski zatražite i pregledate slike sa svoje web kamere, a takođe ć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 sistem za nadgledanje zasnovan na Pythonu koji 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 -a i interneta jer imaju jednostavan Python API koji vam omogućuje postavljanje, mijenjanje i pretraživanje datoteka u određenim mapama koristeći nekoliko redaka kod.

Također sam želio da moje rješenje bude lagano i jednostavno i da izbjegnem zatrpavanje svog Pi -a nepotrebnim bibliotekama 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 kada je sistem za nadzor pokrenut.

Za ovaj projekat trebat će vam:

A Raspberry Pi. Bilo koji model bi trebao funkcionirati, koristio sam početni komplet sve u jednom, ali možda vam je potrebna samo centralna jedinica

USB web kamera. Kupio sam jeftin ADVENT AWC72015, koji je dobro funkcionirao. Možda bi bilo dobro pogledati ovu listu web kamera za koje je potvrđeno da rade s Pi. Imajte na umu da nekima treba USB čvorište s napajanjem (moje radi bez njega)

Dropbox račun. Koristim svoj standardni besplatni račun jer ovaj projekt ne zahtijeva mnogo prostora za pohranu

Digitalni senzor temperature DS18B20 i otpornik od 4,7 k. Senzor možete kupiti ovdje, a možda bi vrijedilo uzeti i paket različitih otpornika

Neki dodaci za izgradnju kola. Preporučio bih korištenje matične ploče i nekoliko kratkospojnih kabela 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 dobijam mali dio dobiti bez dodatnih troškova!]

Korak 1: Postavite hardver

Postavite hardver
Postavite hardver

Prvi korak je osigurati postavljanje vašeg Pi -a i pripadajućih perifernih uređaja.

Prvo povežite svoj Pi na internet. To je potrebno kako bi se osiguralo da program za nadzor može primiti vaše zahtjeve i učitati podatke u Dropbox. Koristim ethernet vezu kako bih osigurao pouzdanost, ali bi i Wi-Fi veza trebala 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 tako što ćete je priključiti u jedan od USB priključaka. Iako upute moje web kamere na Adventu nisu izričito govorile da će raditi s Linuxom, sve što sam trebao učiniti je priključiti je i pokrenuti Pi. Dodatna instalacija nije bila potrebna. Druge 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 web kamera je navedena kao '0c45: 6340 Microdia'

Konačno, svoj DS18B20 temperaturni senzor možete spojiti na Pi -jevo GPIO zaglavlje. Koristim svoju matičnu ploču kako bih olakšao proces stvaranja krugova 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 senzorom temperature.

Sljedeća stranica gornjeg vodiča također pokriva 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 za nadgledanje, pa ćete možda htjeti imati brzi pregled ovog koda.

Zabilježite i 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 da biste mu omogućili čitanje na temperaturi.

Korak 2: Postavite Dropbox

Podesite Dropbox
Podesite Dropbox

Da bi se vaš Pi povezivao s Dropboxom, morate postaviti novu Dropbox aplikaciju. Ovo će vam pružiti detalje potrebne vašem Pi za izvođenje mrežnih datoteka pomoću Pythona. Pod pretpostavkom da ste stvorili Dropbox račun i da ste prijavljeni, možete stvoriti novu aplikaciju pomoću opcije izbornika 'Developers'. Sažetak važnih koraka pogledajte na gornjoj slici.

U 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 'Stvori aplikaciju'.

Zatim ćete biti preusmjereni na stranicu s postavkama svoje aplikacije u Dropboxu. Postoji samo još jedna stvar koju trebate učiniti ovdje - 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 dugačak 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 do postavki 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 početnu stranicu za pohranu i potražite mapu "Aplikacije". Unutar ove mape trebao bi se nalaziti podmapa s imenom koje ste odabrali za svoju novu aplikaciju. Ovdje će biti smještene sve datoteke za vaš sistem nadzora.

Korak 3: Priprema mape aplikacija Dropbox

Priprema mape aplikacija Dropbox
Priprema mape aplikacija Dropbox

Nakon što postavite 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 će koristiti podskup naredbi iz Dropbox API-ja za pretraživanje i izmjenu naziva nekih praznih datoteka bez proširenja u mapi vaše aplikacije. Nazvat ćemo ove datoteke 'datotekama parametara' jer će vam svaka omogućiti kontrolu različitih aspekata ponašanja nadzornog sistema. 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 od potpuno prazne mape aplikacije, otvorite program za uređivanje teksta na računaru. Iako se to moglo učiniti pomoću Pi -a, bilo mi je lakše koristiti svoj Windows laptop u ovoj fazi postavljanja. Nakon što se uređivač teksta otvori (koristio sam Notepad u sustavu Windows 7), sve što trebate učiniti je spremiti potpuno praznu tekstualnu datoteku bilo gdje na računaru. Kao naš prvi primjer, kreirat ćemo prvi parametar u slici zaglavlja. Datoteci dajte naziv 'delay = 10' kada je spremite.

Da rezimiramo, sada bi na vašem računaru trebala biti pohranjena prazna tekstualna datoteka s imenom 'delay = 10'. Datoteka će također imati ekstenziju '.txt' koja može ili ne mora biti vidljiva.

Sljedeći korak je učitavanje ove datoteke u mapu aplikacije Dropbox. Ovo je kao i svaki drugi Dropbox upload. Jednostavno idite u mapu svoje aplikacije i kliknite 'Prenesi' i odaberite datoteku 'odgoda = 10'.

Kada se ova datoteka učita, morate ukloniti ekstenziju '.txt' koja bi sada trebala biti vidljiva u nazivu datoteke. Da biste to učinili, jednostavno kliknite desnom tipkom miša na 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 praćenje. Da biste stvorili ostale, možete samo kopirati i preimenovati svoju datoteku 'odgode' tako da je pritisnete desnim tasterom miša. Nakon što ste stvorili 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 korištenja koda

Kao što je diskutovano, jezgru našeg sistema za praćenje će činiti jedna Python skripta koja će se povezivati s Dropboxom. Da bi program praćenja bio aktivan, ova skripta će se morati izvoditi u pozadini na vašem Pi. Pretpostavljam da je najpreciznije opisano kao 'daemon' skripta, što znači da ga možete jednostavno postaviti da radi i zaboraviti na to. Skripta je priložena ovom koraku, tako da nema smisla ovdje ponavljati kôd. Možda je sada pravi trenutak da ga preuzmete i upoznate se s njim.

Prije nego što budete mogli pokrenuti skriptu, važno je osigurati da su instalirane odgovarajuće Python biblioteke. Oni koji su vam potrebni navedeni su na vrhu priložene skripte. Oni su:

import 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 njihova vrlo jednostavna uputstva za instalaciju sa pipom.

Kada se vaše biblioteke postave, morat ćete urediti gornja dva retka priložene skripte tako da odgovaraju vašem Dropbox Access Tokenu i jedinstvenom identifikatoru temperaturnog senzora DS18B20. Ovo su dvije linije koje je potrebno urediti:

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

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

Samo zamijenite **** s ispravnim vrijednostima. U ovom trenutku ste 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: Pokrenuće skriptu ('python DropCamTherm.py'), odmah će vratiti kontrolu u komandnu liniju kako biste mogli nastaviti koristiti Pi ('&') i slati Python izlaze koji bi obično se prikazuje na komandnoj liniji u datoteku pod nazivom 'nohup.out'. Ovo se može pročitati pomoću Linux uređivača teksta (moj omiljeni je nano) i automatski će se stvoriti u direktoriju iz kojeg se skripta pokreće.

Korak 5: Kopanje dublje u kôd

Kada otvorite skriptu, primijetit ćete da se sastoji od tri funkcije zajedno s blokom koda koji implementira te funkcije prilikom pokretanja 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. Ispod je pregled onoga što funkcije rade i kako se koriste za rad sistema za nadzor:

- poll_parameter ():

Ova funkcija prikazuje svrhu datoteka parametara Dropbox -a koje smo stvorili u koraku 3. Pretražuje mapu aplikacije Dropbox u potrazi za datotekom koja sadrži tekst 'param ='. Zatim izdvaja tekst nakon '=' i pokušava ga pretvoriti u cijeli broj. Možete vidjeti da nam to omogućava 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 kontrolu nekog aspekta programa.

- set_parameter ():

Ova funkcija omogućava 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 učitavanje najnovije temperature u mapu aplikacije Dropbox dodavanjem u datoteku parametara 'temperature'. Ova funkcija čita najnoviju temperaturu iz datoteke dnevnika DS18B20 (koja je dostupna na Linuxu na putu koji pokazuje varijabla THERMOMETER_FILE).

Završni dio programa sadrži kôd koji će se izvršiti prilikom pokretanja skripte. Nakon nekoliko koraka postavljanja koji su potrebni za senzor DS18B20, on otvara Dropbox sesiju koristeći vaš Access Token i koristi pygame za pretraživanje vaše web kamere. Ako se pronađe web kamera, ona će ući u petlju u kojoj koristi poll_parameter () za izdvajanje informacija iz Dropboxa i djelovanje na nju.

VAŽNO: Primijetit ćete sljedeći red 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 biti potrebno promijeniti rezoluciju 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 -u da počne nadzirati mapu aplikacije za vaše unose. Mapa aplikacije pri prvom pokretanju treba 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 Dropbox -a. 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:

Ovo bi trebalo biti postavljeno na 1 ili 0. Ako program otkrije da je postavljen na 1, zaključit će skriptu. Ako postavite na 1 i skripta izađe, morat ćete se ponovo prijaviti na Pi da biste je ponovo pokrenuli. Ovaj parametar postoji tako da možete ljubazno završiti program nadgledanja 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. Ovo bi trebalo biti postavljeno na 1 ili 0. Ako program otkrije da je postavljen na 1, zatražit će sliku s web kamere i postaviti je u mapu aplikacije (s naslovom 'image.jpg'). Ako postoji drugi 'image.jpg', prebrisat će ga.

- temperatura:

Ovo je očitanje temperature DS18B20 koje je postavila funkcija set_latest_temp (). Nikada ne trebate uređivati ovu datoteku parametara - 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 relevantnog koda. Ovo je radi praktičnosti. Možda ćete primijetiti i 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 je predstavio 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. U stvari, bilo koja hardverska komponenta kojoj je dostupna putem GPIO -a može se kontrolirati pomoću slične programske strukture, što čini sistem vrlo lakim za proširenje.

Kao sljedeći korak, također možete koristiti biblioteku grafičkog sučelja, poput Tkintera, zajedno s Dropbox API -jem za kreiranje klijentskog programa koji bi vam omogućio izmjenu datoteka parametara bez potrebe za prijavljivanjem na Dropbox.

Nadam se da je ovaj vodič bio jasan, a ako imate pitanja ili želite da nešto pojasnim, postavite komentar!

Preporučuje se: