Obsah:

Domácí monitorování Raspberry Pi s Dropboxem: 7 kroků
Domácí monitorování Raspberry Pi s Dropboxem: 7 kroků

Video: Domácí monitorování Raspberry Pi s Dropboxem: 7 kroků

Video: Domácí monitorování Raspberry Pi s Dropboxem: 7 kroků
Video: CS50 2013 - Week 9 2024, Listopad
Anonim
Domácí monitorování Raspberry Pi s Dropboxem
Domácí monitorování Raspberry Pi s Dropboxem

Tento tutoriál vám ukáže, jak vytvořit jednoduchý a rozšiřitelný domácí monitorovací systém pomocí Raspberry Pi, webové kamery, několika elektrických komponent a účtu Dropbox. Dokončený systém vám umožní vzdáleně požadovat a prohlížet obrázky z vaší webové kamery a současně používat standardní digitální teplotní senzor ke sledování teploty vašeho domova přes internet, vše pomocí Dropboxu.

Toto byl první projekt, který jsem vymyslel po obdržení modelu B. I když existuje mnoho různých způsobů, jak toho dosáhnout, rozhodl jsem se použít Dropbox jako rozhraní mezi Pi a internetem, protože mají jednoduché rozhraní Python API, které vám umožňuje nahrávat, upravovat a vyhledávat soubory v konkrétních složkách pomocí několika řádků kód.

Také jsem chtěl, aby moje řešení bylo lehké a jednoduché, a aby se zabránilo přeplnění mého Pi zbytečnými knihovnami a programy. Softwarová součást tohoto projektu se skládá z jednoho skriptu Pythonu, což znamená, že můžete svůj Pi nadále používat normálně, i když běží monitorovací systém.

Pro tento projekt budete potřebovat:

Raspberry Pi. Každý model by měl fungovat, použil jsem startovací sadu vše v jednom, ale možná potřebujete pouze centrální jednotku

Webová kamera USB. Koupil jsem levný ADVENT AWC72015, který fungoval dobře. Může být vhodné konzultovat tento seznam webových kamer, u nichž je potvrzeno, že fungují s Pi. Některé vyžadují napájený rozbočovač USB (můj funguje bez něj)

Účet Dropbox. Používám svůj standardní bezplatný účet, protože tento projekt nevyžaduje mnoho úložného prostoru

Digitální snímač teploty DS18B20 a odpor 4,7k. Senzor si můžete koupit zde a možná by stálo za to si pořídit balíček různých odporů

Některé doplňky pro stavbu obvodů. Doporučil bych použít prkénko a nějaké propojovací kabely, aby byl proces budování obvodu co nejjednodušší

[Pokud se rozhodnete koupit některý z těchto produktů, velmi bych ocenil, kdybyste k výpisům přistupovali pomocí výše uvedených odkazů - tímto způsobem získám malý podíl na zisku bez dalších nákladů!]

Krok 1: Nastavení hardwaru

Nastavte hardware
Nastavte hardware

Prvním krokem je zajistit, aby byl váš Pi a související periferie nastaveny.

Nejprve připojte svůj Pi k internetu. To je nezbytné k zajištění toho, aby monitorovací program mohl přijímat vaše požadavky a nahrávat data do Dropboxu. Používám ethernetové připojení, abych zajistil spolehlivost, ale připojení Wi-Fi by také mělo fungovat dobře a zároveň má výhodu lepší přenositelnosti. Pokud zvolíte Wi-Fi, doporučil bych tento USB klíč pro Pi.

Poté připojte webovou kameru k Pi připojením k jednomu z portů USB. Zatímco pokyny mé adventní webové kamery výslovně neříkaly, že bude fungovat s Linuxem, vše, co jsem musel udělat, bylo připojit jej a spustit Pi. Nebyla nutná žádná další instalace. Ostatní webové kamery se mohou lišit. Pomocí následujícího příkazu můžete zkontrolovat, zda systém Linux detekoval vaši webovou kameru:

lsusb

Na výše uvedeném obrázku je moje webová kamera uvedena jako '0c45: 6340 Microdia'

Nakonec můžete svůj teplotní senzor DS18B20 připojit k GPIO konektoru Pi. Používám svůj prkénko, abych usnadnil proces vytváření obvodů, a doporučil bych vám udělat to samé, zejména proto, že DS18B20 vyžaduje, aby byl mezi dva ze tří pinů umístěn odpor 4,7 k. Tento odkaz poskytuje dobré schéma zapojení, které ukazuje, jak lze k tomuto teplotnímu senzoru připojit prkénko.

Další stránka výše uvedeného kurzu také popisuje kroky potřebné ke čtení dat z DS18B20 a ukazuje, jak zkontrolovat, zda funguje. Před použitím DS18B20 pro tento projekt je důležité provést tyto kroky nastavení. Budeme také integrovat ukázkový skript Pythonu z tutoriálu do našeho monitorovacího programu, takže si možná budete chtít tento kód rychle prohlédnout.

Poznamenejte si také jedinečné číslo vašeho DS18B20. Je to číslo začínající '28-', na které narazíte během instalačního tutoriálu. Budete jej muset zadat do připravovaného programu Python, aby mohl číst při teplotě.

Krok 2: Nastavení Dropboxu

Nastavte Dropbox
Nastavte Dropbox

Aby vaše Pi mohlo komunikovat s Dropboxem, musíte si nastavit novou aplikaci Dropbox. To vám poskytne podrobnosti potřebné k tomu, aby váš Pi mohl provádět online správu souborů pomocí Pythonu. Za předpokladu, že jste si vytvořili účet Dropbox a jste přihlášeni, můžete vytvořit novou aplikaci pomocí možnosti nabídky „Vývojáři“. Shrnutí důležitých kroků najdete na výše uvedeném obrázku.

V nabídce „Vývojáři“vyberte „Moje aplikace“a poté stiskněte tlačítko „Vytvořit aplikaci“. Chcete -li vyplnit výsledný formulář, vyberte možnost „Dropbox API“a poté „Složka aplikace“. Nakonec si můžete v aplikaci Dropbox zvolit jedinečný název pro svou aplikaci. Klikněte na „Vytvořit aplikaci“.

Poté budete přesměrováni na stránku nastavení vaší aplikace v Dropboxu. Je zde jen jedna další věc, kterou musíte udělat - vygenerovat si přístupový token. Chcete -li to provést, přejděte dolů do části „OAuth 2“a v části „Generovaný přístupový token“klikněte na tlačítko „Generovat“.

Zobrazí se vám dlouhý řetězec znaků, které jsou potřebné pro přístup k vašemu účtu Dropbox pomocí Pythonu. Poznamenejte si tento přístupový token, jak jej budete muset později zadat v kódu. Pokud token ztratíte, můžete se vrátit zpět do nastavení aplikace kliknutím na „Moje aplikace“v sekci „Vývojáři“Dropboxu a vygenerovat nový token.

Ostatní nastavení můžete nechat tak, jak jsou. Chcete -li potvrdit, že vaše aplikace ve vašem účtu Dropbox vytvořila potřebné složky, přejděte na domovskou stránku úložiště a vyhledejte složku „Aplikace“. V této složce by měla být podsložka s názvem, který jste vybrali pro svou novou aplikaci. Zde budou umístěny všechny soubory pro váš monitorovací systém.

Krok 3: Příprava složky aplikace Dropbox

Příprava složky aplikace Dropbox
Příprava složky aplikace Dropbox

Jakmile si nastavíte aplikaci Dropbox, je na čase přemýšlet o tom, jak budete výslednou složku ve svém účtu Dropbox používat k interakci s vaším Pi. Toho se dosáhne celkem jednoduše. Skript Python, který poběží na Pi, bude pomocí podmnožiny příkazů z Dropbox API vyhledávat a upravovat názvy některých prázdných souborů bez přípon ve vaší složce aplikace. Tyto soubory budeme nazývat „soubory parametrů“, protože každý z nich vám umožní ovládat jiný aspekt chování monitorovacího systému. Obrázek výše ukazuje čtyři soubory parametrů, které musí být pro tento projekt ve vaší složce aplikace Dropbox. Jejich vytvoření je jednoduché:

Počínaje úplně prázdnou složkou aplikace otevřete v počítači program textového editoru. I když to bylo možné provést pomocí Pi, zjistil jsem, že pro tuto fázi instalace je snazší používat notebook Windows. Jakmile je textový editor otevřený (v systému Windows 7 jsem používal Poznámkový blok), stačí uložit zcela prázdný textový soubor kamkoli do počítače. Jako náš první příklad vytvoříme první parametr v obrázku záhlaví. Při ukládání pojmenujte soubor 'delay = 10'.

Abychom to zrekapitulovali, měli byste nyní mít v počítači uložený prázdný textový soubor s názvem 'delay = 10'. Soubor bude mít také příponu „.txt“, která může, ale nemusí být viditelná.

Dalším krokem je nahrání tohoto souboru do složky aplikace Dropbox. Je to stejné jako jakékoli jiné nahrávání na Dropbox. Jednoduše přejděte do složky své aplikace, klikněte na „Nahrát“a vyberte soubor „zpoždění = 10“.

Po nahrání tohoto souboru musíte odstranit příponu „.txt“, která by nyní měla být viditelná v názvu souboru. Chcete -li to provést, klikněte pravým tlačítkem na soubor a vyberte příkaz „Přejmenovat“. Odeberte část názvu souboru „.txt“. Nyní by vám měl zůstat soubor s názvem 'delay = 10' bez přípony souboru, jak ukazuje obrázek záhlaví.

Soubor parametrů „zpoždění“je jedním ze čtyř, které bude monitorovací program používat. Chcete -li vytvořit ostatní, stačí zkopírovat a přejmenovat soubor „zpoždění“kliknutím pravým tlačítkem na něj. Jakmile vytvoříte tři kopie, pojmenujte je podle obrázku v záhlaví, aby byla složka aplikace stejná jako na začátku tohoto kroku.

Krok 4: Začínáme s kódem

Jak bylo diskutováno, jádro našeho monitorovacího systému bude sestávat z jednoho skriptu Pythonu, který bude komunikovat s Dropboxem. Aby byl monitorovací program aktivní, bude muset tento skript běžet na pozadí na vašem Pi. Myslím, že je nejpřesněji popsán jako skript „démona“, což znamená, že jej můžete jednoduše spustit a zapomenout. K tomuto kroku je připojen skript, takže zde nemá smysl kód opakovat. Nyní může být vhodné si jej stáhnout a seznámit se s ním.

Než budete moci skript spustit, je důležité zajistit, abyste měli nainstalované příslušné knihovny Pythonu. Ty, které potřebujete, jsou uvedeny v horní části přiloženého skriptu. Oni jsou:

importní schránka

import pygame.camera import os import time

Instalace Pythonu na mém Pi již obsahovala pygame, os a čas, takže jediný, co jsem musel nainstalovat, byl Dropbox. Udělal jsem to pomocí jejich velmi jednoduchých instalačních pokynů s pipem.

Jakmile jsou vaše knihovny nastaveny, budete muset upravit dva horní řádky přiloženého skriptu tak, aby odpovídaly vašemu přístupovému tokenu Dropbox a jedinečnému identifikátoru teplotního senzoru DS18B20. Toto jsou dva řádky, které je třeba upravit:

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

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

Stačí nahradit **** s správnými hodnotami. V tomto okamžiku jste skutečně připraveni začít používat monitorovací program! Místo pouhého naskočení bych vám doporučil pokračovat v dalším kroku, abyste získali obecný přehled o kódu.

DŮLEŽITÉ: Když spustíte tento skript, chcete, aby běžel na pozadí, takže a) můžete i nadále používat Pi a b) když zavřete relaci SSH, skript se bude nadále spouštět. Toto je příkaz, který používám při spuštění skriptu:

nohup python DropCamTherm.py &

Tím se dosáhne tří věcí: Spustí skript ('python DropCamTherm.py'), okamžitě vrátí ovládání do příkazového řádku, takže můžete i nadále používat Pi ('&') a bude odesílat výstupy Pythonu, které by obvykle se zobrazují na příkazovém řádku do souboru s názvem 'nohup.out'. To lze přečíst pomocí textového editoru Linux (můj oblíbený je nano) a bude vytvořeno automaticky v adresáři, ze kterého je skript spuštěn.

Krok 5: Kopání hlouběji do kódu

Když otevřete skript, všimnete si, že se skládá ze tří funkcí spolu s blokem kódu, který tyto funkce implementuje při spuštění skriptu. Funkce používají API Dropbox a přistupují k souboru protokolu teploty DS18B20, aby poslouchaly příkazy z Dropboxu a nahrály nejnovější naměřené hodnoty teploty. Níže je uveden přehled toho, co funkce dělají a jak se používají k fungování monitorovacího systému:

- poll_parameter ():

Tato funkce ukazuje účel souborů parametrů Dropbox, které jsme vytvořili v kroku 3. Vyhledá ve složce aplikace Dropbox soubor obsahující text 'param ='. Poté extrahuje text za '=' a pokusí se jej převést na celé číslo. Vidíte, že nám to umožňuje ovládat program ručním připojením příslušných čísel na konec souborů parametrů. Další krok bude obsahovat stručný návod k použití, který vám ukáže, jak pomocí každého ze souborů parametrů ovládat aspekt programu.

- set_parameter ():

Tato funkce umožňuje programu přejmenovat soubor parametrů z Pythonu. Dělá to několikrát, hlavně aby se snížila potřeba nadměrného ručního přejmenovávání souborů.

- set_latest_temp ():

Tato funkce využívá parametr set_parameter () k nahrání nejnovější teploty do složky aplikace Dropbox připojením k souboru parametrů „teplota“. Funkce čte nejnovější teplotu ze souboru protokolu DS18B20 (který je k dispozici v systému Linux na cestě vyznačené proměnnou THERMOMETER_FILE).

Poslední část programu obsahuje kód, který se spustí při spuštění skriptu. Po několika krocích nastavení požadovaných pro snímač DS18B20 otevře relaci Dropbox pomocí přístupového tokenu a pomocí pygame vyhledá vaši webovou kameru. Pokud je webová kamera nalezena, vstoupí do smyčky, kde pomocí poll_parameter () extrahuje informace z Dropboxu a jedná podle nich.

DŮLEŽITÉ: Všimnete si následujícího řádku kódu:

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

… pokusí se vytvořit použitelné rozhraní kamery z první webové kamery, kterou pygame detekuje. Možná bude nutné změnit rozlišení, aby odpovídalo vaší webové kameře. Experimentujte s řadou hodnot, abyste zjistili, co funguje nejlépe.

Krok 6: Použití souborů parametrů Dropbox

Nyní byste tedy měli mít funkční skript, který při spuštění podle pokynů z kroku 4 umožní vašemu Pi začít sledovat složku aplikace pro vaše vstupy. Při prvním spuštění by složka aplikace měla obsahovat následující soubory parametrů:

zpoždění = 10

výstupní program = 0 imagerequest = 0 teplota = 0

Interakce s programem je dosaženo ručním přejmenováním souborů parametrů přes Dropbox. Chcete-li to provést, klikněte pravým tlačítkem na jeden ze souborů a vyberte příkaz „přejmenovat“. Každý soubor parametrů má jinou funkci:

- zpoždění:

Tento soubor říká monitorovacímu programu, kolik sekund má čekat mezi jednotlivými iteracemi monitorovací smyčky. Když vím, že s programem nebudu moc interagovat, nastavil jsem ho na 60 nebo 120. Když vím, že chci často žádat data z Pi, nastavil jsem to na 10.

- výstupní program:

To by mělo být nastaveno na 1 nebo 0. Pokud program zjistí, že je nastaven na 1, skript ukončí. Pokud jej nastavíte na 1 a skript se ukončí, budete se muset do Pi znovu přihlásit, abyste jej mohli znovu spustit. Tento parametr existuje, takže můžete klidně ukončit monitorovací program, když již nepotřebujete, aby byl spuštěn (například pokud jste se vrátili domů a již nechcete dálkově sledovat webovou kameru).

- požadavek na obrázek:

Toto je možná nejdůležitější parametr. To by mělo být nastaveno na 1 nebo 0. Pokud program zjistí, že je nastaven na 1, vyžádá si obrázek z webové kamery a nahraje jej do složky aplikace (s názvem 'image.jpg'). Pokud existuje další 'image.jpg', přepíše jej.

- teplota:

Toto je odečet teploty DS18B20 nastavený funkcí set_latest_temp (). Tento soubor parametrů byste nikdy neměli muset upravovat - je automaticky nastaven programem.

Všimněte si, že pokud nastavíte 'exitprogram' nebo 'imagerequest' na 1, program je automaticky vrátí na 0 před spuštěním příslušného kódu. To je pro pohodlí. Můžete si také všimnout, že kód obsahuje mnoho bloků 'try' a 'kromě' obklopujících mnoho důležitých funkcí. To má zajistit, že skript nebude vyvolávat výjimky (a proto přestane běžet), pokud se něco pokazí (například problém s připojením k internetu bránící přístupu Dropbox).

Krok 7: Závěr

Tento projekt představil způsob ovládání Raspberry Pi pomocí Pythonu a Dropboxu. Zatímco hardware použitý v tomto projektu je teplotní senzor a USB webová kamera, existuje mnoho dalších aplikací pro tento způsob ovládání Pi. Ve skutečnosti lze jakoukoli hardwarovou komponentu přístupnou přes GPIO ovládat pomocí podobné programové struktury, což umožňuje velmi snadné rozšíření systému.

Jako další krok můžete také použít knihovnu GUI, jako je Tkinter, spolu s Dropbox API k vytvoření klientského programu, který vám umožní upravit soubory parametrů, aniž byste se museli přihlašovat do Dropboxu.

Doufám, že tento návod byl jasný, a pokud máte nějaké dotazy nebo chcete, abych něco objasnil, napište komentář!

Doporučuje: