iobroker.motioneye 0.3.0 → 0.3.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.md +7 -7
- package/admin/i18n/de.json +1 -1
- package/admin/i18n/en.json +1 -1
- package/admin/i18n/es.json +1 -1
- package/admin/i18n/fr.json +1 -1
- package/admin/i18n/it.json +1 -1
- package/admin/i18n/nl.json +1 -1
- package/admin/i18n/pl.json +1 -1
- package/admin/i18n/pt.json +1 -1
- package/admin/i18n/ru.json +1 -1
- package/admin/i18n/uk.json +1 -1
- package/admin/i18n/zh-cn.json +1 -1
- package/admin/motioneye.png +0 -0
- package/io-package.json +29 -29
- package/package.json +2 -1
- package/admin/motioneye-logo.svg +0 -13
- package/admin/motioneye.svg +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
3
|
# ioBroker adapter for MotionEye
|
|
4
4
|
|
|
@@ -106,6 +106,12 @@ If you like our work and would like to support us, we appreciate any donation.
|
|
|
106
106
|
<!--
|
|
107
107
|
### **WORK IN PROGRESS**
|
|
108
108
|
-->
|
|
109
|
+
### 0.3.2 (2026-06-22)
|
|
110
|
+
- (skvarel) Modified config/help
|
|
111
|
+
|
|
112
|
+
### 0.3.1 (2026-06-22)
|
|
113
|
+
- (skvarel) Changed repo icon
|
|
114
|
+
|
|
109
115
|
### 0.3.0 (2026-06-22)
|
|
110
116
|
- (skvarel) Camera channel folders are now lowercase (e.g. `innenhof_ii` instead of `Innenhof_II`) — aligned with other ioBroker adapters
|
|
111
117
|
- (skvarel) Info states moved from `0_info` to `_info`
|
|
@@ -119,12 +125,6 @@ If you like our work and would like to support us, we appreciate any donation.
|
|
|
119
125
|
- (skvarel) Added camera load from MotionEye (merges `/config/list` into camera table)
|
|
120
126
|
- (skvarel) Added Help-Tab with setup guide, modes, datapoints, and stream/inventwo notes
|
|
121
127
|
|
|
122
|
-
### 0.1.2 (2026-06-21)
|
|
123
|
-
- (skvarel) Clarified admin help for useMotionEyeConfig (required for mode, webhooks, and stream control — not only MotionEye web UI)
|
|
124
|
-
|
|
125
|
-
### 0.1.1 (2026-06-21)
|
|
126
|
-
- (skvarel) Renamed info folder from `_info` to `0_info` so it sorts above camera channels in the object tree
|
|
127
|
-
|
|
128
128
|
## Older changes
|
|
129
129
|
- [CHANGELOG_OLD.md](CHANGELOG_OLD.md)
|
|
130
130
|
|
package/admin/i18n/de.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Livestream & HTML-Widgets",
|
|
35
35
|
"help_setup": "1. Auf dem Tab <b>Einstellungen</b> <b>MotionEye-Host</b>, Zugangsdaten und <b>Webhook-Host</b> setzen.<br>2. Auf dem Tab Kameras <b>Kameras aus MotionEye laden</b> klicken (Instanz muss laufen) oder Zeilen manuell anlegen.<br>3. Anzeigenamen und optionale Medien-Ordner anpassen.<br>4. Konfiguration <b>speichern</b> und Adapter-<b>neu starten</b> — Datenpunkte werden angelegt und Webhook-URLs nach MotionEye geschrieben.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Datenpunkt</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Lesen</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Schreiben</th><th style=\"text-align:left;padding:8px 6px\">Beschreibung</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>mode</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Kameramodus: off, still, sharp</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">Bewegung erkannt (Webhook, Auto-Reset)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">Letzte Sync-Meldung / Fehlertext</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>snapshot</code></td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Snapshot auslösen (Button)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Live-Videostream ein/aus</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Kurzer Stream-Impuls (Button)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">Fertiges HTML für jedes HTML-Widget</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nein</td><td style=\"padding:6px\">Konfigurierte Webhook-URL (nur lesen)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "<code>stream</code> auf <code>true</code> setzen für einen Live-MJPEG-Stream
|
|
37
|
+
"help_stream": "<b>Stream einschalten</b><br><code>stream</code> auf <code>true</code> setzen für einen Live-MJPEG-Stream, oder <code>streamPulse</code> für eine zeitbegrenzte Vorschau (siehe <b>Stream-Pulse Auto-Aus</b> unter Einstellungen). Der Adapter schaltet den MotionEye-Videostream ein und schreibt fertiges HTML in <code>streamUrl</code>.<br><br><b>Stream in VIS anzeigen (VIS1 / VIS2)</b><br>Empfohlen: <b>HTML-Widget</b> mit <b>Binding</b> auf <code>streamUrl</code> — der Datenpunkt enthält bereits ein fertiges <code><img></code>-Snippet (keine URL manuell eintragen).<br><br>1. In der View ein <b>HTML</b>-Widget platzieren.<br>2. Im HTML-Feld des Widgets ein Binding eintragen, z. B. <code>{motioneye.0.garten.streamUrl}</code> — <code>0</code> durch die Instanznummer und <code>garten</code> durch den Kamerakanal ersetzen (Kleinbuchstaben-Ordner unter der Instanz im Objekte-Tab).<br>3. <code>stream</code> auf <code>true</code> setzen (oder <code>streamPulse</code> auslösen) — das Bild erscheint nach kurzer Verzögerung, wenn <code>streamUrl</code> aktualisiert wird.<br>4. Optional: Schalter-Widget auf <code>stream</code> binden, um den Stream aus VIS ein-/auszuschalten.<br><br><code>streamUrl</code> ist schreibgeschützt und aktualisiert sich automatisch. Bei HTTPS in VIS und HTTP-only bei MotionEye kann der Browser das Bild blockieren.",
|
|
38
38
|
"load_cameras_button": "Kameras aus MotionEye laden",
|
|
39
39
|
"load_cameras_help": "Liest /config/list von MotionEye und fügt noch nicht vorhandene Kameras in die Tabelle ein. Die Adapter-Instanz muss laufen. Verwendet das gespeicherte MotionEye-Passwort aus den Instanzeinstellungen. Nach dem Hinzufügen speichern und Instanz neu starten.",
|
|
40
40
|
"load_cameras_result_added": "Neue Kameras wurden in die Tabelle übernommen. Speichere die Konfiguration und starte die Adapter-Instanz neu.",
|
package/admin/i18n/en.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Live stream & HTML widgets",
|
|
35
35
|
"help_setup": "1. Set <b>MotionEye host</b>, credentials, and <b>webhook host</b> on the Settings tab.<br>2. On the Cameras tab click <b>Load cameras from MotionEye</b> (instance must be running) or add rows manually.<br>3. Adjust display names and optional media folders.<br>4. <b>Save</b> the instance configuration and <b>restart</b> the adapter — datapoints are created and webhook URLs are written to MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">State</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Read</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Write</th><th style=\"text-align:left;padding:8px 6px\">Description</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>mode</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">Camera mode: off, still, sharp</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Motion detected (webhook, auto-reset)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Last sync / error text</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>snapshot</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">Trigger snapshot (button)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">Live video stream on/off</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">Short stream pulse (button)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Ready-to-use HTML for any HTML widget</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Configured webhook URL (read-only)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Set <code>stream</code> to <code>true</code> for a live MJPEG stream
|
|
37
|
+
"help_stream": "<b>Enable the stream</b><br>Set <code>stream</code> to <code>true</code> for a live MJPEG stream, or use <code>streamPulse</code> for a timed preview (see <b>Stream pulse auto-off</b> on Settings). The adapter turns the MotionEye video stream on and writes ready-to-use HTML into <code>streamUrl</code>.<br><br><b>Show the stream in VIS (VIS1 / VIS2)</b><br>Recommended: an <b>HTML widget</b> with a <b>binding</b> to <code>streamUrl</code> — the datapoint already contains a complete <code><img></code> snippet (no manual URL needed).<br><br>1. Add an <b>HTML</b> widget to your view.<br>2. In the widget HTML field enter a binding, e.g. <code>{motioneye.0.garten.streamUrl}</code> — replace <code>0</code> with your instance number and <code>garten</code> with the camera channel folder (lowercase name under the instance in the Objects tab).<br>3. Set <code>stream</code> to <code>true</code> (or trigger <code>streamPulse</code>) — the image appears after a short delay when <code>streamUrl</code> updates.<br>4. Optional: bind a switch widget to <code>stream</code> to turn the stream on/off from VIS.<br><br><code>streamUrl</code> is read-only and updates automatically. If VIS uses HTTPS and MotionEye is HTTP-only, the browser may block the image.",
|
|
38
38
|
"load_cameras_button": "Load cameras from MotionEye",
|
|
39
39
|
"load_cameras_help": "Fetches /config/list from MotionEye and adds cameras not yet in the table. The adapter instance must be running. Uses the saved MotionEye password from instance settings. Save configuration and restart after adding cameras.",
|
|
40
40
|
"load_cameras_result_added": "New cameras were added to the table. Save the configuration and restart the adapter instance.",
|
package/admin/i18n/es.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Transmisión en vivo y widgets HTML",
|
|
35
35
|
"help_setup": "1. Configure el <b>host de MotionEye</b>, las credenciales y el <b>host de webhook</b> en la pestaña Configuración.<br>2. En la pestaña Cámaras, haga clic en <b>Cargar cámaras desde MotionEye</b> (la instancia debe estar ejecutándose) o agregue filas manualmente.<br>3. Ajuste los nombres para mostrar y las carpetas multimedia opcionales.<br>4. <b>Guarde</b> la configuración de la instancia y <b>reinicie</b> el adaptador: se crean puntos de datos y las URL de webhook se escriben en MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Estado</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Leer</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Escribir</th><th style=\"text-align:left;padding:8px 6px\">Descripción</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>modo</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">Modo de cámara: apagado, fijo, nítido</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>movimiento</code></td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Movimiento detectado (webhook, reinicio automático)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Última sincronización/texto de error</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>instantánea</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">Activar instantánea (botón)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>transmisión</code></td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">Transmisión de video en vivo activada/desactivada</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">Pulso de flujo corto (botón)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">sí</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">HTML listo para usar para cualquier widget HTML</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">URL de webhook configurada (solo lectura)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Establezca <code>stream</code> en <code>true</code> para una transmisión MJPEG en vivo
|
|
37
|
+
"help_stream": "<b>Habilite la transmisión</b><br>Establezca <code>stream</code> en <code>true</code> para una transmisión MJPEG en vivo, o use <code>streamPulse</code> para una vista previa cronometrada (consulte <b>Apagado automático de pulso de transmisión</b> en Configuración). El adaptador activa la transmisión de video MotionEye y escribe HTML listo para usar en <code>streamUrl</code>.<br><br><b>Mostrar la transmisión en VIS (VIS1 / VIS2)</b><br>Recomendado: un <b>widget HTML</b> con un <b>enlace</b> a <code>streamUrl</code>; el punto de datos ya contiene un fragmento <code><img></code> completo (no Se necesita URL manual).<br><br>1. Agregue un widget <b>HTML</b> a su vista.<br>2. En el campo HTML del widget, introduzca un enlace, p. <code>{motioneye.0.garten.streamUrl}</code>: reemplace <code>0</code> con su número de instancia y <code>garten</code> con la carpeta del canal de la cámara (nombre en minúscula debajo de la instancia en la pestaña Objetos).<br>3. Establezca <code>stream</code> en <code>true</code> (o active <code>streamPulse</code>): la imagen aparece después de un breve retraso cuando se actualiza <code>streamUrl</code>.<br>4. Opcional: vincule un widget de cambio a <code>stream</code> para activar o desactivar la transmisión desde VIS.<br><br><code>streamUrl</code> es de solo lectura y se actualiza automáticamente. Si VIS usa HTTPS y MotionEye es solo HTTP, el navegador puede bloquear la imagen.",
|
|
38
38
|
"load_cameras_button": "Cargar cámaras desde MotionEye",
|
|
39
39
|
"load_cameras_help": "Obtiene /config/list de MotionEye y agrega cámaras que aún no están en la tabla. La instancia del adaptador debe estar ejecutándose. Guarde la configuración y reinicie después de agregar cámaras.",
|
|
40
40
|
"load_cameras_result_added": "Se agregaron nuevas cámaras a la mesa. Guarde la configuración y reinicie la instancia del adaptador.",
|
package/admin/i18n/fr.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Diffusion en direct et widgets HTML",
|
|
35
35
|
"help_setup": "1. Définissez l'<b>hôte MotionEye</b>, les informations d'identification et l'<b>hôte webhook</b> dans l'onglet Paramètres.<br>2. Dans l'onglet Caméras, cliquez sur <b>Charger les caméras depuis MotionEye</b> (l'instance doit être en cours d'exécution) ou ajoutez des lignes manuellement.<br>3. Ajustez les noms d'affichage et les dossiers multimédias facultatifs.<br>4. <b>Enregistrez</b> la configuration de l'instance et <b>redémarrez</b> l'adaptateur : les points de données sont créés et les URL des webhooks sont écrites dans MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">État</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Lire</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Écrire</th><th style=\"text-align:left;padding:8px 6px\">Description</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>mode</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">Mode appareil photo : désactivé, fixe, net</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">Mouvement détecté (webhook, réinitialisation automatique)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">Dernière synchronisation / texte d'erreur</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>instantané</code></td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">Déclencher un instantané (bouton)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">Diffusion vidéo en direct activée/désactivée</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">Impulsion de flux court (bouton)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">HTML prêt à l'emploi pour n'importe quel widget HTML</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">oui</td><td style=\"padding:6px\">non</td><td style=\"padding:6px\">URL du webhook configurée (lecture seule)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Définissez <code>stream</code> sur <code>true</code> pour un flux MJPEG en direct
|
|
37
|
+
"help_stream": "<b>Activez le flux</b><br>Définissez <code>stream</code> sur <code>true</code> pour un flux MJPEG en direct, ou utilisez <code>streamPulse</code> pour un aperçu chronométré (voir <b>Arrêt automatique du flux d'impulsion</b> dans les paramètres). L'adaptateur active le flux vidéo MotionEye et écrit du HTML prêt à l'emploi dans <code>streamUrl</code>.<br><br><b>Afficher le flux dans VIS (VIS1 / VIS2)</b><br>Recommandé : un <b>widget HTML</b> avec une <b>liaison</b> à <code>streamUrl</code> — le point de données contient déjà un extrait <code><img></code> complet (pas d'URL manuelle). nécessaire).<br><br>1. Ajoutez un widget <b>HTML</b> à votre vue.<br>2. Dans le champ HTML du widget, saisissez une liaison, par ex. <code>{motioneye.0.garten.streamUrl}</code> : remplacez <code>0</code> par votre numéro d'instance et <code>garten</code> par le dossier du canal de la caméra (nom en minuscule sous l'instance dans l'onglet Objets).<br>3. Définissez <code>stream</code> sur <code>true</code> (ou déclenchez <code>streamPulse</code>) : l'image apparaît après un court délai lorsque <code>streamUrl</code> est mis à jour.<br>4. Facultatif : associez un widget de commutation à <code>stream</code> pour activer/désactiver le flux à partir de VIS.<br><br><code>streamUrl</code> est en lecture seule et se met à jour automatiquement. Si VIS utilise HTTPS et que MotionEye est uniquement HTTP, le navigateur peut bloquer l'image.",
|
|
38
38
|
"load_cameras_button": "Charger des caméras depuis MotionEye",
|
|
39
39
|
"load_cameras_help": "Récupère /config/list de MotionEye et ajoute les caméras qui ne sont pas encore dans le tableau. L'instance de l'adaptateur doit être en cours d'exécution. Enregistrez la configuration et redémarrez après avoir ajouté des caméras.",
|
|
40
40
|
"load_cameras_result_added": "De nouvelles caméras ont été ajoutées au tableau. Enregistrez la configuration et redémarrez l'instance d'adaptateur.",
|
package/admin/i18n/it.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Streaming live e widget HTML",
|
|
35
35
|
"help_setup": "1. Impostare <b>host MotionEye</b>, credenziali e <b>host webhook</b> nella scheda Impostazioni.<br>2. Nella scheda Telecamere, fai clic su <b>Carica telecamere da MotionEye</b> (l'istanza deve essere in esecuzione) o aggiungi righe manualmente.<br>3. Modifica i nomi visualizzati e le cartelle multimediali opzionali.<br>4. <b>Salva</b> la configurazione dell'istanza e <b>riavvia</b> l'adattatore: i datapoint vengono creati e gli URL webhook vengono scritti su MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Stato</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Leggi</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Scrivi</th><th style=\"text-align:left;padding:8px 6px\">Descrizione</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>modalità</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">Modalità fotocamera: disattivata, fissa, nitida</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>movimento</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Movimento rilevato (webhook, ripristino automatico)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">Ultima sincronizzazione/testo errore</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>istantanea</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">Attiva istantanea (pulsante)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">Streaming video in diretta attivato/disattivato</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">Impulso di flusso breve (pulsante)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">HTML pronto all'uso per qualsiasi HTML widget</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">sì</td><td style=\"padding:6px\">no</td><td style=\"padding:6px\">URL webhook configurato (sola lettura)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Imposta <code>stream</code> su <code>true</code> per uno streaming MJPEG live
|
|
37
|
+
"help_stream": "<b>Abilita lo streaming</b><br>Imposta <code>stream</code> su <code>true</code> per uno streaming MJPEG live oppure utilizza <code>streamPulse</code> per un'anteprima temporizzata (vedi <b>Spegnimento automatico impulso streaming</b> in Impostazioni). L'adattatore attiva il flusso video MotionEye e scrive codice HTML pronto all'uso in <code>streamUrl</code>.<br><br><b>Mostra il flusso in VIS (VIS1 / VIS2)</b><br>Consigliato: un <b>widget HTML</b> con un <b>associazione</b> a <code>streamUrl</code>: il datapoint contiene già uno snippet <code><img></code> completo (nessun URL manuale necessario).<br><br>1. Aggiungi un widget <b>HTML</b> alla tua visualizzazione.<br>2. Nel campo HTML del widget inserisci un'associazione, ad es. <code>{motioneye.0.garten.streamUrl}</code>: sostituisci <code>0</code> con il numero dell'istanza e <code>garten</code> con la cartella del canale della telecamera (nome in minuscolo sotto l'istanza nella scheda Oggetti).<br>3. Imposta <code>stream</code> su <code>true</code> (o attiva <code>streamPulse</code>): l'immagine viene visualizzata dopo un breve ritardo quando <code>streamUrl</code> viene aggiornato.<br>4. Facoltativo: associa un widget di commutazione a <code>stream</code> per attivare/disattivare lo streaming da VIS.<br><br><code>streamUrl</code> è di sola lettura e si aggiorna automaticamente. Se VIS utilizza HTTPS e MotionEye è solo HTTP, il browser potrebbe bloccare l'immagine.",
|
|
38
38
|
"load_cameras_button": "Carica le telecamere da MotionEye",
|
|
39
39
|
"load_cameras_help": "Recupera /config/list da MotionEye e aggiunge le telecamere non ancora presenti nella tabella. L'istanza dell'adattatore deve essere in esecuzione. Salva la configurazione e riavvia dopo aver aggiunto le telecamere.",
|
|
40
40
|
"load_cameras_result_added": "Sono state aggiunte nuove telecamere alla tabella. Salvare la configurazione e riavviare l'istanza dell'adattatore.",
|
package/admin/i18n/nl.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Livestream en HTML-widgets",
|
|
35
35
|
"help_setup": "1. Stel <b>MotionEye-host</b>, inloggegevens en <b>webhook-host</b> in op het tabblad Instellingen.<br>2. Klik op het tabblad Camera's op <b>Camera's laden vanuit MotionEye</b> (de instantie moet actief zijn) of voeg handmatig rijen toe.<br>3. Pas de weergavenamen en optionele mediamappen aan.<br>4. <b>Sla</b> de instantieconfiguratie op en <b>start</b> de adapter opnieuw op. Er worden datapunten gemaakt en webhook-URL's worden naar MotionEye geschreven.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Status</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Lezen</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Schrijven</th><th style=\"text-align:left;padding:8px 6px\">Beschrijving</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>modus</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Cameramodus: uit, stil, scherp</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">Beweging gedetecteerd (webhook, auto-reset)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">Laatste synchronisatie / fouttekst</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>snapshot</code></td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Snapshot activeren (knop)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Live videostream aan/uit</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">Korte streampuls (knop)</td></tr><tr style=\"border-bottom:1px effen rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">Klaar voor gebruik HTML voor elke HTML-widget</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">ja</td><td style=\"padding:6px\">nee</td><td style=\"padding:6px\">Geconfigureerde webhook-URL (alleen-lezen)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Stel <code>stream</code> in op <code>true</code> voor een live MJPEG-stream
|
|
37
|
+
"help_stream": "<b>De stream inschakelen</b><br>Stel <code>stream</code> in op <code>true</code> voor een live MJPEG-stream, of gebruik <code>streamPulse</code> voor een getimed voorbeeld (zie <b>Streampuls automatisch uitschakelen</b> in Instellingen). De adapter zet de MotionEye-videostream aan en schrijft kant-en-klare HTML in <code>streamUrl</code>.<br><br><b>Toon de stream in VIS (VIS1 / VIS2)</b><br>Aanbevolen: een <b>HTML-widget</b> met een <b>binding</b> aan <code>streamUrl</code> — het datapunt bevat al een volledig <code><img></code>-fragment (geen handmatige URL nodig).<br><br>1. Voeg een <b>HTML</b>-widget toe aan uw weergave.<br>2. Voer in het HTML-veld van de widget een binding in, b.v. <code>{motioneye.0.garten.streamUrl}</code> — vervang <code>0</code> door uw instantienummer en <code>garten</code> door de camerakanaalmap (naam in kleine letters onder de instantie op het tabblad Objecten).<br>3. Stel <code>stream</code> in op <code>true</code> (of activeer <code>streamPulse</code>) — de afbeelding verschijnt na een korte vertraging wanneer <code>streamUrl</code> wordt bijgewerkt.<br>4. Optioneel: koppel een schakelwidget aan <code>stream</code> om de stream vanuit VIS aan/uit te zetten.<br><br><code>streamUrl</code> is alleen-lezen en wordt automatisch bijgewerkt. Als VIS HTTPS gebruikt en MotionEye alleen HTTP gebruikt, kan de browser het beeld blokkeren.",
|
|
38
38
|
"load_cameras_button": "Camera's laden vanuit MotionEye",
|
|
39
39
|
"load_cameras_help": "Haalt /config/list op van MotionEye en voegt camera's toe die nog niet in de tabel staan. De adapterinstantie moet actief zijn. Sla de configuratie op en start opnieuw op na het toevoegen van camera's.",
|
|
40
40
|
"load_cameras_result_added": "Er zijn nieuwe camera's aan de tabel toegevoegd. Sla de configuratie op en start de adapterinstantie opnieuw.",
|
package/admin/i18n/pl.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Transmisja na żywo i widżety HTML",
|
|
35
35
|
"help_setup": "1. Ustaw <b>Host MotionEye</b>, dane uwierzytelniające i <b>Host webhooka</b> na karcie Ustawienia.<br>2. Na karcie Kamery kliknij <b>Załaduj kamery z MotionEye</b> (instancja musi być uruchomiona) lub dodaj wiersze ręcznie.<br>3. Dostosuj wyświetlane nazwy i opcjonalne foldery multimedialne.<br>4. <b>Zapisz</b> konfigurację instancji i <b>uruchom ponownie</b> adapter — zostaną utworzone punkty danych, a adresy URL elementu webhook zostaną zapisane w MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Stan</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Przeczytaj</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Napisz</th><th style=\"text-align:left;padding:8px 6px\">Opis</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>tryb</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">Tryb aparatu: wyłączony, nieruchomy, ostry</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>ruch</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">Wykryto ruch (webhook, automatyczne resetowanie)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">Ostatnia synchronizacja/tekst błędu</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>snapshot</code></td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">Uruchom migawkę (przycisk)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">Włączanie/wyłączanie strumienia wideo na żywo</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">Krótki impuls strumieniowy (przycisk)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">Gotowy do użycia kod HTML dla dowolnego widżetu HTML</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">tak</td><td style=\"padding:6px\">nie</td><td style=\"padding:6px\">Skonfigurowany adres URL webhooka (tylko do odczytu)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Ustaw <code>stream</code> na <code>true</code> dla strumienia MJPEG na żywo
|
|
37
|
+
"help_stream": "<b>Włącz strumień</b><br>Ustaw <code>stream</code> na <code>true</code> dla strumienia MJPEG na żywo lub użyj <code>streamPulse</code>, aby uzyskać podgląd czasowy (zobacz <b>Automatyczne wyłączanie impulsu strumienia</b> w Ustawieniach). Adapter włącza strumień wideo MotionEye i zapisuje gotowy do użycia kod HTML w formacie <code>streamUrl</code>.<br><br><b>Pokaż strumień w VIS (VIS1 / VIS2)</b><br>Zalecane: <b>widżet HTML</b> z <b>powiązaniem</b> z <code>streamUrl</code> — punkt danych zawiera już kompletny fragment <code><img></code> (nie jest potrzebny ręczny adres URL).<br><br>1. Dodaj widżet <b>HTML</b> do swojego widoku.<br>2. W polu HTML widgetu wpisz powiązanie, np. <code>{motioneye.0.garten.streamUrl</code> — zamień <code>0</code> na numer swojej instancji, a <code>garten</code> na folder kanału kamery (nazwa z małych liter pod instancją w zakładce Obiekty).<br>3. Ustaw <code>stream</code> na <code>true</code> (lub wywołaj <code>streamPulse</code>) — obraz pojawia się z krótkim opóźnieniem po aktualizacji <code>streamUrl</code>.<br>4. Opcjonalnie: powiąż widżet przełącznika z <code>stream</code>, aby włączyć/wyłączyć strumień z VIS. <br><br><code>streamUrl</code> jest tylko do odczytu i aktualizuje się automatycznie. Jeśli VIS korzysta z protokołu HTTPS, a MotionEye obsługuje wyłącznie protokół HTTP, przeglądarka może zablokować obraz.",
|
|
38
38
|
"load_cameras_button": "Załaduj kamery z MotionEye",
|
|
39
39
|
"load_cameras_help": "Pobiera /config/list z MotionEye i dodaje kamery, których jeszcze nie ma w tabeli. Instancja adaptera musi być uruchomiona. Zapisz konfigurację i uruchom ponownie po dodaniu kamer.",
|
|
40
40
|
"load_cameras_result_added": "Do tabeli dodano nowe kamery. Zapisz konfigurację i zrestartuj instancję adaptera.",
|
package/admin/i18n/pt.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Transmissão ao vivo e widgets HTML",
|
|
35
35
|
"help_setup": "1. Defina <b>host MotionEye</b>, credenciais e <b>host webhook</b> na guia Configurações.<br>2. Na guia Câmeras, clique em <b>Carregar câmeras do MotionEye</b> (a instância deve estar em execução) ou adicione linhas manualmente.<br>3. Ajuste os nomes de exibição e as pastas de mídia opcionais.<br>4. <b>Salve</b> a configuração da instância e <b>reinicie</b> o adaptador — pontos de dados são criados e URLs de webhook são gravados no MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Estado</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Ler</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Escrever</th><th style=\"text-align:left;padding:8px 6px\">Descrição</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>modo</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">Modo de câmera: desligado, imóvel, nítido</td></tr><tr style=\"border-bottom:1px sólido rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">Movimento detectado (webhook, reinicialização automática)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>status</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">Última sincronização/texto de erro</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>instantâneo</code></td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">Acionar instantâneo (botão)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>stream</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">transmissão de vídeo ao vivo ativada/desativada</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">Pulso de fluxo curto (botão)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">HTML pronto para usar para qualquer widget HTML</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">sim</td><td style=\"padding:6px\">não</td><td style=\"padding:6px\">URL de webhook configurado (somente leitura)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "Defina <code>stream</code> como <code>true</code> para
|
|
37
|
+
"help_stream": "<b>Ative o stream</b><br>Defina <code>stream</code> como <code>true</code> para um stream MJPEG ao vivo ou use <code>streamPulse</code> para uma visualização cronometrada (consulte <b>Desligamento automático de pulso de stream</b> em Configurações). O adaptador ativa o stream de vídeo MotionEye e grava HTML pronto para uso em <code>streamUrl</code>.<br><br><b>Mostre o stream em VIS (VIS1 / VIS2)</b><br>Recomendado: um <b>widget HTML</b> com uma <b>vinculação</b> a <code>streamUrl</code> — o ponto de dados já contém um snippet <code><img></code> completo (sem URL manual). necessário).<br><br>1. Adicione um widget <b>HTML</b> à sua visualização.<br>2. No campo HTML do widget, insira uma ligação, por exemplo. <code>{motioneye.0.garten.streamUrl}</code> — substitua <code>0</code> pelo número da sua instância e <code>garten</code> pela pasta do canal da câmera (nome em letras minúsculas na instância na guia Objetos).<br>3. Defina <code>stream</code> como <code>true</code> (ou acione <code>streamPulse</code>) — a imagem aparece após um pequeno atraso quando <code>streamUrl</code> é atualizado.<br>4. Opcional: vincule um widget de alternância a <code>stream</code> para ativar/desativar o stream do VIS.<br><br><code>streamUrl</code> é somente leitura e é atualizado automaticamente. Se o VIS usar HTTPS e o MotionEye for somente HTTP, o navegador poderá bloquear a imagem.",
|
|
38
38
|
"load_cameras_button": "Carregar câmeras do MotionEye",
|
|
39
39
|
"load_cameras_help": "Busca /config/list do MotionEye e adiciona câmeras que ainda não estão na tabela. A instância do adaptador deve estar em execução. Salve a configuração e reinicie após adicionar câmeras.",
|
|
40
40
|
"load_cameras_result_added": "Novas câmeras foram adicionadas à mesa. Salve a configuração e reinicie a instância do adaptador.",
|
package/admin/i18n/ru.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Прямая трансляция и HTML-виджеты",
|
|
35
35
|
"help_setup": "1. Задайте <b>хост MotionEye</b>, учетные данные и <b>хост веб-перехватчика</b> на вкладке «Настройки».<br>2. На вкладке «Камеры» нажмите <b>Загрузить камеры из MotionEye</b> (экземпляр должен быть запущен) или добавьте строки вручную.<br>3. Настройте отображаемые имена и дополнительные папки мультимедиа.<br>4. <b>Сохраните</b> конфигурацию экземпляра и <b>перезапустите</b> адаптер — точки данных будут созданы, а URL-адреса веб-перехватчиков запишутся в MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px Solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Состояние</th><th style=\"text-align:left;padding:8px\" 6px;width:10%\">Чтение</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Запись</th><th style=\"text-align:left;padding:8px 6px\">Описание</th></tr></thead><tbody><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>mode</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">Режим камеры: выключено, неподвижно, резкость</td></tr><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>движение</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">Обнаружено движение (webhook, автоматический сброс)</td></tr><tr style=\"border-bottom:1px\" Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>статус</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">Последняя синхронизация/текст ошибки</td></tr><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>снимок</code></td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">Запустить снимок (кнопка)</td></tr><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>поток</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">Прямой видеопоток вкл./выкл.</td></tr><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">Короткий импульс потока (кнопка)</td></tr><tr style=\"border-bottom:1px Solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">Готовый HTML для любого HTML-виджета</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">да</td><td style=\"padding:6px\">нет</td><td style=\"padding:6px\">Настроенный URL-адрес веб-перехватчика (только для чтения)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "
|
|
37
|
+
"help_stream": "<b>Включить поток</b><br>Установите для <code>stream</code> значение <code>true</code> для прямого потока MJPEG или используйте <code>streamPulse</code> для предварительного просмотра по времени (см. <b>Автоотключение Stream Pulse</b> в настройках). Адаптер включает видеопоток MotionEye и записывает готовый к использованию HTML в <code>streamUrl</code>.<br><br><b>Показать поток в VIS (VIS1 / VIS2)</b><br>Рекомендуется: <b>HTML-виджет</b> с <b>привязкой</b> к <code>streamUrl</code> — точка данных уже содержит полный фрагмент <code><img></code> (нет необходим URL-адрес вручную).<br><br>1. Добавьте виджет <b>HTML</b> в свое представление.<br>2. В HTML-поле виджета введите привязку, например. <code>{motioneye.0.garten.streamUrl</code> — замените <code>0</code> на номер вашего экземпляра и <code>garten</code> на папку канала камеры (имя в нижнем регистре под экземпляром на вкладке «Объекты»).<br>3. Установите для <code>stream</code> значение <code>true</code> (или активируйте <code>streamPulse</code>) — изображение появляется после небольшой задержки при обновлении <code>streamUrl</code>.<br>4. Необязательно: привяжите виджет переключения к <code>stream</code>, чтобы включать и выключать поток из VIS.<br><br><code>streamUrl</code> доступен только для чтения и обновляется автоматически. Если VIS использует HTTPS, а MotionEye поддерживает только HTTP, браузер может заблокировать изображение.",
|
|
38
38
|
"load_cameras_button": "Загрузка камер из MotionEye",
|
|
39
39
|
"load_cameras_help": "Получает /config/list из MotionEye и добавляет камеры, которых еще нет в таблице. Экземпляр адаптера должен быть запущен. Сохраните конфигурацию и перезапустите после добавления камер.",
|
|
40
40
|
"load_cameras_result_added": "В таблицу добавлены новые камеры. Сохраните конфигурацию и перезапустите экземпляр адаптера.",
|
package/admin/i18n/uk.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "Пряма трансляція та HTML-віджети",
|
|
35
35
|
"help_setup": "1. Установіть <b>хост MotionEye</b>, облікові дані та <b>хост вебхуку</b> на вкладці «Налаштування».<br>2. На вкладці «Камери» натисніть <b>Завантажити камери з MotionEye</b> (примірник має бути запущений) або додайте рядки вручну.<br>3. Налаштуйте відображувані назви та додаткові медіа-папки.<br>4. <b>Збережіть</b> конфігурацію екземпляра та <b>перезапустіть</b> адаптер — точки даних будуть створені, а URL-адреси веб-хуку записані в MotionEye.",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1px solid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">Стан</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Прочитати</th><th style=\"text-align:left;padding:8px 6px;width:10%\">Написати</th><th style=\"text-align:left;padding:8px 6px\">Опис</th></tr></thead><tbody><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>режим</code></td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">Режим камери: вимкнено, нерухомо, різко</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">Виявлено рух (вебхук, автоматичне скидання)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>статус</code></td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">Остання синхронізація / текст помилки</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>миттєвий знімок</code></td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">Тригерний знімок (кнопка)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>потік</code></td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">живе відеопотік увімк./вимк.</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">Короткий потік пульс (кнопка)</td></tr><tr style=\"border-bottom:1px solid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">так</td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">Готовий HTML для будь-якого HTML-віджета</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">yes</td><td style=\"padding:6px\">ні</td><td style=\"padding:6px\">Налаштована URL-адреса webhook (тільки для читання)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "
|
|
37
|
+
"help_stream": "<b>Увімкніть потік</b><br>Установіть <code>stream</code> на <code>true</code> для прямого потоку MJPEG або скористайтеся <code>streamPulse</code> для попереднього перегляду за часом (див. <b>Автоматичне вимкнення пульсу потоку</b> в налаштуваннях). Адаптер вмикає відеопотік MotionEye і записує готовий до використання HTML у <code>streamUrl</code>.<br><br><b>Показувати потік у VIS (VIS1 / VIS2)</b><br>Рекомендовано: <b>HTML-віджет</b> із <b>прив’язкою</b> до <code>streamUrl</code> — точка даних уже містить повний <code><img></code> фрагмент (URL-адреса вручну не потрібна).<br><br>1. Додайте віджет <b>HTML</b> до свого перегляду.<br>2. У полі HTML віджета введіть прив’язку, напр. <code>{motioneye.0.garten.streamUrl}</code> — замініть <code>0</code> своїм номером екземпляра, а <code>garten</code> — папкою каналу камери (назва під екземпляром на вкладці «Об’єкти» написана в нижньому регістрі).<br>3. Установіть для <code>stream</code> значення <code>true</code> (або запустіть <code>streamPulse</code>) — зображення з’являється після невеликої затримки під час оновлення <code>streamUrl</code>.<br>4. Необов’язково: прив’яжіть віджет перемикача до <code>stream</code>, щоб увімкнути або вимкнути потік із VIS.<br><br><code>streamUrl</code> доступний лише для читання й оновлюється автоматично. Якщо VIS використовує HTTPS, а MotionEye підтримує лише HTTP, браузер може заблокувати зображення.",
|
|
38
38
|
"load_cameras_button": "Завантажте камери з MotionEye",
|
|
39
39
|
"load_cameras_help": "Отримує /config/list з MotionEye і додає камери, яких ще немає в таблиці. Екземпляр адаптера повинен бути запущений. Збережіть конфігурацію та перезапустіть після додавання камер.",
|
|
40
40
|
"load_cameras_result_added": "У таблицю додано нові камери. Збережіть конфігурацію та перезапустіть екземпляр адаптера.",
|
package/admin/i18n/zh-cn.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"help_section_stream": "直播和 HTML 小部件",
|
|
35
35
|
"help_setup": "1. 在“设置”选项卡上设置<b>MotionEye 主机</b>、凭据和<b>webhook 主机</b>。<br>2.在“相机”选项卡上,单击<b>从 MotionEye 加载相机</b>(实例必须正在运行)或手动添加行。<br>3.调整显示名称和可选媒体文件夹。<br>4。 <b>保存</b>实例配置并<b>重新启动</b>适配器 - 创建数据点并将 Webhook URL 写入 MotionEye。",
|
|
36
36
|
"help_states": "<table style=\"width:100%;border-collapse:collapse;font-size:0.875rem\"><thead><tr style=\"border-bottom:1pxsolid #546e7a\"><th style=\"text-align:left;padding:8px 6px;width:16%\">状态</th><th style=\"text-align:left;padding:8px 6px;width:10%\">读取</th><th style=\"text-align:left;padding:8px 6px;width:10%\">写入</th><th style=\"text-align:left;padding:8px 6px\">描述</th></tr></thead><tbody><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>模式</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">相机模式:关闭、静止、锐利</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>motion</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">检测到运动(webhook,自动重置)</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>状态</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">上次同步/错误文本</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>快照</code></td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">触发快照(按钮)</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>流</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">实时视频流开/关</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamPulse</code></td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">短流脉冲(按钮)</td></tr><tr style=\"border-bottom:1pxsolid rgba(84,110,122,0.35)\"><td style=\"padding:6px\"><code>streamUrl</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">任何 HTML 小部件的即用型 HTML</td></tr><tr><td style=\"padding:6px\"><code>webhookUrl</code></td><td style=\"padding:6px\">是</td><td style=\"padding:6px\">否</td><td style=\"padding:6px\">配置的 webhook URL(只读)</td></tr></tbody></table>",
|
|
37
|
-
"help_stream": "
|
|
37
|
+
"help_stream": "<b>启用流</b><br>将<code>stream</code>设置为<code>true</code>以获取实时MJPEG流,或使用<code>streamPulse</code>进行定时预览(请参阅设置中的<b>流脉冲自动关闭</b>)。适配器打开 MotionEye 视频流并将现成的 HTML 写入 <code>streamUrl</code>。<br><br><b>在 VIS (VIS1 / VIS2) 中显示流</b><br>推荐:<b>HTML 小部件</b>,<b>绑定</b>到 <code>streamUrl</code> — 数据点已包含完整的 <code><img></code> 代码段(无手动 URL)需要)。<br><br>1。将 <b>HTML</b> 小部件添加到您的视图中。<br>2.在小部件 HTML 字段中输入绑定,例如<code>{motioneye.0.garten.streamUrl}</code> — 将 <code>0</code> 替换为您的实例编号,将 <code>garten</code> 替换为相机通道文件夹(对象选项卡中实例下的小写名称)。<br>3.将 <code>stream</code> 设置为 <code>true</code>(或触发 <code>streamPulse</code>) - 当 <code>streamUrl</code> 更新时,图像会在短暂延迟后出现。<br>4.可选:将开关小部件绑定到<code>stream</code>,以从 VIS 打开/关闭流。<br><br><code>streamUrl</code> 为只读并自动更新。如果 VIS 使用 HTTPS,而 MotionEye 仅使用 HTTP,则浏览器可能会阻止图像。",
|
|
38
38
|
"load_cameras_button": "从 MotionEye 加载相机",
|
|
39
39
|
"load_cameras_help": "从 MotionEye 获取 /config/list 并添加表中尚未包含的摄像机。适配器实例必须正在运行。添加摄像机后保存配置并重启。",
|
|
40
40
|
"load_cameras_result_added": "新相机已添加到表中。保存配置并重新启动适配器实例。",
|
|
Binary file
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "motioneye",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.3.2": {
|
|
7
|
+
"en": "Modified config/help",
|
|
8
|
+
"de": "Geänderte Konfiguration/Hilfe",
|
|
9
|
+
"ru": "Изменена конфигурация/справка",
|
|
10
|
+
"pt": "Configuração/ajuda modificada",
|
|
11
|
+
"nl": "Gewijzigde configuratie/help",
|
|
12
|
+
"fr": "Configuration/aide modifiée",
|
|
13
|
+
"it": "Configurazione/aiuto modificato",
|
|
14
|
+
"es": "Configuración/ayuda modificada",
|
|
15
|
+
"pl": "Zmodyfikowana konfiguracja/pomoc",
|
|
16
|
+
"uk": "Змінена конфігурація/довідка",
|
|
17
|
+
"zh-cn": "修改了配置/帮助"
|
|
18
|
+
},
|
|
19
|
+
"0.3.1": {
|
|
20
|
+
"en": "Changed repo icon",
|
|
21
|
+
"de": "Repository-Symbol geändert",
|
|
22
|
+
"ru": "Изменен значок репозитория",
|
|
23
|
+
"pt": "Ícone do repositório alterado",
|
|
24
|
+
"nl": "Repository-pictogram gewijzigd",
|
|
25
|
+
"fr": "Icône du dépôt modifiée",
|
|
26
|
+
"it": "Icona del repository modificata",
|
|
27
|
+
"es": "Icono del repositorio cambiado",
|
|
28
|
+
"pl": "Zmieniono ikonę repozytorium",
|
|
29
|
+
"uk": "Змінено піктограму репозиторію",
|
|
30
|
+
"zh-cn": "更改了仓库图标"
|
|
31
|
+
},
|
|
6
32
|
"0.3.0": {
|
|
7
33
|
"en": "Camera channel folders are now lowercase (e.g. `innenhof_ii` instead of `Innenhof_II`) — aligned with other ioBroker adapters\nInfo states moved from `0_info` to `_info`\nExisting datapoint values are migrated automatically on adapter start — please check VIS, scripts, and automations that use fixed state paths",
|
|
8
34
|
"de": "Die Ordner für die Kamerakanäle werden jetzt in Kleinbuchstaben geschrieben (z. B. `innenhof_ii` statt `Innenhof_II`) – angepasst an andere ioBroker-Adapter.\nInformationszustände wurden von `0_info` nach `_info` verschoben.\nVorhandene Datenpunktwerte werden beim Start des Adapters automatisch migriert – bitte überprüfen Sie VIS, Skripte und Automatisierungen, die feste Zustandspfade verwenden.",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "Zmieniono nazwę folderu info z `_info` na `0_info`, aby był sortowany nad kanałami kamer w drzewie obiektów\nMigracja starszych stanów `info` i `_info` do `0_info` podczas uruchamiania adaptera",
|
|
68
94
|
"uk": "Папку info перейменовано з `_info` на `0_info`, щоб вона сортувалася вище каналів камер у дереві об'єктів\nПеренести застарілі стани `info` та `_info` на `0_info` під час запуску адаптера",
|
|
69
95
|
"zh-cn": "将信息文件夹从 `_info` 重命名为 `0_info`,使其在对象树中位于摄像机通道之上。\n在适配器启动时,将旧版 `info` 和 `_info` 状态迁移到 `0_info`。"
|
|
70
|
-
},
|
|
71
|
-
"0.1.0": {
|
|
72
|
-
"en": "Added states for motionEyeVersion and motionVersion",
|
|
73
|
-
"de": "Zustände für motionEyeVersion und motionVersion hinzugefügt.",
|
|
74
|
-
"ru": "Добавлены состояния для motionEyeVersion и motionVersion.",
|
|
75
|
-
"pt": "Adicionados estados para motionEyeVersion e motionVersion.",
|
|
76
|
-
"nl": "Statuswaarden toegevoegd voor motionEyeVersion en motionVersion",
|
|
77
|
-
"fr": "Ajout d'états pour motionEyeVersion et motionVersion",
|
|
78
|
-
"it": "Aggiunti gli stati per motionEyeVersion e motionVersion",
|
|
79
|
-
"es": "Se agregaron estados para motionEyeVersion y motionVersion.",
|
|
80
|
-
"pl": "Dodano stany dla motionEyeVersion i motionVersion",
|
|
81
|
-
"uk": "Додано стани для motionEyeVersion та motionVersion",
|
|
82
|
-
"zh-cn": "为 motionEyeVersion 和 motionVersion 添加了状态"
|
|
83
|
-
},
|
|
84
|
-
"0.0.1": {
|
|
85
|
-
"en": "Initial development release — adapter scaffold and MotionEye API client",
|
|
86
|
-
"de": "Erste Entwicklungsversion — Adapter-Grundgerüst und MotionEye-API-Client",
|
|
87
|
-
"ru": "Первоначальный выпуск разработки — каркас адаптера и клиент MotionEye API",
|
|
88
|
-
"pt": "Lançamento inicial de desenvolvimento — estrutura do adaptador e cliente MotionEye API",
|
|
89
|
-
"nl": "Eerste ontwikkelingsrelease — adapter scaffold en MotionEye API-client",
|
|
90
|
-
"fr": "Première version de développement — structure d'adaptateur et client API MotionEye",
|
|
91
|
-
"it": "Rilascio iniziale di sviluppo — scaffold dell'adattatore e client API MotionEye",
|
|
92
|
-
"es": "Lanzamiento inicial de desarrollo — andamiaje del adaptador y cliente API MotionEye",
|
|
93
|
-
"pl": "Początkowe wydanie deweloperskie — szkielet adaptera i klient API MotionEye",
|
|
94
|
-
"uk": "Початковий випуск розробки — каркас адаптера та клієнт MotionEye API",
|
|
95
|
-
"zh-cn": "初始开发版本 — 适配器脚手架和 MotionEye API 客户端"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -135,9 +135,9 @@
|
|
|
135
135
|
"license": "MIT"
|
|
136
136
|
},
|
|
137
137
|
"platform": "Javascript/Node.js",
|
|
138
|
-
"icon": "motioneye.
|
|
138
|
+
"icon": "motioneye.png",
|
|
139
139
|
"enabled": true,
|
|
140
|
-
"extIcon": "https://raw.githubusercontent.com/inventwo/ioBroker.motioneye/main/admin/motioneye.
|
|
140
|
+
"extIcon": "https://raw.githubusercontent.com/inventwo/ioBroker.motioneye/main/admin/motioneye.png",
|
|
141
141
|
"readme": "https://github.com/inventwo/ioBroker.motioneye/blob/main/README.md",
|
|
142
142
|
"loglevel": "info",
|
|
143
143
|
"tier": 3,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.motioneye",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Connect MotionEye cameras to ioBroker for motion detection, snapshots, and live streams",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "skvarel",
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"test:integration": "mocha test/integration --exit",
|
|
64
64
|
"test": "npm run test:js && npm run test:package",
|
|
65
65
|
"check": "tsc --noEmit -p tsconfig.check.json",
|
|
66
|
+
"adapter-check": "npx --yes @iobroker/repochecker https://github.com/inventwo/ioBroker.motioneye --local",
|
|
66
67
|
"lint": "eslint -c eslint.config.mjs .",
|
|
67
68
|
"lint-fix": "eslint -c eslint.config.mjs . --fix",
|
|
68
69
|
"translate": "translate-adapter",
|
package/admin/motioneye-logo.svg
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="150px" height="150px" viewBox="0 0 150 150" version="1.1">
|
|
3
|
-
<defs>
|
|
4
|
-
<image id="image12" width="150" height="150" xlink:href="data:image/png;base64,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"/>
|
|
5
|
-
<image id="image22" width="150" height="150" xlink:href="data:image/png;base64,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1EWVscTR2Pi5755wdxztLnZ5XblUPBUZuHRl+PSPf5ueGhkAMIkCquhcbwzWStpu0g7AYzJZanyf+XrHZM8bgUwsMgFRIjwPnRbY6QWDdX/qMpMFortUIMJUUP/UQERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERI/evwE2sAMsZcHqkwAAAABJRU5ErkJggg=="/>
|
|
6
|
-
<image id="image32" width="150" height="150" xlink:href="data:image/png;base64,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"/>
|
|
7
|
-
</defs>
|
|
8
|
-
<g id="surface1">
|
|
9
|
-
<use xlink:href="#image12"/>
|
|
10
|
-
<use xlink:href="#image22"/>
|
|
11
|
-
<use xlink:href="#image32"/>
|
|
12
|
-
</g>
|
|
13
|
-
</svg>
|
package/admin/motioneye.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 512 512" viewBox="0 0 512 512"><filter id="e" class="B"><feFlood class="C D"/><feComposite in2="SourceGraphic" operator="in"/><feGaussianBlur stdDeviation=".2"/><feOffset dy="-.5"/><feComposite in="SourceGraphic"/></filter><filter id="a" class="B"><feFlood class="C D"/><feComposite in2="SourceGraphic" operator="in"/><feGaussianBlur stdDeviation=".6"/><feOffset dy="-1"/><feComposite in="SourceGraphic"/></filter><filter id="g" x="-.1" y="-.16" class="B"><feFlood class="C D"/><feComposite in2="SourceGraphic" operator="in"/><feGaussianBlur stdDeviation=".6"/><feOffset dy="-1"/><feComposite in="SourceGraphic"/></filter><g style="filter:url(#a)" transform="matrix(1.20536 0 0 -1.20536 1.143 62.857)"><linearGradient id="b" x1="75.101" x2="75.101" y1="-764.379" y2="-1178.719" gradientTransform="translate(120.913 968.928)scale(1.2054)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#4aa3e0"/><stop offset="1" style="stop-color:#3096db"/></linearGradient><path d="M53.4-18.8C19.6-56.4-.9-105.6-.9-160.2c0-117.3 95.1-212.4 212.4-212.4s212.4 95.1 212.4 212.4c0 54.4-20.5 103.8-54.1 141.4-16.1-5.9-32.1-12.8-48-21.7 31.4-9.2 53.1-38 53.1-70.7-.1-40.6-33-73.4-73.5-73.5-34.5 0-63.4 23.8-71.5 55.6h-36.8c-8-31.9-37-55.6-71.5-55.6-40.6 0-73.8 33.1-73.8 73.5 0 33.8 23.3 62.4 54.6 71-15.9 8.6-32.2 15.3-49 21.4m158-133.3c5.1-18.8 10.4-37.4 32.7-49l-32.7-49-32.7 49c19.5 13.8 28.5 30.7 32.7 49" style="fill:url(#b)"/><linearGradient id="c" x1=".554" x2=".554" y1="-764.379" y2="-1178.719" gradientTransform="translate(120.913 968.928)scale(1.2054)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#4aa3e0"/><stop offset="1" style="stop-color:#3096db"/></linearGradient><path d="M121.6-86.7c-13.5 0-24.5-11-24.5-24.5s11-24.5 24.5-24.5 24.5 11 24.5 24.5-11 24.5-24.5 24.5" style="fill:url(#c)"/><linearGradient id="d" x1="133.923" x2="133.923" y1="-764.379" y2="-1178.719" gradientTransform="translate(139.867 968.928)scale(1.2054)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#4aa3e0"/><stop offset="1" style="stop-color:#3096db"/></linearGradient><path d="M301.3-86.7c-13.5 0-24.5-11-24.5-24.5s11-24.5 24.5-24.5 24.5 11 24.5 24.5-11 24.5-24.5 24.5" style="fill:url(#d)"/></g><g style="filter:url(#e)" transform="matrix(1.25 0 0 -1.25 0 64)"><linearGradient id="f" x1="92.558" x2="373.483" y1="17.967" y2="17.967" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#4aa3e0"/><stop offset="1" style="stop-color:#3096db"/></linearGradient><path d="M204.8 51.2c-41.5 0-80-13.3-112.2-34.5 34.9-3.7 69.3-12.7 108.3-32 39.5 20.1 80 28.5 116.4 32.7-32.3 21.4-70.9 33.8-112.5 33.8" style="fill:url(#f)"/></g><g style="filter:url(#g)" transform="matrix(1.25 0 0 -1.25 0 64)"><linearGradient id="h" x1="51.064" x2="51.064" y1="-762.878" y2="-886.934" gradientTransform="translate(140.6 959.4)scale(1.25)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#4aa3e0"/><stop offset="1" style="stop-color:#3096db"/></linearGradient><path d="M338.7 7.1c-41-.3-97.1-20.4-137.8-39.1C158-16.5 114.1 8.1 64.5 6.9c-3.3-.1-6.5-.2-9.8-.5L15.8 3.2 52.7-9.1c50.7-16.5 95.2-27 134.4-95.1h35.4c39.1 67.6 85.9 78.9 134.2 95.1l36.4 11.8-37.9 3.7c-5.5.5-11 .8-16.5.7" style="fill:url(#h)"/></g></svg>
|