Управление камерой
ZoneMinder предоставляет возможность управлять камерами через веб-интерфейс и в некоторой степени автоматически. Камеры с панорамированием, наклоном и зумом (PTZ) имеют широкий спектр возможностей и используют большое количество различных протоколов, что делает любое универсальное решение для управления потенциально очень сложным. Чтобы решить эту проблему, ZoneMinder использует два ключевых подхода.
- Определение возможностей
Для каждой модели камеры, которую вы используете, должна быть создана запись в таблице возможностей камеры. Они указывают, какие функции поддерживает камера, и обеспечивают, чтобы интерфейс отображал только те возможности, которые поддерживает камера. Существует очень большое количество возможностей, которые могут быть поддержаны, и очень важно, чтобы записи в этой таблице отражали фактические возможности камеры. В ZoneMinder включено небольшое количество примеров возможностей, которые можно использовать «как есть» или модифицировать.
- Управляющие скрипты
ZoneMinder сам по себе обычно не предоставляет возможности отправлять команды камерам или получать ответы. То, что он делает, это посредничает запросы на движение от веб-интерфейса в стандартный набор команд, которые передаются в скрипт, определенный в возможности управления. Примеры скриптов предоставляются в ZoneMinder, которые поддерживают несколько протоколов последовательного или сетевого обмена данными, но для многих камер, вероятно, придется создавать новые скрипты. Эти скрипты можно моделировать на основе примеров, или если уже существуют команды управления из других приложений, то скрипт может просто действовать как слой связующего кода между ZoneMinder и этими командами.
Необходимо подчеркнуть, что элементы управления и функциональности ZoneMinder не предназначены для поддержки каждой камеры из коробки. Для многих камер, вероятно, потребуется некоторая разработка.
Управление мониторами
Если вы определили свою систему как имеющую контролируемые мониторы и смотрите на монитор, который настроен на контроль, то щелчок по ссылке «Контроль» в верхней части окна изменит область короткого списка событий на область контроля. Способности, которые вы определили ранее, определяют, что именно отображается в этом окне. Обычно вы будете иметь область управления панорамированием / наклоном, а также одну или несколько дополнительных областей управления, таких как зум или фокусировка, сбоку. Если у вас есть поддержка предустановок, они будут находиться в нижней части окна. Нормальным способом управления монитором является щелчок на соответствующих графических элементах, которые затем отправляют команду через скрипт управления камере. Это может иногда занимать заметную задержку, прежде чем камера ответит.
Обычно бывает так, что управляющие стрелки чувствительны к тому, где вы на них кликаете. Если у вас есть камера, которая позволяет использовать разные скорости для панорамирования или увеличения и т. д., то щелчок рядом с кончиком стрелки вызовет более быструю скорость, а щелчок рядом с основанием стрелки будет медленнее. Если вы определили непрерывное движение, то текущие действия можно остановить, щелкнув в области между стрелками, которая будет либо графическим элементом в случае управления панорамированием / наклоном, либо словом в случае управления увеличением и фокусировкой и т. д.
Некоторые контрольные возможности, такие как привязка движения, позволяют напрямую управлять щелчком мыши непосредственно по изображению при использовании в браузерах, которые поддерживают потоковые изображения напрямую. Используя его таким образом, вы можете просто щелкнуть мышью в области изображения, которая вас интересует, и камера сфокусируется на этом месте. Вы также можете использовать прямой контроль изображения для относительного движения, когда область изображения, по которой вы щелкаете, определяет направление, а расстояние от центра изображения определяет скорость. Поскольку определить направление вблизи центра изображения не всегда легко, активная область начинается только на небольшом расстоянии от центра, что приводит к «мертвой» зоне в середине изображения.
Управление потоком
Обладая базовыми знаниями о том, как работает управление камерой в ZoneMinder, вы сможете значительно облегчить решение проблем в будущем. Важно отметить, что многие из «сценариев управления камерой» являются пользовательскими и вполне возможно, что они перестанут работать в будущей версии обновления.
ZoneMinder полагается на «контрольные протоколы» для конкретных моделей камер. Эти «контрольные» протоколы являются ничем иным, как пакетами на языке Perl, расположенными в «/usr/share/perl5/ZoneMinder/Control/» (в дистрибутивах Ubuntu), которые вызываются ZoneMinderом при выполнении операции PTZ.
Когда вы ассоциируете «протокол» для PTZ для камеры, вы фактически сообщаете ZoneMinder, где находится perl-файл, который в конечном итоге будет контролировать движение камеры
Предположим, вы настраиваете камеру Foscam 9831W и ассоциировали протокол „9831w“ с этой камерой. Это означает, что когда вы перемещаете камеру через ZoneMinder, она передает эти движения модулю FI9831w.pm в «/usr/share/perl5/ZoneMinder/Control/».
ZoneMinder также поддерживает параметры конфигурации протокола в таблице под названием «Управление» в базе данных. Эта таблица используется для хранения параметров, таких как поддерживает ли камера непрерывное движение, зум и т.д.
Таблица «Controls» используется ZoneMinder для создания своего веб-интерфейса PTZ. Например, камера FI9831W не поддерживает Зум - поэтому, когда вы открываете веб-интерфейс PTZ ZoneMinder через Веб-консоль и переходите к камере FI9831W, опция «Зум» не будет отображаться. Это потому, что запись в таблице «Controls» для FI9831W указывает, что она не поддерживает Зум. Обратите внимание, что эти параметры можно редактировать через Источник->Control->Тип управления->Редактировать в веб-консоли
Если вы когда-нибудь посмотрите на любой из файлов протоколов управления, вы заметите, что в них есть функции, такие как
moveRelUpилиmoveConLeftи т. д. -> это функции, которые в конечном итоге вызываются для перемещения камеры и ожидается, что разработчики, которые реализуют отсутствующие профили камер, заполняют эти функции соответствующими командами камеры. Таким образом, основной код ZoneMinder не должен беспокоиться о командах камеры. Все, что ему нужно знать, это функции камеры, и в соответствии с этим он вызывает абстрактные команды в файле протокола perl и ответственность за конкретные детали лежит на файле perl для этой камеры. Таким образом, если у вас возникают проблемы с PTZ, эти файлы протокола - это то, что вам следует отлаживать.
Управляющие возможности
Если у вас есть камера, поддерживающая управление PTZ, и вы хотите использовать ее с ZoneMinder, первое, что вам нужно сделать, это убедиться, что она имеет точную запись в таблице возможностей. Чтобы сделать это, вам нужно перейти на вкладку «Управление» диалогового окна настройки монитора и выбрать «Редактировать», где она указана в поле выбора типа управления. Это приведет к появлению нового окна, которое содержит, с кратким резюме, существующие возможности. Чтобы изменить существующую возможность для ее модификации, выберите Id или Название выбранной возможности, или нажмите кнопку «Добавить», чтобы добавить новую возможность контроля. Любой из этих подходов создаст новое окно, знакомого стиля, с вкладками в верхней части и полями для ввода ниже. В случае таблицы возможностей есть большое количество настроек и вкладок, назначение и использование которых объясняются ниже.
Главная вкладка
- Наименование
Это имя возможности управления, обычно имеет смысл называть возможности по модели камеры или протоколу, используемому.
- Тип
Является ли способность использовать локальный (обычно последовательный) или сетевой протокол управления.
- Команда
Это полный путь к скрипту или приложению, которое будет переводить стандартный набор команд управления ZoneMinder на эквивалентные команды протокола управления. Это может быть один из поставляемых примерных скриптов zmcontrol-*.pl или что-то совершенно другое.
- Могу Проснуться
Это первая из реальных определений возможностей. Проверка этого флажка указывает на то, что существует протокольный команд для пробуждения камеры из спящего состояния.
- Можно спать
Камеру можно усыпить.
- Можно сбросить
Камеру можно сбросить до ранее определенного состояния.
Переместить Табуляцию
- Можно двигаться
Камера способна двигаться, то есть панорамировать или наклоняться.
- Может двигаться по диагонали
Камера может двигаться диагонально. Некоторые устройства могут двигаться только вертикально или горизонтально одновременно.
- Можно переместить сгенерированное
Камера способна внутренне сопоставить точку на изображении с определенной степенью движения, чтобы центрировать эту точку в изображении.
- Can Move Absolute
Камера может перемещаться в абсолютное местоположение.
- Можно Переместить Относительно
Камера может перемещаться в относительное местоположение, например, на 7 точек влево или вверх.
- Могу Перемещать Непрерывный
Камера может непрерывно перемещаться в определенном направлении до тех пор, пока ей не прикажут остановиться или не будут достигнуты пределы движения, например, влево.
!пан таб
- Может Пан
Камера может панорамировать, или двигаться горизонтально.
- Минимальный/максимальный диапазон панорамирования
Если камера поддерживает абсолютное движение, это являются минимальными и максимальными координатами панорамирования, которые могут быть указаны, например, от -100 до 100.
- Минус/Макс Стен
Если камера поддерживает относительное движение, это минимальное и максимальное количество движения, которое можно указать.
- Скорость Пана
Камера поддерживает спецификацию скоростей панорамирования.
- Минимальная/Максимальная Скорость Панорамирования
Минимальная и максимальная скорость панорамирования, поддерживаемая.
- У Турбо Пан
Камера поддерживает дополнительную турбо скорость панорамирования.
- Турбо Скорость Обжаривания
Фактическая скорость турбопанели.
Наклон Таб
Определение возможностей наклона, поля, как для вкладки «Панорама».
Таблица Zoom
- Can Zoom
Камера может увеличивать.
- Может Zoom Абсолютный
Камера может увеличивать до абсолютной позиции.
- Может Zoom Relative
Камера может приближаться к относительному положению.
- Может ли Zoom быть непрерывным?
Камера может непрерывно приближать или удалять изображение до тех пор, пока ей не прикажут остановиться или не будут достигнуты пределы масштабирования.
- Минимальный/максимальный диапазон масштабирования
Если камера поддерживает абсолютное масштабирование, это минимальное и максимальное значения масштабирования, которые могут быть указаны.
- Минимальный/Максимальный шаг масштабирования
Если камера поддерживает относительное масштабирование, это минимальное и максимальное значение изменения масштаба, которое можно указать.
- Ускорение Zoom
Камера поддерживает настройку скорости зума.
- Минимальная/Максимальная Скорость Зуммирования
Минимальная и максимальная скорость зуммирования, поддерживаемая.
Вкладка Фокус
Определение возможностей фокусировки, поля как для вкладки «Увеличение», но с дополнительной возможностью.
- Можно Автофокус
Камера может автоматически фокусироваться.
Белая Таблетка
Определение возможностей баланса белого, поля для вкладки «Настройка фокуса».
Iris Tab
Определение возможностей управления Ирисом, поля для вкладки «Фокус».
Presets Tab
- Has Presets
Камера поддерживает предустановленные положения.
- Num Presets
Сколько предустановок поддерживает камера. Если камера поддерживает огромное количество предустановок, то имеет смысл указать здесь более разумное число, 20 или меньше рекомендуется.
- Has Home Preset
Камера имеет определенную позицию «дома», обычно в середине своего диапазона.
- Can Set Presets
Камера поддерживает настройку предустановленных местоположений через свой протокол управления.
Управляющие скрипты
Второй ключевой элемент управления камерами с помощью ZoneMinder - это обеспечение наличия соответствующего скрипта управления или приложения. В комплект ZoneMinder входят несколько примеров скриптов, которые можно использовать непосредственно или в качестве основы для разработки. Скрипты выполняются атомарно, то есть одна запрашиваемая операция с веб-интерфейса приводит к одному выполнению скрипта и не сохраняется состояние. Если ваш протокол требует сохранения состояния, то убедитесь, что ваши скрипты делают это, поскольку ZoneMinder не имеет понятия о состоянии камеры в терминах управления.
Если вы пишете новый скрипт управления, убедитесь, что он поддерживает параметры, которые ZoneMinder передаст ему. Если у вас уже есть скрипты или приложения, управляющие вашими камерами, скрипт управления ZoneMinder будет просто клеем для преобразования параметров, переданных в форму, которую понимает ваше существующее приложение. Если вы пишете скрипт для поддержки нового протокола, вам потребуется преобразовать параметры, переданные в скрипт, в эквивалентные команды протокола. Если вы тщательно определили свои возможности управления выше, вы должны ожидать только команды, соответствующие этим возможностям.
Ниже определены стандартные параметры, передаваемые в управляющие скрипты.
–device=<device> : Это устройство управления из определения монитора. Отсутствует, если не указано устройство.
—адрес=<адрес> : Это контрольный адрес из определения монитора. Обычно это имя хоста или IP-адрес для сетевых камер или простой номер камеры для других камер.
–autostop=<timeout> : Это указывает, должна ли быть применена автоматическая задержка для „““остановки“““ данной команды. Она будет включена только для „““непрерывных“““ команд, как указано ниже, и будет представлять собой задержку в десятичных секундах, вероятно, дробную.
—команда=<команда> : Это указывает команду, которую скрипт должен выполнить. Допустимые команды приведены ниже.
–xcoord=<x>, –ycoord=<y> : Это специфицирует координаты X и/или Y для команд, которые их требуют. Они обычно будут абсолютными или привязанными к карте командами.
—width=<width>““, „“–height=<height> : Это специфицирует ширину и высоту текущего изображения, для команд перемещения, где значения координат, передаваемые в контексте, должны иметь контекст.
–speed=<speed> : Это указывает скорость, которую команда должна использовать, если это уместно.
—panspeed=<speed>““, „“–tiltspeed=<speed> : Это указывает на конкретные скорости панорамирования и наклона для диагональных движений, которые могут позволить разную скорость движения для горизонтальных и вертикальных компонентов.
–step=<step> : Это указывает количество движения, которое команда должна использовать, если это уместно. Обычно используется только для относительных команд.
—panstep=<step>“, „“–tiltstep=<step> : Это указывает на конкретные шаги панорамирования и наклона для диагональных движений, которые могут позволить разное количество движения для горизонтальных и вертикальных компонентов.
–preset=<preset> : Это указывает на конкретный пресет, который соответствующие команды должны использовать.
Вариант команды, указанный выше, может принимать один из следующих параметров в качестве параметра.
- проснись
Разбуди камеру.
- !спать
Отправь камеру в спящий режим.
- сброс
Сброс камеры.
- переместить_карту
Перемещение отображается в указанной точке изображения.
- переместить_псевдо_карту
Как перемещение по карте выше. Псевдо-замоченное движение может быть использовано, когда поддерживается только относительное движение, в этом случае псевдо-замоченное движение можно грубо аппроксимировать путем тщательной калибровки.
- move_abs_<direction>
Перейти в указанную абсолютную позицию. Элемент направления дает намек на направление, в котором следует двигаться, но может быть опущен. Если он присутствует, он будет одним из «вверх», «вниз», «влево», «вправо», «вверху», «вверх», «внизу» или «внизу».
- move_rel_<direction>
Переместить указанное количество в заданном направлении.
- move_con_<направление>
Двигаться непрерывно в указанном направлении до тех пор, пока не будет дана команда остановиться.
- move_stop
Остановить любое движение, которое может быть в процессе.
- zoom_abs_<direction>
Увеличить до указанного абсолютного уровня масштабирования. Элемент направления дает намек на направление, в котором следует двигаться, но его можно опустить. Если он присутствует, он будет одним из «теле» или «широкий».
- zoom_rel_<direction>
Увеличьте указанное количество в заданном направлении.
- zoom_con_<direction>
Увеличивать масштаб постоянно в указанном направлении до тех пор, пока не будет дана команда остановиться.
- zoom_stop
Прекратить любое масштабирование, которое может быть в процессе.
- фокус_авто
Установить фокусировку автоматически.
- фокус-мужчина
Установить фокусировку в ручной режим.
- focus_abs_<direction>
Сосредоточиться на указанной абсолютной позиции фокусировки. Элемент направления дает намек на направление, в котором следует двигаться, но может быть опущен. Если он присутствует, он будет одним из «близко» или «далеко».
- focus_rel_<direction>
Сосредоточьтесь на определенной сумме в указанном направлении.
- focus_con_<direction>
Фокусируйтесь непрерывно в данном направлении до тех пор, пока не будет дано указание остановиться.
- !остановка фокуса
Прекратить любое фокусирование, которое может быть в процессе.
- white_<subcommand>
Согласно командам фокуса, за исключением того, что направление может быть «в» или «наружу».
- iris_<subcommand>
Согласно командам фокуса, за исключением того, что направление может быть «открытым» или «закрытым».
- preset_set
Установите заданный пресет на текущее местоположение.
- preset_goto
Перейти к заданному пресету.
- preset_home
Перейти к предустановке «домой».