iobroker.miele-local 0.2.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.
@@ -0,0 +1,44 @@
1
+ {
2
+ "Anmeldung": "登录",
3
+ "Geräte & Abfrage": "设备与轮询",
4
+ "Push & Ports": "推送与端口",
5
+ "Steuerung": "控制",
6
+ "Erweitert": "高级",
7
+ "Land": "国家/地区",
8
+ "Cloud-Region": "云区域",
9
+ "Login-Seite öffnen": "打开登录页面",
10
+ "miele://-Redirect-URL": "miele:// 重定向 URL",
11
+ "GroupKey ermitteln": "获取 GroupKey",
12
+ "Geräte automatisch per mDNS finden": "通过 mDNS 自动发现设备",
13
+ "Jetzt suchen": "立即搜索",
14
+ "Manuelle Geräte-IPs (optional, zusätzlich)": "手动设备 IP(可选,附加)",
15
+ "IP-Adresse": "IP 地址",
16
+ "Abfrageintervall (Ruhe) in Sekunden": "轮询间隔(空闲)秒",
17
+ "Abfrageintervall (aktiv) in Sekunden": "轮询间隔(活动)秒",
18
+ "SuperVision-Push aktivieren (Echtzeit)": "启用 SuperVision 推送(实时)",
19
+ "Eingehender Push-Port (TCP)": "入站推送端口 (TCP)",
20
+ "Steuerung (Schreibbefehle) aktivieren": "启用控制(写命令)",
21
+ "GroupID (16 Hex-Zeichen)": "GroupID(16 位十六进制)",
22
+ "GroupKey (128 Hex-Zeichen)": "GroupKey(128 位十六进制)",
23
+ "Deutschland": "德国",
24
+ "Österreich": "奥地利",
25
+ "Schweiz": "瑞士",
26
+ "Niederlande": "荷兰",
27
+ "Frankreich": "法国",
28
+ "Italien": "意大利",
29
+ "Spanien": "西班牙",
30
+ "Großbritannien": "英国",
31
+ "Dänemark": "丹麦",
32
+ "Schweden": "瑞典",
33
+ "Polen": "波兰",
34
+ "Tschechien": "捷克",
35
+ "USA": "美国",
36
+ "Europa (EU)": "欧洲 (EU)",
37
+ "Europa (EU2)": "欧洲 (EU2)",
38
+ "Asien (AS)": "亚洲 (AS)",
39
+ "Datenpunkt-Namen auf Deutsch": "数据点名称使用德语",
40
+ "EcoFeedback (Energie/Wasser) abrufen": "获取 EcoFeedback(能耗/水耗)",
41
+ "EcoFeedback-Intervall in Sekunden": "EcoFeedback 间隔(秒)",
42
+ "Geräte automatisch per mDNS finden (experimentell)": "通过 mDNS 自动发现设备(实验性)",
43
+ "SuperVision-Push aktivieren (experimentell, Echtzeit)": "启用 SuperVision 推送(实验性,实时)"
44
+ }
@@ -0,0 +1,519 @@
1
+ {
2
+ "i18n": true,
3
+ "type": "tabs",
4
+ "items": {
5
+ "tabLogin": {
6
+ "type": "panel",
7
+ "label": "Anmeldung",
8
+ "items": {
9
+ "_introLogin": {
10
+ "type": "staticText",
11
+ "newLine": true,
12
+ "text": "Der Adapter ermittelt die lokalen Zugangsdaten (GroupID/GroupKey) einmalig über eine Anmeldung mit Ihrem Miele-Konto. Die Miele-App funktioniert danach unverändert weiter. Es werden keine Zugangsdaten an Dritte übertragen.",
13
+ "xs": 12,
14
+ "sm": 12,
15
+ "md": 12,
16
+ "lg": 12,
17
+ "xl": 12
18
+ },
19
+ "country": {
20
+ "type": "select",
21
+ "label": "Land",
22
+ "newLine": true,
23
+ "options": [
24
+ {
25
+ "label": "Deutschland",
26
+ "value": "de"
27
+ },
28
+ {
29
+ "label": "Österreich",
30
+ "value": "at"
31
+ },
32
+ {
33
+ "label": "Schweiz",
34
+ "value": "ch"
35
+ },
36
+ {
37
+ "label": "Niederlande",
38
+ "value": "nl"
39
+ },
40
+ {
41
+ "label": "Frankreich",
42
+ "value": "fr"
43
+ },
44
+ {
45
+ "label": "Italien",
46
+ "value": "it"
47
+ },
48
+ {
49
+ "label": "Spanien",
50
+ "value": "es"
51
+ },
52
+ {
53
+ "label": "Großbritannien",
54
+ "value": "gb"
55
+ },
56
+ {
57
+ "label": "Dänemark",
58
+ "value": "dk"
59
+ },
60
+ {
61
+ "label": "Schweden",
62
+ "value": "se"
63
+ },
64
+ {
65
+ "label": "Polen",
66
+ "value": "pl"
67
+ },
68
+ {
69
+ "label": "Tschechien",
70
+ "value": "cz"
71
+ },
72
+ {
73
+ "label": "USA",
74
+ "value": "us"
75
+ }
76
+ ],
77
+ "xs": 12,
78
+ "sm": 6,
79
+ "md": 4,
80
+ "lg": 4,
81
+ "xl": 4
82
+ },
83
+ "region": {
84
+ "type": "select",
85
+ "label": "Cloud-Region",
86
+ "options": [
87
+ {
88
+ "label": "Europa (EU)",
89
+ "value": "EU"
90
+ },
91
+ {
92
+ "label": "Europa (EU2)",
93
+ "value": "EU2"
94
+ },
95
+ {
96
+ "label": "Asien (AS)",
97
+ "value": "AS"
98
+ }
99
+ ],
100
+ "xs": 12,
101
+ "sm": 6,
102
+ "md": 4,
103
+ "lg": 4,
104
+ "xl": 4
105
+ },
106
+ "_step1": {
107
+ "type": "staticText",
108
+ "newLine": true,
109
+ "text": "Schritt 1: Auf „Login-Seite öffnen\" klicken und im Browser mit dem Miele-Konto anmelden. Am Ende versucht der Browser, eine Adresse der Form „miele://oauth2-code/?code=…&state=…\" zu öffnen. Diese vollständige Adresse (der „Code\") wird in Schritt 2 gebraucht.",
110
+ "xs": 12,
111
+ "sm": 12,
112
+ "md": 12,
113
+ "lg": 12,
114
+ "xl": 12
115
+ },
116
+ "openLogin": {
117
+ "type": "sendTo",
118
+ "label": "Login-Seite öffnen",
119
+ "command": "getAuthUrl",
120
+ "jsonData": "{ \"country\": \"${data.country}\" }",
121
+ "openUrl": true,
122
+ "variant": "contained",
123
+ "xs": 12,
124
+ "sm": 6,
125
+ "md": 4,
126
+ "lg": 4,
127
+ "xl": 4
128
+ },
129
+ "_captureIntro": {
130
+ "type": "staticText",
131
+ "newLine": true,
132
+ "text": "So kommen Sie an die „miele://…\"-Adresse — wählen Sie EINE der beiden Methoden:",
133
+ "xs": 12,
134
+ "sm": 12,
135
+ "md": 12,
136
+ "lg": 12,
137
+ "xl": 12
138
+ },
139
+ "_captureA": {
140
+ "type": "header",
141
+ "text": "Methode A — einfach: über den „Öffnen mit\"-Dialog",
142
+ "size": 5,
143
+ "newLine": true,
144
+ "xs": 12,
145
+ "sm": 12,
146
+ "md": 12,
147
+ "lg": 12,
148
+ "xl": 12
149
+ },
150
+ "_captureAText": {
151
+ "type": "staticText",
152
+ "newLine": true,
153
+ "text": "Wenn der Browser fragt, die Adresse „mit einer Anwendung öffnen\", übergibt er die komplette miele://-Adresse an diese App. Öffnet man sie z. B. mit einem Texteditor (Linux: kate/gedit; Windows: Editor; macOS: TextEdit), steht die vollständige Adresse dort im Titel/Dateinamen oder im Text – von dort kopieren. Den eigentlichen Öffnen-Vorgang kann man abbrechen.",
154
+ "xs": 12,
155
+ "sm": 12,
156
+ "md": 12,
157
+ "lg": 12,
158
+ "xl": 12
159
+ },
160
+ "_captureOr": {
161
+ "type": "header",
162
+ "text": "— oder —",
163
+ "size": 5,
164
+ "newLine": true,
165
+ "xs": 12,
166
+ "sm": 12,
167
+ "md": 12,
168
+ "lg": 12,
169
+ "xl": 12
170
+ },
171
+ "_captureB": {
172
+ "type": "header",
173
+ "text": "Methode B — zuverlässig: über die Entwicklertools (DevTools)",
174
+ "size": 5,
175
+ "newLine": true,
176
+ "xs": 12,
177
+ "sm": 12,
178
+ "md": 12,
179
+ "lg": 12,
180
+ "xl": 12
181
+ },
182
+ "_captureBText": {
183
+ "type": "staticText",
184
+ "newLine": true,
185
+ "text": "Chrome / Edge / Brave: Vor dem Login DevTools öffnen (F12) → Reiter „Netzwerk\" → „Log beibehalten / Preserve log\" aktivieren. Nach dem Login die letzte Anfrage suchen, deren Adresse „…/de/redirect?…&code=…\" enthält (oder mit „miele://\" beginnt) → Rechtsklick → „Adresse des Links kopieren / Copy link address\".",
186
+ "xs": 12,
187
+ "sm": 12,
188
+ "md": 12,
189
+ "lg": 12,
190
+ "xl": 12
191
+ },
192
+ "_captureBFirefox": {
193
+ "type": "staticText",
194
+ "newLine": true,
195
+ "text": "Firefox: F12 → Reiter „Netzwerkanalyse\" → Zahnrad → „Protokolle dauerhaft anzeigen\" aktivieren. Firefox listet die „miele://\"-Weiterleitung meist NICHT als eigene Zeile – stattdessen die letzte Anfrage an „…/de/redirect?…&code=…\" anklicken → Rechtsklick → „Kopieren\" → „URL kopieren\". Alternativ die Anfrage markieren und im Reiter „Kopfzeilen\" die vollständige Anfrage-URL herauskopieren. Am einfachsten unter Firefox ist jedoch Methode A („Öffnen mit\"-Dialog).",
196
+ "xs": 12,
197
+ "sm": 12,
198
+ "md": 12,
199
+ "lg": 12,
200
+ "xl": 12
201
+ },
202
+ "_captureNote": {
203
+ "type": "staticText",
204
+ "newLine": true,
205
+ "text": "Beide Methoden liefern denselben Text mit „code=\" und „state=\"; der Adapter akzeptiert beide Formen.",
206
+ "xs": 12,
207
+ "sm": 12,
208
+ "md": 12,
209
+ "lg": 12,
210
+ "xl": 12
211
+ },
212
+ "_step2": {
213
+ "type": "staticText",
214
+ "newLine": true,
215
+ "text": "Schritt 2: Die kopierte Adresse (mit „code=…&state=…\") hier einfügen und GroupKey ermitteln.",
216
+ "xs": 12,
217
+ "sm": 12,
218
+ "md": 12,
219
+ "lg": 12,
220
+ "xl": 12
221
+ },
222
+ "redirectUrl": {
223
+ "type": "text",
224
+ "label": "miele://-Redirect-URL",
225
+ "newLine": true,
226
+ "xs": 12,
227
+ "sm": 12,
228
+ "md": 8,
229
+ "lg": 8,
230
+ "xl": 8
231
+ },
232
+ "fetchKey": {
233
+ "type": "sendTo",
234
+ "label": "GroupKey ermitteln",
235
+ "command": "submitRedirect",
236
+ "jsonData": "{ \"redirectUrl\": \"${data.redirectUrl}\", \"region\": \"${data.region}\" }",
237
+ "variant": "contained",
238
+ "useNative": true,
239
+ "xs": 12,
240
+ "sm": 6,
241
+ "md": 4,
242
+ "lg": 4,
243
+ "xl": 4
244
+ },
245
+ "_status": {
246
+ "type": "staticText",
247
+ "newLine": true,
248
+ "text": "Nach erfolgreicher Ermittlung stehen GroupID und (verschlüsselt gespeicherter) GroupKey unten im Tab „Erweitert\". Speichern nicht vergessen.",
249
+ "xs": 12,
250
+ "sm": 12,
251
+ "md": 12,
252
+ "lg": 12,
253
+ "xl": 12
254
+ }
255
+ }
256
+ },
257
+ "tabDevices": {
258
+ "type": "panel",
259
+ "label": "Geräte & Abfrage",
260
+ "items": {
261
+ "_dockerHint": {
262
+ "type": "staticText",
263
+ "newLine": true,
264
+ "text": "Hinweis: Die automatische Suche nutzt Multicast (mDNS, UDP 5353) und findet nur Geräte im selben Broadcast-Netz. In einem Docker-Container mit Bridge-Netzwerk kommt Multicast NICHT durch – dann keine Auto-Suche, sondern die Geräte-IPs unten manuell eintragen (dafür wird kein Multicast/Port benötigt). Auto-Suche funktioniert nur im Host-Netzwerk (network_mode: host).",
265
+ "xs": 12,
266
+ "sm": 12,
267
+ "md": 12,
268
+ "lg": 12,
269
+ "xl": 12
270
+ },
271
+ "autoDiscover": {
272
+ "type": "checkbox",
273
+ "label": "Geräte automatisch per mDNS finden (experimentell)",
274
+ "newLine": true,
275
+ "xs": 12,
276
+ "sm": 12,
277
+ "md": 6,
278
+ "lg": 6,
279
+ "xl": 6
280
+ },
281
+ "discoverNow": {
282
+ "type": "sendTo",
283
+ "label": "Jetzt suchen",
284
+ "command": "discover",
285
+ "variant": "outlined",
286
+ "xs": 12,
287
+ "sm": 6,
288
+ "md": 4,
289
+ "lg": 4,
290
+ "xl": 4
291
+ },
292
+ "devices": {
293
+ "type": "table",
294
+ "label": "Manuelle Geräte-IPs (optional, zusätzlich)",
295
+ "newLine": true,
296
+ "items": [
297
+ {
298
+ "type": "text",
299
+ "attr": "ip",
300
+ "title": "IP-Adresse",
301
+ "width": "100%"
302
+ }
303
+ ],
304
+ "xs": 12,
305
+ "sm": 12,
306
+ "md": 12,
307
+ "lg": 12,
308
+ "xl": 12
309
+ },
310
+ "pollInterval": {
311
+ "type": "number",
312
+ "label": "Abfrageintervall (Ruhe) in Sekunden",
313
+ "newLine": true,
314
+ "default": 30,
315
+ "min": 5,
316
+ "max": 3600,
317
+ "xs": 12,
318
+ "sm": 6,
319
+ "md": 4,
320
+ "lg": 4,
321
+ "xl": 4
322
+ },
323
+ "activePollInterval": {
324
+ "type": "number",
325
+ "label": "Abfrageintervall (aktiv) in Sekunden",
326
+ "default": 30,
327
+ "min": 5,
328
+ "max": 600,
329
+ "xs": 12,
330
+ "sm": 6,
331
+ "md": 4,
332
+ "lg": 4,
333
+ "xl": 4
334
+ },
335
+ "germanNames": {
336
+ "type": "checkbox",
337
+ "label": "Datenpunkt-Namen auf Deutsch",
338
+ "newLine": true,
339
+ "xs": 12,
340
+ "sm": 12,
341
+ "md": 6,
342
+ "lg": 6,
343
+ "xl": 6
344
+ },
345
+ "ecoFeedback": {
346
+ "type": "checkbox",
347
+ "label": "EcoFeedback (Energie/Wasser) abrufen",
348
+ "newLine": true,
349
+ "xs": 12,
350
+ "sm": 6,
351
+ "md": 4,
352
+ "lg": 4,
353
+ "xl": 4
354
+ },
355
+ "ecoInterval": {
356
+ "type": "number",
357
+ "label": "EcoFeedback-Intervall in Sekunden",
358
+ "min": 15,
359
+ "max": 3600,
360
+ "hidden": "!data.ecoFeedback",
361
+ "xs": 12,
362
+ "sm": 6,
363
+ "md": 4,
364
+ "lg": 4,
365
+ "xl": 4
366
+ },
367
+ "_ecoHint": {
368
+ "type": "staticText",
369
+ "newLine": true,
370
+ "text": "EcoFeedback wird per DOP2 gelesen und steht nur bei Geräten bereit, die es liefern (bisher Waschmaschinen). Werte wurden gegen den Miele-Cloud-Adapter plausibilisiert; die Feldindizes können je Modell abweichen.",
371
+ "xs": 12,
372
+ "sm": 12,
373
+ "md": 12,
374
+ "lg": 12,
375
+ "xl": 12
376
+ },
377
+ "_germanNamesHint": {
378
+ "type": "staticText",
379
+ "text": "Ist der Haken gesetzt, werden die Datenpunkt-Namen zweisprachig (en/de) angelegt; der Admin zeigt sie dann auf Deutsch. Ohne Haken nur Englisch. Änderung wirkt nach Speichern/Neustart.",
380
+ "xs": 12,
381
+ "sm": 12,
382
+ "md": 12,
383
+ "lg": 12,
384
+ "xl": 12
385
+ }
386
+ }
387
+ },
388
+ "tabPush": {
389
+ "type": "panel",
390
+ "label": "Push & Ports",
391
+ "items": {
392
+ "_pushInfo": {
393
+ "type": "staticText",
394
+ "newLine": true,
395
+ "text": "Bei aktiviertem Push geben sich der Adapter als Haushalts-Peer aus und die Geräte senden Zustandsänderungen in Echtzeit. Dafür muss der unten gewählte Port am ioBroker-Host EINGEHEND aus dem Gerätenetz erreichbar sein (Firewall). UDP 5353 (mDNS) wird ohnehin benötigt. Ohne Push ist KEIN eingehender Port nötig – dann wird nur gepollt.",
396
+ "xs": 12,
397
+ "sm": 12,
398
+ "md": 12,
399
+ "lg": 12,
400
+ "xl": 12
401
+ },
402
+ "usePush": {
403
+ "type": "checkbox",
404
+ "label": "SuperVision-Push aktivieren (experimentell, Echtzeit)",
405
+ "newLine": true,
406
+ "xs": 12,
407
+ "sm": 12,
408
+ "md": 6,
409
+ "lg": 6,
410
+ "xl": 6
411
+ },
412
+ "_pushHwHint": {
413
+ "type": "staticText",
414
+ "newLine": true,
415
+ "text": "Hinweis: Nicht alle Geräte unterstützen Push. Ältere/einfache WLAN-Module (z. B. XKM EK037/EK057) haben keinen SuperVision-Endpunkt – Subscriptions werden zwar angenommen, es kommen aber keine Push-Events. In dem Fall bleibt es beim Polling. Push zusätzlich Host-Netz voraussetzt (siehe unten).",
416
+ "xs": 12,
417
+ "sm": 12,
418
+ "md": 12,
419
+ "lg": 12,
420
+ "xl": 12
421
+ },
422
+ "pushPort": {
423
+ "type": "number",
424
+ "label": "Eingehender Push-Port (TCP)",
425
+ "min": 1024,
426
+ "max": 65535,
427
+ "hidden": "!data.usePush",
428
+ "xs": 12,
429
+ "sm": 6,
430
+ "md": 4,
431
+ "lg": 4,
432
+ "xl": 4
433
+ },
434
+ "_ports": {
435
+ "type": "staticText",
436
+ "newLine": true,
437
+ "text": "Benötigte Ports: eingehend TCP <Push-Port> (nur bei Push) · UDP 5353 mDNS · ausgehend TCP 80 zu den Geräten · ausgehend TCP 443 zu miele-iot.com nur während der Anmeldung.",
438
+ "xs": 12,
439
+ "sm": 12,
440
+ "md": 12,
441
+ "lg": 12,
442
+ "xl": 12
443
+ },
444
+ "_portsDocker": {
445
+ "type": "staticText",
446
+ "newLine": true,
447
+ "text": "Docker: Läuft ioBroker im Container, muss der Push-Port eingehend erreichbar sein UND die Geräte müssen den Container unter einer echten LAN-IP erreichen. Zuverlässig geht das nur mit „network_mode: host\" (dann ist der Port automatisch offen). Im Bridge-Netz zusätzlich „-p <Push-Port>:<Push-Port>\" mappen – Push funktioniert dort aber meist trotzdem nicht, weil die Rück-Adresse (Callback) hinter NAT liegt. Ohne Push ist kein eingehender Port nötig.",
448
+ "xs": 12,
449
+ "sm": 12,
450
+ "md": 12,
451
+ "lg": 12,
452
+ "xl": 12
453
+ }
454
+ }
455
+ },
456
+ "tabControl": {
457
+ "type": "panel",
458
+ "label": "Steuerung",
459
+ "items": {
460
+ "_controlWarn": {
461
+ "type": "staticText",
462
+ "newLine": true,
463
+ "text": "Achtung: Bei aktivierter Steuerung werden beschreibbare Datenpunkte (Start/Stop/Pause, Licht, Ein/Aus) angelegt. Befehle erfordern zusätzlich, dass am Gerät „MobileStart/Fernsteuerung\" freigegeben ist. Manche Firmwares (z.B. Kühlgeräte) lehnen Schreibbefehle grundsätzlich ab.",
464
+ "xs": 12,
465
+ "sm": 12,
466
+ "md": 12,
467
+ "lg": 12,
468
+ "xl": 12
469
+ },
470
+ "allowControl": {
471
+ "type": "checkbox",
472
+ "label": "Steuerung (Schreibbefehle) aktivieren",
473
+ "newLine": true,
474
+ "xs": 12,
475
+ "sm": 12,
476
+ "md": 6,
477
+ "lg": 6,
478
+ "xl": 6
479
+ }
480
+ }
481
+ },
482
+ "tabAdvanced": {
483
+ "type": "panel",
484
+ "label": "Erweitert",
485
+ "items": {
486
+ "_advInfo": {
487
+ "type": "staticText",
488
+ "newLine": true,
489
+ "text": "Diese Werte werden normalerweise über die Anmeldung gesetzt. Manuelle Eingabe nur, wenn GroupID/GroupKey bereits bekannt sind (z.B. aus MieleRESTServer). Der GroupKey wird verschlüsselt gespeichert.",
490
+ "xs": 12,
491
+ "sm": 12,
492
+ "md": 12,
493
+ "lg": 12,
494
+ "xl": 12
495
+ },
496
+ "groupId": {
497
+ "type": "text",
498
+ "label": "GroupID (16 Hex-Zeichen)",
499
+ "newLine": true,
500
+ "xs": 12,
501
+ "sm": 12,
502
+ "md": 6,
503
+ "lg": 6,
504
+ "xl": 6
505
+ },
506
+ "groupKey": {
507
+ "type": "password",
508
+ "label": "GroupKey (128 Hex-Zeichen)",
509
+ "visible": true,
510
+ "xs": 12,
511
+ "sm": 12,
512
+ "md": 6,
513
+ "lg": 6,
514
+ "xl": 6
515
+ }
516
+ }
517
+ }
518
+ }
519
+ }
Binary file