Съдържание:

Raspberry Pi Домашен мониторинг с Dropbox: 7 стъпки
Raspberry Pi Домашен мониторинг с Dropbox: 7 стъпки

Видео: Raspberry Pi Домашен мониторинг с Dropbox: 7 стъпки

Видео: Raspberry Pi Домашен мониторинг с Dropbox: 7 стъпки
Видео: Home Assistant - первые настройки, File Editor, Maria DB, HACS - октябрь 2023 2024, Ноември
Anonim
Raspberry Pi Домашен мониторинг с Dropbox
Raspberry Pi Домашен мониторинг с Dropbox

Този урок ще ви покаже как да създадете проста и разширяема система за домашен мониторинг с помощта на Raspberry Pi, уеб камера, няколко електрически компонента и вашия акаунт в Dropbox. Готовата система ще ви позволи дистанционно да заявявате и преглеждате изображения от вашата уеб камера, като същевременно използвате и стандартен цифров сензор за температура, за да следите температурата на вашия дом по интернет, като всички използвате Dropbox.

Това беше първият проект, който измислих, след като получих Raspberry Pi 2 модел B. Целта ми беше да създам система за мониторинг, базирана на Python, която да мога да контролирам и получавам данни от интернет. Въпреки че има много различни начини за това, реших да използвам Dropbox като интерфейс между Pi и интернет, тъй като те имат прост API на Python, който ви позволява да качвате, променяте и търсите файлове в конкретни папки, използвайки няколко реда код.

Исках също така решението ми да е леко и просто и да избягвам да затрупвам моя Pi с ненужни библиотеки и програми. Софтуерният компонент на този проект се състои от един скрипт на Python, което означава, че можете да продължите да използвате своя Pi като нормален, дори когато системата за мониторинг работи.

За този проект ще ви трябва:

Малина Пи. Всеки модел трябва да работи, използвах начален комплект "всичко в едно", но може би имате нужда само от централното устройство

USB уеб камера. Купих си евтин ADVENT AWC72015, който работи добре. Може да е добра идея да се консултирате с този списък с уеб камери, за които е потвърдено, че работят с Pi. Имайте предвид, че някои изискват захранван USB хъб (моят работи добре без него)

Акаунт в Dropbox. Използвам стандартния си безплатен акаунт, тъй като този проект не изисква много място за съхранение

Цифров температурен сензор DS18B20 и резистор 4.7k. Можете да закупите сензора тук и може би си струва да вземете и пакет от различни резистори

Някои аксесоари за изграждане на вериги. Бих препоръчал да използвате макет и някои джъмперни кабели, за да улесните процеса на изграждане на веригата възможно най -лесно

[Ако решите да закупите някой от тези продукти, ще съм ви много благодарен, ако получите достъп до списъците, използвайки горните връзки - по този начин получавам малка част от печалбата без допълнителни разходи за вас!]

Стъпка 1: Настройте хардуера

Настройте хардуера
Настройте хардуера

Първата стъпка е да се уверите, че вашият Pi и свързаните с него периферни устройства са настроени.

Първо, свържете вашия Pi към интернет. Това е необходимо, за да се гарантира, че програмата за наблюдение може да получава вашите искания и да качва данни в Dropbox. Използвам Ethernet връзка, за да гарантирам надеждност, но Wi-Fi връзката също трябва да работи добре, като същевременно има предимството на подобрената преносимост. Ако изберете Wi-Fi, бих препоръчал този USB ключ за Pi.

След това свържете вашата уеб камера към Pi, като я включите в един от USB портовете. Докато инструкциите на моята адвентна уеб камера не казваха изрично, че тя ще работи с Linux, всичко, което трябваше да направя, е да я включа и да стартирам Pi. Не е необходима допълнителна инсталация. Други уеб камери могат да варират. Можете да проверите дали вашата уеб камера е била открита от Linux, като използвате следната команда:

lsusb

На горното изображение уеб камерата ми е посочена като „0c45: 6340 Microdia“

И накрая, можете да свържете вашия сензор за температура DS18B20 към GPIO заглавието на Pi. Използвам моята дъска, за да улесня процеса на създаване на схеми и бих ви препоръчал да направите същото, особено след като DS18B20 изисква 4.7k резистор да бъде поставен между два от трите му пина. Тази връзка предоставя добра електрическа схема, показваща как може да се използва макет за свързване към този температурен сензор.

Следващата страница на горния урок също обхваща стъпките, необходими за четене на данни от DS18B20, и ви показва как да проверите дали работи. Важно е да изпълните тези стъпки за настройка, преди да можете да използвате DS18B20 за този проект. Също така ще интегрираме примерния скрипт на Python от урока в нашата програма за мониторинг, така че може да искате да прегледате бързо този код.

Моля, обърнете внимание и на уникалния номер на вашия DS18B20. Това е числото, започващо с '28-', на което попадате по време на урока за настройка. Ще трябва да го въведете в предстоящата програма на Python, за да му позволите да чете в температурата.

Стъпка 2: Настройте Dropbox

Настройте Dropbox
Настройте Dropbox

За да може вашият Pi да взаимодейства с Dropbox, трябва да настроите ново приложение Dropbox. Това ще ви предостави подробности, необходими на вашия Pi за извършване на онлайн управление на файлове с помощта на Python. Ако приемем, че сте създали акаунт в Dropbox и сте влезли, можете да създадете ново приложение, като използвате опцията от менюто „Developers“. Вижте горното изображение за обобщение на важните стъпки.

В менюто „Разработчици“изберете „Моите приложения“, след което натиснете бутона „Създаване на приложение“. За да попълните получения формуляр, изберете „Dropbox API“, последван от „Папка с приложения“. И накрая, можете да изберете уникално име за приложението си в Dropbox. Кликнете върху „Създаване на приложение“.

След това ще бъдете отведени на страницата с настройки на приложението си в Dropbox. Има само още едно нещо, което трябва да направите тук - да си генерирате маркер за достъп. За да направите това, превъртете надолу до секцията „OAuth 2“и под „Генериран маркер за достъп“щракнете върху бутона „Генериране“.

Това ще ви представи дълъг низ от знаци, необходими за достъп до вашия акаунт в Dropbox с помощта на Python. Запишете този маркер за достъп, тъй като ще трябва да го посочите по -късно в кода си. Ако загубите токена, можете да се върнете към настройките на приложението си, като щракнете върху „Моите приложения“в раздела „Разработчици“на Dropbox и генерирайте нов маркер.

Можете да оставите другите настройки такива, каквито са. За да потвърдите, че приложението ви е създало необходимите папки във вашия акаунт в Dropbox, отворете началната страница на хранилището си и потърсете папката „Приложения“. В тази папка трябва да има подпапка с името, което сте избрали за новото си приложение. Тук ще бъдат поставени всички файлове за вашата система за наблюдение.

Стъпка 3: Подготовка на вашата папка с приложения Dropbox

Подготовка на вашата папка с приложения Dropbox
Подготовка на вашата папка с приложения Dropbox

След като настроите приложението си Dropbox, е време да помислите как ще използвате получената папка във вашия акаунт в Dropbox, за да взаимодействате с вашия Pi. Това се постига съвсем просто. Скриптът Python, който ще се изпълнява на Pi, ще използва подмножество команди от API на Dropbox, за да търси и променя имената на някои празни файлове без разширения в папката на приложението ви. Ще наречем тези файлове „файлове с параметри“, тъй като всеки от тях ще ви позволи да контролирате различен аспект от поведението на системата за наблюдение. Изображението по -горе показва четирите файла с параметри, които трябва да присъстват във вашата папка на приложението Dropbox за този проект. Създаването им е просто:

Започвайки с напълно празна папка на приложението, отворете програма за текстов редактор на компютъра си. Въпреки че това можеше да се направи с помощта на Pi, за мен беше по -лесно да използвам моя лаптоп с Windows за тази фаза на настройка. След като текстовият редактор е отворен (използвах Notepad в Windows 7), всичко, което трябва да направите, е да запазите напълно празен текстов файл навсякъде на вашия компютър. Като наш първи пример ще създадем първия параметър в изображението на заглавката. Дайте име на файла „delay = 10“, когато го запишете.

За да обобщим, сега трябва да имате на компютъра си съхраняван празен текстов файл с името 'delay = 10'. Файлът ще има и разширение „.txt“, което може или не може да бъде видимо.

Следващата стъпка е да качите този файл в папката на приложението Dropbox. Това е като всяко друго качване в Dropbox. Просто отидете до папката на приложението си и кликнете върху „Качване“и изберете файла „забавяне = 10“.

Когато този файл се качи, трябва да премахнете разширението ".txt", което сега трябва да се вижда в името на файла. За да направите това, просто щракнете с десния бутон върху файла и изберете „Преименуване“. Премахнете частта „.txt“от името на файла. Сега трябва да останете с файл, наречен 'delay = 10' без разширение на файла, както е показано в изображението на заглавката.

Файлът с параметри „забавяне“е един от четирите, които ще бъдат използвани от програмата за наблюдение. За да създадете другите, можете просто да копирате и преименувате вашия файл „забавяне“, като щракнете с десния бутон върху него. След като създадете три копия, дайте им име, както е показано в изображението на заглавката, така че папката на приложението ви да е идентична с тази, показана в началото на тази стъпка.

Стъпка 4: Първи стъпки с кода

Както беше обсъдено, ядрото на нашата система за наблюдение ще се състои от един скрипт на Python, който ще взаимодейства с Dropbox. За да бъде активна програмата за мониторинг, този скрипт ще трябва да работи във фонов режим на вашия Pi. Предполагам, че е описан най -точно като скрипт „демон“, което означава, че можете просто да го настроите да работи и да забравите за него. Скриптът е прикачен към тази стъпка, така че няма смисъл да повтаряте кода тук. Сега може да е подходящ момент да го изтеглите и да се запознаете с него.

Преди да можете да стартирате скрипта, важно е да се уверите, че имате инсталирани съответните библиотеки на Python. Тези, от които се нуждаете, са изброени в горната част на прикачения скрипт. Те са:

импортирайте dropbox

внос pygame.camera импорт os време на импортиране

Инсталацията на Python на моя Pi вече включваше pygame, os и time, така че единственият, който трябваше да инсталирам, беше Dropbox. Направих това, използвайки техните много прости инструкции за инсталиране с pip.

След като вашите библиотеки са настроени, ще трябва да редактирате първите два реда на прикачения скрипт, така че да съответстват на вашия Dropbox Access Token и вашия уникален идентификатор на температурен сензор DS18B20. Това са двата реда, които трябва да бъдат редактирани:

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

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

Просто заменете **** с правилните стойности. В този момент всъщност сте готови да започнете да използвате програмата за мониторинг! Вместо просто да скочите, бих препоръчал да продължите към следващата стъпка за общ преглед на кода.

ВАЖНО: Когато стартирате този скрипт, искате той да работи във фонов режим, така че а) да можете да продължите да използвате Pi и б) когато затворите вашата SSH сесия, скриптът ще продължи да работи. Това е командата, която използвам, когато изпълнявам скрипта:

nohup python DropCamTherm.py &

Това постига три неща: Ще стартира скрипта ('python DropCamTherm.py'), ще върне контрола в командния ред незабавно, за да можете да продължите да използвате Pi ('&'), и ще изпрати Python изходи, които биха обикновено се показва в командния ред във файл, наречен 'nohup.out'. Това може да се прочете с помощта на текстов редактор на Linux (любимият ми е nano) и ще бъде създаден автоматично в директорията, от която се изпълнява скриптът.

Стъпка 5: Вкопайте се по -дълбоко в кода

Когато отворите скрипта, ще забележите, че той се състои от три функции заедно с блок код, който изпълнява тези функции, когато скриптът се изпълнява. Функциите използват Dropbox API и имат достъп до регистрационния файл на температурата на DS18B20, за да слушат команди от Dropbox и да качват най -новото отчитане на температурата. По -долу е даден преглед на това, което правят функциите, и как те се използват, за да работят системата за мониторинг:

- poll_parameter ():

Тази функция показва предназначението на файловете с параметри на Dropbox, които създадохме в стъпка 3. Тя търси в папката на приложението Dropbox файл, съдържащ текста „param =“. След това извлича текста след '=' и се опитва да го преобразува в цяло число. Можете да видите, че това ни позволява да контролираме програмата, като добавим ръчно съответните номера в края на файловете с параметри. Следващата стъпка ще съдържа кратко ръководство с инструкции, показващо как да използвате всеки от файловете с параметри, за да контролирате аспект на програмата.

- set_parameter ():

Тази функция позволява на програмата да преименува файл с параметри от Python. Това се прави на няколко пъти, главно за да се намали нуждата от прекомерно ръчно преименуване на файловете.

- set_latest_temp ():

Тази функция използва set_parameter (), за да качи най -новата температура в папката на приложението Dropbox, като я добави към файла с параметри „температура“. Функцията чете най -новата температура от регистрационния файл на DS18B20 (който е наличен в Linux по пътя, посочен от променливата THERMOMETER_FILE).

Последната част от програмата съдържа кода, който ще се изпълни при стартиране на скрипта. След някои стъпки за настройка, необходими за сензора DS18B20, той отваря сесия на Dropbox, използвайки вашия маркер за достъп и използва pygame за търсене на вашата уеб камера. Ако се намери уеб камера, тя ще влезе в цикъл, където използва poll_parameter (), за да извлече информация от Dropbox и да действа върху нея.

ВАЖНО: Ще забележите следния ред код:

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

… това се опитва да създаде използваем интерфейс на камерата от първата уеб камера, която pygame открива. Може да се наложи промяна на разделителната способност, за да съответства на вашата уеб камера. Експериментирайте с редица стойности, за да намерите кое работи най -добре.

Стъпка 6: Използване на файловете с параметри на Dropbox

Така че сега трябва да имате работещ скрипт, който, когато се изпълнява с помощта на инструкциите от стъпка 4, ще позволи на вашия Pi да започне да наблюдава папката на приложението за вашите входове. При първото стартиране папката на приложението трябва да съдържа следните файлове с параметри:

забавяне = 10

exitprogram = 0 imagerequest = 0 температура = 0

Взаимодействието с програмата се постига чрез ръчно преименуване на файловете с параметри чрез Dropbox. За да направите това, просто щракнете с десния бутон върху един от файловете и изберете „преименуване“. Всеки файл с параметри има различна функция:

- забавяне:

Този файл указва на програмата за наблюдение колко секунди да изчака между всяка итерация на цикъла за наблюдение. Когато знам, че няма да взаимодействам много с програмата, я зададох на 60 или 120. Когато знам, че искам често да искам данни от Pi, я зададох на 10.

- изходна програма:

Това трябва да бъде зададено на 1 или 0. Ако програмата установи, че е зададена на 1, тя ще прекрати скрипта. Ако го зададете на 1 и скриптът излезе, ще трябва да влезете отново в Pi, за да го стартирате отново. Този параметър съществува, така че можете да прекратите грациозно програмата за наблюдение, когато вече нямате нужда тя да работи (например, ако сте се върнали у дома и вече не искате да наблюдавате уеб камерата от разстояние).

- imagerequest:

Това е може би най -важният параметър. Това трябва да бъде зададено на 1 или 0. Ако програмата установи, че е зададена на 1, тя ще поиска изображение от уеб камерата и ще го качи в папката на приложението (със заглавието 'image.jpg'). Ако съществува друг 'image.jpg', той ще го презапише.

- температура:

Това е отчитането на температурата на DS18B20, зададено от функцията set_latest_temp (). Никога не трябва да редактирате този файл с параметри - той се задава автоматично от програмата.

Имайте предвид, че ако зададете „exitprogram“или „imagerequest“на 1, програмата автоматично ще ги върне на 0, преди да изпълни съответния код. Това е за удобство. Може също да забележите, че кодът съдържа много блокове „опит“и „с изключение“, заобикалящи много от критичните функции. Това е, за да се гарантира, че скриптът няма да изхвърля изключения (и следователно ще спре да работи), ако нещо се обърка (като проблем с интернет връзката, предотвратяващ Dropbox достъп).

Стъпка 7: Заключение

Този проект представя начин за управление на Raspberry Pi с помощта на Python и Dropbox. Докато хардуерът, използван в този проект, е температурен сензор и USB уеб камера, има много други приложения за този метод за управление на Pi. Всъщност всеки хардуерен компонент, достъпен чрез GPIO, може да бъде контролиран с помощта на подобна програмна структура, което прави системата много лесна за разширяване.

Като следваща стъпка можете също да използвате библиотека с графичен потребителски интерфейс като Tkinter заедно с Dropbox API, за да създадете клиентска програма, която да ви позволи да променяте файловете с параметри, без дори да се налага да влизате в Dropbox.

Надявам се, че този урок е бил ясен и ако имате въпроси или искате да изясня нещо, моля, публикувайте коментар!

Препоръчано: