Innehållsförteckning:
- Steg 1: Konfigurera hårdvaran
- Steg 2: Konfigurera Dropbox
- Steg 3: Förbered din Dropbox -appmapp
- Steg 4: Komma igång med koden
- Steg 5: Gräva djupare i koden
- Steg 6: Använda Dropbox -parameterfilerna
- Steg 7: Slutsats
Video: Raspberry Pi Home Monitoring med Dropbox: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Denna handledning visar dig hur du skapar ett enkelt och utbyggbart hemövervakningssystem med en Raspberry Pi, en webbkamera, några elektriska komponenter och ditt Dropbox -konto. Det färdiga systemet låter dig fjärr begära och visa bilder från din webbkamera samtidigt som du använder en digital temperatursensor från hyllan för att övervaka temperaturen i ditt hem över internet, allt med Dropbox.
Detta var det första projektet jag tänkte efter att ha fått en Raspberry Pi 2 modell B. Mitt mål var att skapa ett Python-baserat övervakningssystem som jag kunde styra och ta emot data från över internet. Även om det finns många olika sätt att göra detta, bestämde jag mig för att använda Dropbox som gränssnittet mellan Pi och internet eftersom de har ett enkelt Python API som låter dig ladda upp, ändra och söka efter filer i specifika mappar med några rader med koda.
Jag ville också att min lösning skulle vara lätt och enkel, och för att undvika att tappa min Pi med onödiga bibliotek och program. Programvarukomponenten i detta projekt består av ett enda Python -skript, vilket innebär att du kan fortsätta använda din Pi som vanligt, även när övervakningssystemet körs.
För detta projekt behöver du:
En hallon Pi. Varje modell borde fungera, jag använde ett allt-i-ett-startpaket, men kanske behöver du bara centralenheten
En USB -webbkamera. Jag köpte en billig ADVENT AWC72015, som råkade fungera bra. Det kan vara en bra idé att konsultera denna lista med webbkameror som bekräftas fungera med Pi. Observera att vissa kräver en driven USB -hubb (min fungerar bra utan)
Ett Dropbox -konto. Jag använder mitt kostnadsfria standardkonto eftersom det här projektet inte kräver mycket lagringsutrymme
En digital temperatursensor DS18B20 och ett motstånd på 4,7 k. Du kan köpa sensorn här, och det kan också vara värt att ta ett paket med olika motstånd
Några kretsbyggande tillbehör. Jag rekommenderar att du använder en brödbräda och några bygelkablar för att göra kretsbyggnadsprocessen så enkel som möjligt
[Om du bestämmer dig för att köpa någon av dessa produkter skulle jag uppskatta det mycket om du får tillgång till listorna med ovanstående länkar - på det sättet får jag en liten del av vinsten utan extra kostnad för dig!]
Steg 1: Konfigurera hårdvaran
Det första steget är att se till att din Pi och tillhörande kringutrustning är konfigurerade.
Anslut först din Pi till internet. Detta är nödvändigt för att säkerställa att övervakningsprogrammet kan ta emot dina förfrågningar och ladda upp data till Dropbox. Jag använder en ethernet-anslutning för att säkerställa tillförlitligheten, men en Wi-Fi-anslutning borde också fungera bra, samtidigt som den har fördelen av förbättrad bärbarhet. Om du väljer Wi-Fi rekommenderar jag den här USB-dongeln för Pi.
Anslut sedan din webbkamera till Pi genom att ansluta den till en av USB -portarna. Medan min adventswebbkamas instruktioner inte uttryckligen sa att den skulle fungera med Linux, var allt jag behövde att ansluta den och starta upp Pi. Ingen ytterligare installation behövdes. Andra webbkameror kan variera. Du kan kontrollera om din webbkamera har upptäckts av Linux med följande kommando:
lsusb
I bilden ovan listas min webbkamera som '0c45: 6340 Microdia'
Slutligen kan du ansluta din DS18B20 temperatursensor till Pi: s GPIO -rubrik. Jag använder min brödbräda för att göra processen att skapa kretsar enklare, och jag skulle rekommendera dig att göra detsamma, speciellt eftersom DS18B20 kräver att ett motstånd på 4,7 k placeras mellan två av dess tre stift. Denna länk ger ett bra kopplingsschema som visar hur en brödbräda kan användas för att ansluta till denna temperatursensor.
Nästa sida i ovanstående handledning täcker också stegen som behövs för att läsa in data från DS18B20 och visar hur du kontrollerar att den fungerar. Det är viktigt att utföra dessa installationssteg innan du kan använda DS18B20 för detta projekt. Vi kommer också att integrera exempel -Python -skriptet från handledningen i vårt övervakningsprogram, så du kanske vill ha en snabb skum över den här koden.
Notera också ditt DS18B20 unika nummer. Det är talet som börjar med '28-'som du stöter på under installationsguiden. Du måste ange det i det kommande Python -programmet för att låta det läsa in temperaturen.
Steg 2: Konfigurera Dropbox
För att din Pi ska kunna anslutas till Dropbox måste du konfigurera en ny Dropbox -app. Detta ger dig information som behövs för att din Pi ska kunna utföra filhantering online med Python. Förutsatt att du har skapat ett Dropbox -konto och loggat in kan du skapa en ny app med menyalternativet "Utvecklare". Se bilden ovan för en sammanfattning av de viktiga stegen.
Välj "Mina appar" i menyn "Utvecklare" och tryck sedan på knappen "Skapa app". För att fylla i det resulterande formuläret, välj "Dropbox API" följt av "Appmapp". Slutligen kan du välja ett unikt namn för din app i Dropbox. Klicka på "Skapa app".
Du kommer sedan att tas till din apps inställningssida i Dropbox. Det finns bara ytterligare en sak du behöver göra här - skapa dig en Access Token. För att göra detta, rulla ner till avsnittet "OAuth 2" och klicka på "Generera" -knappen under "Genererad åtkomsttoken".
Detta kommer att ge dig en lång rad tecken som behövs för att komma åt ditt Dropbox -konto med Python. Anteckna denna åtkomsttoken eftersom du måste ange den senare i din kod. Om du förlorar token kan du navigera tillbaka till appens inställningar genom att klicka på "Mina appar" i Dropbox -avsnittet "Utvecklare" och skapa en ny token.
Du kan lämna de andra inställningarna som de är. För att bekräfta att din app har skapat nödvändiga mappar på ditt Dropbox -konto, navigerar du till lagringshemsidan och letar efter mappen "Appar". I den här mappen ska det finnas en undermapp med namnet du valde för din nya app. Här kommer alla filer för ditt övervakningssystem att placeras.
Steg 3: Förbered din Dropbox -appmapp
När du har konfigurerat din Dropbox -app är det dags att tänka på hur du kommer att använda den resulterande mappen i ditt Dropbox -konto för att interagera med din Pi. Detta uppnås helt enkelt. Python-skriptet som körs på Pi kommer att använda en delmängd av kommandon från Dropbox API för att söka och ändra namnen på några tomma, förlängningsfria filer i din appmapp. Vi kommer att kalla dessa filer för "parameterfiler" eftersom var och en låter dig styra en annan aspekt av övervakningssystemets beteende. Bilden ovan visar de fyra parameterfilerna som måste finnas i din Dropbox -appmapp för detta projekt. Att skapa dem är enkelt:
Börja med att din appmapp är helt tom, öppna ett textredigeringsprogram på din dator. Även om detta kunde göras med Pi, tyckte jag att det var lättare att använda min Windows -bärbara dator för denna installationsfas. När textredigeraren är öppen (jag använde Anteckningar på Windows 7) är allt du behöver göra att spara en helt tom textfil var som helst på din dator. Som vårt första exempel kommer vi att skapa den första parametern i rubrikbilden. Ge filen namnet 'delay = 10' när du sparar den.
För att sammanfatta bör du nu ha en tom textfil lagrad på din dator med namnet 'delay = 10'. Filen kommer också att ha ett ".txt" -tillägg som kanske är synligt eller inte.
Nästa steg är att ladda upp den här filen till din Dropbox -appmapp. Detta är precis som alla andra Dropbox -uppladdningar. Navigera helt enkelt till appens mapp och klicka på "Ladda upp" och välj din "delay = 10" -fil.
När den här filen har laddats upp måste du ta bort tillägget '.txt' som nu ska vara synligt i filnamnet. För att göra detta, högerklicka på filen och välj 'Byt namn'. Ta bort ".txt" -delen av filnamnet. Du bör nu stå kvar med en fil som heter 'delay = 10' utan filtillägg, som visas i rubrikbilden.
Parameterfilen "fördröjning" är en av fyra som kommer att användas av övervakningsprogrammet. För att skapa de andra kan du bara kopiera och byta namn på din "fördröjning" -fil genom att högerklicka på den. När du har skapat tre kopior, namnge dem som visas i rubrikbilden så att din appmapp är identisk med den som visas i början av detta steg.
Steg 4: Komma igång med koden
Som diskuterats kommer kärnan i vårt övervakningssystem att bestå av ett enda Python -skript som kommer att samverka med Dropbox. För att övervakningsprogrammet ska vara aktivt måste detta skript köras i bakgrunden på din Pi. Jag antar att det mest exakt beskrivs som ett "daemon" -skript, vilket innebär att du bara kan sätta det igång och glömma det. Skriptet är bifogat detta steg, så det är ingen mening att upprepa koden här. Nu kan det vara en bra tid att ladda ner det och bekanta dig med det.
Innan du kan köra skriptet är det viktigt att du har de relevanta Python -biblioteken installerade. De du behöver listas högst upp i det bifogade skriptet. Dom är:
importera dropbox
import pygame.camera import os importtid
Python -installationen på min Pi inkluderade redan pygame, OS och tid så den enda jag var tvungen att installera var Dropbox. Jag gjorde detta med hjälp av deras mycket enkla installationsanvisningar med pip.
När dina bibliotek har konfigurerats måste du redigera de två översta raderna i det bifogade skriptet för att matcha din Dropbox Access Token och din DS18B20 temperatursensors unika identifierare. Det här är de två raderna som måste redigeras:
APP_ACCESS_TOKEN = '***********'
THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
Ersätt bara **** s med rätt värden. Vid det här laget är du faktiskt redo att börja använda övervakningsprogrammet! Istället för att bara hoppa in rekommenderar jag att du fortsätter till nästa steg för en allmän översikt över koden.
VIKTIGT: När du kör det här skriptet vill du att det ska köras i bakgrunden så att a) du kan fortsätta använda Pi och b) när du stänger din SSH -session fortsätter skriptet att köras. Detta är kommandot jag använder när jag kör skriptet:
nohup python DropCamTherm.py &
Detta åstadkommer tre saker: Det kommer att köra skriptet ('python DropCamTherm.py'), det kommer att återställa kontrollen till kommandoraden omedelbart så att du kan fortsätta använda Pi ('&') och det kommer att skicka Python -utgångar som skulle normalt visas på kommandoraden i en fil som heter 'nohup.out'. Detta kan läsas med en Linux -textredigerare (min favorit är nano) och skapas automatiskt i den katalog som skriptet körs från.
Steg 5: Gräva djupare i koden
När du öppnar skriptet kommer du att märka att det består av tre funktioner tillsammans med ett kodblock som implementerar dessa funktioner när skriptet körs. Funktionerna använder Dropbox API och får åtkomst till DS18B20: s temperaturloggfil för att lyssna efter kommandon från Dropbox och ladda upp den senaste temperaturavläsningen. Nedan följer en översikt över vad funktionerna gör och hur de används för att få övervakningssystemet att fungera:
- poll_parameter ():
Denna funktion visar syftet med Dropbox -parameterfilerna som vi skapade i steg 3. Den söker i Dropbox -appmappen efter en fil som innehåller texten 'param ='. Den extraherar sedan texten efter '=' och försöker konvertera den till ett heltal. Du kan se att detta gör att vi kan styra programmet genom att manuellt lägga till relevanta nummer i slutet av parameterfilerna. Nästa steg kommer att innehålla en kort instruktionsbok som visar hur du använder var och en av parameterfilerna för att styra en aspekt av programmet.
- set_parameter ():
Denna funktion gör att programmet kan byta namn på en parameterfil från Python. Det gör detta vid några tillfällen, främst för att minska behovet av överdriven manuell namnändring av filerna.
- set_latest_temp ():
Denna funktion använder set_parameter () för att ladda upp den senaste temperaturen till Dropbox -appmappen genom att lägga till den i parameterfilen 'temperatur'. Funktionen läser den senaste temperaturen från DS18B20: s loggfil (som är tillgänglig på Linux vid sökvägen som anges av variabeln THERMOMETER_FILE).
Den sista delen av programmet innehåller koden som körs när skriptet körs. Efter några installationssteg som krävs för DS18B20 -sensorn öppnar den en Dropbox -session med din åtkomsttoken och använder pygame för att söka efter din webbkamera. Om en webbkamera hittas kommer den in i en loop där den använder poll_parameter () för att extrahera information från Dropbox och agera på den.
VIKTIGT: Du kommer att märka följande kodrad:
cam = pygame.camera. Camera (cam_list [0], (864, 480))
… detta försöker skapa ett användbart kameragränssnitt från den första webbkameran som pygame upptäcker. Upplösningen kan behöva ändras för att matcha din webbkamera. Experimentera med ett antal värden för att hitta det som fungerar bäst.
Steg 6: Använda Dropbox -parameterfilerna
Så nu bör du ha ett fungerande skript som, när det körs med instruktionerna från steg 4, gör att din Pi kan börja övervaka appmappen för dina ingångar. Vid din första körning bör appmappen innehålla följande parameterfiler:
fördröjning = 10
exitprogram = 0 imagerequest = 0 temperatur = 0
Interaktion med programmet uppnås genom att manuellt byta namn på parameterfilerna via Dropbox. För att göra detta, högerklickar du bara på en av filerna och väljer "byt namn". Varje parameterfil har en annan funktion:
- fördröjning:
Denna fil berättar övervakningsprogrammet hur många sekunder det ska vänta mellan varje iteration av övervakningsslingan. När jag vet att jag inte kommer att interagera med programmet så mycket ställer jag in det på 60 eller 120. När jag vet att jag vill begära data från Pi ofta ställer jag in det till 10.
- utgångsprogram:
Detta bör ställas in på 1 eller 0. Om programmet upptäcker att det är inställt på 1, kommer det att avsluta skriptet. Om du ställer in det till 1 och skriptet avslutas måste du logga in på Pi igen för att starta det igen. Den här parametern finns så att du graciöst kan avsluta övervakningsprogrammet när du inte längre behöver att den ska köras (till exempel om du har återvänt hem och inte längre vill övervaka webbkameran på distans).
- imagerequest:
Detta är kanske den viktigaste parametern. Detta bör ställas in på 1 eller 0. Om programmet upptäcker att det är inställt på 1, kommer det att begära en bild från webbkameran och ladda upp den i appmappen (med titeln 'image.jpg'). Om det finns ytterligare en 'image.jpg' kommer den att skriva över den.
- temperatur:
Detta är DS18B20 temperaturavläsning inställd av funktionen set_latest_temp (). Du bör aldrig behöva redigera denna parameterfil - den ställs in automatiskt av programmet.
Observera att om du ställer in "exitprogram" eller "imagerequest" till 1, kommer programmet automatiskt att återställa dem till 0 innan den relevanta koden körs. Detta är för enkelhets skull. Du kanske också märker att koden innehåller många "försök" och "utom" block som omger många av de kritiska funktionerna. Detta för att säkerställa att manuset inte kastar undantag (och därmed slutar köra) om något går fel (till exempel ett internetanslutningsproblem som förhindrar Dropbox -åtkomst).
Steg 7: Slutsats
Detta projekt har presenterat ett sätt att styra en Raspberry Pi med Python och Dropbox. Även om hårdvaran som används i detta projekt är en temperatursensor och en USB -webbkamera, finns det många andra applikationer för denna metod för att styra Pi. Faktum är att alla hårdvarukomponenter som är tillgängliga via GPIO kan styras med en liknande programstruktur, vilket gör systemet mycket enkelt att expandera.
Som ett nästa steg kan du också använda ett GUI -bibliotek som Tkinter tillsammans med Dropbox API för att skapa ett klientprogram som gör att du kan ändra parameterfilerna utan att behöva logga in på Dropbox.
Jag hoppas att denna handledning har varit tydlig, och om du har några frågor eller vill att jag ska förtydliga något, vänligen lägg ut en kommentar!
Rekommenderad:
Arduino Soil Moisture Monitoring Stick - Glöm aldrig att vattna dina växter: 4 steg (med bilder)
Arduino Soil Moisture Monitoring Stick - Glöm aldrig att vattna dina växter: Glömmer du ofta att vattna dina inomhusväxter? Eller kanske du ger dem för mycket uppmärksamhet och övervattnar dem? Om du gör det bör du göra dig till en batteridriven jordfuktighetsövervakningspinne. Denna bildskärm använder en kapacitiv jordfuktighet
Arduino och Raspberry Pi Powered Pet Monitoring System: 19 steg (med bilder)
Arduino och Raspberry Pi Powered Pet Monitoring System: Nyligen under semestern insåg vi bristen på anslutning till vår pet Beagle. Efter en del undersökningar hittade vi produkter med en statisk kamera som gjorde det möjligt för en att övervaka och kommunicera med sitt husdjur. Dessa system hade vissa fördelar med
Pentesting BBU Dropbox: 16 steg
Pentesting BBU Dropbox: Detta är en liten datorbatteribackupsenhet som förvandlats till en pentesterande dropbox. Det är tänkt att installeras bakom en dator eller någon liten nätverksutrustning och gå obemärkt förbi, medan pentestern har fjärråtkomst till nätverket genom det. Målet
IoT Home Weather Monitoring System With Android Application Support (Mercury Droid): 11 steg
IoT Home Weather Monitoring System med Android -applikationsstöd (Mercury Droid): Introduktion Mercury Droid är en typ av IoT (tingens internet) inbäddade system baserat på Mercury Droid Android Mobile Application. Som kan mäta & övervaka hemväderaktivitet. det är mycket billigt hemväderövervakningssystem
IoT Plant Monitoring System (med IBM IoT -plattform): 11 steg (med bilder)
IoT Plant Monitoring System (Med IBM IoT Platform): Översikt Plant Monitoring System (PMS) är en applikation byggd med individer som är i arbetarklassen med en grön tumme i åtanke. Idag är arbetande individer mer upptagna än någonsin; utveckla sin karriär och hantera sin ekonomi.