API Watch: импорт и настройка камер

API Watch позволяет массово добавлять, настраивать и администрировать камеры.

Импорт камер

Автоматический импорт камер позволяет загрузить в Insentry список камер с помощью скрипта и задать настройки этих камер.

Описание процедуры

Импорт производится в три этапа:

  1. Подготовка: установка необходимых компонент.
  2. Создание json файла со списком камер.
  3. Загрузка json файла на сервер с помощью скрипта.

Необходимые компоненты:

  • Python 3,
  • Библиотека requests,
  • Список камер в формате JSON,
  • User token активной сессии к серверу Insentry Watch

Установка Python 3

Установите с ресурса https://www.python.org/

Установка модуля requests для Python 3

Выполните команду

pip install requests

Получение User Token

Зайдите на сервер Insentry под учётной записью администратора.

Нажмите F12 и в окне консоли найдите и скопируйте User Token (см. скриншот).

Создание JSON файла со списком камер

Создайте JSON файл с массивом данных следующего вида:

[
  {
    "name": "ИМЯ_КАМЕРЫ",
    "host": "IP_КАМЕРЫ",
    "vendor": "onvif",
    "model": "onvifcamera",
    "httpPort": 80,
    "rtspPort": 554,
    "onvifPort": 80,
    "echd": true,
    "login": "ЛОГИН_К_КАМЕРЕ",
    "password": "ПАРОЛЬ_К_КАМЕРЕ"
  },
  {
    "name": "ИМЯ_КАМЕРЫ",
    "host": "IP_КАМЕРЫ",
    "vendor": "onvif",
    "model": "onvifcamera",
    "httpPort": 80,
    "rtspPort": 554,
    "onvifPort": 80,
    "echd": true,
    "login": "ЛОГИН_К_КАМЕРЕ",
    "password": "ПАРОЛЬ_К_КАМЕРЕ"
  },
  {
    "name": "ИМЯ_КАМЕРЫ",
    "host": "IP_КАМЕРЫ",
    "vendor": "onvif",
    "model": "onvifcamera",
    "httpPort": 80,
    "rtspPort": 554,
    "onvifPort": 80,
    "echd": true,
    "login": "ЛОГИН_К_КАМЕРЕ",
    "password": "ПАРОЛЬ_К_КАМЕРЕ"
  },
  ...
]

Загрузка списка камер на сервер

Создайте файл *.py с кодом:

import json
import requests
watch_host = 'IP адрес сервера Insentry'
user_token = 'Берем от активной сессии на сервер Insentry'
json_path = r'Абсолютный путь к json с камерами'
with open(json_path, 'r') as json_file:
    cameras = json.load(json_file)
i=0
for camera in cameras:
  resp = requests.post(f'http://{watch_host}:9200/api/webclient/cameras/create', headers={'x-user-token': user_token}, json=camera)
  i = i+1
  print(i, resp.text)

Запустите скрипт.

Статус выполнения скрипта будет отображаться списком строк, каждая строка соответствует одной камере.

Состав строки: номер_добавленной_камеры {её_уникальный_id, статус_запроса_добавления, сообщение_об_ошибке)

Настройка камер

Массовая настройка камер позволяет изменить значения настроек камер с помощью скрипта в 4 этапа:

  1. Подготовка: установка необходимых компонент.
  2. Загрузка с сервера списка камер с настройками в файле формата json.
  3. Изменение настроек камер в файле.
  4. Загрузка файла с новыми настройками на сервер.

Необходимые компоненты:

  • Python 3,
  • Библиотека requests,
  • User token активной сессии к серверу Insentry Watch
  • Пустой файл с названием data в формате json.

Python 3

Установите с ресурса https://www.python.org/

Установка модуля requests для Python 3

Выполните команду pip install requests

Получение User Token

Зайдите на сервер Insentry под учётной записью администратора.

Нажмите F12 и в окне консоли найдите и скопируйте User Token (см. скриншот). Не разрывайте сессию до конца выполнения скрипта!

Скачивание списка камер с настройками в формате JSON

Создайте файл *.py с кодом:

import requests
import json
watch_host = 'HOST_ADDR'
token = 'USER_TOKEN'
resp = requests.post(f'http://{watch_host}:9200/api/webclient/cameras', headers={'x-user-token': token})
req = resp.json()
cameras = req['cameras']
i = 0
with open('C:/Users/1/Documents/CAMERAS/data.json', 'w') as outfile:
     json.dump(cameras, outfile)

Где:

HOST_ADDR — адрес сервера Insentry,

USER_TOKEN — x-user-token. Как его получить — см. предыдущий пункт.

C:/Users/1/Documents/CAMERAS/data.json — абсолютный путь до файла data.json.

Запустите скрипт. После выполнения скрипта все данные по камерам будут записаны в файл data.json. Для каждой камеры будет представлен список параметров, содержащих её настройки.

Изменение настроек камер в файле

В результате получения списка камер (см. пункт выше), в файле data.json будет записан список камер с параметрами, которые соответствуют настройкам камеры: имя, описание, вендор и т.д. Для изменения настроек камер можно воспользоваться следующим скриптом.

Создайте файл *.py с кодом:

import requests
import json
json_path = 'C:/Users/1/Documents/CAMERAS/data.json'
f = open(json_path, 'r')
data=f.readlines()
f.close()
cam_list = json.loads(data[0])
for cam in cam_list:
    cam['name'] = ''
    cam['description'] = ''
    cam['host'] = ''
    cam['vendor'] = ''
    cam['model'] = ''
    cam['echd'] = '' 
    cam['tcp'] = ''
with open(json_path, 'w') as outfile:
     json.dump(cam_list, outfile)

Задайте новые настройки камер, изменив значения параметров:

  • cam[‘name’] = ’’ Имя камеры
  • cam[‘description’] = ’’ Описание
  • cam[‘host’] = ’’ IP адрес
  • cam[‘vendor’] = ’’ Производитель камеры
  • cam[‘model’] = ’’ Модель
  • cam[‘echd’] = ’’ Включена ли интеграция с ЕЦХД (true/false)
  • cam[‘tcp’] = ’’ Включена ли передача по tcp (true/false)
  • cam[‘login’] = ’’ Логин
  • cam[‘password’] = ’’ Пароль

Если какой-либо из параметров менять не нужно, то его можно удалить из кода.

Сохраните data.json. Для сохранения информации на сервере необходимо запустить скрипт обновления настроек.

Обновление настроек камер на сервере

Обновление настроек нужно, чтобы передать новые значения настроек камер из файла data.json на сервер.

Создайте файл *.py с кодом:

import requests
import json
watch_host = 'HOST_ADDR'
token = 'USER_TOKEN'
json_path = 'C:/Users/1/Documents/CAMERAS/data.json'
f = open(json_path, 'r')
data=f.readlines()
f.close()
cam_list = json.loads(data[0])
i = 0
for cam in cam_list: 
    cam_id = cam_list[i]['id']
    resp = requests.post(f'http://{watch_host}:9200/api/webclient/cameras/update/{cam_id}', headers={'x-user-token': token}, json = cam)
    i += 1
    print (i, resp.text)

Где:

HOST_ADDR — адрес сервера Insentry,

USER_TOKEN — x-user-token. Как его получить — см. предыдущий пункт.

C:/Users/1/Documents/CAMERAS/data.json — абсолютный путь до файла data.json.

Запустите скрипт.

Статус выполнения скрипта будет отображаться списком строк, каждая строка соответствует одной камере.

Состав строки: номер_добавленной_камеры {её_уникальный_id, статус_запроса_добавления, сообщение_об_ошибке)