1.1.1 Библиотеки для Web Recorder:
1.1.2 Библиотеки для Web Router:
1.2.1 для Web Recorder
1.2.1 для Web Router
Для того, чтобы программные скрипты автоматически запускались при включении модуля, необходимо в домашнем каталоге отредактировать скрипт autostart.sh
. Например, для автоматического запуска сайта и доп. файлов, которые хранятся в каталоге web (находится в домашнем каталоге), необходимо выполнить следующие шаги в системе:
autostart.sh
, если его нет, и открыть его на редактирование;Финальная версия скрипта autostart.sh
должна выглядеть так:
#!/bin/bash
cd /home/jetson/web
source env/bin/activate
./run_server.sh &
./sub-customCameras.sh &
./sub-account.sh &
Рассмотрим данные команды:
autostart.sh
убедитесь, что вирутальная среда создана.Конфигурация flask-сервера находится в файле .flaskenv (с переменными окружения) и, сервер срабатывает только при запуске в виртуальной среде Python.
.flaskenv:
FLASK_APP=app.рy
FLASK_ENV=development
FLASK_RUN_HOST=172.18.191.110
FLASK_RUN_PORT=5000
Для настройки веб-приложения Google-авторизации и дальнейшего доступа к изменению и чтению данных из Google Drive необходимо перейти на сайт Google Cloud. На сайте необходим пройти авторизацию через аккаунт Recorder TVCenter в домене miem.hse.ru. После успешной авторизации можно переходить в консоль Google Cloud
В консоли справа находим пункт APIs & Services ---> Dashboard
Дальше переходим в пункт Credentials и нажимаем на приложение «Веб-клиент 2» из списка OAuth 2.0 приложений.
Здесь можно редактировать: название приложения, основные URL-адреса приложения, redirect URLs (необходимы для перенаправления пользователя на определенные URL-адреса при успешном входе в Google-аккаунт) и т.д.
При любом редактировании веб-приложения, необходимо сохранять изменения и после скачать обновленный JSON-файл приложения, переименовать его в credentials.json и переместить в директорию auth
MQTT (англ. message queuing telemetry transport) — упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу издатель-подписчик.
Таблица 1. MQTT-передача данных:
Топик | IP-адрес брокера | Описание |
---|---|---|
accounts/gdrive/token | 172.18.191.41 (роутер) или 172.18.191.110 (рекордер) | По данному топику передается данные об авторизованном пользователе, в том числе токен. Информация передается в виде json-строки с IP-адреса брокера 172.18.191.41 с возможностью передачи другим устройствам, входящих в сеть. Подписаться к топику: mosquitto_sub -h 172.18.191.41-p 1883 -t "accounts/gdrive/token" |
accounts/cameras/custom | 127.0.0.1 | Передача и прием информации о камерах со страницы сайта /recorder. Данные передаются при запуске сервера, а также при любом изменении камер (удаление, редактирование, добавление). Передача происходит в локальной сети устройства и с помощью программы sub-customCameras.sh принимается информация от брокера и создается файл custom_cams.json со списком камер в директории /home/user/ telecenter/Recorder/ . Подписаться к топику: mosquitto_sub -h 127.0.0.1 -p 1883 -t " accounts/cameras/custom" |
Erudite - база комнат, оборудования, дисциплин и занятий в МИЭМе. Является модулем NVR, так как авторизация проходит через него. Erudite это более удобная и гибкая замена Google AdminSDK. Данный сервис построен на базе mongodb, где мы храним и манипулируем данными, которые нам нужны для использования другими сервисами.
Вся информация о камерах, которую используют модули АСБ, была перенесена из GSuite в базу данных Эрудит в таблицу equipment.Все файлы и программы, предназначенные для работы с базой данных представлены в директории /telecenter/core/db/:
Таблица 2. Файлы и программы для работы с БД Эрудит:
Наименование файла | Вызов программы/чтение файла | Описание |
---|---|---|
from-db.рy | python3 from-db.рy | Программа предназначена для отправки GET-запроса на получение данных о камерах с базы данных Эрудит. Формируется или перезаписывается файл db-rooms.json с записанной туда информацией о камерах. |
to-db.рy | python3 to-db.рy | Программа предназначена для отправки POST-запроса на добавление в БД Эрудит всех камер, описанных в файле rooms.json. До отправки данных программа с помощью библиотеки onvif получает данные о профилях и RTSP-протоколах камеры. Занесенные ранее в базу данных устройства повторно не создаются в таблице. |
rooms.json | cat rooms.json | В файле хранятся данные об актуальных устройствах (находящихся в сети) в формате JSON с указанием IP-адреса, порта и типа устройства. Устройства отсортированы по названиям комнат. |
db-rooms.json | cat db-rooms.json | Сформированный программой from-db.рy JSON-файл с информацией об устройствах из базы данных Эрудит. Все устройства отсортированы по названиям комнат. |
Пример файла rooms.json :
{ "00А": [ { "ip": "172.18.200.54", "port": 80, "type": "ONVIFCam" }, { "ip": "172.18.200.55", "port": 80, "type": "ONVIFCam" } ], "505": [ { "ip": "172.18.200.56", "port": 80, "type": "ONVIFCam" } ] }
Пример файла db-rooms.json :
{ "520": { "cameras": [ { "name": "Camera_172.18.212.12", "type": "ONVIFCam", "room_name": "520", "room_id": "string", "ip": "172.18.212.12", "port": 80, "rtsp_main": "rtsp://172.18.212.12:554/Streaming/Channels/1", "mac": "58:04:CB:01:1F:2A", "rtsp_0": "rtsp://172.18.212.12:554/Streaming/Channels/1", "rtsp_1": "rtsp://172.18.212.12:554/Streaming/Channels/2", "id": "609d4b5c6d14a101d1f2bc8d" } ], "audio": [] } }