Obsah:

Domáce monitorovanie Raspberry Pi s Dropboxom: 7 krokov
Domáce monitorovanie Raspberry Pi s Dropboxom: 7 krokov

Video: Domáce monitorovanie Raspberry Pi s Dropboxom: 7 krokov

Video: Domáce monitorovanie Raspberry Pi s Dropboxom: 7 krokov
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #6 2024, November
Anonim
Domáce monitorovanie Raspberry Pi s Dropboxom
Domáce monitorovanie Raspberry Pi s Dropboxom

Tento tutoriál vám ukáže, ako vytvoriť jednoduchý a rozšíriteľný systém domáceho monitorovania pomocou Raspberry Pi, webovej kamery, niekoľkých elektrických komponentov a vášho účtu Dropbox. Dokončený systém vám umožní vzdialene požadovať a prezerať obrázky z vašej webovej kamery a súčasne používať štandardný digitálny snímač teploty na monitorovanie teploty vášho domova cez internet, všetko pomocou Dropboxu.

Toto bol prvý projekt, ktorý som vymyslel po obdržaní modelu Raspberry Pi 2 modelu B. Mojím cieľom bolo vytvoriť monitorovací systém založený na Pythone, ktorý by som mohol ovládať a prijímať údaje z internetu. Aj keď to existuje mnohými rôznymi spôsobmi, rozhodol som sa použiť Dropbox ako rozhranie medzi Pi a internetom, pretože majú jednoduché rozhranie Python API, ktoré vám umožňuje nahrávať, upravovať a vyhľadávať súbory v konkrétnych priečinkoch pomocou niekoľkých riadkov kód.

Tiež som chcel, aby moje riešenie bolo ľahké a jednoduché a aby som predišiel preplneniu svojho Pi zbytočnými knižnicami a programami. Softvérová súčasť tohto projektu pozostáva z jedného skriptu Python, čo znamená, že môžete svoj Pi naďalej normálne používať, aj keď je monitorovací systém spustený.

Na tento projekt budete potrebovať:

Malinový Pi. Každý model by mal fungovať, použil som štartovaciu sadu všetko v jednom, ale možno budete potrebovať iba centrálnu jednotku

Webová kamera USB. Kúpil som si lacný ADVENT AWC72015, ktorý fungoval dobre. Možno bude vhodné pozrieť sa na tento zoznam webových kamier, u ktorých je potvrdené, že fungujú s Pi. Upozorňujeme, že niektoré vyžadujú napájaný rozbočovač USB (môj funguje dobre aj bez)

Účet Dropbox. Používam svoj štandardný bezplatný účet, pretože tento projekt nevyžaduje veľa úložného priestoru

Digitálny snímač teploty DS18B20 a odpor 4,7 k. Senzor si môžete kúpiť tu a možno by stálo za to si zaobstarať aj balíček rôznych rezistorov

Niektoré doplnky pre stavbu obvodov. Odporúčam vám použiť prepojovaciu dosku a niekoľko prepojovacích káblov, aby bol proces budovania obvodu čo najľahší

[Ak sa rozhodnete kúpiť niektorý z týchto produktov, veľmi by som ocenil, keby ste sa k záznamom dostali pomocou vyššie uvedených odkazov - takto získam malý podiel na zisku bez ďalších nákladov!]

Krok 1: Nastavte hardvér

Nastavte hardvér
Nastavte hardvér

Prvým krokom je zabezpečiť, aby bolo vaše Pi a súvisiace periférne zariadenia nastavené.

Najprv pripojte svoj Pi k internetu. Je to nevyhnutné na zabezpečenie toho, aby monitorovací program mohol prijímať vaše požiadavky a nahrávať údaje do Dropboxu. Na zaistenie spoľahlivosti používam ethernetové pripojenie, ale dobré by malo fungovať aj pripojenie Wi-Fi, pričom výhodou je aj lepšia prenosnosť. Ak zvolíte Wi-Fi, odporučil by som tento USB kľúč pre Pi.

Potom pripojte svoju webovú kameru k Pi zapojením do jedného z portov USB. Aj keď v pokynoch k mojej webovej adventnej kamere nebolo výslovne uvedené, že bude fungovať s Linuxom, stačilo ho zapojiť a naštartovať Pi. Nebola potrebná žiadna ďalšia inštalácia. Ostatné webové kamery sa môžu líšiť. Pomocou nasledujúceho príkazu môžete skontrolovať, či Linux rozpoznal vašu webovú kameru:

lsusb

Na vyššie uvedenom obrázku je moja webová kamera uvedená ako „0c45: 6340 Microdia“

Nakoniec môžete svoj teplotný senzor DS18B20 pripojiť k hlavičke GPIO Pi. Na uľahčenie procesu vytvárania obvodov používam svoj nepájivý panel a odporučil by som vám urobiť to isté, najmä preto, že DS18B20 vyžaduje, aby bol medzi dva z jeho troch kolíkov umiestnený odpor 4,7 kB. Tento odkaz poskytuje dobrú schému zapojenia, ktorá ukazuje, ako je možné na pripojenie k tomuto teplotnému senzoru použiť nepájivú dosku.

Nasledujúca stránka vyššie uvedeného tutoriálu obsahuje aj kroky potrebné na načítanie údajov z DS18B20 a ukazuje vám, ako skontrolovať, či funguje. Pred použitím DS18B20 na tento projekt je dôležité vykonať tieto kroky nastavenia. Tiež budeme integrovať ukážkový skript Python z tutoriálu do nášho monitorovacieho programu, takže si možno budete chcieť tento kód rýchlo prezrieť.

Poznamenajte si tiež jedinečné číslo vášho DS18B20. Je to číslo začínajúce na „28-“, s ktorým sa stretnete počas tutoriálu o nastavení. Budete ho musieť zadať do pripravovaného programu Python, aby mu umožnil čítať pri teplote.

Krok 2: Nastavte Dropbox

Nastavte Dropbox
Nastavte Dropbox

Aby vaše Pi mohlo komunikovať s Dropboxom, musíte si nastaviť novú aplikáciu Dropbox. To vám poskytne podrobnosti potrebné na to, aby váš Pi mohol vykonávať online správu súborov pomocou Pythonu. Za predpokladu, že ste si vytvorili účet Dropbox a ste prihlásení, môžete vytvoriť novú aplikáciu pomocou možnosti ponuky „Vývojári“. Na vyššie uvedenom obrázku je súhrn dôležitých krokov.

V ponuke „Vývojári“vyberte „Moje aplikácie“a potom stlačte tlačidlo „Vytvoriť aplikáciu“. Ak chcete vyplniť výsledný formulár, zvoľte „Dropbox API“a potom „Priečinok aplikácie“. Nakoniec si v Dropboxe môžete vybrať jedinečný názov pre svoju aplikáciu. Kliknite na položku „Vytvoriť aplikáciu“.

Potom sa dostanete na stránku nastavení vašej aplikácie v Dropboxe. Tu musíte urobiť iba jednu ďalšiu vec - vygenerujte si prístupový token. Ak to chcete urobiť, prejdite nadol do sekcie „OAuth 2“a v časti „Generovaný prístupový token“kliknite na tlačidlo „Generovať“.

Zobrazí sa vám dlhý reťazec znakov, ktoré sú potrebné na prístup k vášmu účtu Dropbox pomocou Pythonu. Tento prístupový token si poznamenajte, pretože ho budete musieť neskôr zadať vo svojom kóde. Ak token stratíte, môžete sa vrátiť späť do nastavení svojej aplikácie kliknutím na položku „Moje aplikácie“v sekcii Dropbox „Vývojári“a vygenerovať nový token.

Ostatné nastavenia môžete nechať tak, ako sú. Ak chcete potvrdiť, že vaša aplikácia vytvorila vo vašom účte Dropbox potrebné priečinky, prejdite na domovskú stránku úložiska a vyhľadajte priečinok „Aplikácie“. V tomto priečinku by mal byť podadresár s názvom, ktorý ste vybrali pre svoju novú aplikáciu. Tu budú umiestnené všetky súbory pre váš monitorovací systém.

Krok 3: Príprava priečinka vašej aplikácie Dropbox

Príprava priečinka vašej aplikácie Dropbox
Príprava priečinka vašej aplikácie Dropbox

Keď si nastavíte aplikáciu Dropbox, je načase premýšľať o tom, ako použijete výsledný priečinok vo svojom účte Dropbox na interakciu s vašim Pi. To sa dosiahne celkom jednoducho. Skript Python, ktorý sa spustí na počítači Pi, bude používať podmnožinu príkazov z Dropbox API na vyhľadávanie a úpravu názvov niektorých prázdnych súborov bez prípony vo vašom priečinku s aplikáciami. Tieto súbory budeme nazývať „súbory parametrov“, pretože každý z nich vám umožní ovládať iný aspekt správania monitorovacieho systému. Na obrázku vyššie sú zobrazené štyri súbory parametrov, ktoré musia byť prítomné v priečinku aplikácie Dropbox pre tento projekt. Ich vytvorenie je jednoduché:

Počínajúc úplne prázdnym priečinkom aplikácie, otvorte v počítači program textového editora. Aj keď sa to dá urobiť pomocou Pi, pre túto fázu nastavenia sa mi zdá jednoduchšie používať svoj prenosný počítač so systémom Windows. Akonáhle je textový editor otvorený (v systéme Windows 7 som použil Poznámkový blok), stačí uložiť úplne prázdny textový súbor kdekoľvek do počítača. Ako náš prvý príklad vytvoríme prvý parameter na obrázku hlavičky. Súbor pomenujte „oneskorenie = 10“, keď ho uložíte.

Aby sme to zrekapitulovali, vo vašom počítači by ste teraz mali mať uložený prázdny textový súbor s názvom „delay = 10“. Súbor bude mať tiež príponu „.txt“, ktorá môže, ale nemusí byť viditeľná.

Ďalším krokom je nahranie tohto súboru do priečinka aplikácie Dropbox. Je to ako každé iné nahrávanie do Dropboxu. Jednoducho prejdite do priečinka svojej aplikácie, kliknite na položku „Odovzdať“a vyberte súbor „oneskorenie = 10“.

Po nahraní tohto súboru musíte odstrániť príponu „.txt“, ktorá by mala byť teraz viditeľná v názve súboru. Ak to chcete urobiť, kliknite pravým tlačidlom myši na súbor a zvoľte „Premenovať“. Odstráňte časť súboru „.txt“. Teraz by vám mal zostať súbor s názvom „oneskorenie = 10“bez prípony súboru, ako je to znázornené na obrázku v záhlaví.

Súbor parametrov „oneskorenie“je jedným zo štyroch, ktoré bude používať monitorovací program. Ak chcete vytvoriť ostatné, stačí skopírovať a premenovať súbor „oneskorenia“kliknutím naň pravým tlačidlom myši. Keď vytvoríte tri kópie, pomenujte ich tak, ako je to znázornené na obrázku v záhlaví, aby bol priečinok s aplikáciou rovnaký ako priečinok zobrazený na začiatku tohto kroku.

Krok 4: Začíname s kódom

Ako bolo uvedené, jadro nášho monitorovacieho systému bude pozostávať z jedného skriptu Python, ktorý bude prepojený s Dropboxom. Aby bol monitorovací program aktívny, tento skript bude musieť bežať na pozadí na vašom Pi. Myslím, že je najpresnejšie popísaný ako skript „démona“, čo znamená, že ho môžete jednoducho spustiť a zabudnúť. K tomuto kroku je priložený skript, takže nemá zmysel tu kód opakovať. Teraz môže byť vhodný čas na jeho stiahnutie a zoznámenie sa s ním.

Predtým, ako budete môcť skript spustiť, je dôležité zabezpečiť, aby ste mali nainštalované príslušné knižnice Pythonu. Tie, ktoré potrebujete, sú uvedené v hornej časti priloženého skriptu. Oni sú:

importná schránka

import pygame.camera import os import time

Inštalácia Pythonu na mojom Pi už obsahovala pygame, os a čas, takže jediný, čo som musel nainštalovať, bol Dropbox. Urobil som to pomocou ich veľmi jednoduchých inštalačných pokynov s pipom.

Akonáhle sú vaše knižnice nastavené, budete musieť upraviť horné dva riadky priloženého skriptu tak, aby zodpovedali vášmu prístupovému tokenu Dropbox a jedinečnému identifikátoru teplotného senzora DS18B20. Toto sú dva riadky, ktoré je potrebné upraviť:

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

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

Stačí nahradiť **** s správnymi hodnotami. V tomto bode ste skutočne pripravení začať používať monitorovací program! Namiesto toho, aby ste len skočili, odporúčam vám pokračovať v nasledujúcom kroku, ktorý vám poskytne všeobecný prehľad o kóde.

DÔLEŽITÉ: Keď spustíte tento skript, chcete, aby bežal na pozadí, aby ste a) a) mohli pokračovať v používaní Pi a b) keď zatvoríte reláciu SSH, skript sa bude naďalej spúšťať. Toto je príkaz, ktorý používam pri spustení skriptu:

nohup python DropCamTherm.py &

Tým sa dosiahnu tri veci: Spustí sa skript („python DropCamTherm.py“), okamžite sa vráti kontrola do príkazového riadka, aby ste mohli naďalej používať Pi („&“) a bude odosielať výstupy z Pythonu, ktoré by sa zvyčajne zobrazujú na príkazovom riadku do súboru s názvom „nohup.out“. Toto sa dá prečítať pomocou textového editora Linuxu (môj obľúbený je nano) a automaticky sa vytvorí v adresári, z ktorého sa skript spúšťa.

Krok 5: Ponorte sa hlbšie do kódu

Keď otvoríte skript, všimnete si, že sa skladá z troch funkcií spolu s blokom kódu, ktorý tieto funkcie implementuje pri spustení skriptu. Funkcie používajú Dropbox API a pristupujú k súboru denníka teploty DS18B20, aby mohli počúvať príkazy z Dropboxu a nahrávať najnovšie údaje o teplote. Nasleduje prehľad toho, čo tieto funkcie robia a ako sa používajú na fungovanie monitorovacieho systému:

- poll_parameter ():

Táto funkcia ukazuje účel súborov parametrov Dropbox, ktoré sme vytvorili v kroku 3. V priečinku aplikácie Dropbox vyhľadá súbor obsahujúci text 'param ='. Potom extrahuje text za '=' a pokúsi sa ho previesť na celé číslo. Vidíte, že nám to umožňuje ovládať program ručným pridávaním príslušných čísel na koniec súborov parametrov. Ďalší krok bude obsahovať stručný návod na obsluhu, ktorý vám ukáže, ako používať každý zo súborov parametrov na ovládanie aspektu programu.

- set_parameter ():

Táto funkcia umožňuje programu premenovať súbor parametrov z prostredia Pythonu. Robí to pri niekoľkých príležitostiach, hlavne aby sa znížila potreba nadmerného manuálneho premenovávania súborov.

- set_latest_temp ():

Táto funkcia používa parameter set_parameter () na nahranie najnovšej teploty do priečinka aplikácie Dropbox tak, že ju pripojí k súboru parametrov „teplota“. Funkcia číta najnovšiu teplotu zo súboru denníka DS18B20 (ktorý je k dispozícii v systéme Linux na ceste označenej premennou THERMOMETER_FILE).

Posledná časť programu obsahuje kód, ktorý sa spustí pri spustení skriptu. Po niekoľkých krokoch nastavenia požadovaných pre snímač DS18B20 otvorí reláciu Dropbox pomocou vášho prístupového tokenu a pomocou hry pygame vyhľadá vašu webovú kameru. Ak sa nájde webová kamera, vstúpi do slučky, kde pomocou poll_parameter () extrahuje informácie z Dropboxu a koná podľa nich.

DÔLEŽITÉ: Všimnete si nasledujúci riadok kódu:

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

… pokúša sa vytvoriť použiteľné rozhranie kamery z prvej webovej kamery, ktorú Pygame zistí. Možno bude potrebné zmeniť rozlíšenie tak, aby zodpovedalo vašej webovej kamere. Experimentujte s niekoľkými hodnotami a zistite, čo funguje najlepšie.

Krok 6: Použitie súborov parametrov Dropbox

Teraz by ste teda mali mať funkčný skript, ktorý pri spustení podľa pokynov z kroku 4 umožní vášmu Pi začať monitorovať priečinok aplikácie pre vaše vstupy. Pri prvom spustení by priečinok s aplikáciou mal obsahovať nasledujúce súbory parametrov:

oneskorenie = 10

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

Interakcia s programom sa dosahuje ručným premenovaním súborov parametrov prostredníctvom Dropboxu. Ak to chcete urobiť, kliknite pravým tlačidlom myši na jeden zo súborov a zvoľte „premenovať“. Každý súbor parametrov má inú funkciu:

- oneskorenie:

Tento súbor hovorí monitorovaciemu programu, koľko sekúnd má čakať medzi jednotlivými iteráciami monitorovacej slučky. Keď viem, že s programom nebudem veľmi interagovať, nastavil som ho na 60 alebo 120. Keď viem, že chcem často žiadať údaje z Pi, nastavím ho na 10.

- výstupný program:

Toto by malo byť nastavené na 1 alebo 0. Ak program zistí, že je nastavený na 1, skript sa ukončí. Ak ho nastavíte na 1 a skript sa skončí, budete sa musieť znova prihlásiť do Pi, aby ste ho mohli zálohovať. Tento parameter existuje, takže monitorovací program môžete pokojne ukončiť, keď už nepotrebujete, aby bol spustený (napríklad ak ste sa vrátili domov a už nechcete diaľkovo monitorovať webovú kameru).

- požiadavka na obrázok:

Toto je možno najdôležitejší parameter. Toto by malo byť nastavené na 1 alebo 0. Ak program zistí, že je nastavený na 1, vyžiada si obrázok z webovej kamery a nahrá ho do priečinka s aplikáciou (s názvom „image.jpg“). Ak existuje iný súbor „image.jpg“, prepíše sa.

- teplota:

Toto je údaj teploty DS18B20 nastavený funkciou set_latest_temp (). Tento súbor parametrov by ste nikdy nemali potrebovať upravovať - je to automaticky nastavené programom.

Upozorňujeme, že ak nastavíte „exitprogram“alebo „imagerequest“na 1, program ich pred spustením príslušného kódu automaticky vráti na 0. Toto je pre pohodlie. Môžete si tiež všimnúť, že kód obsahuje veľa blokov „vyskúšajte“a „okrem“obklopujúcich mnohé z kritických funkcií. Toto má zaistiť, že skript nebude vyhadzovať výnimky (a preto sa zastaví), ak sa niečo pokazí (napríklad problém s pripojením na internet brániaci prístupu Dropbox).

Krok 7: Záver

Tento projekt predstavil spôsob ovládania Raspberry Pi pomocou Pythonu a Dropboxu. Aj keď hardvér použitý v tomto projekte je teplotný senzor a webová kamera USB, existuje mnoho ďalších aplikácií pre tento spôsob ovládania Pi. V skutočnosti je možné akýkoľvek hardvérový komponent, ktorý je prístupný prostredníctvom systému GPIO, ovládať pomocou podobnej programovej štruktúry, čo umožňuje veľmi jednoduché rozšírenie systému.

Ako ďalší krok môžete tiež použiť knižnicu GUI, ako je Tkinter, spolu s rozhraním Dropbox API na vytvorenie klientskeho programu, ktorý vám umožní upravovať súbory parametrov bez toho, aby ste sa museli prihlasovať do Dropboxu.

Dúfam, že tento návod bol jasný a ak máte otázky alebo chcete, aby som niečo objasnil, pošlite komentár!

Odporúča: