Опыт использования Xeoma для построения системы видеонаблюдения для частного дома или квартиры

 1 декабря 2016      
 Видео и звук      
 Комментариев еще нет

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

Задача

Построить недорогую систему видеонаблюдения для частного дома или квартиры со следующими функциями:

  1. Запись с камер в архив по движению
  2. Легкость включения и выключения мониторига (постановки на охрану)
  3. Автоматическая постановка на охрану
  4. Индикация включения/выключения мониторинга
  5. Минимизация архива хранимых данных
  6. Никакого дополнительного железа
  7. Хранение фото/видео материала в интернете

Выбор Xeoma

Xeoma — это конструктор. В прямом смысле слова. Весь рабочий процесс создания системы видео наблюдения сводится к созданию цепочки от модуля видеокамеры до модуля записи в архив (в большинстве случаев). Цепочка – это линия, линк, связь между модулями. Встроив в цепочку дополнительный модуль и определив логику его работы, Вы создаете свой уникальный по-настоящему живой алгоритм. Знакомы с блок-схемами логики работы программ из школьных или студенческих курсов? Нет? Сейчас Вы узнаете, что это очень просто.

Попробовав полнофункциональную демоверсию Xeoma, я уже ничего не искал. Это то, что мне было нужно. В этой статье на примере одной камеры будет подробно рассказано, как решить все выше поставленные задачи. Интересно? Читайте дальше.

Первый запуск Xeoma

Нет смысла подробно останавливаться на режимах работы программы и интерфейсе, это не входит в нашу задачу. Отмечу лишь, что поиск камер лучше не прерывать, даже если Вы знаете все URL и порты RTSP потоков и ONVIF протоколов. Пусть доработает до конца. После того как программа нашла камеру и Вы правильно ввели к ней логин и пароль Xeoma покажет картинку с камеры и по умолчанию создаст вот такую схему видео наблюдения.

obzor-xeoma_0

Блок-схема легко читается:

  • если с камерой проблема – отправить уведомление на email
  • в соответствии с расписанием включить запись в архив при обнаружении движения

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

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

obzor-xeoma_1

obzor-xeoma_2

Как только Вы это сделаете, услышите противный писк в динамиках. Это означает, что система работает, сигнал с камеры попадает на вход модуля «Динамик». Этому прохождению ничто не мешает, поэтому следующим этапом будет добавление требуемых модулей в схему и настройка логики их работы.

Настройка отключения видео наблюдения по детектору доверенных лиц

В Xeoma есть модуль «Детектор лиц», который позволяет определять лица в видео потоке, а также умеет вести список доверенных лиц. Для системы видео наблюдения в частном доме есть смысл задействовать эту функцию. Работать она должна так: «Если обнаружено доверенное лицо, то отключить мониторинг».

Для начала необходимо в разрыв цепочки Камера – Динамик установить HTTP переключатель. Это обыкновенный переключатель, который имеет два положения, включено – когда сигнал от камеры попадает на динамик, и выключено – динамик молчит. Xeoma устанавливается вместе со встроенным веб-сервером и каждый такой переключатель получает два уникальных URL, обратившись к которым откуда угодно (например, открыть страницу с указанным адресом в браузере) можно замкнуть или разомкнуть цепь. Именно это единственное, очень примитивное, но очень мощное свойство дает нам огромные перспективы.

После добавления переключателя, схема выглядит так
obzor-xeoma_3

Самое время заглянуть в настройки переключателя, а заодно и выключить динамик. В настройках переключателя видим два URL, а также то, что он пропускает сигнал, т.е. находится в положении «Включено».

obzor-xeoma_4

Чтобы разомкнуть цепь и выключить динамик, скопируем в буфер обмена URL для выключения модуля и откроем его в браузере.

obzor-xeoma_5

obzor-xeoma_6

Стало тихо, а HTTP переключатель принял положение «Выключено» и не пропускает сигнал от камеры к динамику

obzor-xeoma_7

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

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

obzor-xeoma_8

За страшной фразой «Модуль отправки HTTP команд» кроется не что иное как обычный браузер, который открывает страницу в интернете (URL). Т.е. когда детектор лиц пропустит сигнал по цепочке, модуль отправки откроет указанную в настройках страницу. Конечно, мы не будем бродить по сайтам при помощи этого модуля, смысл его в том, что открыв страницу веб сервера, веб сервер фиксирует факт обращения к ней. Очевидно, что в качестве целевой страницы в настройках модуля необходимо указать URL, который мы уже использовали для отключения динамика. Но об этом чуть позже.

Сейчас настроим модуль детектора лиц. В настройках этого модуля необходимо указать, что он должен срабатывать только при обнаружении доверенных лиц.

obzor-xeoma_9

Так как в базе данных программы доверенных лиц пока нет, то необходимо собрать всех членов семьи, по очереди посадить каждого перед камерой и провести обучение программы. Делается это просто

obzor-xeoma_a

В случае, если программа не распознает лицо, она известит об этом соответствующим сообщением.

obzor-xeoma_b

Если же операция прошла успешно, то программа ничего не сообщает, чем сбивает с толку. Однако в списке доверенных лиц появляется новый его член. Выбираем всех кого нужно и сохраняемся.

obzor-xeoma_c

Самое время протестировать работу модуля детектора лиц. В случает если в кадре находится доверенное лицо, статус модуля должен смениться на «Пропускает».



Настройка включения видео наблюдения по отсутствию движения

Как уже было сказано, включать мониторинг можно тапом на экране смартфона, но нужно предусмотреть возможность автоматического включения. Сделать это проще всего по отсутствию движения в течение указанного времени. Используем модуль «Детектор движения» и уже знакомый модуль отправки HTTP команд. После добавления этих модулей схема принимает вид:

obzor-xeoma_d

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

obzor-xeoma_e

Протестируйте работу модуля. В случае отсутствия движения в течение указанного интервала его состояние должно быть «Пропускает», в случае наличия движения «Не пропускает». Когда модуль пропустит сигнал далее, к модулю отправки HTTP команд, этот модуль должен будет выполнить запрос к HTTP переключателю (между камерой и динамиком), по адресу переводящему его в положение «Включено». Т.е. цепочка Камера – Динамик замкнется. Укажем URL в настройках модуля отправки HTTP команд.

obzor-xeoma_f

Аналогично необходимо сделать для модуля отправки HTTP команд, находящегося после детектора лиц, но указать URL отключения HTTP переключателя (цепочка разомкнется). Вот этот URL, помните?

obzor-xeoma_g

Что у нас имеется на данном этапе? Оставьте камеру в покое, отойдите в сторонку и пусть она поглядит куда-нибудь, где никто не будет перед ней маячить. Если Вы все сделали правильно, то через некоторое время включится динамик, оповещая о том, что цепочка замкнута. Подойдите к камере, или пусть кого-нибудь из доверенных лиц попросит камеру выключить охрану. Сработало? Тогда движемся дальше. Нет – вернитесь назад и еще раз проверьте настройки модулей.

Световая сигнализация о включении и отключении мониторинга

Было бы неплохо знать, когда система находится под охраной, а когда нет. К сожалению Xeoma не умеет работать со встроенными в камеру динамиками, да и не все камеры ими оснащены. А вот светодиоды есть почти у всех. Если светодиод на камере можно включить или выключить в панели управления камерой, то можно определить URL для включения и выключения. Сделать это можно, например, при помощи плагина firebug для браузера Firefox.

obzor-xeoma_h

Для включения накамерного светодиода значение GET параметра led_mode равно 1, а для выключения нужно использовать такой URL

obzor-xeoma_k

После модулей «Детектор лиц» и «Детектор движения» добавим еще по одному модулю отправки HTTP команд. Первый будет обращаться к URL для отключения светодиода, второй – для включения, и схема принимает вид:

obzor-xeoma_l

Настройки модуля «отправки HTTP команд» для включения светодиода после датчика движения

obzor-xeoma_m

Настройки модуля «отправки HTTP команд» после датчика лиц

obzor-xeoma_n

В процессе создания скриншотов для статьи я ошибся и расположил модуль включения светодиода не совсем верно. Сейчас он показывает не факт включения мониторинга, а факт включения его по отсутствию движения. Так как постановка на охрану может быть произведена различными способами, то перенесем этот модуль и расположим его сразу после HTTP переключателя. Теперь все логично. Соединим уведомление о проблемах по email с камерой, а динамик заменим на «запись в архив по движению». Результат выглядит так:

obzor-xeoma_o

Что имеем в итоге

Давайте подведем итоги и выясним, получилось ли достичь поставленных задач? Итак.

  • Запись с камер в архив по движению — Да. Это основная функция всех без исключения систем видеонаблюдения
  • Легкость включения и выключения мониторига — Да. Старики, женщины и дети в состоянии тапнуть ссылку на смартфоне или забыть это сделать
  • Автоматическая постановка на охрану — Да. Специально для забывчивых, постановка на охрану осуществляется по отсутствию движения (не забудьте исключить котов и кошек и правильно настроить датчик)
  • Индикация включения/выключения мониторинга — Да.
  • Минимизация архива хранимых данных — Да. Система не пишет все подряд и избавит Вас от просмотра тонн архивных записей с Вашими домочадцами
  • Никакого дополнительного железа — Да. Мы не покупали никаких ТМ датчиков, проводов и кнопок.
  • Хранение фото/видео материала в интернете — Да. Xeoma содержит необходимые модули, которые не рассматриваются в этой статье.

    Домашнее задание

    Схема с не отключаемым по лицу мониторингом выглядит следующим образом. Постановка на охрану (также как и снятие) осуществляется вручную и не может быть отключена «Детектором лиц». Надеюсь, будет интересно создать ее самостоятельно.

    obzor-xeoma_p

    Тот, кто паркует автомобиль перед домом, может создать следующую логику отключения видео наблюдения: Отключение производится по доверенному лицу при наличии автомобиля с указанным номером на парковке.

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

    Мое мнение о Xeoma

    Если кратко – то просто супер. Весьма рад, что неудачная покупка ущербных камер открыла для меня такое огромное поле для творчества.

    О том, что мне понравилось, я постарался описать подробно, а о том, что нет – писать лень, но, делая усилие, я продолжу.

    1. «Инновационный» интерфейс программы разрабатывался для тачскринов, поэтому работать с ним мышкой не удобно, хотя и можно. Будьте осторожны когда попытаетесь скролить страницу с настройками какого-нибудь модуля. Если курсор зависнет над ползунком, то тот сдвинется, а Вы этого даже не заметите.
    2. «Раскачивание» интерфейса. Например, в настройках камеры, программа пытается уведомить о низком fps или неверном URL, сдвигая настройки вниз. В итоге клик попадает не в то место, в какое планировалось
    3. При построении больших и разветвленных схем они становятся не читаемыми. Например, масса HTTP переключателей никак не помечается и что они делают завтра уже можно не вспомнить, а если систему проектировал другой сотрудник компании, то другому разобраться с ней будет очень сложно. Также, например, если в реле переключатель завести два линка из HTTP переключателей, то в модуле они будут фигурировать как HTTP переключатель 1 и HTTP переключатель 2. 1 – это тот который присоединен первым, а 2 – вторым, но через час вы об этом уже забудете.

     Метки:  

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технический блог © 2016
SQL - 62 | 0,182 сек. | 7.89 МБ