iobroker.agent-dvr 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +11 -5
- package/README.md +11 -8
- package/admin/assets/index-Bez3QfoS.js +685 -0
- package/admin/assets/index-CNOz09VA.js +685 -0
- package/admin/assets/index-DSBe1npE.js +685 -0
- package/admin/assets/index-Dqw9GB72.js +685 -0
- package/admin/assets/index-_IaWp3oU.js +685 -0
- package/admin/assets/index-t1B1rnou.js +685 -0
- package/admin/i18n/de.json +123 -120
- package/admin/i18n/en.json +123 -120
- package/admin/i18n/es.json +123 -120
- package/admin/i18n/fr.json +123 -120
- package/admin/i18n/it.json +123 -120
- package/admin/i18n/nl.json +123 -120
- package/admin/i18n/pl.json +123 -120
- package/admin/i18n/pt.json +123 -120
- package/admin/i18n/ru.json +123 -120
- package/admin/i18n/uk.json +123 -120
- package/admin/i18n/zh-cn.json +123 -120
- package/admin/index_m.html +1 -1
- package/build/main.js +11 -14
- package/build/main.js.map +2 -2
- package/io-package.json +33 -28
- package/lib/web.js +8 -6
- package/package.json +1 -1
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "agent-dvr",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.4.2": {
|
|
7
|
+
"en": "fix: FLV proxy now sends auth headers; dashboard online status corrected; admin UI default mismatches resolved; MP4/FLV label i18n",
|
|
8
|
+
"de": "fix: FLV-Proxy sendet jetzt Auth-Header; Online-Status im Dashboard korrigiert; Admin-UI-Default-Abweichungen behoben; MP4/FLV-Label i18n",
|
|
9
|
+
"ru": "fix: FLV-прокси теперь отправляет заголовок авторизации; исправлен статус онлайн в панели; исправлены значения по умолчанию в UI; i18n метки MP4/FLV",
|
|
10
|
+
"pt": "fix: proxy FLV agora envia cabeçalhos de autenticação; status online no painel corrigido; padrões da UI do admin corrigidos; i18n do rótulo MP4/FLV",
|
|
11
|
+
"nl": "fix: FLV-proxy verstuurt nu auth-headers; online-status in dashboard gecorrigeerd; standaardwaarden in admin-UI gecorrigeerd; MP4/FLV-label i18n",
|
|
12
|
+
"fr": "fix: le proxy FLV envoie désormais les en-têtes d auth; statut en ligne du tableau de bord corrigé; valeurs par défaut de l UI admin corrigées; i18n du libellé MP4/FLV",
|
|
13
|
+
"it": "fix: il proxy FLV ora invia intestazioni di autenticazione; stato online nella dashboard corretto; valori predefiniti UI admin corretti; i18n etichetta MP4/FLV",
|
|
14
|
+
"es": "fix: el proxy FLV ahora envía cabeceras de autenticación; estado en línea del panel corregido; valores predeterminados de la UI de administración corregidos; i18n de la etiqueta MP4/FLV",
|
|
15
|
+
"pl": "fix: proxy FLV wysyła teraz nagłówki autoryzacji; poprawiono status online w panelu; poprawiono wartości domyślne w UI admina; i18n etykiety MP4/FLV",
|
|
16
|
+
"uk": "fix: FLV-проксі тепер надсилає заголовки авторизації; виправлено онлайн-статус у панелі; виправлено значення за замовчуванням в UI; i18n мітки MP4/FLV",
|
|
17
|
+
"zh-cn": "fix: FLV 代理现在发送授权标头;修正面板在线状态;修正管理界面默认值;MP4/FLV 标签 i18n"
|
|
18
|
+
},
|
|
19
|
+
"0.4.1": {
|
|
20
|
+
"en": "fix: overview tile links to ioBroker host; go2rtc URL shown only when enabled",
|
|
21
|
+
"de": "fix: Übersichtskachel zeigt ioBroker-Host-IP; go2rtc-URL nur bei aktivierter Option sichtbar",
|
|
22
|
+
"ru": "fix: плитка обзора ссылается на хост ioBroker; URL go2rtc отображается только при включении",
|
|
23
|
+
"pt": "fix: tile de visão geral aponta para o host ioBroker; URL go2rtc exibida apenas quando habilitado",
|
|
24
|
+
"nl": "fix: overzichtstegel verwijst naar ioBroker-host; go2rtc-URL alleen zichtbaar als ingeschakeld",
|
|
25
|
+
"fr": "fix: la tuile d aperçu pointe vers l hôte ioBroker; URL go2rtc visible uniquement si activé",
|
|
26
|
+
"it": "fix: il riquadro panoramica punta all host ioBroker; URL go2rtc visibile solo se abilitato",
|
|
27
|
+
"es": "fix: el tile de vista general apunta al host ioBroker; URL go2rtc visible solo cuando está activado",
|
|
28
|
+
"pl": "fix: kafelek przeglądu wskazuje na host ioBroker; URL go2rtc widoczny tylko po włączeniu",
|
|
29
|
+
"uk": "fix: плитка огляду вказує на хост ioBroker; URL go2rtc відображається лише при увімкненні",
|
|
30
|
+
"zh-cn": "fix: 概览磁贴指向 ioBroker 主机;go2rtc URL 仅在启用时显示"
|
|
31
|
+
},
|
|
6
32
|
"0.4.0": {
|
|
7
33
|
"en": "Optional MJPEG and snapshot stream proxy through ioBroker (browser needs only one connection)",
|
|
8
34
|
"de": "Optionaler MJPEG- und Snapshot-Stream-Proxy über ioBroker (Browser benötigt nur eine Verbindung)",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "wyczyn: odznaki filtrów kamery na desce rozdzielczej z trwałością localStorage\nwyczyn: automatyczne ponowne łączenie się strumienia FLV/MP4 po błędzie sieci (opóźnienie 5 s)\nfeat: go2rtc WebSocket – automatyczne ponowne łączenie po nieoczekiwanym rozłączeniu (5 s opóźnienia)\nwyczyn: wykrywanie przestoju go2rtc — spróbuj ponownie, jeśli strumień pozostanie czarny po 10 s\nnaprawiono: brak strumieni cameraStreams w domyślnych ustawieniach natywnych pliku io-package.json (ustawienia nie zostały zapisane)\nnaprawiono: adminUI.config „custom” → „materialize” (404 na stronie ustawień adaptera)\nnaprawiono: usuń nakładkę rozdzielczości podczas ładowania strumienia FLV\nnaprawiono: usunięto zapasowy CDN dla flv.js — tylko lokalna kopia\nnaprawiono: usunięcie nagłówków sekcji AgentDVR/go2rtc z siatki pulpitu nawigacyjnego\nnaprawiono: poprawiono podpowiedź cfgGo2rtcMapping_tt we wszystkich 11 językach\nnaprawiono: proste setTimeout() zastąpiono przez this.setTimeout() (E5005)\nnaprawiono: usunięto przestarzały plik jsonConfig.json — ustawienia obsługiwane przez administratora React (W5046)\nchore: wyklucz katalog admin/ z ESLint, aby zapobiec brakowi pamięci w CI\ndokumenty: przepisz pliki README i README.de, dokumentując wszystkie karty i ustawienia",
|
|
68
94
|
"uk": "подвиг: значки фільтрів камери на приладовій панелі з локальним сховищем\nфункція: автоматичне перепідключення потоку FLV/MP4 після помилки мережі (затримка 5 секунд)\nфункція: автоматичне перепідключення go2rtc WebSocket після неочікуваного відключення (затримка 5 секунд)\nфункція: виявлення зупинки go2rtc — повторна спроба, якщо потік залишається чорним після 10 секунд\nвиправлення: cameraStreams відсутні в рідних налаштуваннях io-package.json за замовчуванням (налаштування не збережено)\nвиправлення: adminUI.config \"custom\" → \"materialize\" (404 на сторінці налаштувань адаптера)\nвиправлення: видалено накладання роздільної здатності під час завантаження потоку FLV\nвиправлення: видалено резервну CDN-мережу для flv.js — лише локальна копія\nвиправлення: видалено заголовки розділів AgentDVR/go2rtc із сітки панелі інструментів\nвиправлення: підказку cfgGo2rtcMapping_tt виправлено всіма 11 мовами\nвиправлення: звичайний setTimeout() замінено на this.setTimeout() (E5005)\nвиправлення: видалено застарілий jsonConfig.json — налаштування, що обробляються адміністратором React (W5046)\nзавдання: виключити каталог admin/ з ESLint, щоб запобігти OOM у CI\nдокументація: переписати README та README.de з документацією всіх вкладок та налаштувань",
|
|
69
95
|
"zh-cn": "功能:行车记录仪滤镜徽章,支持本地存储持久化\n功能:FLV/MP4 视频流在网络错误后自动重连(延迟 5 秒)\n功能:go2rtc WebSocket 在意外断开连接后自动重连(延迟 5 秒)\n功能:go2rtc 卡顿检测——如果视频流在 10 秒后仍然黑屏,则重试\n修复:io-package.json 原生默认值中缺少 cameraStreams(设置未保存)\n修复:adminUI.config \"custom\" → \"materialize\"(适配器设置页面显示 404 错误)\n修复:移除 FLV 流加载时的分辨率叠加层\n修复:移除 flv.js 的 CDN 回退方案,仅保留本地副本。\n修复:从仪表盘网格中移除 AgentDVR/go2rtc 部分标题\n修复:已修正所有 11 种语言的 cfgGo2rtcMapping_tt 工具提示\n修复:将普通的 setTimeout() 替换为 this.setTimeout() (E5005)\n修复:移除过时的 jsonConfig.json 文件——该设置由 React 管理后台处理 (W5046)\n任务:将 admin/ 目录从 ESLint 中排除,以防止 CI 中出现内存溢出 (OOM)。\n文档:重写 README 和 README.de,并记录所有选项卡和设置。"
|
|
70
|
-
},
|
|
71
|
-
"0.1.0": {
|
|
72
|
-
"en": "feat: add full i18n to live dashboard — all UI strings translated into 11 languages\nfix: add missing sm/md/lg/xl size attributes to go2rtcMapping table in jsonConfig.json (E5507)\nfix: translate missing admin i18n keys into 9 languages (E5606)",
|
|
73
|
-
"de": "Feature: Vollständige Internationalisierung (i18n) im Live-Dashboard – alle UI-Texte in 11 Sprachen übersetzt\nBehebung: Fehlende Größenattribute sm/md/lg/xl zur go2rtcMapping-Tabelle in jsonConfig.json hinzufügen (E5507)\nBehebung: Fehlende i18n-Schlüssel für Administratoren in 9 Sprachen übersetzen (E5606)",
|
|
74
|
-
"ru": "Функция: добавление полной интернационализации на панель мониторинга в реальном времени — все строки пользовательского интерфейса переведены на 11 языков.\nИсправление: добавление отсутствующих атрибутов размера sm/md/lg/xl в таблицу go2rtcMapping в файле jsonConfig.json (E5507)\nИсправление: перевести отсутствующие ключи интернационализации администратора на 9 языков (E5606)",
|
|
75
|
-
"pt": "Recurso: adicionamos internacionalização completa ao painel de controle em tempo real — todas as strings da interface do usuário foram traduzidas para 11 idiomas.\nCorreção: adicionar os atributos de tamanho sm/md/lg/xl ausentes à tabela go2rtcMapping em jsonConfig.json (E5507)\nCorreção: traduzir as chaves i18n de administrador ausentes para 9 idiomas (E5606)",
|
|
76
|
-
"nl": "Feature: volledige i18n-ondersteuning toegevoegd aan het live dashboard — alle UI-teksten vertaald in 11 talen.\nOplossing: voeg de ontbrekende maatkenmerken sm/md/lg/xl toe aan de go2rtcMapping-tabel in jsonConfig.json (E5507)\nOplossing: vertaal ontbrekende admin i18n-sleutels naar 9 talen (E5606)",
|
|
77
|
-
"fr": "Fonctionnalité : ajout de l’internationalisation complète au tableau de bord en direct — toutes les chaînes de l’interface utilisateur sont traduites en 11 langues.\nCorrection : ajout des attributs de taille sm/md/lg/xl manquants à la table go2rtcMapping dans jsonConfig.json (E5507)\nCorrection : traduction des clés i18n d'administration manquantes en 9 langues (E5606)",
|
|
78
|
-
"it": "Obiettivo: aggiunta della completa internazionalizzazione (i18n) alla dashboard in tempo reale: tutte le stringhe dell'interfaccia utente tradotte in 11 lingue.\nCorrezione: aggiunta degli attributi di taglia sm/md/lg/xl mancanti alla tabella go2rtcMapping in jsonConfig.json (E5507)\nCorrezione: tradurre le chiavi i18n di amministrazione mancanti in 9 lingue (E5606)",
|
|
79
|
-
"es": "Feat: agrega internacionalización completa al panel de control en vivo: todas las cadenas de la interfaz de usuario se traducen a 11 idiomas.\nCorrección: agregar los atributos de tamaño sm/md/lg/xl faltantes a la tabla go2rtcMapping en jsonConfig.json (E5507)\nCorrección: traducir las claves i18n de administrador faltantes a 9 idiomas (E5606)",
|
|
80
|
-
"pl": "wyczyn: dodanie pełnego i18n do pulpitu nawigacyjnego na żywo — wszystkie ciągi interfejsu użytkownika przetłumaczone na 11 języków\nnaprawiono: dodano brakujące atrybuty rozmiaru sm/md/lg/xl do tabeli go2rtcMapping w jsonConfig.json (E5507)\nnaprawiono: przetłumaczono brakujące klucze administratora i18n na 9 języków (E5606)",
|
|
81
|
-
"uk": "подвиг: додано повний i18n до панелі керування Live — усі рядки інтерфейсу перекладено 11 мовами\nвиправлення: додано відсутні атрибути розміру sm/md/lg/xl до таблиці go2rtcMapping у jsonConfig.json (E5507)\nвиправлення: переклад відсутніх ключів адміністратора i18n на 9 мов (E5606)",
|
|
82
|
-
"zh-cn": "新增功能:为实时仪表盘添加完整的国际化 (i18n) 功能——所有用户界面字符串均翻译成 11 种语言\n修复:在 jsonConfig.json 中向 go2rtcMapping 表添加缺失的 sm/md/lg/xl 尺寸属性 (E5507)\n修复:将缺失的管理员 i18n 密钥翻译成 9 种语言 (E5606)"
|
|
83
|
-
},
|
|
84
|
-
"0.0.6": {
|
|
85
|
-
"en": "add Live Dashboard and go2rtc WebRTC documentation to README",
|
|
86
|
-
"de": "Live-Dashboard- und go2rtc-WebRTC-Dokumentation zur README hinzugefügt",
|
|
87
|
-
"ru": "добавлена документация Live Dashboard и go2rtc WebRTC в README",
|
|
88
|
-
"pt": "documentação do Live Dashboard e go2rtc WebRTC adicionada ao README",
|
|
89
|
-
"nl": "Live Dashboard en go2rtc WebRTC documentatie toegevoegd aan README",
|
|
90
|
-
"fr": "documentation Live Dashboard et go2rtc WebRTC ajoutée au README",
|
|
91
|
-
"it": "documentazione Live Dashboard e go2rtc WebRTC aggiunta al README",
|
|
92
|
-
"es": "documentación de Live Dashboard y go2rtc WebRTC añadida al README",
|
|
93
|
-
"pl": "dodano dokumentację Live Dashboard i go2rtc WebRTC do README",
|
|
94
|
-
"uk": "додано документацію Live Dashboard і go2rtc WebRTC до README",
|
|
95
|
-
"zh-cn": "README 中新增 Live Dashboard 和 go2rtc WebRTC 文档"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -142,6 +142,9 @@
|
|
|
142
142
|
"tier": 3,
|
|
143
143
|
"mode": "daemon",
|
|
144
144
|
"type": "alarm",
|
|
145
|
+
"localLinks": {
|
|
146
|
+
"_default": "%web_protocol%://%ip%:%web_port%/agent-dvr/"
|
|
147
|
+
},
|
|
145
148
|
"messagebox": true,
|
|
146
149
|
"compact": true,
|
|
147
150
|
"connectionType": "local",
|
|
@@ -171,7 +174,7 @@
|
|
|
171
174
|
"pass"
|
|
172
175
|
],
|
|
173
176
|
"native": {
|
|
174
|
-
"
|
|
177
|
+
"serverIp": "192.168.1.100",
|
|
175
178
|
"port": 8090,
|
|
176
179
|
"user": "",
|
|
177
180
|
"pass": "",
|
|
@@ -218,6 +221,8 @@
|
|
|
218
221
|
"widgetColorAccent": "#8ab4f8",
|
|
219
222
|
"widgetColorModalBg": "#1c1c1e",
|
|
220
223
|
"widgetBorderRadius": 8,
|
|
224
|
+
"enableStreamProxy": false,
|
|
225
|
+
"go2rtcEnabled": false,
|
|
221
226
|
"go2rtcUrl": "",
|
|
222
227
|
"cameraStreams": {},
|
|
223
228
|
"dashColorBg": "#080b0f",
|
package/lib/web.js
CHANGED
|
@@ -36,13 +36,13 @@ class AgentDvrWeb {
|
|
|
36
36
|
// ── REST API ─────────────────────────────────────────────────────────
|
|
37
37
|
// Must be registered before the static file handler (Express matches in order)
|
|
38
38
|
app.get('/' + ROUTE + '/api/cameras', (req, res) => {
|
|
39
|
-
const base = (native.
|
|
39
|
+
const base = (native.serverIp && native.port) ? 'http://' + native.serverIp + ':' + native.port : '';
|
|
40
40
|
|
|
41
41
|
Promise.all([
|
|
42
42
|
adapter.getForeignStatesAsync(ns + '.cam_*.name'),
|
|
43
43
|
adapter.getForeignStatesAsync(ns + '.cam_*.urls.mjpeg'),
|
|
44
44
|
adapter.getForeignStatesAsync(ns + '.cam_*.urls.snapshot'),
|
|
45
|
-
adapter.getForeignStatesAsync(ns + '.cam_*.
|
|
45
|
+
adapter.getForeignStatesAsync(ns + '.cam_*.status.online'),
|
|
46
46
|
adapter.getForeignStatesAsync(ns + '.cam_*.control.ptz.up'), // PTZ detection
|
|
47
47
|
adapter.getForeignStatesAsync(ns + '.cam_*.status.recording'),
|
|
48
48
|
adapter.getForeignStatesAsync(ns + '.cam_*.status.detected'),
|
|
@@ -176,7 +176,7 @@ class AgentDvrWeb {
|
|
|
176
176
|
|
|
177
177
|
// ── MJPEG stream proxy (optional: enableStreamProxy) ─────────────────
|
|
178
178
|
app.get('/' + ROUTE + '/api/mjpeg', (req, res) => {
|
|
179
|
-
const base = (native.
|
|
179
|
+
const base = (native.serverIp && native.port) ? 'http://' + native.serverIp + ':' + native.port : '';
|
|
180
180
|
if (!base) { res.status(503).end('AgentDVR not configured'); return; }
|
|
181
181
|
const oid = String(req.query.oid || '');
|
|
182
182
|
if (!oid || !/^\d+$/.test(oid)) { res.status(400).end('invalid oid'); return; }
|
|
@@ -200,7 +200,7 @@ class AgentDvrWeb {
|
|
|
200
200
|
|
|
201
201
|
// ── Snapshot proxy (optional: enableStreamProxy) ──────────────────────
|
|
202
202
|
app.get('/' + ROUTE + '/api/snap', (req, res) => {
|
|
203
|
-
const base = (native.
|
|
203
|
+
const base = (native.serverIp && native.port) ? 'http://' + native.serverIp + ':' + native.port : '';
|
|
204
204
|
if (!base) { res.status(503).end('AgentDVR not configured'); return; }
|
|
205
205
|
const oid = String(req.query.oid || '');
|
|
206
206
|
if (!oid || !/^\d+$/.test(oid)) { res.status(400).end('invalid oid'); return; }
|
|
@@ -223,7 +223,7 @@ class AgentDvrWeb {
|
|
|
223
223
|
|
|
224
224
|
// ── FLV stream proxy (avoids browser CORS block for flv.js XHR) ────────
|
|
225
225
|
app.get('/' + ROUTE + '/api/stream', (req, res) => {
|
|
226
|
-
const base = (native.
|
|
226
|
+
const base = (native.serverIp && native.port) ? 'http://' + native.serverIp + ':' + native.port : '';
|
|
227
227
|
if (!base) { res.status(503).end('AgentDVR not configured'); return; }
|
|
228
228
|
const oid = String(req.query.oid || '');
|
|
229
229
|
if (!oid || !/^\d+$/.test(oid)) { res.status(400).end('invalid oid'); return; }
|
|
@@ -233,7 +233,9 @@ class AgentDvrWeb {
|
|
|
233
233
|
let target;
|
|
234
234
|
try { target = new URL(url); } catch (_) { res.status(500).end(); return; }
|
|
235
235
|
const mod = target.protocol === 'https:' ? https : http;
|
|
236
|
-
const
|
|
236
|
+
const flvHeaders = {};
|
|
237
|
+
if (this._authHeader) flvHeaders['Authorization'] = this._authHeader;
|
|
238
|
+
const upReq = mod.get({ hostname: target.hostname, port: target.port, path: target.pathname + target.search, headers: flvHeaders }, upstream => {
|
|
237
239
|
res.setHeader('Content-Type', 'video/x-flv');
|
|
238
240
|
res.setHeader('Cache-Control', 'no-cache');
|
|
239
241
|
res.setHeader('X-Accel-Buffering', 'no');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.agent-dvr",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Connects ioBroker to AgentDVR: auto-discovers cameras, mirrors all device values as data points, delivers real-time triggers on new recordings, and generates a responsive HTML gallery with optional search and tag filtering.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ipod86",
|