Автоматизация видеонаблюдения

Автоматизация видеонаблюдения



Часть 1. Подготовка

Вывести изображение с видеорегистраторов можно несколькими способами:


  1. через приложения для смартфонов;
  2. На прямую видео кабелем (HDMI, VGA)
  3. софт для ПК;
  4. Браузер. (web-морда)

Мы будем рассматривать 4 вариант.


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

У меня на момент выполнения задачи были базовые знания Python, С++ учил когда-то давно в универе. Выбор пал на Python так как системы с которых открывается вся история на Windows, С++ сложнее по синтаксису и давно не работал с ним, рассматривать реализацию на нем даже не стал.

В Python есть библиотека Selenium, позволяющая работать c браузерами, к сожалению Web-морды наших регистраторов корректно работают только в IE... И Selenium-у потребуется Web-driver, скачать можно с сайта библиотеки.

Часть 2. Написание

Для удобства разработки использовал VS Code. (установку и настройку не буду рассматривать, информации в сети много)


  1. Создать окружение для разработки, для этого в оболочке PS следует ввести:
python -m venv hiwatch
cd hiwatch\Scripts
.\activate.ps1

Мы создаем окружение, переходим в папку Scripts и активируем его.

  1. Создаем файл .py и устанавливаем Selenium.
cd .. #переходим в каталог выше hiwatch\
touch video.py #создаем файл питона
pip3 install selenium #устанавливаем Selenium

так же качаем файл IE webdriver с сайта selenium (ссылка выше) и закидываем в папку hiwatch.

  1. Ниже будет предоставлен код из файла video.py с пояснением, для регистраторов Hiwatch & Hikvision.
#video.py

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

time.sleep(60) #здесь и далее приостановка выполнения в секундах

drive = webdriver.Ie(executable_path = r'IEDriverServer.exe') #присваиваем переменной drive исполняемый файл webdriver-a

drive.get('http://192.168.*.*/') #IP адрес регистратора может быть указан номер порта

time.sleep(15)

drive.find_element(By.ID, 'username').send_keys('log') #Ваш логин к регистратору
drive.find_element(By.ID, 'password').send_keys("pass") #Ваш пароль к регистратору
drive.find_element(By.ID, 'password').send_keys(Keys.ENTER) #Иммитация нажатия Enter для перехода на следущую страницу

time.sleep(10)

search = drive.find_element(By.CLASS_NAME, 'icon-playall') #выбор кнопки воспроизведения изображения
drive.execute_script("arguments[0].click();", search) #иммитация нажатия

time.sleep(5)

full = drive.find_element(By.CLASS_NAME, 'icon-full') #выбор кнопки изображения на полный экран
drive.execute_script("arguments[0].click();", full) #иммитация нажатия

drive.close
drive.quit
  1. Ниже код из файла video.py для регистратора CTV.
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

time.sleep(5) #здесь и далее приостановка выполнения в секундах

drive = webdriver.Ie(executable_path = r'IEDriverServer.exe') #присваиваем переменной drive исполняемый файл webdriver-a

drive.get('http://192.168.*.*/') #IP адрес регистратора может быть указан номер порта

time.sleep(10) 

drive.find_element(By.ID, 'txtUserName').send_keys('login')  #Ваш логин к регистратору
drive.find_element(By.ID, 'txtPassword').send_keys('Pass') #Пароль к регистратору
drive.find_element(By.ID, 'txtPassword').send_keys(Keys.ENTER) #Иммитация нажатия Enter для перехода на следущую страницу

time.sleep(10)

search1 = drive.find_element(By.ID, 'seg_selector') #открытие вкладки для выбора сетки отображения
drive.execute_script("arguments[0].click();", search1) #иммитация нажатия
search2 = drive.find_element(By.ID, 'seg_9') #выбор сетки 3*3
drive.execute_script("arguments[0].click();", search2) #иммитация нажатия

time.sleep(5)

full = drive.find_element(By.ID, 'full_screen') #выбор кнопки изображения на полный экран
drive.execute_script("arguments[0].click();", full) #иммитация нажатия

drive.close 
drive.quit 
  1. Перегоняем программу из .PY в .EXE для запуска на разных хостах без установки Python и прочего, получим самостоятельную программу.
pyinstaller --noconfirm --onedir --console --add-data "C:/Users/!Ваш путь к этой папке!/IEDriverServer.exe;." "C:/Users/!Ваш путь к этой папке!/video.py"
  1. Сборка содержится в папке dist, которая находится в одной директории с папкой hiwatch.

Часть 3. Заключение

Вам остается только перенести результат из папки dist на любую машину.

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

Источник: https://habr.com/ru/articles/741190/

Report Page