Началось всё это дело с того, что мне понадобилось в установку поставить достаточно малогабаритную камеру для того, чтобы контролировать процесс в установке.
Изначально необходимо было смотреть как растут растения, ну и места было достаточно не много, по этому выбор пал на маленькую камеру для Raspberry Pi, которая была уже под рукой, так как я с ней уже экспериментировал.
Далее у нас есть несколько различных устройств, к которым эту камеру можно прицепить. Сама камера имеет габариты всего 25 х 25 х 5 мм (и это вместе с отладочной платой, к которой цепляется широкий шлейф CSI).
Пытался подцепить к Raspberry Pi 3 model B, но судя по всему эта малина начала умирать. У неё отказала камера и Wi-Fi, но у меня оказалась в наличии свободная Raspberry pi Zero WH, это та, у которой есть Wi-Fi на плате. Благо в наличии для камеры был шлейф под малину нулевую, так как там разные размеры у CSI разъемов.
Подцепил, запустил – работает.
Тут могу сказать, что не стоит забывать о хорошем исходном питании, если у Вас что-то начинает глючить, малина зависает или при попытке получить картинку с камеры всё ломается, то стоит подумать о блоке питания по мощнее.
В своём проекте я запитывал из-за дефицита кабелей micro-USB Raspberry Pi Zero от Orangepi Zero. Не надо спрашивать, как так вышло, но оно работало, весьма стабильно и без косяков. Главное, что всё это питалось от хорошего БП с честными 2 А.
Ну а теперь начнем настраивать малинку, сейчас я быстро пробегусь по моментам настройки и по нюансам, если кто-то считается себя хорошо сведущим в этом, пусть пропускает, ну а иначе рекомендую посмотреть, так как некоторые вещи оказались не очень очевидными.
Если что в конце есть видео, в котором я рассказываю о том как настроить всю эту радость, но читается на самом деле быстрее.
1. Установка системы
Тут ничего достаточно сложного нет, сообщество малинкопользователей значительно выросло, по этому мы можем спокойно скачать с сайте raspberrypi.org официальный прошивальщик и в нем выбрать систему:
Рекомендую минимальную версию, так как она наиболее стабильна для долгосрочных проектов, как говорится: нет лишнего – нет утечек памяти.
После этого выбираем карточку памяти, рекомендую от 8 Гб, так как в магазине я уже 8 Гиговых карточек не нашёл, пришлось брать 16Гб(((.
И прошиваем.
Кстати теперь (с 2019 года) можно вполне доступным и простым способом заставить Raspberry pi запускаться через USB с SSD или HDD, единственная проблема – обеспечить должное питание, чтобы в момент запуска его хватило и для запуска малины, и для жесткого диска. В видео как раз на таком стенде всё и показываю.
После этого нам надо будет карточку опять вставить в свой комп и произвести несколько манипуляций для так называемой “безголовой” (headless) настройки устройства.
Данный подход удобен тем, что нам не нужно искать клавиатуру и монитор, или если опыта больше, то для Raspberry pi Zero не нужен будет переходник для подключения её к интернету через кабель.
Первый шаг: настройка включения SSH при запуске устройства, для этого на карточке, на другом компьютере в корне раздела boot (наименьший по размеру) необходимо создать пустой файл с названием ssh и без расширения. Описание на официальном сайте пункт 3.
После этого можно настроить в таком же режиме и автоматическое подключение устройства к вашей сети Wi-Fi. Опять же описано на сайте производителя , но данную инструкцию пока не довелось применять.
2. Установка пакетов
В принципе рекомендую работать с такими устройствами с помощью доступа через SSH. Так как не будет необходимо использовать дополнительные устройства ввода и вывода.
Для подключения по SSH к малине необходимо узнать её IP адрес.
Для этого можно зайти на веб интерфейс роутера и посмотреть IP в списке подключенных устройств, например так выглядит список подключенных устройств на моем старом роутере:
Если же нет доступа до веб интерфейса роутера, то можно воспользоваться каким-то IP сканером, в крайних случаях я использовал Advanced IP Scanner, в принципе всё в программке понятно, там необходимо будет запустить скан адресов и будут выданы все устройства, которые ответили на запрос. Среди них надо будет найти то, которое называется raspberrypi .
Далее необходимо подключиться к устройству по протоколу SSH для управления через текстовые команды, через терминал.
Для пользователей системы Windows необходимо скачать и установить программу Putty, через которую и будет осуществляться работа с устройством.
После установки программы, в ней необходимо указать, по сути, только IP адрес устройства:
После этого нажать кнопку “Open”. В результате откроется чёрное окошко, где потребуется ввести имя пользователя и пароль от малины. По умолчанию имя пользователя и пароль от ОС Raspbian звучат как: pi и raspberry , соответственно.
После успешного входа нам будет доступен полноценный функционал управления системой линукс с помощью команд, которые либо печатаются, либо копируются в терминал.
Небольшая памятка по командам и методам:
- Вставка текста в терминал осуществляется с помощью нажатия на правую кнопку мыши.
- Копирование текста из терминала происходит в момент выделения текста в нем.
- Обязательно читайте подсказки при работе с псевдографическим программами в терминале, такими как nano , top , htop .
И вот только сейчас мы дошли до собственно проверки того, что установлено в текущую систему.
Проверяем наличие python3 в системе, вводя команду:
python3
Если видим ошибку, а не запуск интерпретатора в интерактивном режиме, то необходимо установить python3 с помощью команды:
sudo apt install python3
После успешной установки python3 необходимо опять его запустить и уже в интерпретаторе ввести команды:
import picamera
import requests
В случае, если не будет выдано никаких сообщений об ошибке, значит всё установлено успешно и все библиотеки доступны.
Можно приступать к настройке скрипта.
Если возникли проблемы с импортом, то необходимо недоступные библиотеки поставить через встроенный менеджер пакетов в python, который называется pip (для python3 – это pip3). Его кстати тоже надо будет поставить, но уже через apt.
Вводим команду :
sudo apt install python3-pip
Если будут какие-то ошибки, типа “Not found” или что-то ещё, то наверное стоит ввести:
sudo apt update
И потом повторить предыдущую команду.
Далее уже используем pip3 и устанавливаем например pycamera:
pip3 install pycamera
Основное удобство встроенного менеджера пакетов в том, что для его работы на нет необходимости использовать sudo, и это безопасно.
3. Тестирование и настройка скрипта
Перед тем, как начинать настройку скрипта, необходимо на сайте narodmon.ru необходимо пройти авторизацию или регистрацию и, затем, получить уникальный код для Веб-камеры.
Код можно получить в меню “Мои Веб-камеры”, нажать “Добавить веб-камеру” и рядом с полем “Секретный ключ” с помощью кнопки “Создать новый” сгенерировать новый секретный ключ.
После этого не забываем заполнить все остальные поля и нажать кнопку “Сохранить”.
Для настройки и последующей работы будем действовать максимально простым образом, копируем скрипт narodmon_send.py со странички на гитхаб .
После этого набираем в терминале две команды:
cd
nano narodmon_send.py
Первая команда перенесет нас в домашнюю папку пользователя, а вторая откроет окошко создания файла в текстовом редакторе nano.
В открывшееся окно вставляем нажатием правой кнопки мыши скопированное содержимое файла скрипта.
После этого стрелками вверх-вниз, вправо-влево возвращаемся в начало файла и в строчке
code = 'ВАШ СЕКРЕТНЫЙ КОД КАМЕРЫ'
меняем содержимое кавычек на секретный ключ, полученный на сайте narodmon.ru чуть выше и нажимаем последовательно Ctrl + x, y, Enter .
Этот порядок сочетаний и нажатий клавиш, вызовет закрытие файла с сохранением его содержимого.
После этого, находясь в домашней папке пользователя, набираем команду, с помощью которой принципиально проверим работоспособность и правильность настройки скрипта:
python3 narodmon_send.py
Важно!!! Проверку осуществлять не чаще чем раз в 15 минут, в случае успешной отправки, иначе можно получить бан от сервера.
Если скрипт ответил “ОК” и после этого картинка появилась на Народном Мониторинге, в “Мои Веб-камеры”, значит можно настраивать автоматизацию отправки данных.
Немного о скрипте
Дополнительно обращаю внимание, что в скрипте находится большое количество комментариев и закомментированных строк. В языке python всё что находится в одной строке после знака # является комментарием и не участвует в работе скрипта.
Экспериментируя с настройками, стоит помнить, что он в первую очередь предназначен для отправки данных на сервер Народного Мониторинга, если же вы хотите экспериментировать, то закомментируйте все строки, относящиеся к отправке.
У данного скрипта, который является самой простой версией, есть один недостаток:
Перед отправкой данных, скрипт их перезаписывает на файловое хранилище Raspberry Pi, то есть на SD карту, что сказывается на её ресурсе.
В среднем в режиме отправки изображений каждые 10 минут, обычной карты памяти на 8 - 16 Гб должно хватить на 2-3 года.
4. Настройка периодической отправки
Для отправки данных периодически можно использовать различные методы, от управляющего скрипта на языке bash, до цикла в самом скрипте на python, но все эти методы не являются достаточно надежными и не решают проблемы, как запустить отправку данных после перезапуска устройства.
Мы не будет придумывать какие-то более сложные конструкции типа демонов (да, так называется в linux отдельный класс программ, не взаимодействующих напрямую с пользователем и поддержанием работы которых занимается сама ОС, кстати именно по этому в киберпанке Ви убивал всех именно демонами=))).
Но мы пойдем по более простому пути, в каждой операционной системе существует встроенный “планировщик заданий”, так он собственно и называется в Windows, в линукс – это crontab , с ним и рекомендую работать на малинке.
Для создания задачи в crontab нам необходимо добавить запись в специальный файл, который находится по адресу /etc/crontab (работать с этим файлом необходимо аккуратно, так как именно с ним работает сам crontab).
Для работы с этим файлом нам потребуется использование административного доступа, по этому команда для редактирования файла должна начинаться с sudo :
sudo nano /etc/crontab
В открывшемся окне редактора nano никаких изменений не вносим, если не понимаем, чем нам это грозит, а лишь перемещаемся к концу документа и вставляем одну строку, без изменений, вместе со звездочками:
*/15 * * * * pi nohup python3 ~/narodmon_send.py
После этого обязательно закрываем файл с сохранением, нажимая последовательно Ctrl + x, y, Enter .
Это задание обеспечит запуск нашего скрипта каждые 15 минут. А скрипт уже сделает фото с камеры и отправит его на Народный Мониторинг.
Если возникают проблемы с отправкой, то можно проверить что же написал crontab при попытке запуска нашего скрипта, для этого нам надо будет зайти в папку, где хранятся все логи системы:
cd /var/log
ls -l
В результате получим примерно такую картинку:
Нас интересует файл с названием crontab, если его нет, то syslog, в нем содержится информация по выполнению каждого задания, открываем его командой:
nano crontab
И смотрим, что же нам написал про выполнение нашего задания crontab, в зависимости от этого и принимаем решения и исправляем проблему.
Ну и теперь: Добро пожаловать в мир Интернета вещей!
Кроме того в моей предыдущей статье можно посмотреть как настроить отправку данных через планировщик Windows.