Innholdsfortegnelse:

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

Video: Raspberry Pi Home Monitoring med Dropbox: 7 trinn

Video: Raspberry Pi Home Monitoring med Dropbox: 7 trinn
Video: Как сделать систему для расширенного измерения тока в ... 2024, November
Anonim
Raspberry Pi Home Monitoring med Dropbox
Raspberry Pi Home Monitoring med Dropbox

Denne opplæringen vil vise deg hvordan du lager et enkelt og utvidbart hjemmemonitoreringssystem ved hjelp av en Raspberry Pi, et webkamera, noen få elektriske komponenter og din Dropbox -konto. Det ferdige systemet lar deg eksternt be om og se bilder fra webkameraet ditt, mens du også bruker en digital temperatursensor på hyllen for å overvåke temperaturen i hjemmet ditt over internett, alt med Dropbox.

Dette var det første prosjektet jeg tenkte på etter å ha mottatt en Raspberry Pi 2 modell B. Målet mitt var å lage et Python-basert overvåkingssystem som jeg kunne kontrollere og motta data fra over internett. Selv om det er mange forskjellige måter å gjøre dette på, bestemte jeg meg for å bruke Dropbox som grensesnittet mellom Pi og internett, ettersom de har et enkelt Python API som lar deg laste opp, endre og søke etter filer i bestemte mapper ved hjelp av noen få linjer med kode.

Jeg ville også at løsningen min skulle være lett og enkel, og for å unngå å rotere Pi -en min med unødvendige biblioteker og programmer. Programvarekomponenten i dette prosjektet består av et enkelt Python -skript, noe som betyr at du kan fortsette å bruke Pi som normalt, selv når overvåkingssystemet er i gang.

For dette prosjektet trenger du:

En bringebær Pi. Enhver modell burde fungere. Jeg brukte et alt-i-ett-startsett, men kanskje trenger du bare sentralenheten

Et USB -webkamera. Jeg kjøpte en billig ADVENT AWC72015, som tilfeldigvis fungerte bra. Det kan være en god idé å konsultere denne listen over webkameraer som bekreftes å fungere med Pi. Vær oppmerksom på at noen krever en drevet USB -hub (min fungerer fint uten)

En Dropbox -konto. Jeg bruker min standard gratis konto da dette prosjektet ikke krever mye lagringsplass

En digital temperaturføler DS18B20 og en motstand på 4,7 k. Du kan kjøpe sensoren her, og det kan være verdt å ta en pakke med forskjellige motstander også

Noen kretsbyggende tilbehør. Jeg vil anbefale å bruke et brødbrett og noen startkabler for å gjøre kretsbyggingsprosessen så enkel som mulig

[Hvis du bestemmer deg for å kjøpe noen av disse produktene, ville jeg sette stor pris på det hvis du får tilgang til listene ved hjelp av koblingene ovenfor - på den måten får jeg en liten andel av fortjenesten uten ekstra kostnad for deg!]

Trinn 1: Konfigurer maskinvaren

Sett opp maskinvaren
Sett opp maskinvaren

Det første trinnet er å sikre at Pi og de tilhørende eksterne enhetene er konfigurert.

Koble først din Pi til internett. Dette er nødvendig for å sikre at overvåkingsprogrammet kan motta forespørslene dine og laste opp data til Dropbox. Jeg bruker en ethernet-tilkobling for å sikre pålitelighet, men en Wi-Fi-tilkobling bør fungere bra også, samtidig som den har fordelen av forbedret bærbarhet. Hvis du velger Wi-Fi, vil jeg anbefale denne USB-dongelen for Pi.

Deretter kobler du webkameraet til Pi ved å koble det til en av USB -portene. Selv om instruksjonene til adventswebkameraet ikke eksplisitt sa at det ville fungere med Linux, var alt jeg måtte gjøre å koble det til og starte opp Pi. Ingen ytterligere installasjon var nødvendig. Andre webkameraer kan variere. Du kan kontrollere om webkameraet ditt har blitt oppdaget av Linux ved å bruke følgende kommando:

lsusb

I bildet ovenfor er webkameraet mitt oppført som '0c45: 6340 Microdia'

Til slutt kan du koble din DS18B20 temperatursensor til Pi's GPIO -topptekst. Jeg bruker brødbrettet mitt for å gjøre prosessen med å lage kretser enklere, og jeg vil anbefale deg å gjøre det samme, spesielt ettersom DS18B20 krever at en motstand på 4,7 k plasseres mellom to av de tre pinnene. Denne lenken gir et godt koblingsskjema som viser hvordan et brødbrett kan brukes til å koble til denne temperatursensoren.

Neste side i opplæringen ovenfor dekker også trinnene som trengs for å lese data fra DS18B20, og viser deg hvordan du kontrollerer at det fungerer. Det er viktig å utføre disse oppsettstrinnene før du kan bruke DS18B20 til dette prosjektet. Vi vil også integrere eksempel -Python -skriptet fra opplæringen i vårt overvåkingsprogram, så det kan være lurt å skumme raskt over denne koden.

Vær også oppmerksom på DS18B20s unike nummer. Det er tallet som begynner med '28-'som du støter på under oppsettopplæringen. Du må skrive den inn i det kommende Python -programmet for å la den lese temperaturen.

Trinn 2: Konfigurer Dropbox

Sett opp Dropbox
Sett opp Dropbox

For at Pi skal koble til Dropbox, må du sette opp en ny Dropbox -app. Dette vil gi deg detaljer som trengs for at Pi kan utføre online filbehandling ved hjelp av Python. Forutsatt at du har opprettet en Dropbox -konto og logget deg på, kan du opprette en ny app ved hjelp av menyen "Utviklere". Se bildet ovenfor for en oppsummering av de viktige trinnene.

Velg "Mine apper" på "Utviklere" -menyen, og trykk deretter på "Opprett app" -knappen. For å fylle ut det resulterende skjemaet, velg 'Dropbox API' etterfulgt av 'App -mappe'. Til slutt kan du velge et unikt navn for appen din i Dropbox. Klikk "Opprett app".

Du blir deretter ført til appens innstillingsside i Dropbox. Det er bare en ting du trenger å gjøre her - generer deg et Access Token. For å gjøre dette, bla ned til 'OAuth 2' -delen og klikk på 'Generer' -knappen under 'Generert tilgangstoken'.

Dette vil vise deg en lang rekke tegn som er nødvendige for å få tilgang til Dropbox -kontoen din ved hjelp av Python. Noter dette tilgangstokenet, da du må spesifisere det senere i koden. Hvis du mister tokenet, kan du navigere tilbake til appens innstillinger ved å klikke "Mine apper" i Dropbox "Developers" -delen og generere et nytt token.

Du kan la de andre innstillingene være som de er. For å bekrefte at appen din har opprettet de nødvendige mappene på Dropbox -kontoen din, navigerer du til lagringshjemmesiden og ser etter 'Apps' -mappen. I denne mappen skal det være en undermappe med navnet du valgte for din nye app. Det er her alle filer for overvåkingssystemet ditt vil bli plassert.

Trinn 3: Klargjør Dropbox -appmappen

Forbereder Dropbox -appmappen din
Forbereder Dropbox -appmappen din

Når du har konfigurert Dropbox -appen din, er det på tide å tenke på hvordan du vil bruke den resulterende mappen i Dropbox -kontoen din til å samhandle med Pi. Dette oppnås ganske enkelt. Python-skriptet som vil kjøre på Pi, vil bruke et delsett med kommandoer fra Dropbox API for å søke og endre navnene på noen tomme, utvidelsesløse filer i appmappen din. Vi vil kalle disse filene 'parameterfiler', ettersom hver enkelt lar deg kontrollere et annet aspekt av overvåkningssystemets oppførsel. Bildet ovenfor viser de fire parameterfilene som må finnes i Dropbox -appmappen for dette prosjektet. Å lage dem er enkelt:

Fra og med at appmappen er helt tom, åpner du et tekstredigeringsprogram på datamaskinen. Selv om dette kunne gjøres ved hjelp av Pi, fant jeg det lettere å bruke min bærbare Windows -datamaskin for denne oppsettfasen. Når tekstredigereren er åpen (jeg brukte Notisblokk på Windows 7), er alt du trenger å gjøre å lagre en helt tom tekstfil hvor som helst på datamaskinen. Som vårt første eksempel vil vi opprette den første parameteren i toppteksten. Gi filen navnet 'delay = 10' når du lagrer den.

For å oppsummere, bør du nå ha en tom tekstfil lagret på datamaskinen din med navnet 'delay = 10'. Filen vil også ha en.txt -utvidelse som kanskje er synlig eller ikke.

Det neste trinnet er å laste opp denne filen til Dropbox -appmappen din. Dette er akkurat som enhver annen Dropbox -opplasting. Bare naviger til appens mappe, klikk "Last opp" og velg filen "delay = 10".

Når denne filen er lastet opp, må du fjerne utvidelsen '.txt' som nå skal være synlig i filnavnet. For å gjøre dette, høyreklikker du bare på filen og velger 'Gi nytt navn'. Fjern '.txt' delen av filnavnet. Du bør nå sitte igjen med en fil som heter 'delay = 10' uten filtypen, som vist i toppteksten.

Parameterfilen 'forsinkelse' er en av fire som skal brukes av overvåkingsprogrammet. For å lage de andre kan du bare kopiere og gi nytt navn til forsinkelsesfilen ved å høyreklikke på den. Når du har opprettet tre kopier, navngir du dem som vist i toppteksten, slik at appmappen din er identisk med den som ble vist i begynnelsen av dette trinnet.

Trinn 4: Komme i gang med koden

Som diskutert, vil kjernen i overvåkingssystemet vårt bestå av et enkelt Python -skript som vil koble til Dropbox. For at overvåkingsprogrammet skal være aktivt, må dette skriptet kjøre i bakgrunnen på din Pi. Jeg antar at det er mest nøyaktig beskrevet som et "daemon" -skript, noe som betyr at du bare kan sette det i gang og glemme det. Skriptet er knyttet til dette trinnet, så det er ingen mening å gjenta koden her. Nå kan det være på tide å laste den ned og gjøre deg kjent med den.

Før du kan kjøre skriptet, er det viktig å sikre at du har de relevante Python -bibliotekene installert. De du trenger er oppført øverst i det vedlagte skriptet. De er:

importer dropbox

import pygame.camera import os import tid

Python -installasjonen på min Pi inkluderte allerede pygame, OS og tid, så den eneste jeg måtte installere var Dropbox. Jeg gjorde dette ved hjelp av deres veldig enkle installasjonsinstruksjoner med pip.

Når bibliotekene dine er konfigurert, må du redigere de to øverste linjene i det vedlagte skriptet for å matche Dropbox Access Token og DS18B20 temperatursensors unike identifikator. Dette er de to linjene som må redigeres:

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

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

Bare erstatt **** s med riktige verdier. På dette tidspunktet er du faktisk klar til å begynne å bruke overvåkingsprogrammet! I stedet for å bare hoppe inn, vil jeg anbefale at du fortsetter til neste trinn for en generell oversikt over koden.

VIKTIG: Når du kjører dette skriptet, vil du at det skal kjøre i bakgrunnen, slik at a) du kan fortsette å bruke Pi, og b) når du lukker SSH -økten, fortsetter skriptet å kjøres. Dette er kommandoen jeg bruker når jeg kjører skriptet:

nohup python DropCamTherm.py &

Dette oppnår tre ting: Det vil kjøre skriptet ('python DropCamTherm.py'), det vil returnere kontrollen til kommandolinjen umiddelbart, slik at du kan fortsette å bruke Pi ('&'), og det vil sende Python -utganger som ville normalt vises på kommandolinjen i en fil som heter 'nohup.out'. Dette kan leses ved hjelp av en Linux -tekstredigerer (min favoritt er nano), og vil bli opprettet automatisk i katalogen som skriptet kjøres fra.

Trinn 5: Grav dypere inn i koden

Når du åpner skriptet, vil du legge merke til at det består av tre funksjoner sammen med en kodeblokk som implementerer disse funksjonene når skriptet kjøres. Funksjonene bruker Dropbox API og får tilgang til DS18B20s temperaturloggfil for å lytte etter kommandoer fra Dropbox og laste opp den siste temperaturavlesningen. Nedenfor er en oversikt over hva funksjonene gjør, og hvordan de brukes til å få overvåkingssystemet til å fungere:

- poll_parameter ():

Denne funksjonen viser formålet med Dropbox -parameterfilene vi opprettet i trinn 3. Den søker i Dropbox -appmappen etter en fil som inneholder teksten 'param ='. Den trekker deretter ut teksten etter '=' og prøver å konvertere den til et heltall. Du kan se at dette lar oss kontrollere programmet ved å legge relevante tall til enden av parameterfilene manuelt. Det neste trinnet vil inneholde en kort bruksanvisning som viser deg hvordan du bruker hver av parameterfilene til å kontrollere et aspekt av programmet.

- set_parameter ():

Denne funksjonen lar programmet omdøpe en parameterfil fra Python. Det gjør dette ved noen få anledninger, hovedsakelig for å redusere behovet for overdreven manuell omdøping av filene.

- set_latest_temp ():

Denne funksjonen bruker set_parameter () for å laste opp den siste temperaturen til Dropbox -appmappen ved å legge den til i parameterfilen 'temperatur'. Funksjonen leser den siste temperaturen fra loggfilen til DS18B20 (som er tilgjengelig på Linux på banen som er angitt av THERMOMETER_FILE -variabelen).

Den siste delen av programmet inneholder koden som vil kjøres når skriptet kjøres. Etter noen oppsettstrinn som kreves for DS18B20 -sensoren, åpner den en Dropbox -økt med Access Token og bruker pygame for å søke etter webkameraet ditt. Hvis et webkamera blir funnet, vil det gå inn i en løkke der det bruker poll_parameter () for å trekke ut informasjon fra Dropbox og handle på den.

VIKTIG: Du vil legge merke til følgende kodelinje:

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

… dette prøver å lage et brukbart kameragrensesnitt fra det første webkameraet som pygame oppdager. Oppløsningen må kanskje endres for å matche webkameraet ditt. Eksperimenter med en rekke verdier for å finne det som fungerer best.

Trinn 6: Bruke Dropbox -parameterfilene

Så nå bør du ha et fungerende skript som, når du kjører ved hjelp av instruksjonene fra trinn 4, vil tillate Pi å begynne å overvåke appmappen for inngangene dine. Ved din første kjøring bør appmappen inneholde følgende parameterfiler:

forsinkelse = 10

exit program = 0 imagerequest = 0 temperatur = 0

Interaksjon med programmet oppnås ved å endre navn på parameterfilene manuelt via Dropbox. For å gjøre dette, høyreklikker du bare på en av filene og velger 'gi nytt navn'. Hver parameterfil har en annen funksjon:

- forsinkelse:

Denne filen forteller overvåkingsprogrammet hvor mange sekunder det skal vente mellom hver iterasjon av overvåkningssløyfen. Når jeg vet at jeg ikke kommer til å ha mye interaksjon med programmet, setter jeg det til 60 eller 120. Når jeg vet at jeg ofte vil be om data fra Pi, setter jeg det til 10.

- exit program:

Dette bør settes til 1 eller 0. Hvis programmet oppdager at det er satt til 1, vil det avslutte skriptet. Hvis du setter det til 1 og skriptet går ut, må du logge på Pi igjen for å starte det opp igjen. Denne parameteren eksisterer slik at du kan avslutte overvåkningsprogrammet graciøst når du ikke lenger trenger at den skal kjøres (for eksempel hvis du har kommet hjem og ikke lenger vil overvåke webkameraet eksternt).

- imagerequest:

Dette er kanskje den viktigste parameteren. Dette bør settes til 1 eller 0. Hvis programmet oppdager at det er satt til 1, vil det be om et bilde fra webkameraet og laste det opp til appmappen (med tittelen 'image.jpg'). Hvis det finnes en annen 'image.jpg', vil den overskrive den.

- temperatur:

Dette er DS18B20 temperaturavlesning satt av funksjonen set_latest_temp (). Du trenger aldri å redigere denne parameterfilen - den angis automatisk av programmet.

Vær oppmerksom på at hvis du setter 'exitprogram' eller 'imagerequest' til 1, vil programmet automatisk sette dem tilbake til 0 før du utfører den relevante koden. Dette er for enkelhets skyld. Du kan også legge merke til at koden inneholder mange "prøv" og "unntatt" blokker som omgir mange av de kritiske funksjonene. Dette er for å sikre at skriptet ikke kaster unntak (og dermed slutter å kjøre) hvis noe går galt (for eksempel et problem med Internett -tilkobling som forhindrer Dropbox -tilgang).

Trinn 7: Konklusjon

Dette prosjektet har presentert en måte å kontrollere en Raspberry Pi ved hjelp av Python og Dropbox. Mens maskinvaren som brukes i dette prosjektet er en temperatursensor og et USB -webkamera, er det mange andre applikasjoner for denne metoden for å kontrollere Pi. Faktisk kan enhver maskinvarekomponent som er tilgjengelig via GPIO, styres ved hjelp av en lignende programstruktur, noe som gjør systemet veldig enkelt å utvide.

Som et neste trinn kan du også bruke et GUI -bibliotek som Tkinter sammen med Dropbox API for å lage et klientprogram som lar deg endre parameterfilene uten å måtte logge på Dropbox.

Jeg håper at denne opplæringen har vært tydelig, og hvis du har spørsmål eller ønsker at jeg skal avklare noe, vennligst legg ut en kommentar!

Anbefalt: