INHOUDSOPGAWE:

Raspberry Pi -huismonitering met Dropbox: 7 stappe
Raspberry Pi -huismonitering met Dropbox: 7 stappe

Video: Raspberry Pi -huismonitering met Dropbox: 7 stappe

Video: Raspberry Pi -huismonitering met Dropbox: 7 stappe
Video: Beepberry! Tiny Pi-based Blackberry cyberdeck #shorts 2024, November
Anonim
Raspberry Pi -tuismonitering met Dropbox
Raspberry Pi -tuismonitering met Dropbox

Hierdie handleiding sal u wys hoe u 'n eenvoudige en uitbreidbare tuismoniteringstelsel kan skep met 'n Raspberry Pi, 'n webcam, 'n paar elektriese komponente en u Dropbox -rekening. Met die voltooide stelsel kan u op afstand foto's van u webcam aanvra en bekyk, terwyl u ook 'n digitale temperatuursensor op die rak gebruik om die temperatuur van u huis via die internet te monitor, alles met behulp van Dropbox.

Dit was die eerste projek wat ek bedink het nadat ek 'n Raspberry Pi 2-model B. ontvang het. Alhoewel daar baie verskillende maniere is om dit te doen, het ek besluit om Dropbox te gebruik as die koppelvlak tussen die Pi en die internet, aangesien dit 'n eenvoudige Python -API het, waarmee u lêers in spesifieke gidse kan oplaai, verander en soek met behulp van 'n paar reëls kode.

Ek wou ook hê dat my oplossing lig en eenvoudig sou wees, en om my Pi te vermy met onnodige biblioteke en programme. Die sagtewarekomponent van hierdie projek bestaan uit 'n enkele Python -script, wat beteken dat u u Pi normaalweg kan gebruik, selfs as die moniteringstelsel werk.

Vir hierdie projek benodig u:

'N Framboos Pi. Elke model behoort te werk; ek het 'n alles-in-een-aansitstel gebruik, maar miskien het u slegs die sentrale eenheid nodig

'N USB -webkamera. Ek het 'n goedkoop ADVENT AWC72015 gekoop, wat toevallig goed gewerk het. Dit kan 'n goeie idee wees om hierdie lys webcams te raadpleeg wat bevestig word dat dit met die Pi werk. Let daarop dat sommige 'n USB -hub benodig (myne werk goed sonder)

'N Dropbox -rekening. Ek gebruik my standaard gratis rekening, aangesien hierdie projek nie veel stoorplek benodig nie

'N DS18B20 digitale temperatuursensor en 'n weerstand van 4.7k. U kan die sensor hier koop, en dit is ook die moeite werd om 'n pak verskillende weerstande te gryp

'N Paar bykomstighede vir die bou van stroombane. Ek beveel aan dat u 'n broodbord en 'n paar springkabels gebruik om die baanbouproses so maklik as moontlik te maak

[As u besluit om een van hierdie produkte te koop, sal ek dit baie waardeer as u toegang tot die volledige lys kry met die bogenoemde skakels - op hierdie manier kry ek 'n klein deel van die wins sonder ekstra koste!]

Stap 1: Stel die hardeware op

Stel die hardeware op
Stel die hardeware op

Die eerste stap is om te verseker dat u Pi en die gepaardgaande randapparatuur opgestel is.

Koppel eers u Pi aan die internet. Dit is nodig om te verseker dat die moniteringsprogram u versoeke kan ontvang en data na Dropbox kan oplaai. Ek gebruik 'n ethernet-verbinding om betroubaarheid te verseker, maar 'n Wi-Fi-verbinding behoort ook goed te werk, terwyl dit ook die voordeel het van verbeterde draagbaarheid. As u Wi-Fi kies, sal ek hierdie USB-dongle vir die Pi aanbeveel.

Koppel vervolgens u webkamera aan die Pi deur dit aan te sluit op een van die USB -poorte. Alhoewel die instruksies van my Advent -webkamera nie uitdruklik gesê het dat dit met Linux sou werk nie, was dit net wat ek hoef te doen om dit aan te sluit en die Pi op te laai. Geen verdere installasie was nodig nie. Ander webcams kan wissel. U kan kyk of u webkamera deur Linux opgespoor is met die volgende opdrag:

lsusb

In die prent hierbo word my webkamera gelys as '0c45: 6340 Microdia'

Uiteindelik kan u u DS18B20 temperatuursensor koppel aan die GPIO -kop van die Pi. Ek gebruik my broodbord om die stroombaanproses makliker te maak, en ek beveel aan dat u dit ook doen, veral omdat die DS18B20 'n 4,7k -weerstand tussen twee van sy drie penne moet plaas. Hierdie skakel bied 'n goeie bedradingsdiagram wat wys hoe 'n broodbord gebruik kan word om aan hierdie temperatuursensor te koppel.

Die volgende bladsy van die bogenoemde handleiding dek ook die stappe wat nodig is om data van die DS18B20 in te lees, en wys u hoe u kan kontroleer of dit werk. Dit is belangrik om hierdie opstellingstappe uit te voer voordat u die DS18B20 vir hierdie projek kan gebruik. Ons sal ook die voorbeeld van Python -script uit die tutoriaal in ons moniteringsprogram integreer, sodat u hierdie kode vinnig wil lees.

Let ook op die unieke nommer van u DS18B20. Dit is die nommer wat begin met '28-'wat u teëkom tydens die opstelhandleiding. U moet dit in die komende Python -program invoer sodat dit die temperatuur kan lees.

Stap 2: Stel Dropbox op

Stel Dropbox op
Stel Dropbox op

Om u Pi met Dropbox te koppel, moet u 'n nuwe Dropbox -app opstel. Dit gee u die nodige inligting vir u Pi om aanlyn lêerbestuur met Python uit te voer. As u aanvaar dat u 'n Dropbox -rekening geskep het en aangemeld het, kan u 'n nuwe app skep met die menu 'Ontwikkelaars'. Sien die prent hierbo vir 'n opsomming van die belangrike stappe.

Kies 'My programme' in die menu 'Ontwikkelaars' en druk dan op die 'Skep program' -knoppie. Om die resulterende vorm in te vul, kies 'Dropbox API' gevolg deur 'Appmap'. Uiteindelik kan u 'n unieke naam vir u app in Dropbox kies. Klik op 'Skep program'.

U word dan na die instellingsbladsy van u app in Dropbox geneem. Daar is nog net een ding wat u hier moet doen: skep vir u 'n toegangstoken. Om dit te doen, blaai af na die 'OAuth 2' -afdeling en klik onder die' Gegenereerde toegangstoken 'op die' Genereer 'knoppie.

Dit bied u 'n lang reeks karakters wat nodig is om met Python toegang tot u Dropbox -rekening te verkry. Teken hierdie toegangstoken aan, aangesien u dit later in u kode moet spesifiseer. As u die teken verloor, kan u terugkeer na die instellings van u app deur op 'My programme' in die 'Ontwikkelaars' -afdeling van Dropbox te klik en 'n nuwe teken te genereer.

U kan die ander instellings net so laat. Om te bevestig dat u app die nodige vouers in u Dropbox -rekening geskep het, gaan na u tuisblad vir berging en soek na die 'Apps' -lêergids. In hierdie gids moet 'n submap wees met die naam wat u vir u nuwe app gekies het. Dit is waar alle lêers vir u moniteringstelsel geplaas word.

Stap 3: berei u Dropbox -appmap voor

Maak u Dropbox -appmap gereed
Maak u Dropbox -appmap gereed

Nadat u u Dropbox -app opgestel het, is dit tyd om na te dink oor hoe u die gevolglike gids in u Dropbox -rekening sal gebruik om met u Pi te kommunikeer. Dit word eenvoudig bereik. Die Python-skrip wat op die Pi uitgevoer word, sal 'n subset opdragte van die Dropbox API gebruik om die name van 'n paar leë, uitbreidingslose lêers in u programmap te soek en te verander. Ons sal hierdie lêers 'parameterlêers' noem, aangesien elkeen u 'n ander aspek van die gedrag van die moniteringstelsel kan beheer. Die prent hierbo toon die vier parameterlêers wat in u Dropbox -appmap vir hierdie projek moet voorkom. Dit is eenvoudig om dit te skep:

Begin met u programmap heeltemal leeg en maak 'n teksredakteurprogram op u rekenaar oop. Alhoewel dit met behulp van die Pi gedoen kon word, het ek dit makliker gevind om my Windows -skootrekenaar vir hierdie opstelfase te gebruik. Sodra die teksredakteur oop is (ek het Notepad op Windows 7 gebruik), hoef u net 'n heeltemal leë tekslêer op u rekenaar te stoor. As ons eerste voorbeeld, sal ons die eerste parameter in die kopbeeld skep. Noem die lêer 'delay = 10' wanneer u dit stoor.

Om 'n opsomming te maak, moet u nou 'n leë tekslêer op u rekenaar stoor met die naam 'delay = 10'. Die lêer sal ook 'n '.txt' -uitbreiding hê wat al dan nie sigbaar is.

Die volgende stap is om hierdie lêer na u Dropbox -programmap op te laai. Dit is net soos enige ander Dropbox -oplaai. Navigeer eenvoudig na die gids van u app, klik op 'Laai' op en kies u 'vertraging = 10' lêer.

As hierdie lêer opgelaai is, moet u die '.txt' -uitbreiding verwyder wat nou in die lêernaam sigbaar moet wees. Om dit te doen, klik met die rechtermuisknop op die lêer en kies 'Hernoem'. Verwyder die '.txt' gedeelte van die lêernaam. U moet nou 'n lêer met die naam 'vertraging = 10' sonder 'n lêeruitbreiding agterlaat, soos in die koptekst getoon word.

Die parameter 'lêer' is een van vier wat deur die moniteringsprogram gebruik sal word. Om die ander te skep, kan u u 'vertragings' -lêer net kopieer en hernoem deur regs daarop te klik. Nadat u drie kopieë gemaak het, noem dit soos aangedui in die koptekst, sodat u app -gids identies is aan die aan die begin van hierdie stap.

Stap 4: Aan die gang met die kode

Soos bespreek, sal die kern van ons moniteringstelsel bestaan uit 'n enkele Python -skrip wat met Dropbox verbind kan word. Om die moniteringsprogram aktief te kan wees, moet hierdie script op die Pi -agtergrond loop. Ek dink dit word die akkuraatste beskryf as 'n 'daemon' -skrif, wat beteken dat u dit net kan laat loop en dit kan vergeet. Die draaiboek is aan hierdie stap gekoppel, dus is dit nie sinvol om die kode hier te herhaal nie. Dit is miskien 'n goeie tyd om dit af te laai en vertroud te raak met dit.

Voordat u die script kan uitvoer, is dit belangrik dat u die relevante Python -biblioteke geïnstalleer het. Diegene wat u benodig, word bo -aan die aangehegte skrif gelys. Hulle is:

invoer dropbox

invoer pygame.camera invoer os invoer tyd

Die Python -installasie op my Pi bevat reeds pygame, OS en tyd, dus die enigste wat ek moes installeer, was Dropbox. Ek het dit gedoen met hul baie eenvoudige installasie -instruksies met pip.

Sodra u biblioteke opgestel is, moet u die boonste twee reëls van die aangehegte skrif wysig sodat dit ooreenstem met u Dropbox -toegangstoken en die unieke identifiseerder van u DS18B20 -temperatuursensor. Dit is die twee reëls wat gewysig moet word:

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

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

Vervang net die **** s met die korrekte waardes. Op hierdie punt is u eintlik gereed om die moniteringsprogram te begin gebruik! In plaas daarvan om net in te spring, beveel ek aan dat u na die volgende stap gaan vir 'n algemene oorsig van die kode.

BELANGRIK: As u hierdie skrip uitvoer, wil u hê dat dit op die agtergrond moet loop, sodat a) u die Pi kan gebruik, en b) as u u SSH -sessie sluit, sal die skrif voortgaan om te werk. Dit is die opdrag wat ek gebruik wanneer ek die script uitvoer:

nohup python DropCamTherm.py &

Dit bereik drie dinge: dit sal die script ('python DropCamTherm.py') uitvoer, dit sal die beheer onmiddellik terugbring na die opdragreël, sodat u die Pi ('&') kan gebruik, en dit stuur Python -uitsette wat word normaalweg op die opdragreël vertoon in 'n lêer genaamd 'nohup.out'. Dit kan gelees word met behulp van 'n Linux -teksredakteur (my gunsteling is nano) en word outomaties geskep in die gids waaruit die script uitgevoer word.

Stap 5: verdiep dieper in die kode

As u die script oopmaak, sal u sien dat dit uit drie funksies bestaan, tesame met 'n blok kode wat hierdie funksies implementeer wanneer die script uitgevoer word. Die funksies gebruik die Dropbox API en kry toegang tot die temperatuurlogboeklêer van die DS18B20 om na opdragte van Dropbox te luister en die nuutste temperatuurlesing op te laai. Hieronder is 'n oorsig van wat die funksies doen en hoe dit gebruik word om die moniteringstelsel te laat werk:

- poll_parameter ():

Hierdie funksie toon die doel van die Dropbox -parameterlêers wat ons in stap 3 geskep het. Dit soek in die Dropbox -appmap na 'n lêer met die teks 'param ='. Dit onttrek dan die teks na die '=' en probeer dit omskep in 'n heelgetal. U kan sien dat dit ons toelaat om die program te beheer deur relevante getalle handmatig aan die einde van die parameterlêers toe te voeg. Die volgende stap bevat 'n kort handleiding wat u wys hoe u elk van die parameterlêers moet gebruik om 'n aspek van die program te beheer.

- set_parameter ():

Met hierdie funksie kan die program 'n parameterlêer vanuit Python hernoem. Dit word by 'n paar geleenthede gedoen, hoofsaaklik om die behoefte aan oormatige hernoeming van lêers te verminder.

- stel_latest_temp ():

Hierdie funksie maak gebruik van set_parameter () om die nuutste temperatuur na die Dropbox -appmap op te laai deur dit by die parameter 'temperatuur' -lêer te voeg. Die funksie lees die nuutste temperatuur uit die loglêer van die DS18B20 (wat beskikbaar is op Linux op die pad wat deur die veranderlike THERMOMETER_FILE aangedui word).

Die laaste deel van die program bevat die kode wat uitgevoer sal word wanneer die script uitgevoer word. Na 'n paar opstelstappe wat nodig is vir die DS18B20 -sensor, maak dit 'n Dropbox -sessie oop met behulp van u toegangstoken en gebruik pygame om na u webcam te soek. As 'n webkamera gevind word, sal dit 'n lus betree waar dit poll_parameter () gebruik om inligting uit Dropbox te onttrek en daarop te reageer.

BELANGRIK: U sal die volgende reël kode sien:

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

… dit poog om 'n bruikbare kamera -koppelvlak te skep vanaf die eerste webkamera wat deur pygame opgespoor word. Die resolusie moet moontlik verander word om by u webcam te pas. Eksperimenteer met 'n aantal waardes om uit te vind wat die beste werk.

Stap 6: Gebruik die Dropbox -parameterlêers

U moet dus 'n werkende script hê, wat u Pi in staat sal stel om die app -gids vir u insette te monitor wanneer u die instruksies van stap 4 gebruik. By u eerste lopie moet die app -lêergids die volgende parameterlêers bevat:

vertraging = 10

uitgangsprogram = 0 imagerequest = 0 temperatuur = 0

Interaksie met die program word verkry deur die parameterlêers met die hand via Dropbox te hernoem. Om dit te doen, klik met die rechtermuisknop op een van die lêers en kies 'hernoem'. Elke parameterlêer het 'n ander funksie:

- vertraging:

Hierdie lêer vertel die moniteringsprogram hoeveel sekondes om te wag tussen elke iterasie van die moniteringslus. As ek weet dat ek nie veel met die program sal omgaan nie, stel ek dit op 60 of 120. As ek weet dat ek gereeld data van die Pi wil aanvra, stel ek dit op 10.

- uitgangsprogram:

Dit moet op 1 of 0. gestel word. As die program agterkom dat dit op 1 is, sal dit die script eindig. As u dit op 1 stel en die script verlaat, moet u weer by die Pi aanmeld om dit weer te begin. Hierdie parameter bestaan sodat u die moniteringsprogram grasieus kan beëindig as u dit nie meer nodig het nie (byvoorbeeld as u teruggekeer het en nie meer die webcam op afstand wil monitor nie).

- beeldaanvraag:

Dit is miskien die belangrikste parameter. Dit moet op 1 of 0. gestel word. As die program agterkom dat dit op 1 is, sal dit 'n beeld van die webkamera aanvra en dit in die programmap oplaai (met die titel 'image.jpg'). As 'n ander 'image.jpg' bestaan, sal dit dit oorskryf.

- temperatuur:

Dit is die DS18B20 temperatuurlesing wat deur die funksie set_latest_temp () gestel is. U hoef nooit hierdie parameterlêer te wysig nie - dit word outomaties deur die program ingestel.

Let daarop dat as u 'exitprogram' of 'imagerequest' op 1 stel, die program dit outomaties na 0 terugbring voordat die betrokke kode uitgevoer word. Dit is gerieflik. U sal ook opmerk dat die kode baie blokke 'probeer' en 'behalwe' bevat wat baie van die kritieke funksies bevat. Dit is om te verseker dat die script nie uitsonderings (en dus ophou loop) gebruik as iets verkeerd loop nie (soos 'n internetverbindingsprobleem wat toegang tot Dropbox voorkom).

Stap 7: Gevolgtrekking

Hierdie projek het 'n manier aangebied om 'n Raspberry Pi te beheer met behulp van Python en Dropbox. Alhoewel die hardeware wat in hierdie projek gebruik word, 'n temperatuursensor en 'n USB -webcam is, is daar baie ander toepassings vir hierdie metode om die Pi te beheer. Trouens, enige hardeware -komponent wat toeganklik is via GPIO, kan beheer word met behulp van 'n soortgelyke programstruktuur, wat die stelsel baie maklik uitbrei.

As 'n volgende stap kan u ook 'n GUI -biblioteek soos Tkinter saam met die Dropbox API gebruik om 'n kliëntprogram te skep waarmee u die parameterlêers kan verander sonder om eers by Dropbox aan te meld.

Ek hoop dat hierdie tutoriaal duidelik was, en as u enige vrae het of wil hê dat ek iets moet verduidelik, plaas 'n opmerking!

Aanbeveel: