Найти в Дзене

Отправка картинки с камеры Raspberry Pi на Народный Мониторинг

Началось всё это дело с того, что мне понадобилось в установку поставить достаточно малогабаритную камеру для того, чтобы контролировать процесс в установке.
В итоге расскажу, как настроить Raspberry Pi и заставить её отправлять изображение с камеры в проект Народного Мониторинга.
Оглавление

Началось всё это дело с того, что мне понадобилось в установку поставить достаточно малогабаритную камеру для того, чтобы контролировать процесс в установке.

Изначально необходимо было смотреть как растут растения, ну и места было достаточно не много, по этому выбор пал на маленькую камеру для 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 в списке подключенных устройств, например так выглядит список подключенных устройств на моем старом роутере:

Так выглядит список подключенных устройств на старых роутерах марки Keenetic
Так выглядит список подключенных устройств на старых роутерах марки Keenetic

Если же нет доступа до веб интерфейса роутера, то можно воспользоваться каким-то IP сканером, в крайних случаях я использовал Advanced IP Scanner, в принципе всё в программке понятно, там необходимо будет запустить скан адресов и будут выданы все устройства, которые ответили на запрос. Среди них надо будет найти то, которое называется raspberrypi .

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

Для пользователей системы Windows необходимо скачать и установить программу Putty, через которую и будет осуществляться работа с устройством.

После установки программы, в ней необходимо указать, по сути, только IP адрес устройства:

Окошечко Putty
Окошечко Putty

После этого нажать кнопку “Open”. В результате откроется чёрное окошко, где потребуется ввести имя пользователя и пароль от малины. По умолчанию имя пользователя и пароль от ОС Raspbian звучат как: pi и raspberry , соответственно.

После успешного входа нам будет доступен полноценный функционал управления системой линукс с помощью команд, которые либо печатаются, либо копируются в терминал.

Небольшая памятка по командам и методам:

  1. Вставка текста в терминал осуществляется с помощью нажатия на правую кнопку мыши.
  2. Копирование текста из терминала происходит в момент выделения текста в нем.
  3. Обязательно читайте подсказки при работе с псевдографическим программами в терминале, такими как 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

В результате получим примерно такую картинку:

Логи /var/log/syslog.1
Логи /var/log/syslog.1

Нас интересует файл с названием crontab, если его нет, то syslog, в нем содержится информация по выполнению каждого задания, открываем его командой:

nano crontab

И смотрим, что же нам написал про выполнение нашего задания crontab, в зависимости от этого и принимаем решения и исправляем проблему.

Ну и теперь: Добро пожаловать в мир Интернета вещей!

Кроме того в моей предыдущей статье можно посмотреть как настроить отправку данных через планировщик Windows.