Automatic saving of photos of alarm events from surveillance cameras

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

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

И при этом пусть мы и скорее всего теряем безвозвратно записи с жесткого диска, но дублирующая схема позволяет сохранить данные где-то вдалеке от возможного физического вмешательства подозрительных лиц – что поможет в поимке злоумышленника.

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

Скажем так, система “сливания” записей по FTP на видеорегистраторах не совершенна, работает через ж….пу и не дает никакой гарантии, что данные будут сохранены. Да и не все регистраторы нормально работают с FTP.

Т.е. тут не работает принцип – “настроил и забыл”. Нужно постоянно контролировать процесс перекидывания записей и разбираться с каждым неудавшейся попыткой. Это утомительно, когда таких объектов станет уже около 20-ти. А когда их становится около 100, то начинаешь задумываться о том, как это все контролировать…

Тревожные события камер

Практически на каждой IP камере видеонаблюдения есть простейший механизм срабатывания при наличии в поле зрения камеры движения. Данный механизм отправляет некое событие в центр сообщений (обычно это видеорегистратор, который делает запись данного инцидента по событию), а также это событие можно использовать в своих целях – а именно отправить фото объекта в кадре посредством почтового сообщения. Что нам и нужно.

Т.е. настройках можно указать:

  • Некое базовое событие (Basic Event) появления в зоне срабатывания движущегося обьекта. Например – только зона открытия двери.
  • Расписание срабатывания (Arming Schedule) согласно которого события будут регистрироваться. Например – только ночью.
  • Метод оповещения (Linkage Method) – настройка, в которой нужно поставить флажок напротив пункта Email

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

Если вы не знаете, как настроить сеть на вашей камере – обратитесь к своему системному администратору)

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

А лучше обратим пристальное внимание на поле – Sender, куда надо вписать удобочитаемое название камеры, по которому мы будем узнавать, от какой камеры пришло уведомление. А так как камер много – то и названия указывайте понятные для себя и последующего разбора )

Если при нажатии кнопки “Тестировать” – сообщение успешно отправляется и доставляется в целевой почтовый ящик, то будем считать, что настройка со стороны камеры завершена. Перейдем к другой части – сохранение фото с камеры.

Автосохранение тревожных фото при помощи Outlook

Давайте представим, что мы вышеописанным способом настроили 50 камер на объектах и они непрерывно шлют свои тревожные фото на целевой ящик, читать этот непрерывный поток сообщений у человека возможности точно не будет.

К тому же обращаться к этим фото нужно будет только при наличии какого-то инцидента на объекте, требующего “разбора полетов”, поэтому будем придумывать, как сохранять сообщения на жестком диске компьютера, сортируя его по папкам с названиями камер и датами.

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

Outlook 2016:
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\

Outlook 2013:
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Security\

Добавить параметр типа DWORD с именем EnableUnsafeClientMailRules со значением 1.

Если не очень понятно, то более подробно расписано тут – support.microsoft.com

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

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

Собственно макрос сохранения

Итак, допустим, что на целевой почтовый ящик приходят сообщения от камеры, у которой в поле “Sender” на этапе ее настройки я написал “CAM_Kyev_1“, а следовательно, все сообщения, приходящие от этой камеры, будут содержать в теме письма что-то такое: “CAM_Kyev_1: on Camera1: Motion Detection” – что позволяет настроить сохранение конкретно от этой камеры конкретную папку на диске компьютера.

На диске компьютера я создаю структуру папок примерно такую:

На рисунке понятно, куда от какой камеры будет скидываться информация

После того, как папка на жестком диске готова, нужно создать макрос для обработки данного правила камеры №1. Для создания макроса будем использовать основу отсюда, так как подобная задача уже решалась и мы видоизменим ее.

При открытом окне аутлук нажимаем сочетание клавиш Alt+F11, для того, чтобы открыть редактор VBS. Нажатием правой кнопки мыши вставляем модуль, в котором будем писать код:

В теле модуля пишем следующее:

Public Sub CAM_Kyev_1(itm As Outlook.MailItem)

    Dim objAtt As Outlook.Attachment
    Dim saveFolder As String
    dateOfMailItem = Format(itm.CreationTime, "dd.mm.yyyy_hhnnss")
    saveFolder = "D:\Arhive\CAM_Kyev_1\"
    If Dir((saveFolder & Format(Date, "DDMMYYYY")), vbDirectory) = "" Then MkDir (saveFolder & Format(Date, "DDMMYYYY"))
    saveFolder = "D:\Arhive\CAM_Kyev_1\" & Format(Date, "DDMMYYYY")
    For Each objAtt In itm.Attachments
    objAtt.SaveAsFile saveFolder & "\" & dateOfMailItem & "_" & objAtt.FileName
    Set objAtt = Nothing
    Next
    
End Sub

После чего сохраняем проект и закрываем редактор.

Создание правил

После того, как макрос готов – его можно применить в правиле обработки сообщений. Для этого, тыкаем правой кнопкой на любое сообщение от нужной нам камеры и выбираем “Создать правило”, “Дополнительно”.

На втором этапе “Что делать с сообщением” выбираем запуск скрипта и выбираем нужный нам макрос:

Также не забывайте включить опцию для всех старых сообщений, которые уже находятся в папке “Входящие”. Ну и назвать правило следует как можно короче и понятнее, дабы избежать путаницы.

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

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

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

На что следует обратить внимание

  • “Мощность” компьютера должна быть пропорциональна количеству камер, с которых принимаются сообщения. Т.е. если взять слабый комп и загрузить его этой непосильной задачей – то много писем будут просто оставаться в очереди и он будет не успевать…
  • К данному компьютеру следует подвести нормальный Интернет, пропускная способность которого также прямо пропорциональна количеству камер.
  • Складировать фото лучше по сети на какой-то защищенный файловый сервер, для чего в скрипте достаточно правильно указать пути сохранения.
  • Скрипт скорее всего несовершенен и при использовании каждый может “подпилить” его под себя.
  • Поглядывайте иногда на то, как идет процесс сохранения фото, так как Outlook, как и любая другая программа любит зависать )
  • Камеры помимо нужной информации часто присылают еще и текстовые файлы (*.txt), которые нам не нужны.

Для удаления ненужных текстовых файлов из папок с архивом фото тревожных событий от камер можно воспользоваться простым cmd скриптом, запускаемом по расписанию:

For /R "D:\Arhive\" %%i in (*.txt) Do ( Del /q "%%i")

Этот скрипт просто пройдется по всем папкам и удалит текстовые файлики.

В общем на этом повествование о таком нестандартном решении проблемы завершаем. Самое интересное, что данное решение было применено и даже принесло пользу, что не может не радовать )

Related Posts

Ending disconnected sessions on a terminal server

Ending disconnected sessions on a terminal server

Website transfer to another hosting – NS servers

Website transfer to another hosting – NS servers

You have WordPress – it means they are constantly trying to hack you

You have WordPress – it means they are constantly trying to hack you

Extending the Outlook Rules Store Quota

Extending the Outlook Rules Store Quota

Тут еще никто не писал

Leave a Reply

Your email address will not be published. Required fields are marked *