Агент DVR

Подключает ioBroker к AgentDVR: автоматически обнаруживает камеры, отображает все значения устройств в виде точек данных, обеспечивает срабатывание триггеров в реальном времени при появлении новых записей и генерирует адаптивную HTML-галерею с возможностью поиска и фильтрации по тегам.

Текущий релиз
0.5.2
Разработчик
ipod86
Лицензия
MIT

адаптер agent-dvr для ioBroker

Подключает ioBroker к AgentDVR : автоматически обнаруживает все камеры, отображает свойства каждого устройства в виде точек данных, предоставляет кнопки для всех распространенных команд (запись, постановка на охрану, PTZ и т. д.), обеспечивает обновление галереи при появлении новых записей, генерирует адаптивный HTML-виджет галереи для каждой камеры и включает встроенную панель мониторинга в реальном времени с выбором потока для каждой камеры (MJPEG, MP4/FLV со звуком или go2rtc WebRTC).

Требования

  • ioBroker сiobroker.web адаптер
  • AgentDVR ≥ 7.8.0.0 — в более ранних версиях наблюдается регрессия вstreamFile.cgi Конечная точка (неправильно сформированная кодировка фрагментов, неверный MIME-тип), которая препятствует записи и воспроизведению во встроенной панели управления. Разработчик подтвердил, что исправление включено в версию 7.8.0.0.

Функции

  • Автоматическое обнаружение всех камер AgentDVR при запуске (за исключением микрофонов).
  • Все свойства устройства отображаются в виде точек данных (полученных из API в плоском виде).
  • Кнопки управления для каждого устройства: запись, снимок, обнаружение, оповещения о постановке/снятии с охраны, включение/выключение, обнаружение объектов, включение/выключение по расписанию, включение/выключение детектора, чувствительность (мин/макс/усиление), сброс, …
  • Кнопки системного уровня: постановка на охрану, снятие с охраны, включение/выключение всех устройств, перезагрузка, управление хранилищем, перезапуск, …
  • Селектор профиля — выпадающий список, отображающий текущий профиль AgentDVR (Дома / Вне дома / Ночь / пользовательский).
  • Снимок в формате Base64snapshot_b64 Состояние каждой камеры, заменяемое кнопкой или автоматически обновляемое при каждом цикле опроса.
  • Управление поворотно-наклонной платформой с помощью кнопок, позволяющих удерживать кнопку для перемещения.
  • URL-адреса потоковой передачи для каждой камеры (снимок, фото, MJPEG, MP4)
  • Конечная точка веб-перехватчика для обновлений в реальном времени — вызовите ее из действия AgentDVR, чтобы немедленно запустить полный опрос.
  • HTML-виджет галереи записей для каждой камеры (widget_recordings ) и живой тайл с одной камеры (widget_live — чистый HTML/CSS или полнофункциональный JS-режим с поиском и фильтром по тегам.
  • Виджет обзора, объединяющий все камеры в одном HTML-состоянии.
  • Встроенная панель мониторинга в режиме реального времени по адресуhttp://<iobroker>:<webport>/agent-dvr.0/ — Дополнительное приложение не требуется:
    • Выбор формата потока для каждой камеры: MJPEG, MP4/FLV со звуком или go2rtc WebRTC/MSE.
    • Кнопка фильтра камер в заголовке (значок воронки) — открывает всплывающее окно с флажками для каждой камеры; значок показывает, сколько камер скрыто; состояние сохраняется в localStorage.
    • Индикаторы движения и оповещения в реальном времени (желтая/оранжевая рамка плиток) через Socket.io
    • Полноэкранный режим с наложением PTZ-эффекта, записью, отключением звука и встроенной кнопкой полноэкранного режима браузера; заголовок автоматически скрывается.
    • Вкладка «Записи» с отображением в виде сетки, временной шкалы и журнала событий, поиском, сворачиваемым фильтром по тегам и видеоплеером с навигацией «Предыдущее/Следующее».
    • Удаление записи непосредственно из всплывающего окна видеоплеера (требуется AgentDVR версии 7.7.8.0 и выше).
    • Настройки отображения записей — значок шестеренки ⚙ на панели выбора/удаления регулирует ширину столбцов сетки, максимальное количество отображаемых записей и видимость значка (сохраняется в localStorage).
    • Цвета с камер считываются из AgentDVR и применяются к полосам временной шкалы и точкам записи.
    • Предустановки PTZ — перейдите к сохраненным предустановкам из окна PTZ (требуется AgentDVR версии 7.7.8.0 и выше)
    • В строке состояния отображается количество камер в режиме реального времени и количество записей/событий в режиме записи.
    • Автоматическое переподключение для всех типов потоков после прерывания сети или переключения вкладок.
    • Полностью настраиваемая цветовая гамма через конфигурацию адаптера.

Конфигурация

Вкладка: Подключение

ПараметрОписаниеПо умолчанию
AgentDVR IPIP-адрес сервера AgentDVR
ПортПорт HTTP AgentDVR8090
Имя пользователяНеобязательное имя пользователя для базовой HTTP-аутентификации
ПарольНеобязательный пароль для базовой HTTP-аутентификации
Интервал опроса (с)Как часто следует получать данные из AgentDVR (5–3600)30
Таймаут HTTP (мс)Таймаут на каждый API-запрос (1000–30000)8000

Вкладка: Функции

Элементы управления

ПараметрОписаниеПо умолчанию
Кнопки управления системойСоздайте кнопки постановки/снятия с охраны/перезапуска/… и селектор профилей.true
Кнопки управления PTZСоздайте переключатели удержания PTZ-управления для каждой камеры (влево, вправо, вверх, вниз, по диагонали, масштабирование, остановка, центрирование).true
Сгенерировать URL-адреса потоковСоздание состояний URL (снимок, MJPEG, MP4) для каждой камерыtrue
Снимок в формате Base64Автоматическая загрузка и сохранение текущего кадра в формате Base64 при каждом опросе.false

События

ПараметрОписаниеПо умолчанию
Точки данных событияМетаданные зеркальной записи (последнее событие, количество, теги и т. д.) для каждой камеры.true

Отображать

ПараметрОписаниеПо умолчанию
Виджет обзораЕдиное HTML-состояние, объединяющее все плитки с изображением с камеры в режиме реального времени.true

Прокси

ПараметрОписаниеПо умолчанию
Медиа-проксиПередавайте потоки MJPEG, снимки экрана, миниатюры записей и видео через ioBroker.false

Отлаживать

ПараметрОписаниеПо умолчанию
Хранить необработанные JSON-данные APIНапишите полный ответ от функции getObjects в system.raw_getObjectsfalse

Вкладка: Панель управления

Вид по умолчанию

ПараметрОписаниеПо умолчанию
Вид по умолчаниюКакая вкладка открывается при загрузке панели управления: «В прямом эфире» или «Записи»?Live
Показать офлайн-камерыОтображение изображений с камеры даже в автономном режиме.true
Максимальное общее количество записейМаксимальное количество записей, отображаемых на панели управления для всех камер (сначала самые новые). Не зависит от ограничения виджета.200

Сетка камер

ПараметрОписаниеПо умолчанию
КолонкиКоличество столбцов сетки (0 = автоматическая подгонка по ширине плитки)0
Кнопки всегда на видуОтображать кнопки записи/PTZ постоянно, а не только при наведении курсора.false
положение бейджаУгол, где на каждом блоке отображается табличка с названием камеры.bottom-right

Транслировать

ПараметрОписаниеПо умолчанию
Интервал обновления (с)Как часто панель управления повторно запрашивает данные с камеры (10–600)60
Автоматическое переподключение потоковАвтоматическое переподключение потоков MJPEG, MP4/FLV и go2rtc после ошибки или переключения вкладки.true

Цветовая гамма — 7 вариантов выбора цвета для вашего пользовательского интерфейса:

ПараметрОписание
ФонЦвет фона страницы/сетки
ПоверхностьФоновое изображение с камеры
АкцентЦвет выделения/активного элемента
ТекстОсновной цвет текста
ГраницаЦвет границы плитки
Онлайн-индикаторЦвет точки онлайн-статуса
Индикатор офлайнЦвет точки, указывающей на офлайн-статус

Распределение по потокам

Здесь вы назначаете источник потока каждой камере по отдельности. В выпадающем списке отображаются все камеры, обнаруженные AgentDVR (микрофоны исключены).

ВариантОписание
MJPEG (AgentDVR)Классический MJPEG-поток, предоставляемый AgentDVR — минимальная задержка, без звука.
MP4 / FLV со звуком (AgentDVR)Поток FLV, передаваемый через ioBroker с использованием flv.js — включает звук, правильное соотношение сторон.
Название потока (go2rtc)Потоковая передача WebRTC/MSE от go2rtc — плавная, с низкой задержкой, поддержка звука.

Названия потоков go2rtc автоматически загружаются с сервера go2rtc при открытии административного интерфейса. Если браузер не может напрямую связаться с go2rtc (например, при передаче смешанного контента по HTTPS), адаптер загружает их на стороне сервера в качестве резервного варианта.

URL-адрес go2rtc (виден только в том случае, если хотя бы одна камера использует поток go2rtc)

ПараметрОписаниеПример
URL go2rtcБазовый URL вашего экземпляра go2rtchttp://192.168.1.10:1984

Примечание: go2rtc должен быть предварительно настроен для потоков. Адаптер только считывает список потоков и выступает в качестве прокси для WebSocket — он не настраивает go2rtc.

Вкладка: Виджет (виджет галереи для каждой камеры)

Общий

ПараметрОписаниеПо умолчанию
Включить виджетСоздайте HTML-виджет галереи для каждой камеры.true
режим виджетаNo JS — Чистый HTML/CSS, можно встраивать куда угодно;JS — Полная интерактивность с поиском и фильтрацией по тегам.No JS

Макет

ПараметрОписаниеПо умолчанию
Максимальное количество записейМаксимальное количество записей, отображаемых в виджете.20
Минимальная ширина колонки (в пикселях)Минимальная ширина каждого столбца с миниатюрами150
Максимальная ширина модального окна (в пикселях)Максимальная ширина модального окна воспроизведения видео.900

Теги

ПараметрОписаниеПо умолчанию
Показать тегиОтображайте метки записи на каждом миниатюрном изображении.true
положение бейджаУгол, где на миниатюре отображаются теги.bottom-left

Фильтр

ПараметрОписаниеПо умолчанию
Новейшие первымиСортировка записей: самые новые — вверху.true
Показать поискОтображение поля поиска текста в режиме JavaScriptfalse
Компактный режимБолее плотная компоновка с уменьшенными миниатюрами.false
Тег по умолчаниюВыберите этот фильтр по тегам при загрузке виджета.
Размер миниатюрыSmall /Medium / LargeMedium

Игрок

ПараметрОписаниеПо умолчанию
Соотношение сторон в реальном времениСоотношение сторон для предварительного просмотра прямой трансляции, например16/9
URL-адрес проигрывателяПользовательский URL-адрес для видеоплеера, используемого в виджете.

Цветовая схема — 5 палитр цветов + радиус скругления углов:

ПараметрОписание
Фон открыткиФоновое изображение карточки виджета
Фон тегаФоновый чип с тегом
Текст тегаЦвет текста метки чипа
АкцентВыделить цвет
Модальный фонФоновое изображение видеомодуля
Радиус скругления (пикселей)Закругленные углы для карт

Вкладка: Дополнительные параметры

ПараметрОписаниеПо умолчанию
Максимальная глубина рекурсииНа сколько уровней вложенности JSON-данные API преобразуются в точки данных (1–10)6
Максимальное количество элементов массиваМаксимальное количество элементов массива, дублируемых на одно свойство (1–500).30
Динамические тегиАвтоматическое создание точки данных тега для каждого уникального тега записи.false
Игнорировать теги (разделенные запятыми)Метки записей, которые следует исключить из точек данных события.
Фильтр по тегам (разделённые запятыми)Создавайте точки данных событий только для записей, соответствующих этим тегам.

Интерактивная панель мониторинга

В комплект адаптера входит встроенная панель мониторинга в режиме реального времени.http://<iobroker>:<webport>/agent-dvr.0/ Второй экземпляр доступен по адресу:/agent-dvr.1/ третий в/agent-dvr.2/ , и так далее.

Функции:

  • Выбор формата потока для каждой камеры: MJPEG, MP4/FLV со звуком (через flv.js) или go2rtc WebRTC/MSE.
  • Кнопка фильтра камер (значок воронки, заголовок в правом верхнем углу) — открывает всплывающее окно с флажками для каждой камеры и переключателем «Все»; значок показывает количество скрытых камер; состояние сохраняется в localStorage.
  • Полноэкранный режим с наложением PTZ-эффекта, кнопкой записи, кнопкой отключения звука и полноэкранным режимом браузера (заголовок автоматически скрывается через 3 секунды бездействия; появляется снова при нажатии мыши или касании).
  • Индикаторы движения в реальном времени (желтая рамка) и оповещения (оранжевая рамка) через Socket.io
  • Автоматическое переподключение: MJPEG и FLV переподключаются после ошибки; go2rtc переподключается после неожиданного закрытия WebSocket или задержки в 10 секунд.
  • Вкладка «Записи» с отображением в виде сетки, временной шкалы и журнала событий, поиском, сворачиваемым фильтром по тегам и видеоплеером с навигацией «Предыдущее/Следующее».
  • Фильтр тегов разделяет разделенные запятыми теги AgentDVR на отдельные чипы для фильтрации по каждому тегу.
  • Удалить запись из всплывающего окна видеоплеера или выбрать несколько записей, удерживая кнопку мыши и удаляя их одновременно (требуется AgentDVR версии 7.7.8.0 и выше).
  • Настройки отображения записи — кнопка ⚙ в виде шестеренки на панели выбора/удаления; ползунок для ширины столбцов сетки, ограничения максимального количества записей и переключения значка — все сохраняется в localStorage.
  • Значок «Новые записи» на вкладке «Записи» показывает, сколько записей появилось с момента вашего последнего посещения этой вкладки; базовое значение хранится в локальном хранилище браузера и является общим для каждого браузера/устройства (не используется разными браузерами или устройствами).
  • Цвета с камер считываются из AgentDVR и применяются к полосам временной шкалы и точкам записи.
  • Предустановки PTZ — переход к сохраненным предустановкам из окна PTZ; одна точка выбора данных для каждой камеры (требуется AgentDVR v7.7.8.0+)
  • В строке состояния отображается количество камер, загрузка процессора/оперативной памяти и свободное место на диске.
  • Цветовое оформление через конфигурацию адаптера

go2rtc WebRTC Streams

go2rtc обеспечивает плавную передачу аудиопотоков WebRTC/MSE с низкой задержкой.

Настраивать:

  1. Установите и запустите go2rtc, настройте потоки с камер в конфигурационном файле go2rtc.
  2. В разделе «Конфигурация адаптера» → вкладка «Панель управления» выберите из выпадающего списка желаемое имя потока go2rtc для каждой камеры.
  3. Введите URL-адрес go2rtc , который отображается под таблицей (например,http://192.168.1.10:1984 ).
  4. Сохраните изменения и перезапустите. Адаптер перенаправляет трафик WebSocket через ioBroker, чтобы обойти ограничения на междоменные соединения браузеров.

Медиа-прокси

Адаптер может направлять все медиафайлы через ioBroker, поэтому браузеру никогда не потребуется прямое подключение к AgentDVR. Включите медиа-прокси на вкладке «Функции».

Что используется в качестве прокси?Прокси отключенПрокси включен
Прямая трансляция в формате MJPEGпрямой URL AgentDVR/agent-dvr.0/api/mjpeg?oid=…
Снимокпрямой URL AgentDVR/agent-dvr.0/api/snap?oid=…
Миниатюры записейпрямой URL AgentDVR/agent-dvr.0/api/thumb?oid=…
Запись видеопрямой URL AgentDVR/agent-dvr.0/api/media?oid=…
Прямая трансляция FLVвсегда через ioBrokerвсегда через ioBroker
go2rtc WebSocketвсегда через ioBrokerвсегда через ioBroker

FLV и go2rtc всегда работают через ioBroker независимо от настроек — браузер не может напрямую отправлять запросы к этим конечным точкам из других источников.

Когда включать

  • Доступ к панели управления возможен извне вашей домашней сети, где AgentDVR недоступен напрямую из браузера.
  • Извне доступен только ioBroker (например, через обратный прокси или VPN).

Когда следует его выключить

  • Browser и AgentDVR находятся в одной сети (локальный доступ).
  • Прямое соединение быстрее — нет лишнего перехода, меньшая задержка.
  • Меньшая нагрузка на сервер ioBroker — потоки не проходят через Node.js.

Настройки вступают в силу немедленно после сохранения — перезапуск не требуется.

Точки данных

<cam> означаетcam_<oid>_<name> напримерcam_8_Reolink .

Система

Точка данныхТипР/ВОписание
system.onlineлогическийРУстановлено соединение с AgentDVR
system.lastUpdateнитьРISO-метка времени последнего успешного опроса
system.lastPollчислоРUnix-метка времени последнего опроса
system.cameraCountчислоРКоличество обнаруженных камер
system.disk_free_gbчислоРСвободное место на диске в ГБ
system.settings.*различныйРСглаженные настройки сервера AgentDVR
system.stats.*различныйРСтатистика ЦП/ОЗУ/диска
system.status.*различныйРСостояние системы (охрана, устройства, версия и т. д.)
system.raw_getObjectsнитьРИсходный JSON-объект getObjects (если включено)

Управление системой (требуются кнопки управления системой)

Точка данныхТипР/ВОписание
system.control.armкнопкаВПоставить систему на охрану
system.control.disarmкнопкаВОбезвредить систему
system.control.allOnкнопкаВВключите все устройства
system.control.allOffкнопкаВВыключите все устройства
system.control.reloadConfigкнопкаВПерезагрузите конфигурацию AgentDVR
system.control.reloadObjectsкнопкаВПерезагрузить объекты
system.control.runStorageMgmtкнопкаВЗапустите управление хранилищем.
system.control.blockExternalкнопкаВБлокировка внешнего доступа
system.control.unblockExternalкнопкаВРазблокировать внешний доступ
system.control.restartкнопкаВПерезапустите AgentDVR
system.control.refreshкнопкаВПринудительное проведение опроса
system.profile.selectorчислоР/ВИндекс активных профилей — выпадающий список (0 = Дома, 1 = Вне дома, …)
system.profile.listнитьРДоступные профили представлены в виде массива JSON.

По камерам

Точка данныхТипР/ВОписание
<cam>.nameнитьРНазвание камеры
<cam>.data.onlineлогическийРКамера подключена.
<cam>.data.connectedлогическийРПоток подключен
<cam>.data.recordingлогическийРСейчас ведётся запись.
<cam>.data.detectedлогическийРОбнаружено движение/объект
<cam>.data.detectorActiveлогическийРДатчик движения включен
<cam>.data.alertsActiveлогическийРВключены оповещения
<cam>.data.alertedлогическийРОповещение в данный момент активно.
<cam>.data.scheduleActiveлогическийРРасписание включено
<cam>.data.width /heightчислоРРазрешение потока
<cam>.data.*различныйРВсе дополнительные свойства устройства из AgentDVR
<cam>.snapshot_b64нитьРТекущий кадр какdata:image/jpeg;base64,… (рольmedia.picture )
<cam>.control.recordкнопкаВНачать запись
<cam>.control.recordStopкнопкаВОстановить запись
<cam>.control.recordRestartкнопкаВПерезапустить запись
<cam>.control.triggerRecordкнопкаВЗапуск записи (продолжается до истечения таймаута)
<cam>.control.snapshotкнопкаВДайте команду AgentDVR сохранить снимок на диск.
<cam>.control.refreshSnapshotB64кнопкаВПолучить текущий кадр и записать в него данные. snapshot_b64
<cam>.control.detectкнопкаВЗапуск обнаружения движения
<cam>.control.alertOnкнопкаВСигнализация тревоги
<cam>.control.alertOffкнопкаВОтключить оповещения
<cam>.control.switchOnкнопкаВВключите камеру
<cam>.control.switchOffкнопкаВВыключите камеру
<cam>.control.objectDetectOnкнопкаВВключить обнаружение объектов (только для камер)
<cam>.control.objectDetectOffкнопкаВОтключить обнаружение объектов (только для камер)
<cam>.control.scheduleOnкнопкаВВключить расписание работы устройства
<cam>.control.scheduleOffкнопкаВОтключить расписание работы устройства
<cam>.control.detectorOnкнопкаВВключите датчик движения
<cam>.control.detectorOffкнопкаВОтключите датчик движения.
<cam>.control.sensitivityMinчисло 0–100Р/ВЧувствительность детектора — минимальный порог (только для камер)
<cam>.control.sensitivityMaxчисло 0–100Р/ВЧувствительность детектора — максимальный порог (только для камер)
<cam>.control.sensitivityGainчисло 0–100Р/ВЧувствительность детектора — усиление (только для камер)
<cam>.control.recOnAlertкнопкаВВключите функцию "запись при получении оповещения"
<cam>.control.recOnDetectкнопкаВВключить функцию "запись при обнаружении"
<cam>.control.purgeкнопкаВУдалить все записи с этой камеры

PTZ (требуются кнопки управления PTZ)

Точка данныхТипР/ВОписание
<cam>.control.ptz.leftвыключательР/ВПеремещайте изображение влево (удерживайте, чтобы продолжить движение).
<cam>.control.ptz.rightвыключательР/ВПовернуть вправо
<cam>.control.ptz.upвыключательР/ВНаклон вверх
<cam>.control.ptz.downвыключательР/ВНаклонитесь вниз
<cam>.control.ptz.upLeftвыключательР/ВДиагональ вверх слева
<cam>.control.ptz.upRightвыключательР/ВДиагональ вверх
<cam>.control.ptz.downLeftвыключательР/ВДиагональ вниз-влево
<cam>.control.ptz.downRightвыключательР/ВДиагональ вниз прямо
<cam>.control.ptz.zoomInвыключательР/ВУвеличить масштаб
<cam>.control.ptz.zoomOutвыключательР/ВОтдалиться
<cam>.control.ptz.stopкнопкаВОстановить движение PTZ
<cam>.control.ptz.centerкнопкаВПереместиться на позицию центрального игрока/хозяина
<cam>.control.ptz.presetчислоР/ВСелектор предустановок — индекс записи для перехода к этой предустановке; перечисление states содержит списки названий предустановок (требуется AgentDVR версии 7.7.8.0 и выше).

URL-адреса потоков (требуется "Сгенерировать URL-адреса потоков")

Точка данныхТипР/ВОписание
<cam>.urls.snapshotнитьРURL-адрес текущего JPEG-снимка (только для камер)
<cam>.urls.photoнитьРURL-адрес конечной точки для фотографий (только для камер)
<cam>.urls.mjpegнитьРURL-адрес для прямой трансляции в формате MJPEG (только с камер)
<cam>.urls.mp4нитьРПрямая трансляция в формате MP4 по URL (только с камер)
<mic>.urls.audio_mp3нитьРURL-адрес для преобразования аудиопотока в MP3 (только для микрофонов)
<mic>.urls.audio_oggнитьРURL-адрес аудиопотока OGG (только для микрофонов)

Мероприятия / Галерея (только для фотоаппаратов)

Точка данныхТипР/ВОписание
<cam>.events.*различныйРПоследние метаданные записи — требуются "точки данных события".
<cam>.widget_recordingsнитьРГалерея HTML-записей — требуется виджет «Галерея»
<cam>.widget_liveнитьРHTML-плитка с одной камерой в режиме реального времени — требует «виджета галереи»; снимок обновляется при каждом опросе адаптера.

Вебхук

Адаптер предоставляет конечную точку веб-перехватчика, которая запускает немедленный полный опрос AgentDVR:

GET http://<iobroker>:<webport>/agent-dvr.0/webhook

Заменятьagent-dvr.0 с фактическим номером экземпляра (agent-dvr.1 (и т. д.), если вы запускаете несколько экземпляров.

Настройте этот URL-адрес в качестве действия в AgentDVR (Камера → Редактировать → Оповещения → Действия → URL), чтобы получать обновления в режиме реального времени всякий раз, когда запись заканчивается или срабатывает оповещение. Адаптер немедленно повторно получит все данные с камер, записи и системную статистику — не нужно ждать следующего цикла опроса.

Возвраты{"ok":true} об успехе.

Обзор (требуется виджет «Обзор»)

Точка данныхТипР/ВОписание
widget_live_overviewнитьРHTML-сетка всех камер — обновление снимков при каждом опросе адаптера.

Changelog

0.5.2 (2026-08-05)

  • (ipod86) feat: rename overview DP to widget_live_overview for consistent naming

0.5.1 (2026-08-05)

  • (ipod86) feat: per-instance URL routing — each adapter instance uses its own URL namespace (agent-dvr.0/, agent-dvr.1/, …)
  • (ipod86) feat: rename per-camera recording widget DP from widget to widget_recordings; add new widget_live DP with a single-camera live tile

0.5.0 (2026-08-03)

  • (ipod86) feat: replace live-view camera chip-bar with compact header filter button — funnel icon opens a popover with per-camera checkboxes and drag-to-reorder; order persisted in localStorage
  • (ipod86) feat: new-recordings badge on the Recordings tab — shows count of recordings since last visit; persisted per browser/device in localStorage
  • (ipod86) feat: recording display settings panel — ⚙ gear button in the select/delete bar; grid column width slider, max-recordings override, badge toggle (all persisted in localStorage)
  • (ipod86) feat: first-visit onboarding modals for live view (camera filter & sort) and recordings tab (gestures, gear panel, badge)
  • (ipod86) feat: webhook endpoint /agent-dvr.0/webhook triggers immediate full poll — configure as AgentDVR action for real-time updates
  • (ipod86) feat: PTZ presets — navigate to saved presets from PTZ overlay; single selector DP <cam>.control.ptz.preset per camera (requires AgentDVR v7.7.8.0+)
  • (ipod86) feat: add event log view to recordings panel (clock icon toggle) alongside grid and timeline
  • (ipod86) feat: delete recording from video modal (trash icon, two-click confirm, requires AgentDVR v7.7.8.0+)
  • (ipod86) feat: bulk-delete recordings — long-press a tile to enter select mode, checkbox each recording, delete all at once
  • (ipod86) feat: new dashMaxRec config setting — limits total recordings shown across all cameras in the dashboard (independent of widget limit, default 200)
  • (ipod86) feat: tag filter splits AgentDVR's comma-separated tags into individual chips for per-tag filtering
  • (ipod86) feat: read camera color from AgentDVR and use it for timeline bars and recording dots
  • (ipod86) feat: status bar shows CPU usage, RAM % and free, disk usage % and free alongside camera/recording counts
  • (ipod86) feat: reset colors to defaults button in Live Dashboard settings tab
  • (ipod86) refactor: remove per-camera pushTrigger data points in favour of the global webhook
  • (ipod86) fix: new-recordings badge now correctly visible (display:none CSS fallback fixed)
  • (ipod86) fix: record button moved to rightmost position in grid tiles and fullscreen panel
  • (ipod86) fix: camera filter button no longer changes appearance when cameras are hidden
  • (ipod86) fix: header z-index lifted so the camera filter popover renders above the main content area
  • (ipod86) fix: drive object pruning regex corrected; stale drive entries are now properly removed
  • (ipod86) fix: deleted recordings no longer reappear after the next adapter poll
  • (ipod86) fix: extend video format error message with AgentDVR auto-convert hint in all 11 languages
  • (ipod86) fix: FLV stream and grid tile layout scaling corrections
  • (ipod86) fix: Italian i18n string with apostrophe broke page JS (changed to escaped variant)
  • (ipod86) fix: detect AgentDVR "Command not found" response on delete and show proper error message

0.4.3 (2026-07-19)

  • (ipod86) fix: switch polling loop from setInterval to setTimeout to prevent concurrent poll runs
  • (ipod86) fix: httpTimeoutMs=0 now correctly clamps to 1000ms instead of falling back to default
  • (ipod86) fix: go2rtcEnabled config flag is now honored in fetchGo2rtcStreams
  • (ipod86) fix: remove unused isSupportedLang export from widget-i18n

0.4.2 (2026-07-12)

  • (ipod86) fix: FLV stream proxy now sends Authorization header (HTTP 401 with AgentDVR auth)
  • (ipod86) fix: dashboard camera online status was read from wrong state path (data.online → status.online)
  • (ipod86) fix: MP4/FLV stream label was hardcoded German — now translated in all 11 languages
  • (ipod86) fix: admin UI default values now match io-package.json (dashTagPosition, widgetAnzahl, widgetBorderRadius)
  • (ipod86) fix: go2rtcEnabled flag now respected when loading streams in admin UI
  • (ipod86) fix: enableStreamProxy missing from native defaults in io-package.json

0.4.1 (2026-07-12)

  • (ipod86) fix: overview tile links to ioBroker host; go2rtc URL shown only when enabled

0.4.0 (2026-07-12)

  • (ipod86) feat: optional MJPEG and snapshot stream proxy through ioBroker (browser needs only one connection to ioBroker, not directly to AgentDVR)

0.3.0 (2026-07-06)

  • (ipod86) feat: add scheduleOn/Off and detectorOn/Off control buttons for cameras and microphones
  • (ipod86) feat: add sensitivityMin, sensitivityMax, sensitivityGain level states for cameras (0–100)
  • (ipod86) feat: add audio_mp3 and audio_ogg URL states for microphones
  • (ipod86) fix: restrict objectDetectOn/Off and snapshot buttons to cameras (ot=2) only
  • (ipod86) feat: inline flv.js into dashboard HTML — no external file required
  • (ipod86) fix: preserve FLV stream aspect ratio after tab visibility change (all three player call sites)
  • (ipod86) feat: collapsible tag filter row on recordings and timeline pages
  • (ipod86) feat: native browser fullscreen button in live view modal with correct aspect ratio
  • (ipod86) feat: live view modal header auto-hides after 3 s of inactivity; reappears on mouse/touch
  • (ipod86) fix: add fsEnter, fsExit, filterByLabel, timelineView, closePanel i18n keys in all 10 languages

License

MIT License

Copyright (c) 2026 ipod86 david@graef.email

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.