iobroker.hassemu 1.35.3 → 1.37.0
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 +41 -15
- package/admin/i18n/de.json +57 -57
- package/admin/i18n/en.json +57 -57
- package/admin/i18n/es.json +57 -57
- package/admin/i18n/fr.json +57 -57
- package/admin/i18n/it.json +57 -57
- package/admin/i18n/nl.json +57 -57
- package/admin/i18n/pl.json +57 -57
- package/admin/i18n/pt.json +57 -57
- package/admin/i18n/ru.json +57 -57
- package/admin/i18n/uk.json +57 -57
- package/admin/i18n/zh-cn.json +57 -57
- package/admin/jsonConfig.json +2 -0
- package/build/lib/auth-page.js +10 -10
- package/build/lib/auth-page.js.map +3 -3
- package/build/lib/client-registry.js +288 -119
- package/build/lib/client-registry.js.map +2 -2
- package/build/lib/coerce.js +32 -28
- package/build/lib/coerce.js.map +2 -2
- package/build/lib/constants.js +29 -2
- package/build/lib/constants.js.map +2 -2
- package/build/lib/global-config.js +45 -39
- package/build/lib/global-config.js.map +3 -3
- package/build/lib/html-shared.js +71 -2
- package/build/lib/html-shared.js.map +2 -2
- package/build/lib/landing-page.js +21 -54
- package/build/lib/landing-page.js.map +2 -2
- package/build/lib/legacy-migration.js +135 -0
- package/build/lib/legacy-migration.js.map +7 -0
- package/build/lib/mdns.js +36 -12
- package/build/lib/mdns.js.map +2 -2
- package/build/lib/redirect-wrapper.js +19 -18
- package/build/lib/redirect-wrapper.js.map +2 -2
- package/build/lib/schema-repair.js +1 -3
- package/build/lib/schema-repair.js.map +2 -2
- package/build/lib/types.js.map +1 -1
- package/build/lib/url-discovery.js +26 -24
- package/build/lib/url-discovery.js.map +2 -2
- package/build/lib/webserver.js +319 -180
- package/build/lib/webserver.js.map +3 -3
- package/build/main.js +66 -154
- package/build/main.js.map +3 -3
- package/io-package.json +32 -31
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ Want to add a URL the adapter doesn't auto-detect? Set `manual` and paste it.
|
|
|
55
55
|
## Requirements
|
|
56
56
|
|
|
57
57
|
- Node.js ≥ 22
|
|
58
|
-
- ioBroker js-controller ≥ 7.
|
|
58
|
+
- ioBroker js-controller ≥ 7.2.2
|
|
59
59
|
- ioBroker Admin ≥ 7.8.23
|
|
60
60
|
|
|
61
61
|
---
|
|
@@ -69,6 +69,21 @@ Want to add a URL the adapter doesn't auto-detect? Set `manual` and paste it.
|
|
|
69
69
|
|
|
70
70
|
One instance per host. Port 8123 is HA-fixed. With multiple ioBroker hosts on the same LAN, only one of them runs hassemu.
|
|
71
71
|
|
|
72
|
+
**All traffic is plain HTTP** — HA clients do not support HTTPS on this flow. Treat port 8123 as LAN-only and never forward it to the internet. With authentication on, the username, password and tokens travel unencrypted over your LAN, so Auth guards the HA API against other LAN devices — it is not internet-exposure protection.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## First steps
|
|
77
|
+
|
|
78
|
+
1. Start the hassemu instance in ioBroker.
|
|
79
|
+
2. On the display, add a Home Assistant server. With mDNS on it appears automatically; otherwise enter `http://<ioBroker-IP>:8123` by hand.
|
|
80
|
+
3. Complete the HA onboarding on the display. With Auth off you can click through the login; with Auth on, enter the username and password from the instance settings.
|
|
81
|
+
4. The display now shows the **landing page** with its own device ID — that means it is connected and waiting for a URL.
|
|
82
|
+
5. In ioBroker, open the Object Browser and set `hassemu.0.clients.<id>.mode` for that device: pick a discovered URL from the dropdown, or choose `manual` and put any URL in `clients.<id>.manualUrl`.
|
|
83
|
+
6. The display reloads within ~30 seconds and shows your URL.
|
|
84
|
+
|
|
85
|
+
Want the same URL on every display? Set `global.mode` (plus `global.manualUrl` for a free URL) and turn on the `global.enabled` master switch instead of configuring each client.
|
|
86
|
+
|
|
72
87
|
---
|
|
73
88
|
|
|
74
89
|
## Configuration
|
|
@@ -78,8 +93,9 @@ One instance per host. Port 8123 is HA-fixed. With multiple ioBroker hosts on th
|
|
|
78
93
|
| Bind | Network interface | 0.0.0.0 |
|
|
79
94
|
| Service Name | Name the display sees | ioBroker |
|
|
80
95
|
| mDNS | LAN auto-discovery. Off → set `http://<ioBroker-IP>:8123` on the display by hand. | on |
|
|
81
|
-
| Auth | Login required
|
|
96
|
+
| Auth | Login required (guards the HA API on the LAN; credentials travel in plain HTTP) | off |
|
|
82
97
|
| Username / Password | When Auth is on | admin / — |
|
|
98
|
+
| Trust Proxy | Only behind a trusted reverse proxy that terminates TLS and strips X-Forwarded-* | off |
|
|
83
99
|
|
|
84
100
|
---
|
|
85
101
|
|
|
@@ -90,7 +106,7 @@ hassemu.0.
|
|
|
90
106
|
├── info.
|
|
91
107
|
│ ├── connection — server is running
|
|
92
108
|
│ ├── serverUuid — server identity (read-only)
|
|
93
|
-
│ └──
|
|
109
|
+
│ └── refreshUrls — re-scan URL list (button, set to true)
|
|
94
110
|
├── global.
|
|
95
111
|
│ ├── enabled — master switch
|
|
96
112
|
│ ├── mode — URL choice used by every client whose mode is `global`
|
|
@@ -124,7 +140,9 @@ Master switch:
|
|
|
124
140
|
|
|
125
141
|
The display reloads itself within ~30 seconds after a URL change.
|
|
126
142
|
|
|
127
|
-
After adding or renaming a VIS-2 project or view, set `info.
|
|
143
|
+
After adding or renaming a VIS-2 project or view, set `info.refreshUrls` to `true` so it shows up in the dropdown.
|
|
144
|
+
|
|
145
|
+
If hassemu goes offline while a display is running, the display switches to a clear offline page with a reload button after ~1.5 minutes and returns to your dashboard automatically once hassemu is back. Limitation: a display that cold-boots _while_ hassemu is down can't load that page and shows a connection error until the adapter is running again.
|
|
128
146
|
|
|
129
147
|
---
|
|
130
148
|
|
|
@@ -138,9 +156,9 @@ Set the instance log level to `debug` first — since v1.31.1 the adapter traces
|
|
|
138
156
|
|
|
139
157
|
**Display lost its identity (new id on every visit)** — the display is not persisting the cookie. Common causes: aggressive privacy mode, factory reset, browser cache flush. The old `clients.<id>`-channels can be removed via their `remove` button, but the root cause is on the display side, not in hassemu.
|
|
140
158
|
|
|
141
|
-
**HA Companion App says
|
|
159
|
+
**HA Companion App says "Server is not Home Assistant"** — point the app at `http://<ioBroker-IP>:8123`, not at the ioBroker Admin port. If a reverse proxy is in front of hassemu, make sure `/manifest.json` is passed through unmodified — the App parses `name === "Home Assistant"` to verify the server.
|
|
142
160
|
|
|
143
|
-
**Aura entry in the dropdown points at the wrong port** — `native.port` of the Aura instance must match its actually-listening port. Trigger `info.
|
|
161
|
+
**Aura entry in the dropdown points at the wrong port** — `native.port` of the Aura instance must match its actually-listening port. Trigger `info.refreshUrls = true` to re-run discovery after fixing the Aura config.
|
|
144
162
|
|
|
145
163
|
---
|
|
146
164
|
|
|
@@ -150,7 +168,7 @@ Migration runs automatically when the adapter starts.
|
|
|
150
168
|
|
|
151
169
|
Got scripts that still write to `visUrl`? Update them — write to `manualUrl` instead and set `mode` to `manual`.
|
|
152
170
|
|
|
153
|
-
**Coming from a Shelly Wall Display on firmware 2.6.0 or newer?** Make sure you're on hassemu **≥ 1.29.2**. The on-device HA app introduced in firmware 2.6.0 needs a server-identity probe, a mobile-app registration step and a WebView
|
|
171
|
+
**Coming from a Shelly Wall Display on firmware 2.6.0 or newer?** Make sure you're on hassemu **≥ 1.29.2**. The on-device HA app introduced in firmware 2.6.0 needs a server-identity probe, a mobile-app registration step and a WebView "connected" signal — all three came in with v1.29.0–v1.29.2. After upgrading, run the display through the on-device HA onboarding once more.
|
|
154
172
|
|
|
155
173
|
---
|
|
156
174
|
|
|
@@ -160,7 +178,23 @@ Got scripts that still write to `visUrl`? Update them — write to `manualUrl` i
|
|
|
160
178
|
Placeholder for the next version (at the beginning of the line):
|
|
161
179
|
### **WORK IN PROGRESS**
|
|
162
180
|
-->
|
|
181
|
+
### 1.37.0 (2026-07-09)
|
|
182
|
+
|
|
183
|
+
- A custom name you give a display now survives even when its network hostname resolves later — the name you set sticks.
|
|
184
|
+
- A display that keeps losing its identity no longer fills ioBroker with unused entries over time.
|
|
185
|
+
- A display connection that simply goes away (a panel powered off) is now cleaned up instead of lingering until the adapter restarts.
|
|
186
|
+
- The manual URL-refresh datapoint is now `info.refreshUrls` (was `info.refresh_urls`); the old one is removed automatically on upgrade — update any script that wrote to the old name.
|
|
187
|
+
- Corrected the configuration help texts and the README to match the current setup, documented the offline behaviour, and added a first-steps guide.
|
|
188
|
+
|
|
189
|
+
### 1.36.0 (2026-06-22) — stable
|
|
190
|
+
|
|
191
|
+
- Fixed a rare adapter crash and restart loop that a malformed connection message could trigger — it briefly took all connected displays offline until the adapter recovered.
|
|
192
|
+
- A custom name you give a display (its channel name) is no longer overwritten with the device's IP address when that IP changes.
|
|
193
|
+
- With authentication enabled, a display again reloads automatically after you change its target URL.
|
|
194
|
+
- With authentication enabled, a password is now required — the settings can no longer be saved with an empty password.
|
|
195
|
+
|
|
163
196
|
### 1.35.3 (2026-06-15)
|
|
197
|
+
|
|
164
198
|
- Fixed Home Assistant discovery pointing the display at the wrong address on multi-interface hosts; it now uses the address the adapter actually listens on.
|
|
165
199
|
|
|
166
200
|
### 1.35.2 (2026-06-12)
|
|
@@ -172,14 +206,6 @@ Got scripts that still write to `visUrl`? Update them — write to `manualUrl` i
|
|
|
172
206
|
|
|
173
207
|
- Internal cleanup. No user-facing changes.
|
|
174
208
|
|
|
175
|
-
### 1.35.0 (2026-06-07)
|
|
176
|
-
|
|
177
|
-
- Added optional Sentry error reporting: crashes are sent to the developer so issues get fixed faster. Active only with ioBroker diagnostics enabled; anonymous.
|
|
178
|
-
|
|
179
|
-
### 1.34.0 (2026-06-02)
|
|
180
|
-
|
|
181
|
-
- Home Assistant Companion App and Shelly Wall Display (firmware 2.6.0+): sign-out and device registration now complete reliably.
|
|
182
|
-
|
|
183
209
|
[Older changelogs can be found there](CHANGELOG_OLD.md)
|
|
184
210
|
|
|
185
211
|
## Support Development
|
package/admin/i18n/de.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
2
|
+
"aboutInfo": "Dieser Adapter ist kostenlos und Open Source. Wenn er dir nützlich ist, unterstütze die Entwicklung gerne mit einer kleinen Spende.",
|
|
3
|
+
"authInfo": "Hinweis: Authentifizierung ist optional. Das Display durchläuft immer den Authentifizierungsablauf, aber die Anmeldedaten werden nur geprüft, wenn diese Option aktiviert ist.",
|
|
4
|
+
"authRequired": "Authentifizierung erforderlich",
|
|
5
|
+
"authRequiredTooltip": "Wenn aktiviert, müssen Geräte gültige Anmeldedaten eingeben",
|
|
6
|
+
"bindAddress": "Interface binden",
|
|
7
|
+
"bindAddressTooltip": "Netzwerk-Interface auswählen (0.0.0.0 = alle Interfaces)",
|
|
8
|
+
"donateKofi": "Unterstützen auf Ko-fi",
|
|
9
|
+
"donatePaypal": "Über PayPal spenden",
|
|
10
|
+
"header_auth": "Authentifizierung",
|
|
11
|
+
"header_mdns": "mDNS-Erkennung",
|
|
12
|
+
"header_proxy": "Reverse Proxy",
|
|
13
|
+
"header_server": "Server",
|
|
14
|
+
"mdnsEnabled": "mDNS-Erkennung aktivieren",
|
|
15
|
+
"mdnsEnabledTooltip": "Service per mDNS broadcasten damit Geräte ihn automatisch finden (funktioniert auf allen Plattformen)",
|
|
16
|
+
"mdnsInfo": "mDNS sendet den Service im lokalen Netzwerk, damit Geräte ihn automatisch finden können.\n\nWenn mDNS deaktiviert oder nicht funktioniert, geben Sie die URL manuell am Display ein:\n`http://IHRE_IP:8123`",
|
|
17
|
+
"password": "Passwort",
|
|
18
|
+
"proxyInfo": "Nur einschalten wenn der Adapter HINTER einem vertrauenswürdigen Reverse-Proxy mit TLS-Terminierung läuft (z.B. nginx, Traefik). Der Proxy muss eingehende X-Forwarded-*-Header entfernen — sonst können Clients ihre IP fälschen, was die Client-Erkennung und die per-IP-Schutzlimits verfälscht. Mit dieser Option an wird der Cookie als `Secure` markiert wenn X-Forwarded-Proto `https` ist.",
|
|
19
|
+
"redirectInfo": "Weiterleitungs-Ziele werden über Datenpunkte gesetzt, nicht hier. `global.mode` + `global.enabled` schickt alle Displays auf dieselbe URL, oder pro Gerät unter `clients.<id>.mode`. Im `mode`-Dropdown eine erkannte URL wählen, oder `manual` setzen und im passenden `manualUrl`-Datenpunkt eine beliebige URL eintragen.",
|
|
20
|
+
"serviceName": "Service-Name",
|
|
21
|
+
"serviceNameTooltip": "Name der auf dem Display während der Erkennung angezeigt wird",
|
|
22
|
+
"supportHeader": "Unterstützung",
|
|
23
|
+
"trustProxy": "Reverse-Proxy-Header vertrauen",
|
|
24
|
+
"trustProxyTooltip": "Wenn an, kommen req.ip / req.protocol aus X-Forwarded-*-Headern. Nur einschalten wenn der Adapter hinter einem vertrauenswürdigen Reverse-Proxy läuft.",
|
|
25
|
+
"username": "Benutzername",
|
|
26
|
+
"info": "Information",
|
|
27
|
+
"connection": "Server läuft",
|
|
28
|
+
"serverUuid": "HA-Server-UUID (bleibt über Neustarts hinweg)",
|
|
29
|
+
"refreshUrls": "URL-Erkennung neu laden",
|
|
30
|
+
"clients": "Bekannte Display-Clients",
|
|
31
|
+
"global": "Globaler Weiterleitungs-Override",
|
|
32
|
+
"globalEnabled": "Globale URL für alle Clients anwenden",
|
|
33
|
+
"globalMode": "Globaler Weiterleitungs-Modus",
|
|
34
|
+
"globalManualUrl": "Globale manuelle URL (genutzt wenn mode='manual')",
|
|
35
|
+
"clientMode": "Weiterleitungs-Modus",
|
|
36
|
+
"clientManualUrl": "Manuelle URL",
|
|
37
|
+
"clientIp": "Client-IP",
|
|
38
|
+
"clientRemove": "Diesen Client entfernen",
|
|
39
|
+
"serverUuidDesc": "Persistente UUID, broadcastet via mDNS und /api/discovery_info. Wird beim ersten Start einmal erzeugt und über Neustarts hinweg wiederverwendet, sodass HA-Clients nicht jeden Neustart als neuen Server behandeln (was die gecachte Identität ungültig machen, Re-Onboarding erzwingen und Tokens verwerfen würde).",
|
|
40
|
+
"refreshUrlsDesc": "Auf true setzen, um den Broker nach VIS/VIS-2-Projekten, Admin-Kacheln und weiteren URLs neu zu durchsuchen. Sinnvoll nach Anlegen einer neuen VIS-View ohne Adapter-Neustart.",
|
|
41
|
+
"globalUrl": "Globale URL",
|
|
42
|
+
"manualUrl": "Manuelle URL",
|
|
43
|
+
"pageConnectedTitle": "Verbunden · ioBroker",
|
|
44
|
+
"pageConnectedHeading": "Display verbunden",
|
|
45
|
+
"pageConnectedSubhead": "Dieses Display ist mit ioBroker verbunden. Wähle noch eine Weiterleitungs-URL aus.",
|
|
46
|
+
"pageSetupTitle": "Einrichtung abschließen",
|
|
47
|
+
"pageSetupIntro": "Lege fest, welche URL das Display beim nächsten Refresh öffnen soll:",
|
|
48
|
+
"pageStep1": "Öffne im ioBroker-Admin die Ansicht „Objekte\".",
|
|
49
|
+
"pageStep2": "Navigiere zu diesem Datenpunkt:",
|
|
50
|
+
"pageStep3": "Trage hier die gewünschte URL ein (VIS-Projekt, Grafana, Dashboard, …).",
|
|
51
|
+
"pageAutoRefresh": "Diese Seite aktualisiert sich automatisch alle 15 Sekunden.",
|
|
52
|
+
"pageOfflineTitle": "hassemu offline · ioBroker",
|
|
53
|
+
"pageOfflineHeading": "hassemu offline",
|
|
54
|
+
"pageOfflineSubhead": "Die Seite oben ist die letzte Ansicht, die das Display erhalten hat. Sobald hassemu wieder erreichbar ist, aktualisiert sich die Anzeige automatisch.",
|
|
55
|
+
"pageReload": "Jetzt neu laden",
|
|
56
|
+
"pageDeviceId": "Geräte-ID",
|
|
57
|
+
"pageIpAddress": "IP-Adresse",
|
|
58
|
+
"passwordRequiredWhenAuth": "Bei aktivierter Authentifizierung ist ein Passwort erforderlich."
|
|
59
59
|
}
|
package/admin/i18n/en.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
2
|
+
"aboutInfo": "This adapter is free and open source. If you find it useful, please consider supporting its development with a small donation.",
|
|
3
|
+
"authInfo": "Note: Authentication is optional. The display will always go through the authentication flow, but credentials are only validated if this option is enabled.",
|
|
4
|
+
"authRequired": "Require Authentication",
|
|
5
|
+
"authRequiredTooltip": "If enabled, devices must enter valid credentials to authenticate",
|
|
6
|
+
"bindAddress": "Bind to Interface",
|
|
7
|
+
"bindAddressTooltip": "Select the network interface to listen on (0.0.0.0 = all interfaces)",
|
|
8
|
+
"donateKofi": "Support on Ko-fi",
|
|
9
|
+
"donatePaypal": "Donate via PayPal",
|
|
10
|
+
"header_auth": "Authentication",
|
|
11
|
+
"header_mdns": "mDNS Discovery",
|
|
12
|
+
"header_proxy": "Reverse Proxy",
|
|
13
|
+
"header_server": "Server",
|
|
14
|
+
"mdnsEnabled": "Enable mDNS Discovery",
|
|
15
|
+
"mdnsEnabledTooltip": "Broadcast the service via mDNS so devices can find it automatically (works on all platforms)",
|
|
16
|
+
"mdnsInfo": "mDNS broadcasts the service on the local network so devices can discover it automatically.\n\nIf mDNS is disabled or not working, enter the URL manually on the display:\n`http://YOUR_IP:8123`",
|
|
17
|
+
"password": "Password",
|
|
18
|
+
"proxyInfo": "Only enable when running BEHIND a trusted reverse proxy that terminates TLS (e.g. nginx, Traefik). The proxy must strip incoming X-Forwarded-* headers — otherwise clients can spoof their IP, which corrupts client identification and the per-IP protection limits. With this on, cookies are marked `Secure` when X-Forwarded-Proto is `https`.",
|
|
19
|
+
"redirectInfo": "Redirect targets are set via datapoints, not here. Use `global.mode` + `global.enabled` to send every display to the same URL, or set each display under `clients.<id>.mode`. In the `mode` dropdown pick a discovered URL, or choose `manual` and enter any URL in the matching `manualUrl` datapoint.",
|
|
20
|
+
"serviceName": "Service Name",
|
|
21
|
+
"serviceNameTooltip": "Name shown on the display during discovery",
|
|
22
|
+
"supportHeader": "Support",
|
|
23
|
+
"trustProxy": "Trust Reverse Proxy Headers",
|
|
24
|
+
"trustProxyTooltip": "If on, req.ip / req.protocol come from X-Forwarded-* headers. Only enable when behind a trusted reverse proxy.",
|
|
25
|
+
"username": "Username",
|
|
26
|
+
"info": "Information",
|
|
27
|
+
"connection": "Server is running",
|
|
28
|
+
"serverUuid": "HA-server UUID (stable across restarts)",
|
|
29
|
+
"refreshUrls": "Refresh URL discovery",
|
|
30
|
+
"clients": "Known display clients",
|
|
31
|
+
"global": "Global redirect override",
|
|
32
|
+
"globalEnabled": "Apply global URL to all clients",
|
|
33
|
+
"globalMode": "Global redirect mode",
|
|
34
|
+
"globalManualUrl": "Global manual URL (used when mode='manual')",
|
|
35
|
+
"clientMode": "Redirect mode",
|
|
36
|
+
"clientManualUrl": "Manual URL",
|
|
37
|
+
"clientIp": "Client IP",
|
|
38
|
+
"clientRemove": "Forget this client",
|
|
39
|
+
"serverUuidDesc": "Persistent UUID broadcast via mDNS and /api/discovery_info. Generated once on first start and re-used across restarts so HA-Clients don't treat each restart as a new server (which would invalidate cached identity, force re-onboarding and drop tokens).",
|
|
40
|
+
"refreshUrlsDesc": "Write true to re-scan the broker for VIS/VIS-2 projects, Admin tiles and other discovered URLs. Useful after creating a new VIS view without restarting the adapter.",
|
|
41
|
+
"globalUrl": "Global URL",
|
|
42
|
+
"manualUrl": "Manual URL",
|
|
43
|
+
"pageConnectedTitle": "Connected · ioBroker",
|
|
44
|
+
"pageConnectedHeading": "Display connected",
|
|
45
|
+
"pageConnectedSubhead": "This display is linked to ioBroker. Choose a redirect URL to finish setup.",
|
|
46
|
+
"pageSetupTitle": "Finish setup",
|
|
47
|
+
"pageSetupIntro": "Set the URL that this display should open on next refresh:",
|
|
48
|
+
"pageStep1": "Open the ioBroker admin and switch to the Objects view.",
|
|
49
|
+
"pageStep2": "Go to this datapoint:",
|
|
50
|
+
"pageStep3": "Enter the URL you want to show here (VIS project, Grafana, dashboard, …).",
|
|
51
|
+
"pageAutoRefresh": "This page refreshes automatically every 15 seconds.",
|
|
52
|
+
"pageOfflineTitle": "hassemu offline · ioBroker",
|
|
53
|
+
"pageOfflineHeading": "hassemu offline",
|
|
54
|
+
"pageOfflineSubhead": "The page above is the last view this display received. As soon as hassemu is reachable again, the display updates by itself.",
|
|
55
|
+
"pageReload": "Reload now",
|
|
56
|
+
"pageDeviceId": "Device ID",
|
|
57
|
+
"pageIpAddress": "IP address",
|
|
58
|
+
"passwordRequiredWhenAuth": "A password is required when authentication is enabled."
|
|
59
59
|
}
|
package/admin/i18n/es.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
2
|
+
"aboutInfo": "Este adaptador es gratuito y de código abierto. Si te resulta útil, considera apoyar su desarrollo con una pequeña donación.",
|
|
3
|
+
"authInfo": "Nota: La autenticación es opcional. La pantalla siempre pasará por el flujo de autenticación, pero las credenciales solo se validan si esta opción está habilitada.",
|
|
4
|
+
"authRequired": "Requerir Autenticación",
|
|
5
|
+
"authRequiredTooltip": "Si está habilitado, los dispositivos deben ingresar credenciales válidas para autenticarse",
|
|
6
|
+
"bindAddress": "Vincular a la Interfaz",
|
|
7
|
+
"bindAddressTooltip": "Seleccione la interfaz de red en la que escuchar (0.0.0.0 = todas las interfaces)",
|
|
8
|
+
"donateKofi": "Apoyar en Ko-fi",
|
|
9
|
+
"donatePaypal": "Donar vía PayPal",
|
|
10
|
+
"header_auth": "Autenticación",
|
|
11
|
+
"header_mdns": "Descubrimiento de mDNS",
|
|
12
|
+
"header_proxy": "Reverse Proxy",
|
|
13
|
+
"header_server": "Servidor",
|
|
14
|
+
"mdnsEnabled": "Habilitar Descubrimiento mDNS",
|
|
15
|
+
"mdnsEnabledTooltip": "Difundir el servicio via mDNS para que los dispositivos lo encuentren automáticamente (funciona en todas las plataformas)",
|
|
16
|
+
"mdnsInfo": "mDNS difunde el servicio en la red local para que los dispositivos puedan descubrirlo automáticamente.\n\nSi mDNS está deshabilitado o no funciona, ingrese la URL manualmente en la pantalla:\n`http://YOUR_IP:8123`",
|
|
17
|
+
"password": "Contraseña",
|
|
18
|
+
"proxyInfo": "Activar solo cuando el adapter corre DETRAS de un reverse proxy de confianza con terminacion TLS (nginx, Traefik). El proxy debe eliminar headers X-Forwarded-* entrantes — de lo contrario los clients pueden falsificar su IP, lo que corrompe la identificacion de clientes y los limites de proteccion por IP. Con esta opcion la cookie se marca `Secure` cuando X-Forwarded-Proto es `https`.",
|
|
19
|
+
"redirectInfo": "Los destinos de redirección se configuran mediante datapoints, no aquí. Usa `global.mode` + `global.enabled` para enviar todas las pantallas al mismo URL, o configura cada pantalla en `clients.<id>.mode`. En el desplegable `mode` elige un URL detectado, o selecciona `manual` e introduce cualquier URL en el datapoint `manualUrl` correspondiente.",
|
|
20
|
+
"serviceName": "Nombre del Servicio",
|
|
21
|
+
"serviceNameTooltip": "Nombre mostrado en la pantalla durante el descubrimiento",
|
|
22
|
+
"supportHeader": "Apoyo",
|
|
23
|
+
"trustProxy": "Confiar en headers del reverse proxy",
|
|
24
|
+
"trustProxyTooltip": "Si activo, req.ip / req.protocol vienen de headers X-Forwarded-*. Activar solo detras de un reverse proxy de confianza.",
|
|
25
|
+
"username": "Nombre de usuario",
|
|
26
|
+
"info": "Información",
|
|
27
|
+
"connection": "Servidor en ejecución",
|
|
28
|
+
"serverUuid": "UUID del servidor HA (estable entre reinicios)",
|
|
29
|
+
"refreshUrls": "Refrescar detección de URLs",
|
|
30
|
+
"clients": "Clientes de pantalla conocidos",
|
|
31
|
+
"global": "Sobrescritura global de redirección",
|
|
32
|
+
"globalEnabled": "Aplicar URL global a todos los clientes",
|
|
33
|
+
"globalMode": "Modo de redirección global",
|
|
34
|
+
"globalManualUrl": "URL manual global (se usa cuando mode='manual')",
|
|
35
|
+
"clientMode": "Modo de redirección",
|
|
36
|
+
"clientManualUrl": "URL manual",
|
|
37
|
+
"clientIp": "IP del cliente",
|
|
38
|
+
"clientRemove": "Olvidar este cliente",
|
|
39
|
+
"serverUuidDesc": "UUID persistente difundido vía mDNS y /api/discovery_info. Se genera una vez en el primer arranque y se reutiliza entre reinicios para que los clientes HA no traten cada reinicio como un servidor nuevo.",
|
|
40
|
+
"refreshUrlsDesc": "Escribe true para volver a escanear el broker en busca de proyectos VIS/VIS-2, mosaicos Admin y otras URLs. Útil tras crear una nueva vista VIS sin reiniciar el adaptador.",
|
|
41
|
+
"globalUrl": "URL global",
|
|
42
|
+
"manualUrl": "URL manual",
|
|
43
|
+
"pageConnectedTitle": "Conectado · ioBroker",
|
|
44
|
+
"pageConnectedHeading": "Pantalla conectada",
|
|
45
|
+
"pageConnectedSubhead": "Esta pantalla está vinculada a ioBroker. Elige una URL de redirección para terminar la configuración.",
|
|
46
|
+
"pageSetupTitle": "Completar configuración",
|
|
47
|
+
"pageSetupIntro": "Indica la URL que esta pantalla abrirá en la próxima actualización:",
|
|
48
|
+
"pageStep1": "Abre el admin de ioBroker y cambia a la vista Objetos.",
|
|
49
|
+
"pageStep2": "Navega hasta este datapoint:",
|
|
50
|
+
"pageStep3": "Introduce aquí la URL deseada (proyecto VIS, Grafana, panel, …).",
|
|
51
|
+
"pageAutoRefresh": "Esta página se actualiza automáticamente cada 15 segundos.",
|
|
52
|
+
"pageOfflineTitle": "hassemu sin conexión · ioBroker",
|
|
53
|
+
"pageOfflineHeading": "hassemu sin conexión",
|
|
54
|
+
"pageOfflineSubhead": "La página de arriba es la última vista que recibió esta pantalla. En cuanto hassemu vuelva a estar disponible, la pantalla se actualizará automáticamente.",
|
|
55
|
+
"pageReload": "Recargar",
|
|
56
|
+
"pageDeviceId": "ID del dispositivo",
|
|
57
|
+
"pageIpAddress": "Dirección IP",
|
|
58
|
+
"passwordRequiredWhenAuth": "Se requiere una contraseña cuando la autenticación está habilitada."
|
|
59
59
|
}
|