Indholdsfortegnelse:

Raspberry Pi Home Monitoring med Dropbox: 7 trin
Raspberry Pi Home Monitoring med Dropbox: 7 trin

Video: Raspberry Pi Home Monitoring med Dropbox: 7 trin

Video: Raspberry Pi Home Monitoring med Dropbox: 7 trin
Video: A Raspberry Pi 4 can do what! 2024, November
Anonim
Raspberry Pi Home Monitoring med Dropbox
Raspberry Pi Home Monitoring med Dropbox

Denne vejledning viser dig, hvordan du opretter et enkelt og udvideligt hjemmemonitoreringssystem ved hjælp af en Raspberry Pi, et webcam, et par elektriske komponenter og din Dropbox -konto. Det færdige system giver dig mulighed for eksternt at anmode om og se billeder fra dit webcam, mens du også bruger en digital temperatursensor på hylden til at overvåge temperaturen i dit hjem over internettet, alt sammen ved hjælp af Dropbox.

Dette var det første projekt, jeg fandt på efter at have modtaget en Raspberry Pi 2 model B. Mit mål var at oprette et Python-baseret overvågningssystem, som jeg kunne styre og modtage data fra over internettet. Selvom der er mange forskellige måder at gøre dette på, besluttede jeg at bruge Dropbox som grænsefladen mellem Pi og internettet, da de har en simpel Python API, som giver dig mulighed for at uploade, ændre og søge efter filer i bestemte mapper ved hjælp af et par linjer med kode.

Jeg ville også have, at min løsning var let og enkel, og for at undgå at ødelægge min Pi med unødvendige biblioteker og programmer. Softwarekomponenten i dette projekt består af et enkelt Python -script, hvilket betyder, at du kan fortsætte med at bruge din Pi som normalt, selv når overvågningssystemet kører.

Til dette projekt skal du bruge:

En hindbær Pi. Enhver model burde fungere, jeg brugte et alt-i-et-startsæt, men måske har du kun brug for den centrale enhed

Et USB -webcam. Jeg købte en billig ADVENT AWC72015, som tilfældigvis fungerede fint. Det kan være en god idé at konsultere denne liste over webcams, der bekræftes at fungere med Pi. Bemærk, at nogle kræver en USB -hub med strøm (min fungerer fint uden)

En Dropbox -konto. Jeg bruger min gratis standardkonto, da dette projekt ikke kræver meget lagerplads

En DS18B20 digital temperatursensor og en 4,7k modstand. Du kan købe sensoren her, og det kan også være værd at få fat i en pakke med forskellige modstande

Nogle tilbehør til kredsløb. Jeg vil anbefale at bruge et brødbræt og nogle springkabler for at gøre kredsløbets byggeproces så let som muligt

[Hvis du beslutter dig for at købe et af disse produkter, ville jeg sætte stor pris på det, hvis du får adgang til fortegnelserne ved hjælp af ovenstående links - på den måde får jeg en lille del af overskuddet uden ekstra omkostninger for dig!]

Trin 1: Konfigurer hardware

Opsæt hardware
Opsæt hardware

Det første trin er at sikre, at din Pi og de tilhørende eksterne enheder er konfigureret.

Tilslut først din Pi til internettet. Dette er nødvendigt for at sikre, at overvågningsprogrammet kan modtage dine anmodninger og uploade data til Dropbox. Jeg bruger en ethernetforbindelse for at sikre pålidelighed, men en Wi-Fi-forbindelse burde også fungere fint, samtidig med at den har fordelen ved forbedret portabilitet. Hvis du vælger Wi-Fi, vil jeg anbefale denne USB-dongle til Pi.

Tilslut derefter dit webcam til Pi ved at tilslutte det til en af USB -portene. Selvom vejledningen til mit adventswebkamera ikke eksplicit sagde, at det ville fungere med Linux, var alt, hvad jeg skulle gøre, at tilslutte det og starte Pi'en. Ingen yderligere installation var nødvendig. Andre webkameraer kan variere. Du kan kontrollere, om dit webcam er blevet opdaget af Linux ved hjælp af følgende kommando:

lsusb

I billedet ovenfor er mit webcam opført som '0c45: 6340 Microdia'

Endelig kan du slutte din DS18B20 temperatursensor til Pi's GPIO -header. Jeg bruger mit brødbræt til at gøre processen med at skabe kredsløb lettere, og jeg vil anbefale dig at gøre det samme, især da DS18B20 kræver en 4,7k modstand, der skal placeres mellem to af sine tre ben. Dette link giver et godt ledningsdiagram, der viser, hvordan et brødbræt kan bruges til at forbinde til denne temperatursensor.

Den næste side i ovenstående selvstudium dækker også de trin, der er nødvendige for at læse data ind fra DS18B20, og viser dig, hvordan du kontrollerer, at det fungerer. Det er vigtigt at udføre disse opsætningstrin, før du kan bruge DS18B20 til dette projekt. Vi vil også integrere eksemplet på Python -script fra selvstudiet i vores overvågningsprogram, så du vil måske hurtigt skumme over denne kode.

Bemærk også dit DS18B20s unikke nummer. Det er tallet, der begynder med '28-', som du støder på under installationsvejledningen. Du bliver nødt til at indtaste det i det kommende Python -program, så det kan læse i temperaturen.

Trin 2: Konfigurer Dropbox

Opsæt Dropbox
Opsæt Dropbox

For at din Pi kan interagere med Dropbox, skal du oprette en ny Dropbox -app. Dette giver dig de oplysninger, der er nødvendige for, at din Pi kan udføre online filhåndtering ved hjælp af Python. Forudsat at du har oprettet en Dropbox -konto og logget ind, kan du oprette en ny app ved hjælp af menuen 'Udviklere'. Se billedet ovenfor for en oversigt over de vigtige trin.

Vælg 'Mine apps' i menuen 'Udviklere', og tryk derefter på knappen 'Opret app'. For at udfylde den resulterende formular skal du vælge 'Dropbox API' efterfulgt af 'App -mappe'. Endelig kan du vælge et unikt navn til din app i Dropbox. Klik på 'Opret app'.

Du bliver derefter taget til din apps indstillingsside i Dropbox. Der er kun en yderligere ting, du skal gøre her - generer dig selv et Access Token. For at gøre dette skal du rulle ned til sektionen 'OAuth 2' og under 'Genereret adgangstoken' skal du klikke på knappen 'Generer'.

Dette viser dig en lang række tegn, der er nødvendige for at få adgang til din Dropbox -konto ved hjælp af Python. Notér dette Adgangstoken, da du skal angive det senere i din kode. Hvis du mister tokenet, kan du navigere tilbage til din apps indstillinger ved at klikke på 'Mine apps' i Dropbox 'Udviklere' sektionen og generere et nyt token.

Du kan lade de andre indstillinger være som de er. For at bekræfte, at din app har oprettet de nødvendige mapper på din Dropbox -konto, skal du navigere til din lagrings hjemmeside og se efter mappen 'Apps'. I denne mappe skal der være en undermappe med det navn, du har valgt til din nye app. Det er her, alle filer til dit overvågningssystem placeres.

Trin 3: Forberedelse af din Dropbox -appmappe

Forbereder din Dropbox -appmappe
Forbereder din Dropbox -appmappe

Når du har konfigureret din Dropbox -app, er det tid til at tænke over, hvordan du vil bruge den resulterende mappe i din Dropbox -konto til at interagere med din Pi. Dette opnås ganske enkelt. Python-scriptet, der kører på Pi, vil bruge et delsæt af kommandoer fra Dropbox API til at søge og ændre navnene på nogle tomme filer uden filtypenavn i din appmappe. Vi kalder disse filer 'parameterfiler', da hver enkelt giver dig mulighed for at kontrollere et andet aspekt af overvågningssystemets adfærd. Billedet ovenfor viser de fire parameterfiler, der skal være til stede i din Dropbox -appmappe til dette projekt. Det er enkelt at oprette dem:

Start med at din appmappe er helt tom, og åbn et tekstredigeringsprogram på din computer. Selvom dette kunne gøres ved hjælp af Pi, fandt jeg det lettere at bruge min Windows -bærbare computer til denne installationsfase. Når teksteditoren er åben (jeg brugte Notesblok på Windows 7), skal du bare gemme en helt tom tekstfil hvor som helst på din computer. Som vores første eksempel vil vi oprette den første parameter i overskriftsbilledet. Navngiv filen 'delay = 10', når du gemmer den.

For at opsummere skal du nu have en tom tekstfil gemt på din computer med navnet 'delay = 10'. Filen vil også have en '.txt' -udvidelse, der muligvis ikke er synlig.

Det næste trin er at uploade denne fil til din Dropbox -appmappe. Dette er ligesom enhver anden Dropbox -upload. Naviger blot til din apps mappe, klik på 'Upload' og vælg din 'forsinkelse = 10' fil.

Når denne fil er uploadet, skal du fjerne udvidelsen '.txt', som nu skal være synlig i filnavnet. For at gøre dette skal du blot højreklikke på filen og vælge 'Omdøb'. Fjern '.txt' delen af filnavnet. Du skal nu sidde tilbage med en fil kaldet 'forsinkelse = 10' uden filtypenavn, som vist i overskriftsbilledet.

Parameterfilen 'forsinkelse' er en af fire, som vil blive brugt af overvågningsprogrammet. For at oprette de andre kan du bare kopiere og omdøbe din 'forsinkelse' fil ved at højreklikke på den. Når du har oprettet tre kopier, skal du navngive dem som vist i overskriftsbilledet, så din appmappe er identisk med den, der blev vist i begyndelsen af dette trin.

Trin 4: Kom godt i gang med koden

Som diskuteret vil kernen i vores overvågningssystem bestå af et enkelt Python -script, der vil have grænseflade med Dropbox. For at overvågningsprogrammet skal være aktivt, skal dette script køre i baggrunden på din Pi. Jeg formoder, at det mest præcist beskrives som et 'dæmon' -script, hvilket betyder, at du bare kan sætte det i gang og glemme det. Scriptet er knyttet til dette trin, så der er ingen mening i at gentage koden her. Nu kan det være et godt tidspunkt at downloade det og gøre dig bekendt med det.

Inden du kan køre scriptet, er det vigtigt at sikre, at du har de relevante Python -biblioteker installeret. Dem, du har brug for, er angivet øverst i det vedhæftede script. De er:

import af dropbox

import pygame.camera import os importtid

Python -installationen på min Pi inkluderede allerede pygame, os og tid, så den eneste jeg skulle installere var Dropbox. Jeg gjorde dette ved hjælp af deres meget enkle installationsinstruktioner med pip.

Når dine biblioteker er konfigureret, skal du redigere de to øverste linjer i det vedhæftede script for at matche dit Dropbox Access Token og din DS18B20 temperatursensors unikke identifikator. Dette er de to linjer, der skal redigeres:

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

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

Bare udskift **** s med de korrekte værdier. På dette tidspunkt er du faktisk klar til at begynde at bruge overvågningsprogrammet! I stedet for bare at hoppe ind, vil jeg anbefale, at du fortsætter til det næste trin for en generel oversigt over koden.

VIGTIGT: Når du kører dette script, vil du have det til at køre i baggrunden, så a) du kan fortsætte med at bruge Pi, og b) når du lukker din SSH -session, fortsætter scriptet med at køre. Dette er den kommando, jeg bruger, når jeg kører scriptet:

nohup python DropCamTherm.py &

Dette opnår tre ting: Det vil køre scriptet ('python DropCamTherm.py'), det vil straks returnere kontrollen til kommandolinjen, så du kan fortsætte med at bruge Pi ('&'), og det vil sende Python -output, der ville normalt vises på kommandolinjen i en fil kaldet 'nohup.out'. Dette kan læses ved hjælp af en Linux -teksteditor (min favorit er nano) og oprettes automatisk i det bibliotek, som scriptet køres fra.

Trin 5: Grav dybere i koden

Når du åbner scriptet, vil du bemærke, at det består af tre funktioner sammen med en kodeblok, der implementerer disse funktioner, når scriptet køres. Funktionerne bruger Dropbox API og og får adgang til DS18B20s temperaturlogfil for at lytte efter kommandoer fra Dropbox og uploade den seneste temperaturaflæsning. Nedenfor er en oversigt over, hvad funktionerne gør, og hvordan de bruges til at få overvågningssystemet til at fungere:

- poll_parameter ():

Denne funktion viser formålet med Dropbox -parameterfiler, vi oprettede i trin 3. Den søger i Dropbox -appmappen efter en fil, der indeholder teksten 'param ='. Det udtrækker derefter teksten efter '=' og forsøger at konvertere den til et helt tal. Du kan se, at dette giver os mulighed for at styre programmet ved manuelt at tilføje relevante numre til slutningen af parameterfilerne. Det næste trin indeholder en kort instruktionsmanual, der viser dig, hvordan du bruger hver af parameterfilerne til at styre et aspekt af programmet.

- set_parameter ():

Denne funktion giver programmet mulighed for at omdøbe en parameterfil fra Python. Det gør dette ved et par lejligheder, hovedsageligt for at reducere behovet for overdreven manuel omdøbning af filerne.

- set_latest_temp ():

Denne funktion gør brug af set_parameter () til at uploade den seneste temperatur til Dropbox -appmappen ved at tilføje den til parameterfilen 'temperatur'. Funktionen læser den seneste temperatur fra DS18B20s logfil (som er tilgængelig på Linux på den sti, som THERMOMETER_FILE -variablen peger på).

Den sidste del af programmet indeholder koden, der udføres, når scriptet køres. Efter nogle opsætningstrin, der kræves for DS18B20 -sensoren, åbner den en Dropbox -session ved hjælp af dit Access Token og bruger pygame til at søge efter dit webcam. Hvis der findes et webcam, kommer det ind i en loop, hvor det bruger poll_parameter () til at udtrække oplysninger fra Dropbox og handle på det.

VIGTIGT: Du vil bemærke følgende kodelinje:

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

… dette forsøger at skabe en brugbar kameragrænseflade fra det første webcam, som pygame registrerer. Opløsningen skal muligvis ændres for at matche dit webcam. Eksperimenter med en række værdier for at finde ud af, hvad der fungerer bedst.

Trin 6: Brug af Dropbox -parameterfiler

Så nu skal du have et fungerende script, som, når det køres ved hjælp af instruktionerne fra trin 4, tillader din Pi at begynde at overvåge appmappen for dine input. Ved din første kørsel skal appmappen indeholde følgende parameterfiler:

forsinkelse = 10

exitprogram = 0 imagerequest = 0 temperatur = 0

Interaktion med programmet opnås ved manuelt at omdøbe parameterfilerne via Dropbox. For at gøre dette skal du højreklikke på en af filerne og vælge 'omdøb'. Hver parameterfil har en anden funktion:

- forsinkelse:

Denne fil fortæller overvågningsprogrammet, hvor mange sekunder der skal ventes mellem hver iteration af overvågningsløjfen. Når jeg ved, at jeg ikke vil interagere meget med programmet, sætter jeg det til 60 eller 120. Når jeg ved, at jeg ofte vil anmode om data fra Pi, sætter jeg det til 10.

- exit program:

Dette bør sættes til 1 eller 0. Hvis programmet registrerer, at det er indstillet til 1, afslutter det scriptet. Hvis du indstiller det til 1, og scriptet forlader, skal du logge på Pi igen for at starte det igen. Denne parameter findes, så du graciøst kan afslutte overvågningsprogrammet, når du ikke længere har brug for, at det kører (f.eks. Hvis du er vendt hjem og ikke længere vil overvåge webkameraet eksternt).

- imagerequest:

Dette er måske den vigtigste parameter. Dette bør indstilles til 1 eller 0. Hvis programmet registrerer, at det er indstillet til 1, vil det anmode om et billede fra webkameraet og uploade det til appmappen (med titlen 'image.jpg'). Hvis der findes et andet 'image.jpg', overskrives det.

- temperatur:

Dette er DS18B20 temperaturmåling indstillet af funktionen set_latest_temp (). Du skulle aldrig behøve at redigere denne parameterfil - den indstilles automatisk af programmet.

Bemærk, at hvis du indstiller 'exitprogram' eller 'imagerequest' til 1, returnerer programmet dem automatisk til 0, før den relevante kode udføres. Dette er for nemheds skyld. Du vil muligvis også bemærke, at koden indeholder mange "prøv" og "undtagen" blokke, der omgiver mange af de kritiske funktioner. Dette er for at sikre, at scriptet ikke kaster undtagelser (og dermed stopper med at køre), hvis noget går galt (f.eks. Et internetforbindelsesproblem, der forhindrer Dropbox -adgang).

Trin 7: Konklusion

Dette projekt har præsenteret en måde at styre en Raspberry Pi ved hjælp af Python og Dropbox. Mens hardwaren, der bruges i dette projekt, er en temperatursensor og et USB -webcam, er der mange andre applikationer til denne metode til styring af Pi. Faktisk kan enhver hardwarekomponent, der er tilgængelig via GPIO, styres ved hjælp af en lignende programstruktur, hvilket gør systemet meget let at udvide.

Som et næste trin kan du også bruge et GUI -bibliotek som Tkinter sammen med Dropbox API til at oprette et klientprogram, som giver dig mulighed for at ændre parameterfilerne uden selv at skulle logge på Dropbox.

Jeg håber, at denne vejledning har været klar, og hvis du har spørgsmål eller vil have mig til at præcisere noget, kan du skrive en kommentar!

Anbefalede: