Sisällysluettelo:

Raspberry Pi Home -valvonta Dropboxilla: 7 vaihetta
Raspberry Pi Home -valvonta Dropboxilla: 7 vaihetta

Video: Raspberry Pi Home -valvonta Dropboxilla: 7 vaihetta

Video: Raspberry Pi Home -valvonta Dropboxilla: 7 vaihetta
Video: How to build a NAS server from old hard drives 2024, Marraskuu
Anonim
Raspberry Pi Home -valvonta Dropboxilla
Raspberry Pi Home -valvonta Dropboxilla

Tämä opetusohjelma näyttää, kuinka voit luoda yksinkertaisen ja laajennettavan kodin valvontajärjestelmän käyttämällä Raspberry Pi: tä, verkkokameraa, muutamia sähkökomponentteja ja Dropbox -tiliäsi. Valmiiden järjestelmien avulla voit etänä pyytää ja katsella kuvia verkkokamerastasi samalla, kun käytät digitaalista lämpötila-anturia, joka valvoo kotisi lämpötilaa Internetissä, kaikki Dropboxin avulla.

Tämä oli ensimmäinen projekti, jonka ajattelin Raspberry Pi 2 -mallin B saamisen jälkeen. Tavoitteeni oli luoda Python-pohjainen seurantajärjestelmä, jota voin hallita ja vastaanottaa tietoja Internetin kautta. Vaikka tähän on monia eri tapoja, päätin käyttää Dropboxia Pi: n ja Internetin rajapintana, koska niillä on yksinkertainen Python -sovellusliittymä, jonka avulla voit ladata, muokata ja etsiä tiedostoja tietyistä kansioista muutaman rivin avulla koodi.

Halusin myös, että ratkaisuni olisi kevyt ja yksinkertainen, ja välttääkseni Pi: n sotkemisen tarpeettomilla kirjastoilla ja ohjelmilla. Tämän projektin ohjelmistokomponentti koostuu yhdestä Python -komentosarjasta, joten voit jatkaa Pi: n käyttöä normaalisti, vaikka valvontajärjestelmä olisi käynnissä.

Tätä projektia varten tarvitset:

Raspberry Pi. Kaikkien mallien pitäisi toimia, käytin all-in-one-aloituspakettia, mutta ehkä tarvitset vain keskusyksikön

USB -verkkokamera. Ostin halvan ADVENT AWC72015: n, joka toimi hyvin. Voi olla hyvä idea tutustua tähän luetteloon verkkokameroista, joiden on vahvistettu toimivan Pi: n kanssa. Huomaa, että jotkut vaativat toimivan USB -keskittimen (omani toimii hyvin ilman)

Dropbox -tili. Käytän tavallista ilmaista tiliäni, koska tämä projekti ei vaadi paljon tallennustilaa

Digitaalinen DS18B20 -lämpötila -anturi ja 4,7 kt: n vastus. Voit ostaa anturin täältä, ja saattaa olla syytä napata myös pakkaus erilaisia vastuksia

Jotkut piirin rakentamisen lisävarusteet. Suosittelen leipälevyn ja joidenkin hyppykaapeleiden käyttöä, jotta piirin rakentamisprosessi olisi mahdollisimman helppo

[Jos päätät ostaa jonkin näistä tuotteista, olisin erittäin kiitollinen, jos pääsisit listauksiin yllä olevien linkkien avulla - näin saan pienen osan voitoista ilman lisäkustannuksia!]

Vaihe 1: Asenna laitteisto

Asenna laitteisto
Asenna laitteisto

Ensimmäinen askel on varmistaa, että Pi ja siihen liittyvät oheislaitteet on määritetty.

Liitä ensin Pi Internetiin. Tämä on tarpeen sen varmistamiseksi, että valvontaohjelma voi vastaanottaa pyyntösi ja ladata tietoja Dropboxiin. Käytän ethernet-yhteyttä luotettavuuden varmistamiseksi, mutta myös Wi-Fi-yhteyden pitäisi toimia hyvin, mutta sillä on myös parempi siirrettävyys. Jos valitset Wi-Fi: n, suosittelen tätä USB-sovitinta Pi: lle.

Liitä seuraavaksi verkkokamera Pi -laitteeseen kytkemällä se johonkin USB -porttiin. Vaikka Advent -verkkokamerani ohjeissa ei sanottu nimenomaisesti, että se toimisi Linuxin kanssa, minun täytyi vain kytkeä se ja käynnistää Pi. Lisäasennusta ei tarvittu. Muut verkkokamerat voivat vaihdella. Voit tarkistaa, onko Linux havainnut verkkokamerasi seuraavalla komennolla:

lsusb

Yllä olevassa kuvassa verkkokamerani on '0c45: 6340 Microdia'

Lopuksi voit liittää DS18B20 -lämpötila -anturin Pi: n GPIO -otsikkoon. Käytän leipälautaani piirien luomisen helpottamiseksi, ja suosittelen, että teet saman, varsinkin kun DS18B20 vaatii 4,7 k: n vastuksen sijoittamista kahden kolmesta nastastaan. Tämä linkki tarjoaa hyvän kytkentäkaavion, joka osoittaa, miten leipälevyä voidaan käyttää liittämään tähän lämpötila -anturiin.

Yllä olevan opetusohjelman seuraava sivu kattaa myös vaiheet, jotka tarvitaan tietojen lukemiseen DS18B20 -laitteesta, ja näyttää, miten voit tarkistaa, että se toimii. On tärkeää suorittaa nämä asennusvaiheet ennen kuin voit käyttää DS18B20 -laitetta tähän projektiin. Integroimme myös opetusohjelmasta otetun Python -komentosarjan valvontaohjelmaamme, joten saatat haluta tarkistaa tämän koodin nopeasti.

Muista myös DS18B20 -laitteen yksilöllinen numero. Asetusoppaan aikana kohtaat numeron, joka alkaa '28-'. Sinun on syötettävä se tulevaan Python -ohjelmaan, jotta se voi lukea lämpötilassa.

Vaihe 2: Määritä Dropbox

Määritä Dropbox
Määritä Dropbox

Jotta Pi voi liittyä Dropboxiin, sinun on määritettävä uusi Dropbox -sovellus. Tämä antaa sinulle tarvittavat tiedot, jotta Pi pystyy suorittamaan online -tiedostonhallinnan Pythonilla. Olettaen, että olet luonut Dropbox -tilin ja kirjautunut sisään, voit luoda uuden sovelluksen käyttämällä kehittäjien valikkovaihtoehtoa. Katso yllä olevasta kuvasta yhteenveto tärkeistä vaiheista.

Valitse Kehittäjät -valikosta Omat sovellukset ja paina sitten Luo sovellus -painiketta. Täytä tuloksena oleva lomake valitsemalla Dropbox -sovellusliittymä ja sen jälkeen Sovelluskansio. Lopuksi voit valita sovelluksellesi ainutlaatuisen nimen Dropboxista. Napsauta Luo sovellus.

Siirryt sitten sovelluksesi asetussivulle Dropboxissa. Sinun on tehtävä vain yksi lisätoiminto - luo itsellesi käyttöoikeustunnus. Voit tehdä tämän siirtymällä alas OAuth 2 -osaan ja napsauttamalla Luotu käyttöoikeustunnus -kohdassa Luo -painiketta.

Tämä näyttää sinulle pitkän merkkijonon, jota tarvitaan Dropbox -tilisi käyttämiseen Pythonilla. Merkitse tämä käyttöoikeustunnus muistiin, koska sinun on määritettävä se myöhemmin koodissasi. Jos menetät tunnuksen, voit siirtyä takaisin sovelluksesi asetuksiin napsauttamalla Dropboxin kehittäjät -osion Omat sovellukset -painiketta ja luomalla uuden tunnuksen.

Voit jättää muut asetukset sellaisiksi. Varmistaaksesi, että sovelluksesi on luonut tarvittavat kansiot Dropbox -tilillesi, siirry tallennustilan etusivulle ja etsi Sovellukset -kansio. Tämän kansion sisällä pitäisi olla alikansio, jonka nimi valitsit uudelle sovelluksellesi. Kaikki valvontajärjestelmäsi tiedostot sijoitetaan tähän.

Vaihe 3: Dropbox -sovelluskansion valmistelu

Dropbox -sovelluskansion valmistelu
Dropbox -sovelluskansion valmistelu

Kun olet asentanut Dropbox -sovelluksesi, on aika miettiä, miten käytät Dropbox -tilisi tuloksena olevaa kansiota vuorovaikutuksessa Pi -laitteesi kanssa. Tämä saavutetaan yksinkertaisesti. Pi: llä suoritettava Python-komentosarja käyttää Dropbox-sovellusliittymän komentojen osajoukkoa etsimään ja muokkaamaan joidenkin tyhjien, laajennuksettomien tiedostojen nimiä sovelluskansiossasi. Kutsumme näitä tiedostoja parametritiedostoiksi, koska jokainen antaa sinun hallita eri näkökohtia valvontajärjestelmän toiminnassa. Yllä oleva kuva näyttää neljä parametritiedostoa, joiden on oltava läsnä tämän projektin Dropbox -sovelluskansiossa. Niiden luominen on yksinkertaista:

Aloita sovelluskansio täysin tyhjänä, avaa tekstieditoriohjelma tietokoneellasi. Vaikka tämä voitaisiin tehdä käyttämällä Pi: tä, huomasin, että minun oli helpompi käyttää Windows -kannettavaa tietokonetta tässä asennusvaiheessa. Kun tekstieditori on auki (käytin Notepadia Windows 7: ssä), sinun tarvitsee vain tallentaa täysin tyhjä tekstitiedosto mihin tahansa tietokoneeseen. Ensimmäisenä esimerkkinä luomme ensimmäisen parametrin otsikkokuvassa. Nimeä tiedosto 'delay = 10', kun tallennat sen.

Yhteenvetona, sinun pitäisi nyt tallentaa tietokoneellesi tyhjä tekstitiedosto nimeltä "delay = 10". Tiedostossa on myös.txt -laajennus, joka voi olla näkyvissä tai ei.

Seuraava vaihe on ladata tämä tiedosto Dropbox -sovelluskansioosi. Tämä on aivan kuten mikä tahansa muu Dropbox -lataus. Siirry sovelluksesi kansioon ja napsauta Lataa ja valitse delay = 10 -tiedosto.

Kun tämä tiedosto on ladattu, sinun on poistettava.txt -laajennus, jonka pitäisi näkyä tiedostonimessä. Voit tehdä tämän napsauttamalla tiedostoa hiiren kakkospainikkeella ja valitsemalla Nimeä uudelleen. Poista tiedostonimen.txt -osa. Sinun pitäisi nyt jättää tiedosto nimeltä "delay = 10" ilman tiedostopääte, kuten otsikkokuvassa näkyy.

Viiveparametritiedosto on yksi neljästä, jota valvontaohjelma käyttää. Voit luoda muita tiedostoja kopioimalla ja nimeämällä viivästystiedostosi napsauttamalla sitä hiiren kakkospainikkeella. Kun olet luonut kolme kopiota, nimeä ne otsikkokuvassa esitetyllä tavalla, jotta sovelluskansio on sama kuin tämän vaiheen alussa.

Vaihe 4: Koodin käytön aloittaminen

Kuten keskustelimme, valvontajärjestelmämme ydin koostuu yhdestä Python -komentosarjasta, joka on käyttöliittymä Dropboxin kanssa. Jotta valvontaohjelma olisi aktiivinen, tämän komentosarjan on suoritettava Pi -laitteesi taustalla. Luulen, että sitä kuvataan tarkimmin "daemon" -skriptinä, mikä tarkoittaa, että voit vain asettaa sen toimimaan ja unohtaa sen. Käsikirjoitus on liitetty tähän vaiheeseen, joten koodin toistaminen täällä ei ole järkevää. Nyt voi olla hyvä aika ladata se ja tutustua siihen.

Ennen kuin voit suorittaa komentosarjan, on tärkeää varmistaa, että olet asentanut asiaankuuluvat Python -kirjastot. Tarvitsemasi on lueteltu liitteenä olevan komentosarjan yläosassa. He ovat:

tuoda dropbox

tuonti pygame.camera tuonti os tuontiaika

Pi -laitteeni Python -asennus sisälsi jo pygamen, käyttöjärjestelmät ja ajan, joten ainoa minun oli asennettava Dropbox. Tein tämän käyttämällä heidän hyvin yksinkertaisia asennusohjeita pipin kanssa.

Kun kirjastot on määritetty, sinun on muokattava liitteenä olevan komentosarjan kaksi yläriviä vastaamaan Dropbox -käyttöoikeustunnustasi ja DS18B20 -lämpötila -anturin yksilöllistä tunnistetta. Nämä kaksi riviä on muokattava:

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

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

Korvaa vain ****: t oikeilla arvoilla. Tässä vaiheessa olet itse valmis aloittamaan seurantaohjelman käytön! Sen sijaan, että hyppäisit sisään, suosittelen, että jatkat seuraavaan vaiheeseen saadaksesi yleiskuvan koodista.

TÄRKEÄÄ: Kun suoritat tämän komentosarjan, haluat sen toimivan taustalla, jotta a) voit jatkaa Pi: n käyttöä ja b) kun suljet SSH -istunnon, komentosarja jatkuu. Tätä komentoa käytän, kun suoritan komentosarjan:

nohup python DropCamTherm.py &

Tämä suorittaa kolme asiaa: Se suorittaa komentosarjan ('python DropCamTherm.py'), palauttaa ohjauksen komentoriville välittömästi, jotta voit jatkaa Pi: n ('&') käyttöä, ja se lähettää Python -lähdöt, jotka yleensä näytetään komentoriviltä tiedostoon nimeltä 'nohup.out'. Tämä voidaan lukea Linux -tekstieditorilla (suosikkini on nano), ja se luodaan automaattisesti hakemistoon, josta komentosarjaa suoritetaan.

Vaihe 5: Kaiva syvemmälle koodiin

Kun avaat komentosarjan, huomaat, että se koostuu kolmesta toiminnosta sekä koodilohko, joka toteuttaa nämä toiminnot, kun komentosarja suoritetaan. Toiminnot käyttävät Dropbox -sovellusliittymää ja käyttävät DS18B20: n lämpötilalokitiedostoa kuunnellakseen Dropbox -komentoja ja ladatakseen uusimmat lämpötilalukemat. Alla on yleiskatsaus toimintojen toiminnasta ja siitä, miten niitä käytetään valvontajärjestelmän toimimiseen:

- poll_parameter ():

Tämä toiminto näyttää vaiheessa 3 luomiemme Dropbox -parametritiedostojen tarkoituksen. Se etsii Dropbox -sovelluksen kansiosta tiedoston, joka sisältää tekstin "param =". Sitten se poimii tekstin '=' jälkeen ja yrittää muuntaa sen kokonaisluvuksi. Näet, että tämän avulla voimme hallita ohjelmaa lisäämällä tarvittavat numerot parametritiedostojen loppuun manuaalisesti. Seuraava vaihe sisältää lyhyen käyttöoppaan, joka näyttää, kuinka kunkin parametritiedoston avulla voidaan hallita ohjelman osaa.

- set_parameter ():

Tämän toiminnon avulla ohjelma voi nimetä parametritiedoston uudelleen Pythonista. Se tekee tämän muutaman kerran pääasiassa vähentääkseen tarvetta liialliselle manuaaliselle tiedostojen uudelleennimeämiselle.

- set_latest_temp ():

Tämä toiminto käyttää set_parameter () -toimintoa ladatakseen viimeisimmän lämpötilan Dropbox -sovelluskansioon lisäämällä sen lämpötila -parametritiedostoon. Toiminto lukee viimeisimmän lämpötilan DS18B20: n lokitiedostosta (joka on saatavana Linuxissa THERMOMETER_FILE -muuttujan osoittamalla polulla).

Ohjelman viimeinen osa sisältää koodin, joka suoritetaan, kun komentosarja suoritetaan. Joidenkin DS18B20 -anturille tarvittavien asennusvaiheiden jälkeen se avaa Dropbox -istunnon Access -tunnuksesi avulla ja etsii verkkokamerasi pygamin avulla. Jos verkkokamera löytyy, se siirtyy silmukkaan, jossa se käyttää poll_parameter () -toimintoa tietojen keräämiseen Dropboxista ja toimimiseen sen mukaan.

TÄRKEÄÄ: Huomaat seuraavan koodirivin:

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

… Tämä yrittää luoda käyttökelpoisen kameran käyttöliittymän ensimmäisestä pygamen havaitsemasta verkkokamerasta. Tarkkuutta on ehkä muutettava vastaamaan verkkokameraasi. Kokeile useita arvoja löytääksesi parhaiten toimivan.

Vaihe 6: Dropbox -parametritiedostojen käyttäminen

Joten nyt sinulla pitäisi olla toimiva komentosarja, joka suoritettaessa vaiheen 4 ohjeita noudattaen antaa Pi: si alkaa valvoa sovelluskansiota syötteidesi suhteen. Ensimmäisellä kerralla sovelluskansion tulee sisältää seuraavat parametritiedostot:

viive = 10

exitprogram = 0 imagerequest = 0 lämpötila = 0

Vuorovaikutus ohjelman kanssa saavutetaan nimeämällä parametritiedostot manuaalisesti Dropboxin kautta. Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella jotakin tiedostoista ja valitsemalla "nimeä uudelleen". Jokaisella parametritiedostolla on eri toiminto:

- viive:

Tämä tiedosto kertoo valvontaohjelmalle, kuinka monta sekuntia on odotettava valvontalenkin jokaisen iteroinnin välillä. Kun tiedän, etten aio olla paljon vuorovaikutuksessa ohjelman kanssa, asetan sen arvoksi 60 tai 120. Kun tiedän, että haluan pyytää tietoja Pi: ltä usein, asetan sen arvoon 10.

- poistumisohjelma:

Tämän pitäisi olla 1 tai 0. Jos ohjelma havaitsee, että sen arvo on 1, se lopettaa komentosarjan. Jos asetat sen arvoon 1 ja komentosarja sulkeutuu, sinun on kirjauduttava sisään Pi: hen uudelleen, jotta voit käynnistää sen varmuuskopioinnin. Tämä parametri on olemassa, jotta voit lopettaa valvontaohjelman sulavasti, kun et enää tarvitse sitä (esimerkiksi jos olet palannut kotiin etkä enää halua seurata verkkokameraa etänä).

- imagerequest:

Tämä on ehkä tärkein parametri. Tämän pitäisi olla 1 tai 0. Jos ohjelma havaitsee, että se on asetettu arvoon 1, se pyytää kuvaa verkkokamerasta ja lataa sen sovelluskansioon (otsikolla 'image.jpg'). Jos toinen "image.jpg" on olemassa, se korvaa sen.

- lämpötila:

Tämä on funktion set_latest_temp () asettama DS18B20 -lämpötilan lukema. Sinun ei koskaan tarvitse muokata tätä parametritiedostoa - ohjelma asettaa sen automaattisesti.

Huomaa, että jos asetat 'exitprogram' tai 'imagerequest' arvoksi 1, ohjelma palauttaa ne automaattisesti 0: ksi ennen asianmukaisen koodin suorittamista. Tämä on mukavuuden vuoksi. Saatat myös huomata, että koodi sisältää paljon kokeiluja ja lukuun ottamatta lohkoja, jotka ympäröivät monia tärkeitä toimintoja. Tällä varmistetaan, että komentosarja ei aiheuta poikkeuksia (ja siksi lakkaa toimimasta), jos jokin menee pieleen (kuten Internet -yhteysongelma, joka estää Dropboxin käytön).

Vaihe 7: Johtopäätös

Tämä projekti on esittänyt tavan hallita Raspberry Pi -laitetta Pythonin ja Dropboxin avulla. Vaikka tässä projektissa käytetty laitteisto on lämpötila -anturi ja USB -verkkokamera, on monia muita sovelluksia tähän Pi -ohjausmenetelmään. Itse asiassa mitä tahansa laitteistokomponenttia, johon pääsee GPIO: n kautta, voidaan ohjata samanlaisella ohjelmarakenteella, mikä tekee järjestelmästä erittäin helpon laajentaa.

Seuraavassa vaiheessa voit myös käyttää graafista käyttöliittymäkirjastoa, kuten Tkinter, yhdessä Dropbox -sovellusliittymän kanssa asiakasohjelman luomiseksi, jonka avulla voit muokata parametritiedostoja ilman, että sinun tarvitsee edes kirjautua Dropboxiin.

Toivon, että tämä opetusohjelma on ollut selkeä, ja jos sinulla on kysyttävää tai haluat minun selventävän jotain, lähetä kommentti!

Suositeltava: