Tartalomjegyzék:

Raspberry Pi otthoni megfigyelés a Dropbox segítségével: 7 lépés
Raspberry Pi otthoni megfigyelés a Dropbox segítségével: 7 lépés

Videó: Raspberry Pi otthoni megfigyelés a Dropbox segítségével: 7 lépés

Videó: Raspberry Pi otthoni megfigyelés a Dropbox segítségével: 7 lépés
Videó: OpenSSH for Windows: The IT Admin's Key to Remote Management 2024, November
Anonim
Raspberry Pi otthoni megfigyelés a Dropbox segítségével
Raspberry Pi otthoni megfigyelés a Dropbox segítségével

Ez az oktatóanyag megmutatja, hogyan hozhat létre egyszerű és bővíthető otthoni felügyeleti rendszert Raspberry Pi, webkamera, néhány elektromos alkatrész és Dropbox -fiók használatával. A kész rendszer lehetővé teszi, hogy távolról kérjen és tekintsen meg képeket a webkamerájáról, miközben egy polcról érkező digitális hőmérséklet-érzékelőt is használ az otthoni hőmérséklet monitorozására az interneten keresztül, mindezt a Dropbox használatával.

Ez volt az első projekt, amire gondoltam, miután megkaptam a Raspberry Pi 2 B modellt. Célom egy Python-alapú felügyeleti rendszer létrehozása volt, amellyel az interneten keresztül irányíthatom és fogadhatom az adatokat. Bár ennek sokféle módja van, úgy döntöttem, hogy a Dropbox -ot használom a Pi és az internet közötti interfészként, mivel egyszerű Python API -val rendelkeznek, amely lehetővé teszi bizonyos mappákban lévő fájlok feltöltését, módosítását és keresését néhány sor használatával. kód.

Azt is akartam, hogy a megoldásom könnyű és egyszerű legyen, és elkerüljem, hogy a Pi -t felesleges könyvtárakkal és programokkal terheljék. Ennek a projektnek a szoftverkomponense egyetlen Python -szkriptből áll, ami azt jelenti, hogy továbbra is használhatja a Pi -t a szokásos módon, még akkor is, ha a megfigyelő rendszer fut.

Ehhez a projekthez szüksége lesz:

A Raspberry Pi. Bármelyik modellnek működnie kell, én all-in-one kezdő készletet használtam, de talán csak a központi egységre van szüksége

USB webkamera. Vettem egy olcsó ADVENT AWC72015 -öt, ami rendesen működött. Jó ötlet lehet megtekinteni ezt a webkamerák listáját, amelyek megerősítették, hogy működnek a Pi -vel. Vegye figyelembe, hogy egyesekhez tápellátású USB -elosztó szükséges (az enyém jól működik anélkül)

Dropbox fiók. A szokásos ingyenes fiókomat használom, mivel ez a projekt nem igényel sok tárhelyet

DS18B20 digitális hőmérséklet -érzékelő és 4,7 k ellenállás. Itt vásárolhatja meg az érzékelőt, és érdemes megszerezni egy csomag különféle ellenállást is

Néhány áramkörépítő tartozék. Azt javaslom, hogy használjon kenyértáblát és néhány áthidaló kábelt, hogy az áramkörépítési folyamat a lehető legegyszerűbb legyen

[Ha úgy dönt, hogy ezen termékek bármelyikét megvásárolja, nagyon megköszönném, ha a fenti linkek segítségével hozzáférne a listákhoz - így a nyereség egy apró részét megkapom, külön költségek nélkül!]

1. lépés: Állítsa be a hardvert

Állítsa be a hardvert
Állítsa be a hardvert

Az első lépés annak biztosítása, hogy a Pi és a hozzá tartozó perifériák be legyenek állítva.

Először csatlakoztassa a Pi -t az internethez. Erre azért van szükség, hogy a felügyeleti program megkaphassa kéréseit, és adatokat töltsön fel a Dropboxba. A megbízhatóság érdekében ethernet-kapcsolatot használok, de a Wi-Fi-kapcsolatnak is jól kell működnie, miközben előnye a jobb hordozhatóság. Ha a Wi-Fi mellett dönt, akkor ezt az USB-kulcsot ajánlom a Pi-hez.

Ezután csatlakoztassa a webkamerát a Pi -hez az egyik USB -porthoz csatlakoztatva. Bár az adventi webkamerám utasításai nem írták kifejezetten, hogy működni fog Linux -szal, mindössze annyit kellett tennem, hogy csatlakoztatom a hálózathoz, és elindítom a Pi -t. További telepítésre nem volt szükség. Más webkamerák eltérőek lehetnek. A következő paranccsal ellenőrizheti, hogy a Linux észlelte -e webkameráját:

lsusb

A fenti képen a webkamerám "0c45: 6340 Microdia" néven szerepel

Végül csatlakoztathatja DS18B20 hőmérséklet -érzékelőjét a Pi GPIO fejlécéhez. A kenyeretáblámat használom az áramkörök létrehozásának megkönnyítésére, és azt javaslom, hogy tegye ugyanezt, különösen, mivel a DS18B20 esetében 4,7 k ellenállást kell elhelyezni a három csap közül kettő között. Ez a link egy jó kapcsolási rajzot mutat be, amely bemutatja, hogyan lehet kenyérlapot használni ehhez a hőmérséklet -érzékelőhöz való csatlakozáshoz.

A fenti oktatóanyag következő oldala a DS18B20 -ból származó adatok beolvasásához szükséges lépéseket is bemutatja, és bemutatja, hogyan ellenőrizheti, hogy működnek -e. Fontos, hogy elvégezze ezeket a beállítási lépéseket, mielőtt használni tudja a DS18B20 -at ehhez a projekthez. Az oktatóanyagból származó minta Python -szkriptet is beépítjük a megfigyelő programunkba, ezért érdemes gyorsan áttekinteni ezt a kódot.

Kérjük, jegyezze fel a DS18B20 egyedi számát is. Ez a '28-'kezdetű szám, amellyel a telepítési oktatóanyag során találkozik. Be kell írnia a következő Python programba, hogy lehetővé tegye a hőmérséklet olvasását.

2. lépés: A Dropbox beállítása

A Dropbox beállítása
A Dropbox beállítása

Annak érdekében, hogy a Pi csatlakozzon a Dropboxhoz, be kell állítania egy új Dropbox alkalmazást. Ez megadja azokat a részleteket, amelyek szükségesek ahhoz, hogy a Pi online fájlkezelést végezzen Python használatával. Feltételezve, hogy létrehozott egy Dropbox -fiókot, és bejelentkezett, új alkalmazást hozhat létre a „Fejlesztők” menüpont segítségével. Tekintse meg a fenti képen a fontos lépések összefoglalását.

A „Fejlesztők” menüben válassza a „Saját alkalmazások” lehetőséget, majd nyomja meg az „Alkalmazás létrehozása” gombot. A kapott űrlap kitöltéséhez válassza a „Dropbox API”, majd az „App Folder” lehetőséget. Végül kiválaszthat egyedi nevet az alkalmazásnak a Dropboxon belül. Kattintson az "Alkalmazás létrehozása" gombra.

Ekkor az alkalmazás beállítási oldalára kerül a Dropboxon belül. Itt még csak egy dolgot kell tennie - hozzon létre magának hozzáférési tokent. Ehhez görgessen le az „OAuth 2” szakaszhoz, és a „Generált hozzáférési token” alatt kattintson a „Generálás” gombra.

Ez hosszú karaktersorozatot jelenít meg, amelyek szükségesek a Dropbox -fiók Python használatával történő eléréséhez. Jegyezze fel ezt a hozzáférési tokent, mivel később meg kell adnia a kódban. Ha elveszíti a jogkivonatot, a Dropbox „Fejlesztők” szakaszában található „Saját alkalmazások” elemre kattintva visszaléphet az alkalmazás beállításaihoz, és létrehozhat egy új tokent.

A többi beállítást hagyhatja úgy, ahogy van. Annak megerősítéséhez, hogy alkalmazása létrehozta a szükséges mappákat a Dropbox -fiókjában, navigáljon a tárhely kezdőlapjára, és keresse meg az „Alkalmazások” mappát. Ezen a mappán belül egy almappának kell lennie az új alkalmazáshoz kiválasztott névvel. Ide kerülnek a felügyeleti rendszerhez tartozó összes fájl.

3. lépés: A Dropbox alkalmazás mappa előkészítése

A Dropbox alkalmazás mappa előkészítése
A Dropbox alkalmazás mappa előkészítése

Miután beállította a Dropbox alkalmazást, itt az ideje elgondolkodni azon, hogyan fogja használni a Dropbox -fiókban kapott mappát a Pi -vel való interakcióhoz. Ez egész egyszerűen megvalósítható. A Pi-n futó Python-parancsfájl a Dropbox API parancsainak egy részhalmazát használja az alkalmazásmappában található üres, kiterjesztés nélküli fájlok nevének kereséséhez és módosításához. Ezeket a fájlokat "paraméterfájloknak" fogjuk hívni, mivel mindegyik lehetővé teszi a megfigyelő rendszer viselkedésének különböző aspektusainak szabályozását. A fenti kép azt a négy paraméterfájlt mutatja, amelyeknek jelen kell lenniük a projekt Dropbox alkalmazásmappájában. Létrehozásuk egyszerű:

Kezdve azzal, hogy az alkalmazásmappa teljesen üres, nyisson meg egy szövegszerkesztő programot a számítógépén. Bár ezt meg lehetett tenni a Pi segítségével, könnyebbnek láttam a Windows laptop használatát ebben a telepítési fázisban. Miután a szövegszerkesztő megnyílt (a Notepadet használtam a Windows 7 rendszeren), mindössze annyit kell tennie, hogy egy teljesen üres szövegfájlt mentsen a számítógépére. Első példaként megalkotjuk az első paramétert a fejlécképben. Mentse el a fájlt 'delay = 10' névvel.

Összefoglalva, most egy üres szöveges fájlt kell tárolnia a számítógépén, „delay = 10” névvel. A fájl ".txt" kiterjesztéssel is rendelkezik, amely lehet, hogy nem látható.

A következő lépés a fájl feltöltése a Dropbox alkalmazás mappájába. Ez ugyanúgy történik, mint bármely más Dropbox -feltöltés. Egyszerűen navigáljon az alkalmazás mappájához, kattintson a "Feltöltés" gombra, és válassza ki a "delay = 10" fájlt.

Amikor ez a fájl feltöltődött, el kell távolítania a ".txt" kiterjesztést, amely most látható lesz a fájlnévben. Ehhez kattintson a jobb gombbal a fájlra, és válassza az "Átnevezés" lehetőséget. Távolítsa el a fájlnév „.txt” részét. Most meg kell hagynia a „delay = 10” nevű fájlt fájlkiterjesztés nélkül, amint az a fejléc képen látható.

A "delay" paraméterfájl egyike a négynek, amelyeket a megfigyelő program használni fog. A többi létrehozásához egyszerűen másolja át és nevezze át a "késleltetett" fájlt a jobb egérgombbal. Miután létrehozott három példányt, nevezze el őket a fejléc képen látható módon, hogy az alkalmazásmappája megegyezzen a lépés elején láthatóval.

4. lépés: Első lépések a kóddal

Amint azt megbeszéltük, felügyeleti rendszerünk magja egyetlen Python -szkriptből fog állni, amely kapcsolódik a Dropboxhoz. Annak érdekében, hogy a megfigyelő program aktív legyen, ennek a szkriptnek a háttérben kell futnia a Pi -n. Azt hiszem, ez a legpontosabban "démoni" szkriptként van leírva, vagyis egyszerűen beállíthatja a futást, és elfelejtheti. A szkript ehhez a lépéshez van csatolva, így nincs értelme itt megismételni a kódot. Most jó alkalom lehet letölteni és megismerkedni vele.

A szkript futtatása előtt fontos gondoskodni arról, hogy telepítve legyenek a megfelelő Python könyvtárak. A szükségesek a csatolt szkript tetején találhatók. Ők:

dropbox importálása

import pygame.camera import os importálási idő

A Python telepítése a Pi -n már tartalmazta a pygame -t, az operációs rendszert és az időt, így az egyetlen, amit telepítenem kellett, a Dropbox volt. Ezt a nagyon egyszerű telepítési utasításuk segítségével végeztem el a pip segítségével.

A könyvtárak beállítása után a mellékelt szkript felső két sorát kell szerkesztenie, hogy megfeleljen a Dropbox hozzáférési tokeneknek és a DS18B20 hőmérséklet -érzékelő egyedi azonosítójának. Ezt a két sort kell szerkeszteni:

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

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

Csak cserélje ki a **** értékeket a megfelelő értékekre. Ezen a ponton valóban készen áll a megfigyelő program használatára! Ahelyett, hogy csak belevágnánk, azt javaslom, hogy folytassa a következő lépéssel a kód általános áttekintéséhez.

FONTOS: Amikor ezt a szkriptet futtatja, azt szeretné, hogy a háttérben fusson, hogy a) továbbra is használhassa a Pi -t, és b) amikor bezárja az SSH -munkamenetet, a szkript továbbra is futni fog. Ezt a parancsot használom a szkript futtatásakor:

nohup python DropCamTherm.py &

Ez három dolgot valósít meg: Futtatja a szkriptet ('python DropCamTherm.py'), azonnal visszaadja a vezérlést a parancssorba, hogy továbbra is használhassa a Pi ('&') -t, és Python kimeneteket küld, amelyek általában a parancssorban jelenik meg a "nohup.out" nevű fájlban. Ez egy Linux szövegszerkesztővel olvasható (kedvencem a nano), és automatikusan létrejön abban a könyvtárban, ahonnan a szkript fut.

5. lépés: A kód mélyebbre ásása

Amikor megnyitja a szkriptet, észre fogja venni, hogy három függvényből és egy kódblokkból áll, amely végrehajtja ezeket a funkciókat a szkript futtatásakor. A funkciók a Dropbox API -t használják, és hozzáférnek a DS18B20 hőmérséklet naplófájljához, hogy meghallgassák a Dropboxból érkező parancsokat, és feltölthessék a legújabb hőmérsékleti adatokat. Az alábbiakban áttekintjük, hogy mit tesznek a funkciók, és hogyan használják őket a felügyeleti rendszer működéséhez:

- poll_parameter ():

Ez a függvény a 3. lépésben létrehozott Dropbox paraméterfájlok célját mutatja. A Dropbox alkalmazás mappájában megkeresi a „param =” szöveget tartalmazó fájlt. Ezután kibontja a szöveget a '=' után, és megpróbálja egész számmá alakítani. Látható, hogy ez lehetővé teszi számunkra, hogy a programot úgy irányítsuk, hogy a paraméterfájlok végéhez manuálisan hozzáfűzzük a megfelelő számokat. A következő lépés egy rövid használati útmutatót tartalmaz, amely bemutatja, hogyan kell használni az egyes paraméterfájlokat a program egy aspektusának vezérléséhez.

- set_parameter ():

Ez a funkció lehetővé teszi, hogy a program átnevezzen egy paraméterfájlt a Pythonon belül. Ezt néhány alkalommal megteszi, elsősorban a fájlok túlzott kézi átnevezésének csökkentése érdekében.

- set_latest_temp ():

Ez a funkció a set_parameter () segítségével tölti fel a legfrissebb hőmérsékletet a Dropbox alkalmazás mappájába a „hőmérséklet” paraméterfájlhoz való hozzáfűzéssel. A funkció leolvassa a legfrissebb hőmérsékletet a DS18B20 naplófájljából (amely Linuxon érhető el a THERMOMETER_FILE változó által jelzett úton).

A program utolsó része tartalmazza a kódot, amely a szkript futtatásakor fut. A DS18B20 érzékelőhöz szükséges néhány beállítási lépés után megnyit egy Dropbox -munkamenetet az Ön hozzáférési jogkivonatával, és pygame segítségével keresi a webkamerát. Ha talál egy webkamerát, akkor egy ciklusba lép, ahol a poll_parameter () segítségével vonja ki az információkat a Dropboxból, és cselekszik.

FONTOS: A következő kódsorra lesz figyelmes:

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

… Ez egy használható kamerafelületet próbál létrehozni az első webkamerából, amelyet a pygame észlel. Lehet, hogy módosítani kell a felbontást, hogy megfeleljen a webkamerának. Kísérletezzen számos értékkel, hogy megtalálja a legmegfelelőbbet.

6. lépés: A Dropbox paraméterfájlok használata

Tehát most rendelkeznie kell egy működő szkripttel, amely a 4. lépés utasításait követve futtatva lehetővé teszi, hogy a Pi elkezdje figyelni az alkalmazás mappáját a bemenetekre vonatkozóan. Az első futtatáskor az alkalmazásmappának a következő paraméterfájlokat kell tartalmaznia:

késleltetés = 10

exitprogram = 0 imagerequest = 0 hőmérséklet = 0

A programmal való interakció a paraméterfájlok manuális átnevezésével érhető el a Dropbox segítségével. Ehhez kattintson a jobb gombbal az egyik fájlra, és válassza az "átnevezés" lehetőséget. Minden paraméterfájlnak más funkciója van:

- késleltetés:

Ez a fájl megmondja a felügyeleti programnak, hogy hány másodpercet kell várnia a megfigyelési ciklus minden iterációja között. Amikor tudom, hogy nem sokat fogok interakcióba lépni a programmal, 60 -ra vagy 120 -ra állítom. Ha tudom, hogy gyakran szeretnék adatokat kérni a Pi -től, akkor 10 -re állítom.

- kilépési program:

Ezt 1 -re vagy 0 -ra kell állítani. Ha a program azt észleli, hogy 1 -re van állítva, akkor leállítja a szkriptet. Ha 1 -re állítja, és a szkript kilép, akkor újra be kell jelentkeznie a Pi -be, hogy újraindítsa. Ez a paraméter azért létezik, hogy a felügyeleti programot szépen befejezhesse, amikor már nem kell futtatnia (például ha hazatért, és nem kívánja távolról figyelni a webkamerát).

- imagerequest:

Ez talán a legfontosabb paraméter. Ezt 1 vagy 0 értékre kell állítani. Ha a program azt észleli, hogy 1 -re van állítva, akkor képet kér a webkamerától, és feltölti az alkalmazás mappájába („image.jpg” címmel). Ha létezik másik „image.jpg”, akkor felülírja.

- hőfok:

Ez a set_latest_temp () függvény által beállított DS18B20 hőmérséklet -leolvasás. Soha nem kell szerkesztenie ezt a paraméterfájlt - a program automatikusan beállítja.

Ne feledje, hogy ha az 'exitprogram' vagy az 'imagerequest' értékét 1 -re állítja, a program automatikusan visszaállítja őket 0 -ra, mielőtt végrehajtja a megfelelő kódot. Ez a kényelem érdekében. Azt is észreveheti, hogy a kód sok „try” és „kivétel” blokkot tartalmaz, amelyek számos kritikus funkciót körülvesznek. Ennek célja annak biztosítása, hogy a szkript ne dobjon kivételeket (és ezáltal leállítsa a futást), ha valami baj történik (például egy internetkapcsolati probléma, amely megakadályozza a Dropbox hozzáférését).

7. lépés: Következtetés

Ez a projekt bemutatta a Raspberry Pi vezérlésének módját Python és Dropbox használatával. Míg a projektben használt hardver egy hőmérséklet -érzékelő és egy USB webkamera, sok más alkalmazás is létezik erre a Pi vezérlő módszerre. Valójában a GPIO -n keresztül elérhető hardverösszetevők hasonló programstruktúrával vezérelhetők, így a rendszer nagyon könnyen bővíthető.

Következő lépésként egy GUI könyvtárat, például a Tkinter -t is használhat a Dropbox API -val együtt egy ügyfélprogram létrehozásához, amely lehetővé teszi a paraméterfájlok módosítását anélkül, hogy bejelentkezne a Dropbox -ba.

Remélem, hogy ez az oktatóanyag világos volt, és ha bármilyen kérdése van, vagy szeretne valamit tisztázni, írjon megjegyzést!

Ajánlott: