Автоматическое сохранение фото тревожных событий с камер наблюдения

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

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

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

Внимательный и знакомый с устройством видеорегистраторов читатель скорее всего скажет, что такая схема уже есть — это «сливание» записей по протоколу 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

Завершение отключенных сеансов на терминальном сервере

Завершение отключенных сеансов на терминальном сервере

Перенос сайта на другой хостинг — NS серверы

Перенос сайта на другой хостинг — NS серверы

У вас WordPress — значит вас постоянно пытаются взломать

У вас WordPress — значит вас постоянно пытаются взломать

Расширение квоты хранилища правил Outlook

Расширение квоты хранилища правил Outlook

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

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

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