Cuprins:

Monitorizare Raspberry Pi Home cu Dropbox: 7 pași
Monitorizare Raspberry Pi Home cu Dropbox: 7 pași

Video: Monitorizare Raspberry Pi Home cu Dropbox: 7 pași

Video: Monitorizare Raspberry Pi Home cu Dropbox: 7 pași
Video: Ten tu Google fotos y servidor sin cuotas synology nas ds118 2024, Noiembrie
Anonim
Monitorizare Raspberry Pi Home cu Dropbox
Monitorizare Raspberry Pi Home cu Dropbox

Acest tutorial vă va arăta cum să creați un sistem simplu și extensibil de monitorizare a casei utilizând un Raspberry Pi, o cameră web, câteva componente electrice și contul dvs. Dropbox. Sistemul terminat vă va permite să solicitați și să vizualizați de la distanță imagini de pe camera dvs. web, utilizând în același timp un senzor digital de temperatură disponibil pentru a monitoriza temperatura casei dvs. pe internet, toate folosind Dropbox.

Acesta a fost primul proiect pe care l-am gândit după ce am primit un model Raspberry Pi 2 B. Scopul meu a fost să creez un sistem de monitorizare bazat pe Python pe care să îl pot controla și primi date de pe internet. Deși există multe modalități diferite de a face acest lucru, am decis să folosesc Dropbox ca interfață între Pi și internet, deoarece acestea au un API Python simplu care vă permite să încărcați, să modificați și să căutați fișiere în anumite foldere folosind câteva linii de cod.

De asemenea, am dorit ca soluția mea să fie ușoară și simplă și să evit să aglomera Pi-ul meu cu biblioteci și programe inutile. Componenta software a acestui proiect constă dintr-un singur script Python, ceea ce înseamnă că puteți continua să utilizați Pi-ul în mod normal, chiar și atunci când sistemul de monitorizare rulează.

Pentru acest proiect veți avea nevoie de:

Un Raspberry Pi. Orice model ar trebui să funcționeze, am folosit un kit de pornire all-in-one, dar poate aveți nevoie doar de unitatea centrală

O cameră web USB. Am cumpărat un ADVENT AWC72015 ieftin, care s-a întâmplat să funcționeze bine. Poate fi o idee bună să consultați această listă de camere web care sunt confirmate să funcționeze cu Pi. Rețineți că unele necesită un hub USB alimentat (al meu funcționează bine fără)

Un cont Dropbox. Îmi folosesc contul gratuit standard, deoarece acest proiect nu necesită mult spațiu de stocare

Un senzor digital de temperatură DS18B20 și un rezistor de 4.7k. Puteți cumpăra senzorul aici și s-ar putea să merite să luați și un pachet de diverse rezistențe

Unele accesorii pentru construirea circuitelor. Aș recomanda utilizarea unei plăci de calcul și a unor cabluri jumper pentru a face procesul de construire a circuitului cât mai ușor posibil

[Dacă decideți să cumpărați oricare dintre aceste produse, aș aprecia foarte mult dacă accesați listele folosind link-urile de mai sus - în acest fel, obțin o mică parte din profituri fără costuri suplimentare!]

Pasul 1: configurați hardware-ul

Configurați hardware-ul
Configurați hardware-ul

Primul pas este să vă asigurați că Pi și perifericele asociate sunt configurate.

Mai întâi, conectați-vă Pi-ul la internet. Acest lucru este necesar pentru a vă asigura că programul de monitorizare vă poate primi solicitările și încărca date în Dropbox. Folosesc o conexiune ethernet pentru a asigura fiabilitatea, dar și o conexiune Wi-Fi ar trebui să funcționeze bine, având în același timp și avantajul unei portabilități îmbunătățite. Dacă alegeți Wi-Fi, aș recomanda acest dongle USB pentru Pi.

Apoi, conectați camera web la Pi conectându-l la unul dintre porturile USB. În timp ce instrucțiunile webcam-ului meu Advent nu spuneau în mod explicit că ar funcționa cu Linux, tot ce trebuia să fac era să-l conectez și să pornesc dispozitivul Pi. Nu a fost necesară nicio altă instalare. Alte camere web pot varia. Puteți verifica dacă camera dvs. web a fost detectată de Linux folosind următoarea comandă:

lsusb

În imaginea de mai sus, camera web este listată ca „0c45: 6340 Microdia”

În cele din urmă, puteți conecta senzorul de temperatură DS18B20 la antetul GPIO al lui Pi. Îmi folosesc placa de verificare pentru a face procesul de creare a circuitelor mai ușor și v-aș recomanda să faceți același lucru, mai ales că DS18B20 necesită un rezistor de 4.7k pentru a fi plasat între doi dintre cei trei pini ai săi. Această legătură oferă o schemă de cablare bună care arată modul în care se poate utiliza o placă de conectare la acest senzor de temperatură.

Următoarea pagină a tutorialului de mai sus acoperă, de asemenea, pașii necesari pentru citirea datelor din DS18B20 și vă arată cum să verificați dacă funcționează. Este important să efectuați acești pași de configurare înainte de a putea utiliza DS18B20 pentru acest proiect. De asemenea, vom integra eșantionul de script Python din tutorial în programul nostru de monitorizare, deci este posibil să doriți să aveți o scurtă descriere asupra acestui cod.

Vă rugăm, de asemenea, să notați numărul unic al DS18B20. Este numărul care începe cu '28 - 'pe care îl întâlnești în timpul tutorialului de configurare. Va trebui să îl introduceți în următorul program Python pentru a-i permite să citească temperatura.

Pasul 2: Configurați Dropbox

Configurați Dropbox
Configurați Dropbox

Pentru ca Pi-ul dvs. să se interfețe cu Dropbox, trebuie să configurați o nouă aplicație Dropbox. Acest lucru vă va oferi detalii necesare pentru ca Pi să efectueze gestionarea online a fișierelor folosind Python. Presupunând că ați creat un cont Dropbox și v-ați conectat, puteți crea o aplicație nouă utilizând opțiunea din meniul „Dezvoltatori”. Vedeți imaginea de mai sus pentru un rezumat al pașilor importanți.

În meniul „Dezvoltatori”, selectați „Aplicațiile mele”, apoi apăsați butonul „Creați aplicație”. Pentru a completa formularul rezultat, selectați „Dropbox API” urmat de „Aplicație folder”. În cele din urmă, puteți alege un nume unic pentru aplicația dvs. în Dropbox. Faceți clic pe „Creați aplicație”.

Veți fi apoi condus la pagina de setări a aplicației din Dropbox. Trebuie să faceți doar un singur lucru aici - generați-vă un jeton de acces. Pentru aceasta, derulați în jos până la secțiunea „OAuth 2” și sub „Jeton de acces generat”, faceți clic pe butonul „Generați”.

Aceasta vă va prezenta un șir lung de caractere necesare pentru a vă accesa contul Dropbox folosind Python. Notați acest Jeton de acces, deoarece va trebui să îl specificați mai târziu în cod. Dacă pierdeți jetonul, puteți naviga înapoi la setările aplicației dvs. făcând clic pe „Aplicațiile mele” din secțiunea „Dezvoltatori” din Dropbox și generați un jeton nou.

Puteți lăsa celelalte setări așa cum sunt. Pentru a confirma că aplicația dvs. a creat folderele necesare în contul dvs. Dropbox, navigați la pagina principală de stocare și căutați folderul „Aplicații”. În acest dosar ar trebui să existe un sub-dosar cu numele pe care l-ați ales pentru noua aplicație. Aici vor fi plasate toate fișierele pentru sistemul dvs. de monitorizare.

Pasul 3: Pregătirea folderului de aplicații Dropbox

Pregătirea folderului de aplicații Dropbox
Pregătirea folderului de aplicații Dropbox

După ce ați configurat aplicația Dropbox, este timpul să vă gândiți la modul în care veți utiliza folderul rezultat din contul Dropbox pentru a interacționa cu Pi. Acest lucru se realizează destul de simplu. Scriptul Python care va rula pe Pi va utiliza un subset de comenzi din API-ul Dropbox pentru a căuta și modifica numele unor fișiere goale, fără extensii, din folderul aplicației. Vom numi aceste fișiere „fișiere de parametri”, deoarece fiecare vă va permite să controlați un aspect diferit al comportamentului sistemului de monitorizare. Imaginea de mai sus arată cele patru fișiere de parametri care trebuie să fie prezente în dosarul aplicației Dropbox pentru acest proiect. Crearea lor este simplă:

Începând cu dosarul aplicației complet gol, deschideți un program de editor de text pe computer. Deși acest lucru se poate face folosind Pi, am găsit că este mai ușor să folosesc laptopul meu Windows pentru această fază de configurare. Odată ce editorul de text este deschis (am folosit Notepad pe Windows 7), tot ce trebuie să faceți este să salvați un fișier text complet gol oriunde pe computer. Ca primul nostru exemplu, vom crea primul parametru în imaginea antetului. Denumiți fișierul „întârziere = 10” când îl salvați.

Pentru a recapitula, ar trebui să aveți acum un fișier text gol stocat pe computerul dvs. cu numele „întârziere = 10”. Fișierul va avea, de asemenea, o extensie „.txt” care poate fi sau nu vizibilă.

Următorul pas este să încărcați acest fișier în dosarul aplicației Dropbox. Este la fel ca orice altă încărcare Dropbox. Navigați pur și simplu la folderul aplicației dvs. și faceți clic pe „Încărcare” și alegeți fișierul „întârziere = 10”.

După încărcarea acestui fișier, trebuie să eliminați extensia „.txt” care ar trebui să fie acum vizibilă în numele fișierului. Pentru a face acest lucru, faceți clic dreapta pe fișier și selectați „Redenumiți”. Eliminați partea „.txt” din numele fișierului. Acum ar trebui să rămâneți cu un fișier numit „întârziere = 10” fără extensie de fișier, așa cum se arată în imaginea antetului.

Fișierul de parametri „întârziere” este unul dintre cele patru care vor fi utilizate de programul de monitorizare. Pentru a crea celelalte, puteți doar să copiați și să redenumiți fișierul „întârziere” făcând clic dreapta pe el. După ce ați creat trei copii, denumiți-le așa cum se arată în imaginea antetului, astfel încât folderul aplicației dvs. să fie identic cu cel afișat la începutul acestui pas.

Pasul 4: Noțiuni introductive despre cod

După cum sa discutat, nucleul sistemului nostru de monitorizare va consta dintr-un singur script Python care va interfața cu Dropbox. Pentru ca programul de monitorizare să fie activ, acest script va trebui să ruleze în fundal pe Pi. Presupun că este descris cel mai exact ca un script „daemon”, ceea ce înseamnă că îl puteți seta și să îl uitați. Scriptul este atașat la acest pas, deci nu are sens să repetați codul aici. Acum poate fi un moment bun pentru a-l descărca și a vă familiariza cu el.

Înainte de a putea rula scriptul, este important să vă asigurați că aveți instalate bibliotecile Python relevante. Cele de care aveți nevoie sunt listate în partea de sus a scriptului atașat. Sunt:

import dropbox

import pygame.camera import os timp de import

Instalarea Python pe Pi-ul meu a inclus deja pygame, OS și timp, așa că singura pe care a trebuit să o instalez a fost Dropbox. Am făcut acest lucru folosind instrucțiunile lor de instalare foarte simple cu pip.

Odată ce bibliotecile dvs. sunt configurate, va trebui să editați primele două linii ale scriptului atașat pentru a se potrivi cu jetonul de acces Dropbox și cu identificatorul unic al senzorului de temperatură DS18B20. Acestea sunt cele două linii care trebuie editate:

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

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

Doar înlocuiți **** cu valorile corecte. În acest moment, sunteți de fapt gata să începeți să utilizați programul de monitorizare! În loc să vă aruncați, vă recomand să continuați la pasul următor pentru o prezentare generală a codului.

IMPORTANT: Când rulați acest script, doriți ca acesta să ruleze în fundal, astfel încât a) să puteți utiliza în continuare Pi și b) când închideți sesiunea SSH, scriptul va continua să ruleze. Aceasta este comanda pe care o folosesc când rulez scriptul:

nohup python DropCamTherm.py &

Acest lucru realizează trei lucruri: va rula scriptul ('python DropCamTherm.py'), va readuce controlul imediat pe linia de comandă, astfel încât să puteți continua să utilizați Pi ('&') și va trimite ieșiri Python care ar să fie afișat în mod normal pe linia de comandă într-un fișier numit „nohup.out”. Acest lucru poate fi citit folosind un editor de text Linux (preferatul meu este nano) și va fi creat automat în directorul din care rulează scriptul.

Pasul 5: săpăm mai adânc în cod

Când deschideți scriptul, veți observa că acesta constă din trei funcții împreună cu un bloc de cod care implementează aceste funcții atunci când scriptul este rulat. Funcțiile folosesc API-ul Dropbox și accesează fișierul jurnal de temperatură al DS18B20 pentru a asculta comenzile din Dropbox și a încărca cea mai recentă citire a temperaturii. Mai jos este o prezentare generală a funcțiilor și a modului în care acestea sunt utilizate pentru ca sistemul de monitorizare să funcționeze:

- poll_parameter ():

Această funcție arată scopul fișierelor de parametri Dropbox pe care le-am creat la pasul 3. Se caută în folderul aplicației Dropbox un fișier care conține textul „param =”. Apoi extrage textul după „=” și încearcă să-l convertească într-un număr întreg. Puteți vedea că acest lucru ne permite să controlăm programul prin adăugarea manuală a numerelor relevante la sfârșitul fișierelor de parametri. Următorul pas va conține un scurt manual de instrucțiuni care vă arată cum să utilizați fiecare dintre fișierele de parametri pentru a controla un aspect al programului.

- set_parameter ():

Această funcție permite programului să redenumească un fișier de parametri din Python. Face acest lucru în câteva ocazii, în principal pentru a reduce necesitatea redenumirii manuale excesive a fișierelor.

- set_latest_temp ():

Această funcție folosește set_parameter () pentru a încărca cea mai recentă temperatură în folderul aplicației Dropbox, adăugând-o la fișierul de parametri „temperatură”. Funcția citește cea mai recentă temperatură din fișierul jurnal al DS18B20 (care este disponibil pe Linux la calea indicată de variabila THERMOMETER_FILE).

Partea finală a programului conține codul care va fi executat la executarea scriptului. După câțiva pași de configurare necesari senzorului DS18B20, acesta deschide o sesiune Dropbox folosind jetonul de acces și folosește pygame pentru a căuta camera web. Dacă se găsește o cameră web, va intra într-o buclă în care folosește poll_parameter () pentru a extrage informații din Dropbox și a acționa asupra ei.

IMPORTANT: Veți observa următoarea linie de cod:

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

… Aceasta încearcă să creeze o interfață utilizabilă a camerei de la prima cameră web pe care pygame o detectează. Este posibil să fie necesară modificarea rezoluției pentru a se potrivi cu camera web. Experimentați cu o serie de valori pentru a găsi ceea ce funcționează cel mai bine.

Pasul 6: Utilizarea fișierelor de parametri Dropbox

Deci, acum ar trebui să aveți un script de lucru care, atunci când rulați folosind instrucțiunile de la pasul 4, va permite Pi-ului dvs. să înceapă să monitorizeze folderul aplicației pentru intrările dvs. La prima rulare, dosarul aplicației trebuie să conțină următoarele fișiere de parametri:

întârziere = 10

exitprogram = 0 imagerequest = 0 temperature = 0

Interacțiunea cu programul se realizează prin redenumirea manuală a fișierelor de parametri prin Dropbox. Pentru a face acest lucru, faceți clic dreapta pe unul dintre fișiere și selectați „redenumiți”. Fiecare fișier de parametri are o funcție diferită:

- întârziere:

Acest fișier indică programului de monitorizare câte secunde trebuie să aștepte între fiecare iterație a buclei de monitorizare. Când știu că nu voi interacționa mult cu programul, îl setez la 60 sau 120. Când știu că vreau să cer date de la Pi des, îl setez la 10.

- program de ieșire:

Aceasta ar trebui să fie setată la 1 sau 0. Dacă programul detectează că este setat la 1, va încheia scriptul. Dacă îl setați la 1 și scriptul iese, va trebui să vă conectați din nou la Pi pentru a porni backupul. Acest parametru există astfel încât să puteți termina cu grație programul de monitorizare atunci când nu mai aveți nevoie să fie rulat (de exemplu, dacă v-ați întors acasă și nu mai doriți să monitorizați camera web de la distanță).

- cerere de imagine:

Acesta este poate cel mai important parametru. Aceasta trebuie setată la 1 sau 0. Dacă programul detectează că este setat la 1, va solicita o imagine de pe camera web și o va încărca în folderul aplicației (cu titlul „imagine.jpg”). Dacă există un alt „image.jpg”, acesta îl va suprascrie.

- temperatura:

Aceasta este citirea temperaturii DS18B20 setată de funcția set_latest_temp (). Nu trebuie să editați niciodată acest fișier de parametri - acesta este setat automat de program.

Rețineți că, dacă setați „exitprogram” sau „imagerequest” la 1, programul le va readuce automat la 0 înainte de a executa codul relevant. Aceasta este pentru comoditate. Puteți observa, de asemenea, că codul conține o mulțime de blocuri „încercați” și „cu excepția” care înconjoară multe dintre funcțiile critice. Aceasta este pentru a vă asigura că scriptul nu va produce excepții (și, prin urmare, nu va mai rula) dacă ceva nu merge bine (cum ar fi o problemă de conectivitate la internet care împiedică accesul Dropbox).

Pasul 7: Concluzie

Acest proiect a prezentat o modalitate de a controla un Raspberry Pi folosind Python și Dropbox. În timp ce hardware-ul utilizat în acest proiect este un senzor de temperatură și o cameră web USB, există multe alte aplicații pentru această metodă de control al Pi. De fapt, orice componentă hardware accesibilă prin GPIO poate fi controlată utilizând o structură similară a programului, ceea ce face ca sistemul să fie foarte ușor de extins.

Ca un pas următor, puteți utiliza, de asemenea, o bibliotecă GUI, cum ar fi Tkinter, împreună cu API-ul Dropbox pentru a crea un program client care vă va permite să modificați fișierele de parametri fără a fi nevoie să vă conectați la Dropbox.

Sper că acest tutorial a fost clar și, dacă aveți întrebări sau doriți să clarific ceva, vă rugăm să postați un comentariu!

Recomandat: