iobroker.motioneye 0.1.0 → 0.1.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/LICENSE +21 -21
- package/README.md +145 -137
- package/admin/i18n/de.json +2 -2
- package/admin/i18n/en.json +49 -49
- package/admin/i18n/es.json +2 -2
- package/admin/i18n/fr.json +2 -2
- package/admin/i18n/it.json +2 -2
- package/admin/i18n/nl.json +2 -2
- package/admin/i18n/pl.json +2 -2
- package/admin/i18n/pt.json +2 -2
- package/admin/i18n/ru.json +2 -2
- package/admin/i18n/uk.json +2 -2
- package/admin/i18n/zh-cn.json +2 -2
- package/admin/img/inventwo.svg +2 -2
- package/admin/jsonConfig.json +302 -302
- package/io-package.json +192 -166
- package/lib/adapter-config.d.ts +19 -19
- package/lib/cameraRegistry.test.js +56 -56
- package/lib/modeProfiles.test.js +36 -36
- package/lib/streamManager.test.js +19 -19
- package/main.js +21 -15
- package/package.json +79 -79
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 skvarel <skvarel@inventwo.com>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 skvarel <skvarel@inventwo.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,137 +1,145 @@
|
|
|
1
|
-

|
|
2
|
-
|
|
3
|
-
# ioBroker adapter for MotionEye
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-

|
|
7
|
-
[](https://www.npmjs.com/package/iobroker.motioneye)
|
|
8
|
-
[](https://www.npmjs.com/package/iobroker.motioneye)
|
|
9
|
-
|
|
10
|
-
[](https://forum.iobroker.net/)
|
|
11
|
-
[](https://github.com/skvarel)
|
|
12
|
-
[](https://github.com/inventwo/ioBroker.motioneye/blob/main/.cursor/iobroker-adapter.mdc)
|
|
13
|
-
|
|
14
|
-
[](https://www.paypal.com/donate/?hosted_button_id=7W6M3TFZ4W9LW)
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## What this adapter does
|
|
19
|
-
|
|
20
|
-
Connect MotionEye cameras to ioBroker for motion detection, snapshots, and live streams. Control detection modes (`off` / `still` / `sharp`) from ioBroker or VIS and provide `streamUrl` HTML for inventwo/VIS2 widgets — no simple-api required for webhooks.
|
|
21
|
-
|
|
22
|
-
> **Status:** Phase 2 — snapshot, stream, streamPulse, and `streamUrl` HTML for inventwo/VIS widgets. Phase 1 covers modes, webhooks, and MotionEye sync.
|
|
23
|
-
|
|
24
|
-
## Features
|
|
25
|
-
|
|
26
|
-
- User-defined camera names in ioBroker (independent of MotionEye labels)
|
|
27
|
-
- Dynamic channels under `motioneye.0.<Name>.*`
|
|
28
|
-
- Built-in webhook server — no simple-api dependency
|
|
29
|
-
- MotionEye Config API sync for modes and webhook URLs
|
|
30
|
-
- `
|
|
31
|
-
- Stream sibling relink after VIS re-render (multi-camera dashboards)
|
|
32
|
-
|
|
33
|
-
## Data Points
|
|
34
|
-
|
|
35
|
-
### Per camera (`motioneye.0.<Name>.*`)
|
|
36
|
-
|
|
37
|
-
| State | Type | Read | Write | Description |
|
|
38
|
-
|-------|------|------|-------|-------------|
|
|
39
|
-
| `mode` | value | yes | yes | `off` / `still` / `sharp` |
|
|
40
|
-
| `motion` | indicator | yes | yes | Motion detected (auto-reset) |
|
|
41
|
-
| `snapshot` | button | no | yes | Trigger snapshot |
|
|
42
|
-
| `stream` | switch | yes | yes | Live MJPEG stream on/off |
|
|
43
|
-
| `streamPulse` | button | no | yes | Stream on briefly (auto-off) |
|
|
44
|
-
| `streamUrl` | text | yes | no | HTML `<img>` for inventwo widget |
|
|
45
|
-
| `status` | text | yes | no | Last sync status |
|
|
46
|
-
| `lastAction` | text | yes | no | Last API action |
|
|
47
|
-
| `webhookUrl` | url | yes | no | URL written to MotionEye |
|
|
48
|
-
| `motionEyeId` | value | yes | no | MotionEye camera ID |
|
|
49
|
-
| `motionEyeName` | text | yes | no | Original name in MotionEye |
|
|
50
|
-
|
|
51
|
-
### Instance (`motioneye.0.
|
|
52
|
-
|
|
53
|
-
The `
|
|
54
|
-
|
|
55
|
-
| State | Type | Description |
|
|
56
|
-
|-------|------|-------------|
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
62
|
-
|
|
63
|
-
## Installation
|
|
64
|
-
|
|
65
|
-
1. Install the adapter from the ioBroker admin interface (or clone this repo and use the dev-server)
|
|
66
|
-
2. Create a new instance
|
|
67
|
-
3. Configure **Settings**: MotionEye host, ports, credentials (optional), webhook host
|
|
68
|
-
4. Add cameras on the **Cameras** tab (display name + MotionEye ID)
|
|
69
|
-
5. Save and restart the instance — datapoints are created and webhook URLs are written to MotionEye
|
|
70
|
-
|
|
71
|
-
### Camera modes
|
|
72
|
-
|
|
73
|
-
| Mode | Motion detection | Video recording | Webhook |
|
|
74
|
-
|------|------------------|-----------------|---------|
|
|
75
|
-
| `off` | no | no | no |
|
|
76
|
-
| `still` | yes | no | yes |
|
|
77
|
-
| `sharp` | yes | motion-triggered MP4 | yes |
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
## Configuration
|
|
81
|
-
|
|
82
|
-
| Option | Default | Description |
|
|
83
|
-
|--------|---------|-------------|
|
|
84
|
-
| `motionHost` | *(empty)* | MotionEye server hostname or IP (required) |
|
|
85
|
-
| `motionPort` | `7999` | Motion HTTP API (snapshots) |
|
|
86
|
-
| `motionEyePort` | `8765` | MotionEye config API |
|
|
87
|
-
| `motionEyeUser` | `admin` | MotionEye login user |
|
|
88
|
-
| `motionEyePassword` | *(empty)* | MotionEye password (plain text, stored encrypted) |
|
|
89
|
-
| `webhookHost` | *(required)* | ioBroker host IP or hostname reachable from MotionEye (used in webhook URLs) |
|
|
90
|
-
| `webhookPort` | `8090` | Built-in webhook listener port |
|
|
91
|
-
| `motionResetMs` | `15000` | Auto-reset for `.motion` after webhook |
|
|
92
|
-
| `statusPollIntervalSec` | `300` | MotionEye status poll interval |
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# ioBroker adapter for MotionEye
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
[](https://www.npmjs.com/package/iobroker.motioneye)
|
|
8
|
+
[](https://www.npmjs.com/package/iobroker.motioneye)
|
|
9
|
+
|
|
10
|
+
[](https://forum.iobroker.net/)
|
|
11
|
+
[](https://github.com/skvarel)
|
|
12
|
+
[](https://github.com/inventwo/ioBroker.motioneye/blob/main/.cursor/iobroker-adapter.mdc)
|
|
13
|
+
|
|
14
|
+
[](https://www.paypal.com/donate/?hosted_button_id=7W6M3TFZ4W9LW)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## What this adapter does
|
|
19
|
+
|
|
20
|
+
Connect MotionEye cameras to ioBroker for motion detection, snapshots, and live streams. Control detection modes (`off` / `still` / `sharp`) from ioBroker or VIS and provide `streamUrl` HTML for inventwo/VIS2 widgets — no simple-api required for webhooks.
|
|
21
|
+
|
|
22
|
+
> **Status:** Phase 2 — snapshot, stream, streamPulse, and `streamUrl` HTML for inventwo/VIS widgets. Phase 1 covers modes, webhooks, and MotionEye sync.
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
- User-defined camera names in ioBroker (independent of MotionEye labels)
|
|
27
|
+
- Dynamic channels under `motioneye.0.<Name>.*`
|
|
28
|
+
- Built-in webhook server — no simple-api dependency
|
|
29
|
+
- MotionEye Config API sync for modes and webhook URLs
|
|
30
|
+
- `0_info.connection` — instance shows when MotionEye is unreachable
|
|
31
|
+
- Stream sibling relink after VIS re-render (multi-camera dashboards)
|
|
32
|
+
|
|
33
|
+
## Data Points
|
|
34
|
+
|
|
35
|
+
### Per camera (`motioneye.0.<Name>.*`)
|
|
36
|
+
|
|
37
|
+
| State | Type | Read | Write | Description |
|
|
38
|
+
|-------|------|------|-------|-------------|
|
|
39
|
+
| `mode` | value | yes | yes | `off` / `still` / `sharp` |
|
|
40
|
+
| `motion` | indicator | yes | yes | Motion detected (auto-reset) |
|
|
41
|
+
| `snapshot` | button | no | yes | Trigger snapshot |
|
|
42
|
+
| `stream` | switch | yes | yes | Live MJPEG stream on/off |
|
|
43
|
+
| `streamPulse` | button | no | yes | Stream on briefly (auto-off) |
|
|
44
|
+
| `streamUrl` | text | yes | no | HTML `<img>` for inventwo widget |
|
|
45
|
+
| `status` | text | yes | no | Last sync status |
|
|
46
|
+
| `lastAction` | text | yes | no | Last API action |
|
|
47
|
+
| `webhookUrl` | url | yes | no | URL written to MotionEye |
|
|
48
|
+
| `motionEyeId` | value | yes | no | MotionEye camera ID |
|
|
49
|
+
| `motionEyeName` | text | yes | no | Original name in MotionEye |
|
|
50
|
+
|
|
51
|
+
### Instance (`motioneye.0.0_info.*`)
|
|
52
|
+
|
|
53
|
+
The `0_info` folder sorts above camera channels (digits before letters in the object tree).
|
|
54
|
+
|
|
55
|
+
| State | Type | Description |
|
|
56
|
+
|-------|------|-------------|
|
|
57
|
+
| `0_info.connection` | boolean | MotionEye reachable |
|
|
58
|
+
| `0_info.camerasOnline` | number | Enabled cameras found in MotionEye |
|
|
59
|
+
| `0_info.lastSync` | text | Last status poll timestamp |
|
|
60
|
+
| `0_info.motionEyeVersion` | text | MotionEye server version |
|
|
61
|
+
| `0_info.motionVersion` | text | Motion daemon version |
|
|
62
|
+
|
|
63
|
+
## Installation
|
|
64
|
+
|
|
65
|
+
1. Install the adapter from the ioBroker admin interface (or clone this repo and use the dev-server)
|
|
66
|
+
2. Create a new instance
|
|
67
|
+
3. Configure **Settings**: MotionEye host, ports, credentials (optional), webhook host
|
|
68
|
+
4. Add cameras on the **Cameras** tab (display name + MotionEye ID)
|
|
69
|
+
5. Save and restart the instance — datapoints are created and webhook URLs are written to MotionEye
|
|
70
|
+
|
|
71
|
+
### Camera modes
|
|
72
|
+
|
|
73
|
+
| Mode | Motion detection | Video recording | Webhook |
|
|
74
|
+
|------|------------------|-----------------|---------|
|
|
75
|
+
| `off` | no | no | no |
|
|
76
|
+
| `still` | yes | no | yes |
|
|
77
|
+
| `sharp` | yes | motion-triggered MP4 | yes |
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Configuration
|
|
81
|
+
|
|
82
|
+
| Option | Default | Description |
|
|
83
|
+
|--------|---------|-------------|
|
|
84
|
+
| `motionHost` | *(empty)* | MotionEye server hostname or IP (required) |
|
|
85
|
+
| `motionPort` | `7999` | Motion HTTP API (snapshots) |
|
|
86
|
+
| `motionEyePort` | `8765` | MotionEye config API |
|
|
87
|
+
| `motionEyeUser` | `admin` | MotionEye login user |
|
|
88
|
+
| `motionEyePassword` | *(empty)* | MotionEye password (plain text, stored encrypted) |
|
|
89
|
+
| `webhookHost` | *(required)* | ioBroker host IP or hostname reachable from MotionEye (used in webhook URLs) |
|
|
90
|
+
| `webhookPort` | `8090` | Built-in webhook listener port |
|
|
91
|
+
| `motionResetMs` | `15000` | Auto-reset for `.motion` after webhook |
|
|
92
|
+
| `statusPollIntervalSec` | `300` | MotionEye status poll interval |
|
|
93
|
+
| `useMotionEyeConfig` | `true` | Write mode, webhook URLs, and stream on/off to MotionEye (leave enabled for normal use) |
|
|
94
|
+
|
|
95
|
+
## Support
|
|
96
|
+
|
|
97
|
+
If you like our work and would like to support us, we appreciate any donation.
|
|
98
|
+
(This link leads to our PayPal account and is not affiliated with ioBroker.)
|
|
99
|
+
|
|
100
|
+
[](https://www.paypal.com/donate?hosted_button_id=7W6M3TFZ4W9LW)
|
|
101
|
+
|
|
102
|
+
## Changelog
|
|
103
|
+
|
|
104
|
+
<!--
|
|
105
|
+
### **WORK IN PROGRESS**
|
|
106
|
+
-->
|
|
107
|
+
### 0.1.2 (2026-06-21)
|
|
108
|
+
- (skvarel) Clarified admin help for useMotionEyeConfig (required for mode, webhooks, and stream control — not only MotionEye web UI)
|
|
109
|
+
|
|
110
|
+
### 0.1.1 (2026-06-21)
|
|
111
|
+
- (skvarel) Renamed info folder from `_info` to `0_info` so it sorts above camera channels in the object tree
|
|
112
|
+
- (skvarel) Migrate legacy `info` and `_info` states to `0_info` on adapter start
|
|
113
|
+
|
|
114
|
+
### 0.1.0 (2026-06-21)
|
|
115
|
+
- (skvarel) Added states for motionEyeVersion and motionVersion
|
|
116
|
+
|
|
117
|
+
### 0.0.1 (2026-06-21)
|
|
118
|
+
- (skvarel) Initial development release
|
|
119
|
+
|
|
120
|
+
## Older changes
|
|
121
|
+
- [CHANGELOG_OLD.md](CHANGELOG_OLD.md)
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT License
|
|
126
|
+
|
|
127
|
+
Copyright (c) 2026 skvarel <skvarel@inventwo.com>
|
|
128
|
+
|
|
129
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
130
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
131
|
+
in the Software without restriction, including without limitation the rights
|
|
132
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
133
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
134
|
+
furnished to do so, subject to the following conditions:
|
|
135
|
+
|
|
136
|
+
The above copyright notice and this permission notice shall be included in all
|
|
137
|
+
copies or substantial portions of the Software.
|
|
138
|
+
|
|
139
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
140
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
141
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
142
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
143
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
144
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
145
|
+
SOFTWARE.
|
package/admin/i18n/de.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Nur für streamPulse — der Stream schaltet nach dieser Dauer wieder aus (0 = nie)",
|
|
39
39
|
"tab_cameras": "Kameras",
|
|
40
40
|
"tab_settings": "Einstellungen",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "MotionEye über Config-API steuern",
|
|
42
|
+
"useMotionEyeConfig_help": "Für den normalen Betrieb aktiviert lassen. Der Adapter schreibt Kameramodus, Webhook-URLs und Stream ein/aus nach MotionEye (Port 8765). ioBroker steuert damit Bewegungserkennung und Livestream; die MotionEye-Weboberfläche passt sich nur mit an. Nur deaktivieren, wenn du MotionEye komplett manuell konfigurierst und ioBroker nur Webhooks empfangen soll.",
|
|
43
43
|
"webhookBind": "Webhook-Bind-Adresse",
|
|
44
44
|
"webhookBind_help": "Netzwerkschnittstelle für den eingebauten Webhook-Listener (Standard 0.0.0.0)",
|
|
45
45
|
"webhookHost": "ioBroker-Host für Webhooks",
|
package/admin/i18n/en.json
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
{
|
|
2
|
-
"applyMediaSettingsOnStart": "Apply snapshot media profile on adapter start",
|
|
3
|
-
"camera_defaultMode": "Default mode",
|
|
4
|
-
"camera_enabled": "Enabled",
|
|
5
|
-
"camera_id": "Internal ID",
|
|
6
|
-
"camera_id_help": "Stable key for webhooks (e.g. auffahrt). Leave empty to derive from name.",
|
|
7
|
-
"camera_id_placeholder": "auto from name",
|
|
8
|
-
"camera_motionEyeId": "MotionEye ID",
|
|
9
|
-
"camera_motionEyeId_help": "Numeric camera ID from MotionEye (/config/list)",
|
|
10
|
-
"camera_name": "Display name",
|
|
11
|
-
"camera_name_help": "ioBroker channel name — independent of MotionEye label",
|
|
12
|
-
"cameras_info": "Add each camera you want in ioBroker. The MotionEye ID is shown in the MotionEye web UI or via /config/list on port 8765. After saving, restart the adapter instance to create datapoints and write webhook URLs to MotionEye.",
|
|
13
|
-
"cameras_table": "Cameras",
|
|
14
|
-
"defaultMode": "Default mode for new cameras",
|
|
15
|
-
"disableStreamOnStart": "Disable video stream on adapter start",
|
|
16
|
-
"header_cameras": "Camera management",
|
|
17
|
-
"header_connection": "MotionEye Connection",
|
|
18
|
-
"header_stream": "Stream Options",
|
|
19
|
-
"header_timing": "Polling & Timeouts",
|
|
20
|
-
"header_webhook": "Webhook",
|
|
21
|
-
"mode_off": "Off — no detection",
|
|
22
|
-
"mode_sharp": "Sharp — motion + video recording",
|
|
23
|
-
"mode_still": "Still — motion trigger only",
|
|
24
|
-
"motionEyePassword": "MotionEye password",
|
|
25
|
-
"motionEyePassword_help": "Plain-text password as used for MotionEye web login. Leave empty if no password is set.",
|
|
26
|
-
"motionEyePort": "MotionEye config API port",
|
|
27
|
-
"motionEyePort_help": "MotionEye configuration API (default 8765)",
|
|
28
|
-
"motionEyeUser": "MotionEye username",
|
|
29
|
-
"motionHost": "MotionEye host",
|
|
30
|
-
"motionHost_help": "IP address or hostname of your MotionEye server",
|
|
31
|
-
"motionPort": "Motion HTTP port",
|
|
32
|
-
"motionPort_help": "Motion webcontrol port for snapshots (default 7999)",
|
|
33
|
-
"motionResetMs": "Motion auto-reset (ms)",
|
|
34
|
-
"motionResetMs_help": "How long the .motion state stays true after a webhook (default 15000)",
|
|
35
|
-
"requestTimeoutMs": "API request timeout (ms)",
|
|
36
|
-
"statusPollIntervalSec": "Status poll interval (seconds)",
|
|
37
|
-
"streamAutoOffMs": "Stream pulse auto-off (ms)",
|
|
38
|
-
"streamAutoOffMs_help": "Used by streamPulse only — stream turns off after this duration (0 = never)",
|
|
39
|
-
"tab_cameras": "Cameras",
|
|
40
|
-
"tab_settings": "Settings",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
43
|
-
"webhookBind": "Webhook bind address",
|
|
44
|
-
"webhookBind_help": "Network interface for the built-in webhook listener (default 0.0.0.0)",
|
|
45
|
-
"webhookHost": "ioBroker host for webhooks",
|
|
46
|
-
"webhookHost_help": "IP or hostname of your ioBroker host reachable from MotionEye (e.g. 192.168.130.130). Required — without this value the adapter cannot write webhook URLs to MotionEye.",
|
|
47
|
-
"webhookPort": "Webhook port",
|
|
48
|
-
"webhookPort_help": "Port for motion webhooks from MotionEye (default 8090). Ensure firewall allows inbound traffic."
|
|
49
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"applyMediaSettingsOnStart": "Apply snapshot media profile on adapter start",
|
|
3
|
+
"camera_defaultMode": "Default mode",
|
|
4
|
+
"camera_enabled": "Enabled",
|
|
5
|
+
"camera_id": "Internal ID",
|
|
6
|
+
"camera_id_help": "Stable key for webhooks (e.g. auffahrt). Leave empty to derive from name.",
|
|
7
|
+
"camera_id_placeholder": "auto from name",
|
|
8
|
+
"camera_motionEyeId": "MotionEye ID",
|
|
9
|
+
"camera_motionEyeId_help": "Numeric camera ID from MotionEye (/config/list)",
|
|
10
|
+
"camera_name": "Display name",
|
|
11
|
+
"camera_name_help": "ioBroker channel name — independent of MotionEye label",
|
|
12
|
+
"cameras_info": "Add each camera you want in ioBroker. The MotionEye ID is shown in the MotionEye web UI or via /config/list on port 8765. After saving, restart the adapter instance to create datapoints and write webhook URLs to MotionEye.",
|
|
13
|
+
"cameras_table": "Cameras",
|
|
14
|
+
"defaultMode": "Default mode for new cameras",
|
|
15
|
+
"disableStreamOnStart": "Disable video stream on adapter start",
|
|
16
|
+
"header_cameras": "Camera management",
|
|
17
|
+
"header_connection": "MotionEye Connection",
|
|
18
|
+
"header_stream": "Stream Options",
|
|
19
|
+
"header_timing": "Polling & Timeouts",
|
|
20
|
+
"header_webhook": "Webhook",
|
|
21
|
+
"mode_off": "Off — no detection",
|
|
22
|
+
"mode_sharp": "Sharp — motion + video recording",
|
|
23
|
+
"mode_still": "Still — motion trigger only",
|
|
24
|
+
"motionEyePassword": "MotionEye password",
|
|
25
|
+
"motionEyePassword_help": "Plain-text password as used for MotionEye web login. Leave empty if no password is set.",
|
|
26
|
+
"motionEyePort": "MotionEye config API port",
|
|
27
|
+
"motionEyePort_help": "MotionEye configuration API (default 8765)",
|
|
28
|
+
"motionEyeUser": "MotionEye username",
|
|
29
|
+
"motionHost": "MotionEye host",
|
|
30
|
+
"motionHost_help": "IP address or hostname of your MotionEye server",
|
|
31
|
+
"motionPort": "Motion HTTP port",
|
|
32
|
+
"motionPort_help": "Motion webcontrol port for snapshots (default 7999)",
|
|
33
|
+
"motionResetMs": "Motion auto-reset (ms)",
|
|
34
|
+
"motionResetMs_help": "How long the .motion state stays true after a webhook (default 15000)",
|
|
35
|
+
"requestTimeoutMs": "API request timeout (ms)",
|
|
36
|
+
"statusPollIntervalSec": "Status poll interval (seconds)",
|
|
37
|
+
"streamAutoOffMs": "Stream pulse auto-off (ms)",
|
|
38
|
+
"streamAutoOffMs_help": "Used by streamPulse only — stream turns off after this duration (0 = never)",
|
|
39
|
+
"tab_cameras": "Cameras",
|
|
40
|
+
"tab_settings": "Settings",
|
|
41
|
+
"useMotionEyeConfig": "Control MotionEye via config API",
|
|
42
|
+
"useMotionEyeConfig_help": "Leave enabled for normal use. The adapter writes camera mode, webhook URLs, and stream on/off to MotionEye (port 8765). ioBroker then controls motion detection and live streams; the MotionEye web UI follows as a side effect. Disable only if you configure MotionEye entirely by hand and ioBroker should only receive webhooks.",
|
|
43
|
+
"webhookBind": "Webhook bind address",
|
|
44
|
+
"webhookBind_help": "Network interface for the built-in webhook listener (default 0.0.0.0)",
|
|
45
|
+
"webhookHost": "ioBroker host for webhooks",
|
|
46
|
+
"webhookHost_help": "IP or hostname of your ioBroker host reachable from MotionEye (e.g. 192.168.130.130). Required — without this value the adapter cannot write webhook URLs to MotionEye.",
|
|
47
|
+
"webhookPort": "Webhook port",
|
|
48
|
+
"webhookPort_help": "Port for motion webhooks from MotionEye (default 8090). Ensure firewall allows inbound traffic."
|
|
49
|
+
}
|
package/admin/i18n/es.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Usado solo por streamPulse: la transmisión se apaga después de esta duración (0 = nunca)",
|
|
39
39
|
"tab_cameras": "Cámaras",
|
|
40
40
|
"tab_settings": "Ajustes",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Controlar MotionEye vía API de configuración",
|
|
42
|
+
"useMotionEyeConfig_help": "Déjalo activado para el uso normal. El adaptador escribe el modo de cámara, las URL de webhook y el stream on/off en MotionEye (puerto 8765). ioBroker controla entonces la detección de movimiento y los streams; la interfaz web de MotionEye se actualiza como efecto secundario. Desactiva solo si configuras MotionEye completamente a mano.",
|
|
43
43
|
"webhookBind": "Dirección de enlace del webhook",
|
|
44
44
|
"webhookBind_help": "Interfaz de red para el oyente de webhook integrado (predeterminado 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Alojamiento ioBroker para webhooks",
|
package/admin/i18n/fr.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Utilisé uniquement par streamPulse — le flux s'éteint après cette durée (0 = jamais)",
|
|
39
39
|
"tab_cameras": "Caméras",
|
|
40
40
|
"tab_settings": "Paramètres",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Contrôler MotionEye via l'API de configuration",
|
|
42
|
+
"useMotionEyeConfig_help": "Laissez activé pour un usage normal. L'adaptateur écrit le mode caméra, les URL de webhook et le flux on/off dans MotionEye (port 8765). ioBroker contrôle alors la détection de mouvement et les flux ; l'interface web MotionEye suit en conséquence. Désactivez seulement si vous configurez MotionEye entièrement à la main.",
|
|
43
43
|
"webhookBind": "Adresse de liaison du webhook",
|
|
44
44
|
"webhookBind_help": "Interface réseau pour l'écouteur de webhook intégré (0.0.0.0 par défaut)",
|
|
45
45
|
"webhookHost": "Hôte ioBroker pour les webhooks",
|
package/admin/i18n/it.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Utilizzato solo da streamPulse: lo streaming si interrompe dopo questa durata (0 = mai)",
|
|
39
39
|
"tab_cameras": "Fotocamere",
|
|
40
40
|
"tab_settings": "Impostazioni",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Controlla MotionEye tramite API di configurazione",
|
|
42
|
+
"useMotionEyeConfig_help": "Lascia attivato per l'uso normale. L'adattatore scrive modalità camera, URL webhook e stream on/off in MotionEye (porta 8765). ioBroker controlla rilevamento movimento e stream; l'interfaccia web MotionEye si aggiorna di conseguenza. Disattiva solo se configuri MotionEye interamente a mano.",
|
|
43
43
|
"webhookBind": "Indirizzo di associazione del webhook",
|
|
44
44
|
"webhookBind_help": "Interfaccia di rete per il listener webhook integrato (predefinito 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Host ioBroker per webhook",
|
package/admin/i18n/nl.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Alleen gebruikt door streamPulse: de stream wordt na deze duur uitgeschakeld (0 = nooit)",
|
|
39
39
|
"tab_cameras": "Camera's",
|
|
40
40
|
"tab_settings": "Instellingen",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "MotionEye via config-API aansturen",
|
|
42
|
+
"useMotionEyeConfig_help": "Laat ingeschakeld voor normaal gebruik. De adapter schrijft cameramodus, webhook-URL's en stream aan/uit naar MotionEye (poort 8765). ioBroker bestuurt dan bewegingsdetectie en livestreams; de MotionEye-webinterface volgt mee. Alleen uitschakelen als je MotionEye volledig handmatig configureert.",
|
|
43
43
|
"webhookBind": "Webhook-bindadres",
|
|
44
44
|
"webhookBind_help": "Netwerkinterface voor de ingebouwde webhook-listener (standaard 0.0.0.0)",
|
|
45
45
|
"webhookHost": "ioBroker-host voor webhooks",
|
package/admin/i18n/pl.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Używany tylko przez streamPulse — strumień wyłącza się po upływie tego czasu (0 = nigdy)",
|
|
39
39
|
"tab_cameras": "Kamery",
|
|
40
40
|
"tab_settings": "Ustawienia",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Steruj MotionEye przez API konfiguracji",
|
|
42
|
+
"useMotionEyeConfig_help": "Pozostaw włączone do normalnej pracy. Adapter zapisuje tryb kamery, adresy URL webhooków i stream wł./wył. w MotionEye (port 8765). ioBroker steruje wykrywaniem ruchu i streamami; interfejs web MotionEye aktualizuje się przy okazji. Wyłącz tylko, jeśli konfigurujesz MotionEye całkowicie ręcznie.",
|
|
43
43
|
"webhookBind": "Adres powiązania webhooka",
|
|
44
44
|
"webhookBind_help": "Interfejs sieciowy dla wbudowanego odbiornika webhook (domyślnie 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Host ioBroker dla webhooków",
|
package/admin/i18n/pt.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Usado apenas pelo streamPulse — o stream é desligado após esse período (0 = nunca)",
|
|
39
39
|
"tab_cameras": "Câmeras",
|
|
40
40
|
"tab_settings": "Configurações",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Controlar MotionEye via API de configuração",
|
|
42
|
+
"useMotionEyeConfig_help": "Deixe ativado para uso normal. O adaptador grava modo da câmera, URLs de webhook e stream ligado/desligado no MotionEye (porta 8765). O ioBroker controla detecção de movimento e streams; a interface web do MotionEye acompanha como efeito colateral. Desative apenas se configurar o MotionEye totalmente à mão.",
|
|
43
43
|
"webhookBind": "Endereço de ligação do webhook",
|
|
44
44
|
"webhookBind_help": "Interface de rede para o ouvinte de webhook integrado (padrão 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Host ioBroker para webhooks",
|
package/admin/i18n/ru.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Используется только дляstreamPulse — поток отключается по истечении этого времени (0 = никогда)",
|
|
39
39
|
"tab_cameras": "Камеры",
|
|
40
40
|
"tab_settings": "Настройки",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Управление MotionEye через API конфигурации",
|
|
42
|
+
"useMotionEyeConfig_help": "Оставьте включённым для обычной работы. Адаптер записывает режим камеры, URL вебхуков и поток вкл./выкл. в MotionEye (порт 8765). ioBroker управляет обнаружением движения и потоками; веб-интерфейс MotionEye обновляется как побочный эффект. Отключайте только при полностью ручной настройке MotionEye.",
|
|
43
43
|
"webhookBind": "Адрес привязки вебхука",
|
|
44
44
|
"webhookBind_help": "Сетевой интерфейс для встроенного прослушивателя веб-перехватчиков (по умолчанию 0.0.0.0)",
|
|
45
45
|
"webhookHost": "хост ioBroker для веб-перехватчиков",
|
package/admin/i18n/uk.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "Використовується тільки streamPulse — потік вимикається через цей час (0 = ніколи)",
|
|
39
39
|
"tab_cameras": "Фотоапарати",
|
|
40
40
|
"tab_settings": "Налаштування",
|
|
41
|
-
"useMotionEyeConfig": "
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "Керувати MotionEye через API конфігурації",
|
|
42
|
+
"useMotionEyeConfig_help": "Залиште увімкненим для звичайної роботи. Адаптер записує режим камери, URL вебхуків і потік увімк./вимк. у MotionEye (порт 8765). ioBroker керує виявленням руху та потоками; веб-інтерфейс MotionEye оновлюється як побічний ефект. Вимикайте лише за повністю ручного налаштування MotionEye.",
|
|
43
43
|
"webhookBind": "Адреса прив’язки вебхука",
|
|
44
44
|
"webhookBind_help": "Мережевий інтерфейс для вбудованого слухача вебхуку (за замовчуванням 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Хост ioBroker для веб-хуків",
|
package/admin/i18n/zh-cn.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"streamAutoOffMs_help": "仅由streamPulse使用-流在此持续时间后关闭(0=从不)",
|
|
39
39
|
"tab_cameras": "相机",
|
|
40
40
|
"tab_settings": "设置",
|
|
41
|
-
"useMotionEyeConfig": "通过 MotionEye 配置 API
|
|
42
|
-
"useMotionEyeConfig_help": "
|
|
41
|
+
"useMotionEyeConfig": "通过 MotionEye 配置 API 控制",
|
|
42
|
+
"useMotionEyeConfig_help": "正常使用请保持启用。适配器将摄像头模式、Webhook URL 和流开关写入 MotionEye(端口 8765)。ioBroker 由此控制运动检测和直播流;MotionEye 网页界面会随之更新。仅在你完全手动配置 MotionEye 时才禁用。",
|
|
43
43
|
"webhookBind": "Webhook绑定地址",
|
|
44
44
|
"webhookBind_help": "内置 webhook 侦听器的网络接口(默认 0.0.0.0)",
|
|
45
45
|
"webhookHost": "Webhooks 的 ioBroker 主机",
|
package/admin/img/inventwo.svg
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<svg version="1.1" width="26.458332mm" height="26.458334mm" viewBox="0 0 75.000144 75.000093" id="svg165" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs165" /><g id="layer1" style="opacity:1" transform="translate(-78.750127,-393.75065)"><g id="g85"><path d="m 78.750127,393.75065 v 75.00012 h 75.000113 v -75.00012 z" style="display:inline;opacity:1;fill:#80000000;fill-opacity:0.225;stroke:none;stroke-width:0.753376;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" id="path154-5-7-8-14-1" /><g id="layer2-0" style="display:inline;opacity:1;fill:#80000000;fill-opacity:0.225" transform="matrix(0.8645493,0,0,0.8645493,-16.29802,241.24759)"><path style="display:inline;fill:#999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.151347" d="m 156.90563,239.27644 c 0,1.07617 -0.36595,2.05502 -1.24651,2.71331 -0.69186,0.52091 -1.50381,0.8014 -2.37293,0.8014 -0.89199,0 -1.70965,-0.26332 -2.41295,-0.81284 -0.86341,-0.6583 -1.20648,-1.64287 -1.20648,-2.70187 v -27.52236 c 0,-1.04755 0.36023,-1.99778 1.20648,-2.64462 0.7033,-0.54381 1.52096,-0.80713 2.41295,-0.80713 0.86912,0 1.68107,0.27477 2.37293,0.79568 0.86341,0.64684 1.24651,1.59135 1.24651,2.65607 z m 0.0572,-38.00926 c 0,1.08189 -0.36595,2.06647 -1.23507,2.70187 -0.69187,0.53236 -1.50381,0.81285 -2.38437,0.81285 -0.89199,0 -1.72681,-0.26905 -2.41296,-0.81285 -0.85768,-0.6583 -1.20076,-1.63715 -1.20076,-2.70187 v -0.84147 c 0,-1.04754 0.36023,-1.99777 1.18361,-2.62744 0.7033,-0.56098 1.53812,-0.83002 2.43011,-0.83002 0.88056,0 1.6925,0.28049 2.36722,0.8014 0.87483,0.64112 1.25222,1.59135 1.25222,2.65606 z" id="path2-5-5-2-7" /><path style="display:inline;fill:#9fdb58;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.151347" d="m 158.58028,180.3077 14.36337,14.37941 -4.36276,4.36763 -11.02984,-11.0536 c -2.3329,-2.33551 -6.14103,-2.33551 -8.46821,0 l -27.46881,27.52809 c -2.3272,2.33551 -2.3272,6.15361 0,8.48912 l 11.00696,11.03069 -4.36848,4.37336 -14.35765,-14.3794 c -2.89898,-2.89649 -2.89898,-7.64193 0,-10.54414 l 34.15303,-34.19116 c 2.89898,-2.90221 7.63912,-2.90221 10.53239,0 z m 19.79538,19.81748 14.36337,14.37368 c 2.89326,2.90221 2.89326,7.64765 0,10.54414 L 158.586,259.23415 c -2.89899,2.90221 -7.63913,2.90221 -10.53811,0.006 l -14.35765,-14.37941 4.36276,-4.36763 11.02984,11.05359 c 2.32718,2.32979 6.13531,2.33551 8.46821,0 l 27.4631,-27.52808 c 2.3329,-2.3355 2.3329,-6.15361 0,-8.48911 l -11.00697,-11.03098 z" id="path1-4-0-1" /></g></g></g><style type="text/css" id="style1">.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st1{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}.st2{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}.st3{fill:none;stroke:#000000;stroke-linecap:round;stroke-miterlimit:10;}.st4{fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}.st5{fill:#FFFFFF;}.st6{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st7{fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;}.st8{fill:none;}.st9{fill:none;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;}</style><style type="text/css" id="style1-5">.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st1{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}.st2{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}.st3{fill:none;stroke:#000000;stroke-linecap:round;stroke-miterlimit:10;}.st4{fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}.st5{fill:#FFFFFF;}.st6{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st7{fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;}.st8{fill:none;}.st9{fill:none;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;}</style></svg>
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<svg version="1.1" width="26.458332mm" height="26.458334mm" viewBox="0 0 75.000144 75.000093" id="svg165" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs165" /><g id="layer1" style="opacity:1" transform="translate(-78.750127,-393.75065)"><g id="g85"><path d="m 78.750127,393.75065 v 75.00012 h 75.000113 v -75.00012 z" style="display:inline;opacity:1;fill:#80000000;fill-opacity:0.225;stroke:none;stroke-width:0.753376;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" id="path154-5-7-8-14-1" /><g id="layer2-0" style="display:inline;opacity:1;fill:#80000000;fill-opacity:0.225" transform="matrix(0.8645493,0,0,0.8645493,-16.29802,241.24759)"><path style="display:inline;fill:#999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.151347" d="m 156.90563,239.27644 c 0,1.07617 -0.36595,2.05502 -1.24651,2.71331 -0.69186,0.52091 -1.50381,0.8014 -2.37293,0.8014 -0.89199,0 -1.70965,-0.26332 -2.41295,-0.81284 -0.86341,-0.6583 -1.20648,-1.64287 -1.20648,-2.70187 v -27.52236 c 0,-1.04755 0.36023,-1.99778 1.20648,-2.64462 0.7033,-0.54381 1.52096,-0.80713 2.41295,-0.80713 0.86912,0 1.68107,0.27477 2.37293,0.79568 0.86341,0.64684 1.24651,1.59135 1.24651,2.65607 z m 0.0572,-38.00926 c 0,1.08189 -0.36595,2.06647 -1.23507,2.70187 -0.69187,0.53236 -1.50381,0.81285 -2.38437,0.81285 -0.89199,0 -1.72681,-0.26905 -2.41296,-0.81285 -0.85768,-0.6583 -1.20076,-1.63715 -1.20076,-2.70187 v -0.84147 c 0,-1.04754 0.36023,-1.99777 1.18361,-2.62744 0.7033,-0.56098 1.53812,-0.83002 2.43011,-0.83002 0.88056,0 1.6925,0.28049 2.36722,0.8014 0.87483,0.64112 1.25222,1.59135 1.25222,2.65606 z" id="path2-5-5-2-7" /><path style="display:inline;fill:#9fdb58;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.151347" d="m 158.58028,180.3077 14.36337,14.37941 -4.36276,4.36763 -11.02984,-11.0536 c -2.3329,-2.33551 -6.14103,-2.33551 -8.46821,0 l -27.46881,27.52809 c -2.3272,2.33551 -2.3272,6.15361 0,8.48912 l 11.00696,11.03069 -4.36848,4.37336 -14.35765,-14.3794 c -2.89898,-2.89649 -2.89898,-7.64193 0,-10.54414 l 34.15303,-34.19116 c 2.89898,-2.90221 7.63912,-2.90221 10.53239,0 z m 19.79538,19.81748 14.36337,14.37368 c 2.89326,2.90221 2.89326,7.64765 0,10.54414 L 158.586,259.23415 c -2.89899,2.90221 -7.63913,2.90221 -10.53811,0.006 l -14.35765,-14.37941 4.36276,-4.36763 11.02984,11.05359 c 2.32718,2.32979 6.13531,2.33551 8.46821,0 l 27.4631,-27.52808 c 2.3329,-2.3355 2.3329,-6.15361 0,-8.48911 l -11.00697,-11.03098 z" id="path1-4-0-1" /></g></g></g><style type="text/css" id="style1">.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st1{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}.st2{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}.st3{fill:none;stroke:#000000;stroke-linecap:round;stroke-miterlimit:10;}.st4{fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}.st5{fill:#FFFFFF;}.st6{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st7{fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;}.st8{fill:none;}.st9{fill:none;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;}</style><style type="text/css" id="style1-5">.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st1{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}.st2{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}.st3{fill:none;stroke:#000000;stroke-linecap:round;stroke-miterlimit:10;}.st4{fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}.st5{fill:#FFFFFF;}.st6{stroke:#000000;stroke-width:2;stroke-miterlimit:10;}.st7{fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;}.st8{fill:none;}.st9{fill:none;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;}</style></svg>
|