Оглавление:

Домашний мониторинг Raspberry Pi с помощью Dropbox: 7 шагов
Домашний мониторинг Raspberry Pi с помощью Dropbox: 7 шагов

Видео: Домашний мониторинг Raspberry Pi с помощью Dropbox: 7 шагов

Видео: Домашний мониторинг Raspberry Pi с помощью Dropbox: 7 шагов
Видео: Собираем сетевое хранилище из Raspberry Pi 4! 2024, Ноябрь
Anonim
Домашний мониторинг Raspberry Pi с помощью Dropbox
Домашний мониторинг Raspberry Pi с помощью Dropbox

Из этого туториала Вы узнаете, как создать простую и расширяемую систему домашнего мониторинга, используя Raspberry Pi, веб-камеру, несколько электрических компонентов и вашу учетную запись Dropbox. Готовая система позволит вам удаленно запрашивать и просматривать изображения с веб-камеры, а также использовать стандартный цифровой датчик температуры для отслеживания температуры вашего дома через Интернет, и все это с помощью Dropbox.

Это был первый проект, который я придумал после получения модели B Raspberry Pi 2. Моей целью было создать систему мониторинга на основе Python, которую я мог бы контролировать и получать данные через Интернет. Хотя есть много разных способов сделать это, я решил использовать Dropbox в качестве интерфейса между Pi и Интернетом, поскольку у них есть простой API Python, который позволяет загружать, изменять и искать файлы в определенных папках, используя несколько строк код.

Я также хотел, чтобы мое решение было легким и простым, и чтобы не загромождать мой Pi ненужными библиотеками и программами. Программный компонент этого проекта состоит из одного скрипта Python, что означает, что вы можете продолжать использовать свой Pi как обычно, даже когда система мониторинга работает.

Для этого проекта вам понадобятся:

Raspberry Pi. Подойдет любая модель, я использовал стартовый комплект «все в одном», но, возможно, вам понадобится только центральный блок

Веб-камера USB. Купил дешевый ADVENT AWC72015, который, как оказалось, нормально работал. Было бы неплохо ознакомиться с этим списком веб-камер, которые, как подтверждено, работают с Pi. Обратите внимание, что для некоторых требуется USB-концентратор с питанием (мой отлично работает без него)

Учетная запись Dropbox. Я использую свою стандартную бесплатную учетную запись, так как этот проект не требует много места для хранения

Цифровой датчик температуры DS18B20 и резистор 4,7 кОм. Вы можете купить датчик здесь, а также, возможно, стоит захватить пачку различных резисторов

Некоторые схемотехнические аксессуары. Я бы рекомендовал использовать макетную плату и несколько соединительных кабелей, чтобы максимально упростить процесс построения схемы

[Если вы решите купить какой-либо из этих продуктов, я был бы очень признателен, если бы вы получили доступ к спискам, используя приведенные выше ссылки - таким образом, я получаю крошечную долю прибыли без каких-либо дополнительных затрат для вас!]

Шаг 1. Настройте оборудование

Настройте оборудование
Настройте оборудование

Первый шаг - убедиться, что ваш Pi и связанные периферийные устройства настроены.

Сначала подключите Pi к Интернету. Это необходимо для того, чтобы программа мониторинга могла получать ваши запросы и выгружать данные в Dropbox. Я использую соединение Ethernet для обеспечения надежности, но соединение Wi-Fi тоже должно работать нормально, а также иметь преимущество улучшенной переносимости. Если вы выберете Wi-Fi, я бы порекомендовал этот USB-ключ для Pi.

Затем подключите веб-камеру к Pi, подключив ее к одному из USB-портов. Хотя в инструкциях к моей веб-камере Advent явно не говорилось, что она будет работать с Linux, все, что мне нужно было сделать, это подключить ее и загрузить Pi. Никакой дополнительной установки не потребовалось. Другие веб-камеры могут отличаться. Вы можете проверить, обнаружена ли ваша веб-камера Linux, используя следующую команду:

lsusb

На изображении выше моя веб-камера обозначена как «0c45: 6340 Microdia».

Наконец, вы можете подключить датчик температуры DS18B20 к разъему GPIO Pi. Я использую свою макетную плату, чтобы упростить процесс создания схем, и я бы рекомендовал вам сделать то же самое, тем более что DS18B20 требует, чтобы резистор 4,7 кОм был помещен между двумя из трех его контактов. По этой ссылке представлена хорошая электрическая схема, показывающая, как можно использовать макетную плату для подключения к этому датчику температуры.

На следующей странице вышеупомянутого руководства также описаны шаги, необходимые для считывания данных с DS18B20, и показано, как проверить, что он работает. Важно выполнить эти шаги настройки, прежде чем вы сможете использовать DS18B20 в этом проекте. Мы также интегрируем образец скрипта Python из учебника в нашу программу мониторинга, так что вы можете быстро просмотреть этот код.

Также запишите уникальный номер вашего DS18B20. Это номер, начинающийся с «28 -», который вы встретите во время обучения настройке. Вам нужно будет ввести его в будущую программу Python, чтобы он мог считывать температуру.

Шаг 2. Настройте Dropbox

Настроить Dropbox
Настроить Dropbox

Чтобы ваш Pi мог взаимодействовать с Dropbox, вам необходимо настроить новое приложение Dropbox. Это предоставит вам подробную информацию, необходимую вашему Pi для выполнения онлайн-управления файлами с помощью Python. Предполагая, что вы создали учетную запись Dropbox и вошли в систему, вы можете создать новое приложение, используя пункт меню «Разработчики». См. Изображение выше для краткого обзора важных шагов.

В меню «Разработчики» выберите «Мои приложения», затем нажмите кнопку «Создать приложение». Чтобы заполнить полученную форму, выберите «Dropbox API», а затем «Папка приложения». Наконец, вы можете выбрать уникальное имя для своего приложения в Dropbox. Щелкните "Создать приложение".

После этого вы попадете на страницу настроек вашего приложения в Dropbox. Здесь вам нужно сделать только одно - создать себе токен доступа. Для этого прокрутите вниз до раздела «OAuth 2» и в разделе «Созданный токен доступа» нажмите кнопку «Создать».

Это предоставит вам длинную строку символов, которая необходима для доступа к вашей учетной записи Dropbox с помощью Python. Запишите этот токен доступа, так как вам нужно будет указать его позже в коде. Если вы потеряете токен, вы можете вернуться к настройкам своего приложения, щелкнув «Мои приложения» в разделе Dropbox «Разработчики», и сгенерировать новый токен.

Остальные настройки можно оставить без изменений. Чтобы убедиться, что ваше приложение создало необходимые папки в вашей учетной записи Dropbox, перейдите на домашнюю страницу хранилища и найдите папку «Приложения». В этой папке должна быть подпапка с именем, которое вы выбрали для своего нового приложения. Здесь будут размещены все файлы для вашей системы мониторинга.

Шаг 3. Подготовка папки приложения Dropbox

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

После того, как вы настроили свое приложение Dropbox, пришло время подумать о том, как вы будете использовать полученную папку в своей учетной записи Dropbox для взаимодействия с вашим Pi. Делается это довольно просто. Скрипт Python, который будет запускаться на Pi, будет использовать подмножество команд из Dropbox API для поиска и изменения имен некоторых пустых файлов без расширений в папке вашего приложения. Мы будем называть эти файлы «файлами параметров», поскольку каждый из них позволит вам управлять разными аспектами поведения системы мониторинга. На изображении выше показаны четыре файла параметров, которые должны присутствовать в папке вашего приложения Dropbox для этого проекта. Создать их просто:

Начав с полностью пустой папки приложения, откройте программу текстового редактора на своем компьютере. Хотя это можно было сделать с помощью Pi, мне показалось, что на этом этапе настройки проще использовать свой ноутбук с Windows. Как только текстовый редактор открыт (я использовал Блокнот в Windows 7), все, что вам нужно сделать, это сохранить полностью пустой текстовый файл в любом месте вашего компьютера. В нашем первом примере мы создадим первый параметр в изображении заголовка. При сохранении назовите файл 'delay = 10'.

Напомним, что теперь на вашем компьютере должен храниться пустой текстовый файл с именем delay = 10. Файл также будет иметь расширение.txt, которое может быть, а может и не быть видимым.

Следующим шагом будет загрузка этого файла в папку вашего приложения Dropbox. Это похоже на любую другую загрузку Dropbox. Просто перейдите в папку своего приложения, нажмите «Загрузить» и выберите файл «delay = 10».

Когда этот файл будет загружен, вы должны удалить расширение «.txt», которое теперь должно отображаться в имени файла. Для этого просто щелкните файл правой кнопкой мыши и выберите «Переименовать». Удалите часть имени файла.txt. Теперь у вас должен остаться файл с именем 'delay = 10' без расширения файла, как показано на изображении заголовка.

Файл параметров задержки - один из четырех, которые будут использоваться программой мониторинга. Чтобы создать другие, вы можете просто скопировать и переименовать файл задержки, щелкнув его правой кнопкой мыши. После создания трех копий назовите их, как показано на изображении заголовка, чтобы папка вашего приложения была идентична папке, показанной в начале этого шага.

Шаг 4. Начало работы с кодом

Как уже говорилось, ядро нашей системы мониторинга будет состоять из одного скрипта Python, который будет взаимодействовать с Dropbox. Чтобы программа мониторинга была активной, этот скрипт должен работать в фоновом режиме на вашем Pi. Я думаю, что это наиболее точно описывается как «демон-скрипт», то есть вы можете просто запустить его и забыть о нем. К этому шагу прикреплен скрипт, поэтому повторять код здесь нет смысла. Возможно, сейчас самое подходящее время, чтобы загрузить его и ознакомиться с ним.

Прежде чем вы сможете запустить скрипт, важно убедиться, что у вас установлены соответствующие библиотеки Python. Те, которые вам нужны, перечислены вверху прикрепленного скрипта. Они есть:

импортный Dropbox

import pygame.camera import os время импорта

Установка Python на моем Pi уже включала pygame, os и время, поэтому мне пришлось установить только Dropbox. Я сделал это, используя их очень простые инструкции по установке с помощью pip.

После того, как ваши библиотеки настроены, вам нужно будет отредактировать две верхние строки прикрепленного скрипта, чтобы они соответствовали вашему токену доступа Dropbox и уникальному идентификатору датчика температуры 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. Углубляйтесь в код

Когда вы откроете сценарий, вы заметите, что он состоит из трех функций вместе с блоком кода, который реализует эти функции при запуске сценария. Функции используют API Dropbox и получают доступ к файлу журнала температуры 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, вместе с API Dropbox для создания клиентской программы, которая позволит вам изменять файлы параметров без необходимости даже входить в Dropbox.

Я надеюсь, что этот урок был понятным, и если у вас есть какие-либо вопросы или вы хотите, чтобы я что-то прояснил, оставьте комментарий!

Рекомендуемые: