iobroker.miele-local 0.3.39 → 0.3.41
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 +31 -1
- package/README_de.md +21 -1
- package/io-package.json +27 -1
- package/lib/enums.js +502 -5
- package/lib/enums_de.js +11 -1
- package/lib/objects.js +21 -4
- package/main.js +5 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,14 @@ so the page stops at a spinning wheel and you read the address out of the browse
|
|
|
47
47
|
GroupID and GroupKey are then stored in the instance configuration, the key encrypted. You never
|
|
48
48
|
need this procedure again.
|
|
49
49
|
|
|
50
|
+
**Login fails with `invalid_request … unknown contextId`?** Miele's login service switches between
|
|
51
|
+
two domains during sign-in and loses its session when an ad blocker or strict third-party cookie
|
|
52
|
+
protection interferes. Open the login page in a private window without extensions.
|
|
53
|
+
|
|
54
|
+
**Moving to another system.** GroupID and GroupKey never change. A backup of the ioBroker
|
|
55
|
+
configuration (e.g. BackItUp) carries them over; on a fresh system repeating the login takes two
|
|
56
|
+
minutes. The admin page shows the key only as a placeholder.
|
|
57
|
+
|
|
50
58
|
## What you get
|
|
51
59
|
|
|
52
60
|
Every appliance becomes one device with its serial number as the ID. Below it:
|
|
@@ -123,7 +131,9 @@ Every field carries its explanation underneath it in the admin; this page does n
|
|
|
123
131
|
| outbound | TCP 443 → miele-iot.com | fetch the GroupKey | login only |
|
|
124
132
|
|
|
125
133
|
Without push **no inbound port** is needed. For mDNS, ioBroker and the appliances must sit in the
|
|
126
|
-
same broadcast segment.
|
|
134
|
+
same broadcast segment. Separate IoT WLANs or VLANs, firewalls (including the Windows firewall on
|
|
135
|
+
a test machine) and routers that filter multicast stop discovery just as well. In all these cases
|
|
136
|
+
the manual IP list is the reliable way.
|
|
127
137
|
|
|
128
138
|
**Docker.** In a container with bridge networking multicast is not forwarded, so discovery finds
|
|
129
139
|
nothing — enter the IP addresses by hand, polling then works normally. Push does not work there at
|
|
@@ -227,6 +237,17 @@ engineering work of the projects `MieleRESTServer` (akappner),
|
|
|
227
237
|
### **WORK IN PROGRESS**
|
|
228
238
|
-->
|
|
229
239
|
|
|
240
|
+
### 0.3.41
|
|
241
|
+
|
|
242
|
+
- (SmarthomeElektroniker) Device types corrected: 16 is the microwave (was: steam oven combi), 67 the dialog oven (was: dish warmer, now 25), the washer-dryer (24) uses the washing machine programs, the oven with microwave (13) its own phases
|
|
243
|
+
- (SmarthomeElektroniker) New device types: semi-professional/professional washers, dryers and dishwashers, robot vacuum (23), steam oven combi (31), steam oven with microwave (45, 418 programs), steam oven MK2 (73); dishwasher program 5 added
|
|
244
|
+
- (SmarthomeElektroniker) Programs without a German name are shown readably ("Artichokes small") instead of as raw identifier
|
|
245
|
+
- (SmarthomeElektroniker) Credits for the tables taken over from Home Assistant, ha-miele-at-lan and ioBroker.miele-unbound
|
|
246
|
+
|
|
247
|
+
### 0.3.40
|
|
248
|
+
|
|
249
|
+
- (SmarthomeElektroniker) README: hints for a failing login (ad blocker), moving to another system and why mDNS may find nothing; clearer log message when no appliance is found (#12, thanks @meistermopper)
|
|
250
|
+
|
|
230
251
|
### 0.3.39
|
|
231
252
|
|
|
232
253
|
- (SmarthomeElektroniker) Unknown program or phase IDs are now shown as "Programm 201" / "Phase 1234" instead of keeping the text of the previous program (#13)
|
|
@@ -466,6 +487,15 @@ Most of the above was contributed by [meistermopper](https://github.com/meisterm
|
|
|
466
487
|
|
|
467
488
|
[Older changelog entries can be found here](CHANGELOG_OLD.md)
|
|
468
489
|
|
|
490
|
+
## Credits
|
|
491
|
+
|
|
492
|
+
The program and phase tables in `lib/enums.js` and the mapping of device types to tables come
|
|
493
|
+
from [Home Assistant](https://github.com/home-assistant/core) (Apache License 2.0, © Home Assistant
|
|
494
|
+
Authors), taken over via [ha-miele-at-lan](https://github.com/tiehfood/ha-miele-at-lan) (MIT, ©
|
|
495
|
+
tiehfood) and cross-checked against
|
|
496
|
+
[ioBroker.miele-unbound](https://github.com/meistermopper/ioBroker.miele-unbound) (MIT, ©
|
|
497
|
+
meistermopper). Thanks to all three projects.
|
|
498
|
+
|
|
469
499
|
## License
|
|
470
500
|
|
|
471
501
|
MIT License
|
package/README_de.md
CHANGED
|
@@ -49,6 +49,15 @@ selbst aus dem Browser heraus.
|
|
|
49
49
|
GroupID und GroupKey stehen danach in der Instanzkonfiguration, der Schlüssel verschlüsselt.
|
|
50
50
|
Diese Prozedur braucht man nie wieder.
|
|
51
51
|
|
|
52
|
+
**Anmeldung scheitert mit `invalid_request … unknown contextId`?** Mieles Anmeldedienst wechselt
|
|
53
|
+
beim Login zwischen zwei Domains und verliert die Sitzung, wenn ein Werbeblocker oder ein strenger
|
|
54
|
+
Schutz vor Drittanbieter-Cookies dazwischenfunkt. Die Login-Seite dann in einem privaten Fenster
|
|
55
|
+
ohne Erweiterungen öffnen.
|
|
56
|
+
|
|
57
|
+
**Umzug auf ein anderes System.** GroupID und GroupKey ändern sich nie. Eine Sicherung der
|
|
58
|
+
ioBroker-Konfiguration (etwa mit BackItUp) nimmt sie mit; auf einem frischen System dauert der
|
|
59
|
+
Login erneut zwei Minuten. Die Admin-Seite zeigt den Schlüssel nur als Platzhalter.
|
|
60
|
+
|
|
52
61
|
## Was dabei herauskommt
|
|
53
62
|
|
|
54
63
|
Jedes Gerät wird ein Objekt mit seiner Seriennummer als Kennung. Darunter:
|
|
@@ -125,7 +134,9 @@ Jedes Feld trägt seine Erklärung im Admin direkt unter sich; diese Seite wiede
|
|
|
125
134
|
| ausgehend | TCP 443 → miele-iot.com | GroupKey abrufen | nur bei der Anmeldung |
|
|
126
135
|
|
|
127
136
|
Ohne Push ist **kein eingehender Port** nötig. Für mDNS müssen ioBroker und die Geräte im selben
|
|
128
|
-
Broadcast-Segment liegen.
|
|
137
|
+
Broadcast-Segment liegen. Getrennte IoT-WLANs oder VLANs, Firewalls (auch die Windows-Firewall auf
|
|
138
|
+
einem Testrechner) und Router, die Multicast filtern, verhindern die Suche genauso. In all diesen
|
|
139
|
+
Fällen ist die manuelle IP-Liste der verlässliche Weg.
|
|
129
140
|
|
|
130
141
|
**Docker.** In einem Container mit Bridge-Netz wird Multicast nicht weitergereicht, die Suche
|
|
131
142
|
findet also nichts – die IP-Adressen von Hand eintragen, das Abfragen läuft dann normal. Push
|
|
@@ -344,6 +355,15 @@ Reverse-Engineering-Arbeit der Projekte `MieleRESTServer` (akappner),
|
|
|
344
355
|
|
|
345
356
|
[Ältere Einträge sind hier zu finden](CHANGELOG_OLD.md)
|
|
346
357
|
|
|
358
|
+
## Danksagung
|
|
359
|
+
|
|
360
|
+
Die Programm- und Phasentabellen in `lib/enums.js` und die Zuordnung der Gerätetypen stammen aus
|
|
361
|
+
[Home Assistant](https://github.com/home-assistant/core) (Apache License 2.0, © Home Assistant
|
|
362
|
+
Authors), übernommen über [ha-miele-at-lan](https://github.com/tiehfood/ha-miele-at-lan) (MIT, ©
|
|
363
|
+
tiehfood) und abgeglichen mit
|
|
364
|
+
[ioBroker.miele-unbound](https://github.com/meistermopper/ioBroker.miele-unbound) (MIT, ©
|
|
365
|
+
meistermopper). Danke an alle drei Projekte.
|
|
366
|
+
|
|
347
367
|
## Lizenz
|
|
348
368
|
|
|
349
369
|
MIT License - Copyright (c) 2026 Immanuel <github@freitag.online>
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "miele-local",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.41",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "Miele@local",
|
|
7
7
|
"de": "Miele@local",
|
|
@@ -52,6 +52,32 @@
|
|
|
52
52
|
"readme": "https://github.com/SmarthomeElektroniker/ioBroker.miele-local/blob/main/README.md",
|
|
53
53
|
"loglevel": "info",
|
|
54
54
|
"news": {
|
|
55
|
+
"0.3.41": {
|
|
56
|
+
"en": "Device types corrected (16 microwave, 67 dialog oven, 25 dish warmer, washer-dryer uses washing machine programs); new types: robot vacuum, steam oven combi, steam oven with microwave (418 programs), professional appliances. Credits for tables from Home Assistant.",
|
|
57
|
+
"de": "Gerätetypen berichtigt (16 Mikrowelle, 67 Dialoggarer, 25 Wärmeschublade, Waschtrockner mit Waschmaschinenprogrammen); neue Typen: Saugroboter, Dampfbackofen, Dampfgarer mit Mikrowelle (418 Programme), Profi-Geräte. Danksagung für die Tabellen aus Home Assistant.",
|
|
58
|
+
"ru": "Исправлены типы устройств (16 микроволновка, 67 Dialog-печь, 25 подогреватель посуды, стирально-сушильная машина с программами стиральной машины); новые типы: робот-пылесос, пароконвектомат, пароварка с микроволновкой (418 программ), профессиональные приборы. Благодарность Home Assistant за таблицы.",
|
|
59
|
+
"pt": "Tipos de aparelho corrigidos (16 micro-ondas, 67 forno Dialog, 25 aquecedor de loiça, máquina de lavar e secar com programas de lavagem); novos tipos: aspirador robô, forno a vapor combinado, forno a vapor com micro-ondas (418 programas), aparelhos profissionais. Créditos pelas tabelas do Home Assistant.",
|
|
60
|
+
"nl": "Apparaattypes gecorrigeerd (16 magnetron, 67 Dialog-oven, 25 servieswarmer, was-droogcombinatie met wasmachineprogramma's); nieuwe types: robotstofzuiger, combi-stoomoven, stoomoven met magnetron (418 programma's), professionele apparaten. Dank aan Home Assistant voor de tabellen.",
|
|
61
|
+
"fr": "Types d'appareils corrigés (16 micro-ondes, 67 four Dialog, 25 chauffe-vaisselle, lave-linge séchant avec programmes de lave-linge) ; nouveaux types : aspirateur robot, four vapeur combiné, four vapeur avec micro-ondes (418 programmes), appareils professionnels. Remerciements à Home Assistant pour les tables.",
|
|
62
|
+
"it": "Tipi di apparecchio corretti (16 microonde, 67 forno Dialog, 25 scaldavivande, lavasciuga con programmi della lavatrice); nuovi tipi: robot aspirapolvere, forno a vapore combinato, forno a vapore con microonde (418 programmi), apparecchi professionali. Ringraziamenti a Home Assistant per le tabelle.",
|
|
63
|
+
"es": "Tipos de aparato corregidos (16 microondas, 67 horno Dialog, 25 calientaplatos, lavadora-secadora con programas de lavadora); nuevos tipos: robot aspirador, horno de vapor combinado, horno de vapor con microondas (418 programas), aparatos profesionales. Agradecimientos a Home Assistant por las tablas.",
|
|
64
|
+
"pl": "Poprawiono typy urządzeń (16 mikrofalówka, 67 piekarnik Dialog, 25 podgrzewacz naczyń, pralko-suszarka z programami pralki); nowe typy: robot sprzątający, piekarnik parowy kombi, piekarnik parowy z mikrofalą (418 programów), urządzenia profesjonalne. Podziękowania dla Home Assistant za tabele.",
|
|
65
|
+
"uk": "Виправлено типи пристроїв (16 мікрохвильова піч, 67 піч Dialog, 25 підігрівач посуду, прально-сушильна машина з програмами пральної машини); нові типи: робот-пилосос, комбі-пароварка, пароварка з мікрохвильовою піччю (418 програм), професійні прилади. Подяка Home Assistant за таблиці.",
|
|
66
|
+
"zh-cn": "修正设备类型(16 微波炉、67 Dialog 烤箱、25 暖碟机、洗干一体机使用洗衣机程序);新增类型:扫地机器人、蒸烤箱、微波蒸箱(418 个程序)、专业设备。感谢 Home Assistant 提供的表格。"
|
|
67
|
+
},
|
|
68
|
+
"0.3.40": {
|
|
69
|
+
"en": "README: hints for a failing login (ad blocker), moving to another system and why mDNS may find nothing; clearer log message when no appliance is found (#12).",
|
|
70
|
+
"de": "README: Hinweise bei scheiterndem Login (Werbeblocker), zum Umzug auf ein anderes System und warum mDNS nichts findet; deutlichere Logmeldung, wenn kein Gerät gefunden wird (#12).",
|
|
71
|
+
"ru": "README: подсказки при неудачном входе (блокировщик рекламы), при переносе на другую систему и о том, почему mDNS ничего не находит; более понятное сообщение в журнале, если устройство не найдено (#12).",
|
|
72
|
+
"pt": "README: dicas para um login falhado (bloqueador de anúncios), para mudar para outro sistema e porque o mDNS pode não encontrar nada; mensagem de registo mais clara quando nenhum aparelho é encontrado (#12).",
|
|
73
|
+
"nl": "README: tips bij een mislukte login (adblocker), bij verhuizing naar een ander systeem en waarom mDNS niets vindt; duidelijkere logmelding als er geen apparaat wordt gevonden (#12).",
|
|
74
|
+
"fr": "README : conseils en cas d'échec de connexion (bloqueur de publicités), pour migrer vers un autre système et pourquoi mDNS ne trouve rien ; message de journal plus clair lorsqu'aucun appareil n'est trouvé (#12).",
|
|
75
|
+
"it": "README: suggerimenti per un login non riuscito (blocco pubblicità), per il trasferimento su un altro sistema e perché mDNS non trova nulla; messaggio di log più chiaro quando non viene trovato alcun apparecchio (#12).",
|
|
76
|
+
"es": "README: consejos para un inicio de sesión fallido (bloqueador de anuncios), para migrar a otro sistema y por qué mDNS no encuentra nada; mensaje de registro más claro cuando no se encuentra ningún aparato (#12).",
|
|
77
|
+
"pl": "README: wskazówki przy nieudanym logowaniu (bloker reklam), przy przenoszeniu na inny system i dlaczego mDNS nic nie znajduje; czytelniejszy komunikat w dzienniku, gdy nie znaleziono urządzenia (#12).",
|
|
78
|
+
"uk": "README: підказки при невдалому вході (блокувальник реклами), при перенесенні на іншу систему та чому mDNS нічого не знаходить; зрозуміліше повідомлення в журналі, якщо пристрій не знайдено (#12).",
|
|
79
|
+
"zh-cn": "README:登录失败(广告拦截器)、迁移到其他系统以及 mDNS 找不到设备原因的提示;未找到设备时日志信息更清晰 (#12)。"
|
|
80
|
+
},
|
|
55
81
|
"0.3.39": {
|
|
56
82
|
"en": "Unknown program or phase IDs are shown as \"Programm 201\" instead of keeping the text of the previous program. Dishwasher program IDs of the G7771 added (#13).",
|
|
57
83
|
"de": "Unbekannte Programm- oder Phasennummern erscheinen als „Programm 201“, statt den Text des vorigen Programms stehen zu lassen. Programmnummern des Geschirrspülers G7771 ergänzt (#13).",
|
package/lib/enums.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
//
|
|
2
|
+
// Klartext-Dekodierung. Die Tabellen und die Zuordnung Geraetetyp -> Tabelle stammen aus
|
|
3
|
+
// Home Assistant (homeassistant/components/miele/const.py, Apache-2.0, (c) Home Assistant
|
|
4
|
+
// Authors), uebernommen ueber ha-miele-at-lan (custom_components/miele_lan/enums.py und
|
|
5
|
+
// sensor.py, MIT, (c) 2026 tiehfood). Abgeglichen mit ioBroker.miele-unbound
|
|
6
|
+
// (src/lib/definitions.ts, MIT, (c) 2026 meistermopper). Eigene Ergaenzungen sind im Text
|
|
7
|
+
// gekennzeichnet (etwa die 200er-Reihe der Spuelmaschinen).
|
|
8
|
+
// https://github.com/home-assistant/core - Apache License 2.0
|
|
9
|
+
// https://github.com/tiehfood/ha-miele-at-lan - MIT License
|
|
3
10
|
//
|
|
4
11
|
// ANMERKUNG ZU StateStatus 12 ("service"), am Geraet geprueft am 25.08.2026:
|
|
5
12
|
// Der Wert meldet nicht, dass das Geraet gewartet wird, sondern dass jemand am Geraet das
|
|
@@ -330,6 +337,7 @@ const TABLES = {
|
|
|
330
337
|
1: 'intensive',
|
|
331
338
|
2: 'maintenance',
|
|
332
339
|
3: 'eco',
|
|
340
|
+
5: 'normal',
|
|
333
341
|
6: 'automatic',
|
|
334
342
|
7: 'automatic',
|
|
335
343
|
9: 'solar_save',
|
|
@@ -820,20 +828,509 @@ const TABLES = {
|
|
|
820
828
|
2: 'medium',
|
|
821
829
|
3: 'high',
|
|
822
830
|
},
|
|
831
|
+
// Dampfgarer mit Mikrowelle (45)
|
|
832
|
+
SteamOvenMicroProgramId: {
|
|
833
|
+
'-1': 'no_program',
|
|
834
|
+
0: 'no_program',
|
|
835
|
+
8: 'steam_cooking',
|
|
836
|
+
19: 'microwave',
|
|
837
|
+
53: 'popcorn',
|
|
838
|
+
54: 'quick_mw',
|
|
839
|
+
72: 'sous_vide',
|
|
840
|
+
75: 'eco_steam_cooking',
|
|
841
|
+
77: 'rapid_steam_cooking',
|
|
842
|
+
326: 'descale',
|
|
843
|
+
330: 'menu_cooking',
|
|
844
|
+
2018: 'reheating_with_steam',
|
|
845
|
+
2019: 'defrosting_with_steam',
|
|
846
|
+
2020: 'blanching',
|
|
847
|
+
2021: 'bottling',
|
|
848
|
+
2022: 'sterilize_crockery',
|
|
849
|
+
2023: 'prove_dough',
|
|
850
|
+
2027: 'soak',
|
|
851
|
+
2029: 'reheating_with_microwave',
|
|
852
|
+
2030: 'defrosting_with_microwave',
|
|
853
|
+
2031: 'artichokes_small',
|
|
854
|
+
2032: 'artichokes_medium',
|
|
855
|
+
2033: 'artichokes_large',
|
|
856
|
+
2034: 'eggplant_sliced',
|
|
857
|
+
2035: 'eggplant_diced',
|
|
858
|
+
2036: 'cauliflower_whole_small',
|
|
859
|
+
2039: 'cauliflower_whole_medium',
|
|
860
|
+
2042: 'cauliflower_whole_large',
|
|
861
|
+
2046: 'cauliflower_florets_small',
|
|
862
|
+
2048: 'cauliflower_florets_medium',
|
|
863
|
+
2049: 'cauliflower_florets_large',
|
|
864
|
+
2051: 'green_beans_whole',
|
|
865
|
+
2052: 'green_beans_cut',
|
|
866
|
+
2053: 'yellow_beans_whole',
|
|
867
|
+
2054: 'yellow_beans_cut',
|
|
868
|
+
2055: 'broad_beans',
|
|
869
|
+
2056: 'common_beans',
|
|
870
|
+
2057: 'runner_beans_whole',
|
|
871
|
+
2058: 'runner_beans_pieces',
|
|
872
|
+
2059: 'runner_beans_sliced',
|
|
873
|
+
2060: 'broccoli_whole_small',
|
|
874
|
+
2061: 'broccoli_whole_medium',
|
|
875
|
+
2062: 'broccoli_whole_large',
|
|
876
|
+
2064: 'broccoli_florets_small',
|
|
877
|
+
2066: 'broccoli_florets_medium',
|
|
878
|
+
2068: 'broccoli_florets_large',
|
|
879
|
+
2069: 'endive_halved',
|
|
880
|
+
2070: 'endive_quartered',
|
|
881
|
+
2071: 'endive_strips',
|
|
882
|
+
2072: 'chinese_cabbage_cut',
|
|
883
|
+
2073: 'peas',
|
|
884
|
+
2074: 'fennel_halved',
|
|
885
|
+
2075: 'fennel_quartered',
|
|
886
|
+
2076: 'fennel_strips',
|
|
887
|
+
2077: 'kale_cut',
|
|
888
|
+
2080: 'potatoes_in_the_skin_waxy_small_steam_cooking',
|
|
889
|
+
2081: 'potatoes_in_the_skin_waxy_small_rapid_steam_cooking',
|
|
890
|
+
2083: 'potatoes_in_the_skin_waxy_medium_steam_cooking',
|
|
891
|
+
2084: 'potatoes_in_the_skin_waxy_medium_rapid_steam_cooking',
|
|
892
|
+
2086: 'potatoes_in_the_skin_waxy_large_steam_cooking',
|
|
893
|
+
2087: 'potatoes_in_the_skin_waxy_large_rapid_steam_cooking',
|
|
894
|
+
2088: 'potatoes_in_the_skin_floury_small',
|
|
895
|
+
2091: 'potatoes_in_the_skin_floury_medium',
|
|
896
|
+
2094: 'potatoes_in_the_skin_floury_large',
|
|
897
|
+
2097: 'potatoes_in_the_skin_mainly_waxy_small',
|
|
898
|
+
2100: 'potatoes_in_the_skin_mainly_waxy_medium',
|
|
899
|
+
2103: 'potatoes_in_the_skin_mainly_waxy_large',
|
|
900
|
+
2106: 'potatoes_waxy_whole_small',
|
|
901
|
+
2109: 'potatoes_waxy_whole_medium',
|
|
902
|
+
2112: 'potatoes_waxy_whole_large',
|
|
903
|
+
2115: 'potatoes_waxy_halved',
|
|
904
|
+
2116: 'potatoes_waxy_quartered',
|
|
905
|
+
2117: 'potatoes_waxy_diced',
|
|
906
|
+
2118: 'potatoes_mainly_waxy_small',
|
|
907
|
+
2119: 'potatoes_mainly_waxy_medium',
|
|
908
|
+
2120: 'potatoes_mainly_waxy_large',
|
|
909
|
+
2121: 'potatoes_mainly_waxy_halved',
|
|
910
|
+
2122: 'potatoes_mainly_waxy_quartered',
|
|
911
|
+
2123: 'potatoes_mainly_waxy_diced',
|
|
912
|
+
2124: 'potatoes_floury_whole_small',
|
|
913
|
+
2125: 'potatoes_floury_whole_medium',
|
|
914
|
+
2126: 'potatoes_floury_whole_large',
|
|
915
|
+
2127: 'potatoes_floury_halved',
|
|
916
|
+
2128: 'potatoes_floury_quartered',
|
|
917
|
+
2129: 'potatoes_floury_diced',
|
|
918
|
+
2130: 'german_turnip_sliced',
|
|
919
|
+
2131: 'german_turnip_cut_into_batons',
|
|
920
|
+
2132: 'german_turnip_diced',
|
|
921
|
+
2133: 'pumpkin_diced',
|
|
922
|
+
2134: 'corn_on_the_cob',
|
|
923
|
+
2135: 'mangel_cut',
|
|
924
|
+
2136: 'bunched_carrots_whole_small',
|
|
925
|
+
2137: 'bunched_carrots_whole_medium',
|
|
926
|
+
2138: 'bunched_carrots_whole_large',
|
|
927
|
+
2139: 'bunched_carrots_halved',
|
|
928
|
+
2140: 'bunched_carrots_quartered',
|
|
929
|
+
2141: 'bunched_carrots_diced',
|
|
930
|
+
2142: 'bunched_carrots_cut_into_batons',
|
|
931
|
+
2143: 'bunched_carrots_sliced',
|
|
932
|
+
2144: 'parisian_carrots_small',
|
|
933
|
+
2145: 'parisian_carrots_medium',
|
|
934
|
+
2146: 'parisian_carrots_large',
|
|
935
|
+
2147: 'carrots_whole_small',
|
|
936
|
+
2148: 'carrots_whole_medium',
|
|
937
|
+
2149: 'carrots_whole_large',
|
|
938
|
+
2150: 'carrots_halved',
|
|
939
|
+
2151: 'carrots_quartered',
|
|
940
|
+
2152: 'carrots_diced',
|
|
941
|
+
2153: 'carrots_cut_into_batons',
|
|
942
|
+
2155: 'carrots_sliced',
|
|
943
|
+
2156: 'pepper_halved',
|
|
944
|
+
2157: 'pepper_quartered',
|
|
945
|
+
2158: 'pepper_strips',
|
|
946
|
+
2159: 'pepper_diced',
|
|
947
|
+
2160: 'parsnip_sliced',
|
|
948
|
+
2161: 'parsnip_diced',
|
|
949
|
+
2162: 'parsnip_cut_into_batons',
|
|
950
|
+
2163: 'parsley_root_sliced',
|
|
951
|
+
2164: 'parsley_root_diced',
|
|
952
|
+
2165: 'parsley_root_cut_into_batons',
|
|
953
|
+
2166: 'leek_pieces',
|
|
954
|
+
2167: 'leek_rings',
|
|
955
|
+
2168: 'romanesco_whole_small',
|
|
956
|
+
2169: 'romanesco_whole_medium',
|
|
957
|
+
2170: 'romanesco_whole_large',
|
|
958
|
+
2171: 'romanesco_florets_small',
|
|
959
|
+
2172: 'romanesco_florets_medium',
|
|
960
|
+
2173: 'romanesco_florets_large',
|
|
961
|
+
2175: 'brussels_sprout',
|
|
962
|
+
2176: 'beetroot_whole_small',
|
|
963
|
+
2177: 'beetroot_whole_medium',
|
|
964
|
+
2178: 'beetroot_whole_large',
|
|
965
|
+
2179: 'red_cabbage_cut',
|
|
966
|
+
2180: 'black_salsify_thin',
|
|
967
|
+
2181: 'black_salsify_medium',
|
|
968
|
+
2182: 'black_salsify_thick',
|
|
969
|
+
2183: 'celery_pieces',
|
|
970
|
+
2184: 'celery_sliced',
|
|
971
|
+
2185: 'celeriac_sliced',
|
|
972
|
+
2186: 'celeriac_cut_into_batons',
|
|
973
|
+
2187: 'celeriac_diced',
|
|
974
|
+
2188: 'white_asparagus_thin',
|
|
975
|
+
2189: 'white_asparagus_medium',
|
|
976
|
+
2190: 'white_asparagus_thick',
|
|
977
|
+
2192: 'green_asparagus_thin',
|
|
978
|
+
2194: 'green_asparagus_medium',
|
|
979
|
+
2196: 'green_asparagus_thick',
|
|
980
|
+
2197: 'spinach',
|
|
981
|
+
2198: 'pointed_cabbage_cut',
|
|
982
|
+
2199: 'yam_halved',
|
|
983
|
+
2200: 'yam_quartered',
|
|
984
|
+
2201: 'yam_strips',
|
|
985
|
+
2202: 'swede_diced',
|
|
986
|
+
2203: 'swede_cut_into_batons',
|
|
987
|
+
2204: 'teltow_turnip_sliced',
|
|
988
|
+
2205: 'teltow_turnip_diced',
|
|
989
|
+
2206: 'jerusalem_artichoke_sliced',
|
|
990
|
+
2207: 'jerusalem_artichoke_diced',
|
|
991
|
+
2208: 'green_cabbage_cut',
|
|
992
|
+
2209: 'savoy_cabbage_cut',
|
|
993
|
+
2210: 'courgette_sliced',
|
|
994
|
+
2211: 'courgette_diced',
|
|
995
|
+
2212: 'snow_pea',
|
|
996
|
+
2214: 'perch_whole',
|
|
997
|
+
2215: 'perch_fillet_2_cm',
|
|
998
|
+
2216: 'perch_fillet_3_cm',
|
|
999
|
+
2217: 'gilt_head_bream_whole',
|
|
1000
|
+
2220: 'gilt_head_bream_fillet',
|
|
1001
|
+
2221: 'codfish_piece',
|
|
1002
|
+
2222: 'codfish_fillet',
|
|
1003
|
+
2224: 'trout',
|
|
1004
|
+
2225: 'pike_fillet',
|
|
1005
|
+
2226: 'pike_piece',
|
|
1006
|
+
2227: 'halibut_fillet_2_cm',
|
|
1007
|
+
2230: 'halibut_fillet_3_cm',
|
|
1008
|
+
2231: 'codfish_fillet',
|
|
1009
|
+
2232: 'codfish_piece',
|
|
1010
|
+
2233: 'carp',
|
|
1011
|
+
2234: 'salmon_fillet_2_cm',
|
|
1012
|
+
2235: 'salmon_fillet_3_cm',
|
|
1013
|
+
2238: 'salmon_steak_2_cm',
|
|
1014
|
+
2239: 'salmon_steak_3_cm',
|
|
1015
|
+
2240: 'salmon_piece',
|
|
1016
|
+
2241: 'salmon_trout',
|
|
1017
|
+
2244: 'iridescent_shark_fillet',
|
|
1018
|
+
2245: 'red_snapper_fillet_2_cm',
|
|
1019
|
+
2248: 'red_snapper_fillet_3_cm',
|
|
1020
|
+
2249: 'redfish_fillet_2_cm',
|
|
1021
|
+
2250: 'redfish_fillet_3_cm',
|
|
1022
|
+
2251: 'redfish_piece',
|
|
1023
|
+
2252: 'char',
|
|
1024
|
+
2253: 'plaice_whole_2_cm',
|
|
1025
|
+
2254: 'plaice_whole_3_cm',
|
|
1026
|
+
2255: 'plaice_whole_4_cm',
|
|
1027
|
+
2256: 'plaice_fillet_1_cm',
|
|
1028
|
+
2259: 'plaice_fillet_2_cm',
|
|
1029
|
+
2260: 'coalfish_fillet_2_cm',
|
|
1030
|
+
2261: 'coalfish_fillet_3_cm',
|
|
1031
|
+
2262: 'coalfish_piece',
|
|
1032
|
+
2263: 'sea_devil_fillet_3_cm',
|
|
1033
|
+
2266: 'sea_devil_fillet_4_cm',
|
|
1034
|
+
2267: 'common_sole_fillet_1_cm',
|
|
1035
|
+
2270: 'common_sole_fillet_2_cm',
|
|
1036
|
+
2271: 'atlantic_catfish_fillet_1_cm',
|
|
1037
|
+
2272: 'atlantic_catfish_fillet_2_cm',
|
|
1038
|
+
2273: 'turbot_fillet_2_cm',
|
|
1039
|
+
2276: 'turbot_fillet_3_cm',
|
|
1040
|
+
2277: 'tuna_steak',
|
|
1041
|
+
2278: 'tuna_fillet_2_cm',
|
|
1042
|
+
2279: 'tuna_fillet_3_cm',
|
|
1043
|
+
2280: 'tilapia_fillet_1_cm',
|
|
1044
|
+
2281: 'tilapia_fillet_2_cm',
|
|
1045
|
+
2282: 'nile_perch_fillet_2_cm',
|
|
1046
|
+
2283: 'nile_perch_fillet_3_cm',
|
|
1047
|
+
2285: 'zander_fillet',
|
|
1048
|
+
2288: 'soup_hen',
|
|
1049
|
+
2291: 'poularde_whole',
|
|
1050
|
+
2292: 'poularde_breast',
|
|
1051
|
+
2294: 'turkey_breast',
|
|
1052
|
+
2302: 'chicken_tikka_masala_with_rice',
|
|
1053
|
+
2312: 'veal_fillet_whole',
|
|
1054
|
+
2313: 'veal_fillet_medaillons_1_cm',
|
|
1055
|
+
2315: 'veal_fillet_medaillons_2_cm',
|
|
1056
|
+
2317: 'veal_fillet_medaillons_3_cm',
|
|
1057
|
+
2324: 'goulash_soup',
|
|
1058
|
+
2327: 'dutch_hash',
|
|
1059
|
+
2328: 'stuffed_cabbage',
|
|
1060
|
+
2330: 'beef_tenderloin',
|
|
1061
|
+
2333: 'beef_tenderloin_medaillons_1_cm_steam_cooking',
|
|
1062
|
+
2334: 'beef_tenderloin_medaillons_2_cm_steam_cooking',
|
|
1063
|
+
2335: 'beef_tenderloin_medaillons_3_cm_steam_cooking',
|
|
1064
|
+
2339: 'silverside_5_cm',
|
|
1065
|
+
2342: 'silverside_7_5_cm',
|
|
1066
|
+
2345: 'silverside_10_cm',
|
|
1067
|
+
2348: 'meat_for_soup_back_or_top_rib',
|
|
1068
|
+
2349: 'meat_for_soup_leg_steak',
|
|
1069
|
+
2350: 'meat_for_soup_brisket',
|
|
1070
|
+
2353: 'viennese_silverside',
|
|
1071
|
+
2354: 'whole_ham_steam_cooking',
|
|
1072
|
+
2355: 'whole_ham_reheating',
|
|
1073
|
+
2359: 'kasseler_piece',
|
|
1074
|
+
2361: 'kasseler_slice',
|
|
1075
|
+
2363: 'knuckle_of_pork_fresh',
|
|
1076
|
+
2364: 'knuckle_of_pork_cured',
|
|
1077
|
+
2367: 'pork_tenderloin_medaillons_3_cm',
|
|
1078
|
+
2368: 'pork_tenderloin_medaillons_4_cm',
|
|
1079
|
+
2369: 'pork_tenderloin_medaillons_5_cm',
|
|
1080
|
+
2429: 'pumpkin_soup',
|
|
1081
|
+
2430: 'meat_with_rice',
|
|
1082
|
+
2431: 'beef_casserole',
|
|
1083
|
+
2450: 'pumpkin_risotto',
|
|
1084
|
+
2451: 'risotto',
|
|
1085
|
+
2453: 'rice_pudding_steam_cooking',
|
|
1086
|
+
2454: 'rice_pudding_rapid_steam_cooking',
|
|
1087
|
+
2461: 'amaranth',
|
|
1088
|
+
2462: 'bulgur',
|
|
1089
|
+
2463: 'spelt_whole',
|
|
1090
|
+
2464: 'spelt_cracked',
|
|
1091
|
+
2465: 'green_spelt_whole',
|
|
1092
|
+
2466: 'green_spelt_cracked',
|
|
1093
|
+
2467: 'oats_whole',
|
|
1094
|
+
2468: 'oats_cracked',
|
|
1095
|
+
2469: 'millet',
|
|
1096
|
+
2470: 'quinoa',
|
|
1097
|
+
2471: 'polenta_swiss_style_fine_polenta',
|
|
1098
|
+
2472: 'polenta_swiss_style_medium_polenta',
|
|
1099
|
+
2473: 'polenta_swiss_style_coarse_polenta',
|
|
1100
|
+
2474: 'polenta',
|
|
1101
|
+
2475: 'rye_whole',
|
|
1102
|
+
2476: 'rye_cracked',
|
|
1103
|
+
2477: 'wheat_whole',
|
|
1104
|
+
2478: 'wheat_cracked',
|
|
1105
|
+
2480: 'gnocchi_fresh',
|
|
1106
|
+
2481: 'yeast_dumplings_fresh',
|
|
1107
|
+
2482: 'potato_dumplings_raw_boil_in_bag',
|
|
1108
|
+
2483: 'potato_dumplings_raw_deep_frozen',
|
|
1109
|
+
2484: 'potato_dumplings_half_half_boil_in_bag',
|
|
1110
|
+
2485: 'potato_dumplings_half_half_deep_frozen',
|
|
1111
|
+
2486: 'bread_dumplings_boil_in_the_bag',
|
|
1112
|
+
2487: 'bread_dumplings_fresh',
|
|
1113
|
+
2488: 'ravioli_fresh',
|
|
1114
|
+
2489: 'spaetzle_fresh',
|
|
1115
|
+
2490: 'tagliatelli_fresh',
|
|
1116
|
+
2491: 'schupfnudeln_potato_noodels',
|
|
1117
|
+
2492: 'tortellini_fresh',
|
|
1118
|
+
2493: 'red_lentils',
|
|
1119
|
+
2494: 'brown_lentils',
|
|
1120
|
+
2495: 'beluga_lentils',
|
|
1121
|
+
2496: 'green_split_peas',
|
|
1122
|
+
2497: 'yellow_split_peas',
|
|
1123
|
+
2498: 'chick_peas',
|
|
1124
|
+
2499: 'white_beans',
|
|
1125
|
+
2500: 'pinto_beans',
|
|
1126
|
+
2501: 'red_beans',
|
|
1127
|
+
2502: 'black_beans',
|
|
1128
|
+
2503: 'hens_eggs_size_s_soft',
|
|
1129
|
+
2504: 'hens_eggs_size_s_medium',
|
|
1130
|
+
2505: 'hens_eggs_size_s_hard',
|
|
1131
|
+
2506: 'hens_eggs_size_m_soft',
|
|
1132
|
+
2507: 'hens_eggs_size_m_medium',
|
|
1133
|
+
2508: 'hens_eggs_size_m_hard',
|
|
1134
|
+
2509: 'hens_eggs_size_l_soft',
|
|
1135
|
+
2510: 'hens_eggs_size_l_medium',
|
|
1136
|
+
2511: 'hens_eggs_size_l_hard',
|
|
1137
|
+
2512: 'hens_eggs_size_xl_soft',
|
|
1138
|
+
2513: 'hens_eggs_size_xl_medium',
|
|
1139
|
+
2514: 'hens_eggs_size_xl_hard',
|
|
1140
|
+
2515: 'swiss_toffee_cream_100_ml',
|
|
1141
|
+
2516: 'swiss_toffee_cream_150_ml',
|
|
1142
|
+
2518: 'toffee_date_dessert_several_small',
|
|
1143
|
+
2520: 'cheesecake_several_small',
|
|
1144
|
+
2521: 'cheesecake_one_large',
|
|
1145
|
+
2522: 'christmas_pudding_cooking',
|
|
1146
|
+
2523: 'christmas_pudding_heating',
|
|
1147
|
+
2524: 'treacle_sponge_pudding_several_small',
|
|
1148
|
+
2525: 'treacle_sponge_pudding_one_large',
|
|
1149
|
+
2526: 'sweet_cheese_dumplings',
|
|
1150
|
+
2527: 'apples_whole',
|
|
1151
|
+
2528: 'apples_halved',
|
|
1152
|
+
2529: 'apples_quartered',
|
|
1153
|
+
2530: 'apples_sliced',
|
|
1154
|
+
2531: 'apples_diced',
|
|
1155
|
+
2532: 'apricots_halved_steam_cooking',
|
|
1156
|
+
2533: 'apricots_halved_skinning',
|
|
1157
|
+
2534: 'apricots_quartered',
|
|
1158
|
+
2535: 'apricots_wedges',
|
|
1159
|
+
2536: 'pears_halved',
|
|
1160
|
+
2537: 'pears_quartered',
|
|
1161
|
+
2538: 'pears_wedges',
|
|
1162
|
+
2539: 'sweet_cherries',
|
|
1163
|
+
2540: 'sour_cherries',
|
|
1164
|
+
2541: 'pears_to_cook_small_whole',
|
|
1165
|
+
2542: 'pears_to_cook_small_halved',
|
|
1166
|
+
2543: 'pears_to_cook_small_quartered',
|
|
1167
|
+
2544: 'pears_to_cook_medium_whole',
|
|
1168
|
+
2545: 'pears_to_cook_medium_halved',
|
|
1169
|
+
2546: 'pears_to_cook_medium_quartered',
|
|
1170
|
+
2547: 'pears_to_cook_large_whole',
|
|
1171
|
+
2548: 'pears_to_cook_large_halved',
|
|
1172
|
+
2549: 'pears_to_cook_large_quartered',
|
|
1173
|
+
2550: 'mirabelles',
|
|
1174
|
+
2551: 'nectarines_peaches_halved_steam_cooking',
|
|
1175
|
+
2552: 'nectarines_peaches_halved_skinning',
|
|
1176
|
+
2553: 'nectarines_peaches_quartered',
|
|
1177
|
+
2554: 'nectarines_peaches_wedges',
|
|
1178
|
+
2555: 'plums_whole',
|
|
1179
|
+
2556: 'plums_halved',
|
|
1180
|
+
2557: 'cranberries',
|
|
1181
|
+
2558: 'quinces_diced',
|
|
1182
|
+
2559: 'greenage_plums',
|
|
1183
|
+
2560: 'rhubarb_chunks',
|
|
1184
|
+
2561: 'gooseberries',
|
|
1185
|
+
2562: 'mushrooms_whole',
|
|
1186
|
+
2563: 'mushrooms_halved',
|
|
1187
|
+
2564: 'mushrooms_sliced',
|
|
1188
|
+
2565: 'mushrooms_quartered',
|
|
1189
|
+
2566: 'mushrooms_diced',
|
|
1190
|
+
2567: 'cep',
|
|
1191
|
+
2568: 'chanterelle',
|
|
1192
|
+
2569: 'oyster_mushroom_whole',
|
|
1193
|
+
2570: 'oyster_mushroom_strips',
|
|
1194
|
+
2571: 'oyster_mushroom_diced',
|
|
1195
|
+
2572: 'saucisson',
|
|
1196
|
+
2573: 'bruehwurst_sausages',
|
|
1197
|
+
2574: 'bologna_sausage',
|
|
1198
|
+
2575: 'veal_sausages',
|
|
1199
|
+
2577: 'crevettes',
|
|
1200
|
+
2579: 'prawns',
|
|
1201
|
+
2581: 'king_prawns',
|
|
1202
|
+
2583: 'small_shrimps',
|
|
1203
|
+
2585: 'large_shrimps',
|
|
1204
|
+
2587: 'mussels',
|
|
1205
|
+
2589: 'scallops',
|
|
1206
|
+
2591: 'venus_clams',
|
|
1207
|
+
2592: 'goose_barnacles',
|
|
1208
|
+
2593: 'cockles',
|
|
1209
|
+
2594: 'razor_clams_small',
|
|
1210
|
+
2595: 'razor_clams_medium',
|
|
1211
|
+
2596: 'razor_clams_large',
|
|
1212
|
+
2597: 'mussels_in_sauce',
|
|
1213
|
+
2598: 'bottling_soft',
|
|
1214
|
+
2599: 'bottling_medium',
|
|
1215
|
+
2600: 'bottling_hard',
|
|
1216
|
+
2601: 'melt_chocolate',
|
|
1217
|
+
2602: 'dissolve_gelatine',
|
|
1218
|
+
2603: 'sweat_onions',
|
|
1219
|
+
2604: 'cook_bacon',
|
|
1220
|
+
2605: 'heating_damp_flannels',
|
|
1221
|
+
2606: 'decrystallise_honey',
|
|
1222
|
+
2607: 'make_yoghurt',
|
|
1223
|
+
2687: 'toffee_date_dessert_one_large',
|
|
1224
|
+
2694: 'beef_tenderloin_medaillons_1_cm_low_temperature_cooking',
|
|
1225
|
+
2695: 'beef_tenderloin_medaillons_2_cm_low_temperature_cooking',
|
|
1226
|
+
2696: 'beef_tenderloin_medaillons_3_cm_low_temperature_cooking',
|
|
1227
|
+
3373: 'wild_rice',
|
|
1228
|
+
3376: 'wholegrain_rice',
|
|
1229
|
+
3380: 'parboiled_rice_steam_cooking',
|
|
1230
|
+
3381: 'parboiled_rice_rapid_steam_cooking',
|
|
1231
|
+
3383: 'basmati_rice_steam_cooking',
|
|
1232
|
+
3384: 'basmati_rice_rapid_steam_cooking',
|
|
1233
|
+
3386: 'jasmine_rice_steam_cooking',
|
|
1234
|
+
3387: 'jasmine_rice_rapid_steam_cooking',
|
|
1235
|
+
3389: 'huanghuanian_steam_cooking',
|
|
1236
|
+
3390: 'huanghuanian_rapid_steam_cooking',
|
|
1237
|
+
3392: 'simiao_steam_cooking',
|
|
1238
|
+
3393: 'simiao_rapid_steam_cooking',
|
|
1239
|
+
3395: 'long_grain_rice_general_steam_cooking',
|
|
1240
|
+
3396: 'long_grain_rice_general_rapid_steam_cooking',
|
|
1241
|
+
3398: 'chongming_steam_cooking',
|
|
1242
|
+
3399: 'chongming_rapid_steam_cooking',
|
|
1243
|
+
3401: 'wuchang_steam_cooking',
|
|
1244
|
+
3402: 'wuchang_rapid_steam_cooking',
|
|
1245
|
+
3404: 'uonumma_koshihikari_steam_cooking',
|
|
1246
|
+
3405: 'uonumma_koshihikari_rapid_steam_cooking',
|
|
1247
|
+
3407: 'sheyang_steam_cooking',
|
|
1248
|
+
3408: 'sheyang_rapid_steam_cooking',
|
|
1249
|
+
3410: 'round_grain_rice_general_steam_cooking',
|
|
1250
|
+
3411: 'round_grain_rice_general_rapid_steam_cooking',
|
|
1251
|
+
},
|
|
1252
|
+
// Saugroboter (23)
|
|
1253
|
+
RobotVacuumCleanerProgramId: {
|
|
1254
|
+
'-1': 'no_program',
|
|
1255
|
+
0: 'no_program',
|
|
1256
|
+
1: 'auto',
|
|
1257
|
+
2: 'spot',
|
|
1258
|
+
3: 'turbo',
|
|
1259
|
+
4: 'silent',
|
|
1260
|
+
},
|
|
1261
|
+
// Backofen mit Mikrowelle (13)
|
|
1262
|
+
ProgramPhaseMicrowaveOvenCombo: {
|
|
1263
|
+
0: 'not_running',
|
|
1264
|
+
3329: 'heating_up_phase',
|
|
1265
|
+
3330: 'process_running',
|
|
1266
|
+
3334: 'process_finished',
|
|
1267
|
+
3339: 'cooling_phase',
|
|
1268
|
+
3340: 'energy_save',
|
|
1269
|
+
3863: 'steam_reduction',
|
|
1270
|
+
7938: 'process_running',
|
|
1271
|
+
7939: 'waiting_for_start',
|
|
1272
|
+
7940: 'heating_up_phase',
|
|
1273
|
+
7942: 'process_finished',
|
|
1274
|
+
65535: 'not_running',
|
|
1275
|
+
},
|
|
1276
|
+
// Dampfgarer mit Mikrowelle (45)
|
|
1277
|
+
ProgramPhaseSteamOvenMicro: {
|
|
1278
|
+
0: 'not_running',
|
|
1279
|
+
3329: 'heating',
|
|
1280
|
+
3330: 'process_running',
|
|
1281
|
+
3334: 'process_finished',
|
|
1282
|
+
3340: 'energy_save',
|
|
1283
|
+
3863: 'steam_reduction',
|
|
1284
|
+
7938: 'process_running',
|
|
1285
|
+
7939: 'waiting_for_start',
|
|
1286
|
+
7940: 'heating_up_phase',
|
|
1287
|
+
7942: 'process_running',
|
|
1288
|
+
65535: 'not_running',
|
|
1289
|
+
},
|
|
1290
|
+
// Saugroboter (23)
|
|
1291
|
+
ProgramPhaseRobotVacuumCleaner: {
|
|
1292
|
+
0: 'not_running',
|
|
1293
|
+
5889: 'vacuum_cleaning',
|
|
1294
|
+
5890: 'returning',
|
|
1295
|
+
5891: 'vacuum_cleaning_paused',
|
|
1296
|
+
5892: 'going_to_target_area',
|
|
1297
|
+
5903: 'docked',
|
|
1298
|
+
5904: 'docked',
|
|
1299
|
+
5910: 'remote_controlled',
|
|
1300
|
+
65535: 'not_running',
|
|
1301
|
+
},
|
|
823
1302
|
};
|
|
824
1303
|
|
|
825
1304
|
// Gerätetyp (DeviceType aus /Ident) → passende Programm-/Phasen-Tabelle.
|
|
1305
|
+
/*
|
|
1306
|
+
* Nummern und Zuordnung wie in Home Assistant (MieleAppliance, ha-miele-at-lan sensor.py).
|
|
1307
|
+
* Bis 0.3.40 stimmten hier vier Eintraege nicht: 16 stand als Dampfbackofen (ist die Mikrowelle),
|
|
1308
|
+
* 67 als Waermeschublade (ist der Dialoggarer; die Schublade ist 25), der Waschtrockner (24) nahm
|
|
1309
|
+
* die Programme des Trockners, und 13 die Phasen des Backofens. Geprueft war davon nie etwas -
|
|
1310
|
+
* an den eigenen Geraeten (Waschmaschine, Spuelmaschine, Backofen) faellt es nicht auf.
|
|
1311
|
+
*/
|
|
826
1312
|
const BY_TYPE = {
|
|
827
1313
|
1: { program: 'WashingMachineProgramId', phase: 'ProgramPhaseWashingMachine' }, // Waschmaschine
|
|
1314
|
+
3: { program: 'WashingMachineProgramId', phase: 'ProgramPhaseWashingMachine' }, // Waschmaschine Semi-Prof
|
|
1315
|
+
5: { program: 'WashingMachineProgramId', phase: 'ProgramPhaseWashingMachine' }, // Waschmaschine Prof
|
|
828
1316
|
2: { program: 'TumbleDryerProgramId', phase: 'ProgramPhaseTumbleDryer' }, // Trockner
|
|
829
|
-
|
|
1317
|
+
4: { program: 'TumbleDryerProgramId', phase: 'ProgramPhaseTumbleDryer' }, // Trockner Semi-Prof
|
|
1318
|
+
6: { program: 'TumbleDryerProgramId', phase: 'ProgramPhaseTumbleDryer' }, // Trockner Prof
|
|
1319
|
+
24: { program: 'WashingMachineProgramId', phase: 'ProgramPhaseWasherDryer' }, // Waschtrockner
|
|
830
1320
|
7: { program: 'DishWasherProgramId', phase: 'ProgramPhaseDishwasher' }, // Spülmaschine
|
|
1321
|
+
8: { program: 'DishWasherProgramId', phase: 'ProgramPhaseDishwasher' }, // Spülmaschine Semi-Prof
|
|
1322
|
+
9: { program: 'DishWasherProgramId', phase: 'ProgramPhaseDishwasher' }, // Spülmaschine Prof
|
|
831
1323
|
12: { program: 'OvenProgramId', phase: 'ProgramPhaseOven' }, // Backofen
|
|
832
|
-
13: { program: 'OvenProgramId', phase: '
|
|
1324
|
+
13: { program: 'OvenProgramId', phase: 'ProgramPhaseMicrowaveOvenCombo' }, // Backofen mit Mikrowelle
|
|
833
1325
|
15: { program: 'OvenProgramId', phase: 'ProgramPhaseSteamOven' }, // Dampfgarer
|
|
834
|
-
16: { program: 'OvenProgramId', phase: '
|
|
1326
|
+
16: { program: 'OvenProgramId', phase: 'ProgramPhaseMicrowave' }, // Mikrowelle
|
|
1327
|
+
31: { program: 'OvenProgramId', phase: 'ProgramPhaseSteamOvenCombi' }, // Dampfbackofen
|
|
1328
|
+
45: { program: 'SteamOvenMicroProgramId', phase: 'ProgramPhaseSteamOvenMicro' }, // Dampfgarer mit Mikrowelle
|
|
1329
|
+
67: { program: 'OvenProgramId', phase: 'ProgramPhaseOven' }, // Dialoggarer
|
|
1330
|
+
73: { program: 'OvenProgramId', phase: 'ProgramPhaseSteamOven' }, // Dampfgarer (MK2)
|
|
835
1331
|
17: { program: 'CoffeeSystemProgramId', phase: 'ProgramPhaseCoffeeSystem' }, // Kaffeevollautomat
|
|
836
|
-
|
|
1332
|
+
23: { program: 'RobotVacuumCleanerProgramId', phase: 'ProgramPhaseRobotVacuumCleaner' }, // Saugroboter
|
|
1333
|
+
25: { program: 'DishWarmerProgramId', phase: 'ProgramPhaseWarmingDrawer' }, // Wärmeschublade
|
|
837
1334
|
};
|
|
838
1335
|
|
|
839
1336
|
/**
|
package/lib/enums_de.js
CHANGED
|
@@ -458,6 +458,16 @@ const PhaseNameDe = {
|
|
|
458
458
|
// Wärmeschublade
|
|
459
459
|
door_open: 'Tür offen',
|
|
460
460
|
keeping_warm: 'Warmhalten',
|
|
461
|
+
// Backofen mit Mikrowelle, Dampfgarer mit Mikrowelle
|
|
462
|
+
heating: 'Aufheizen',
|
|
463
|
+
cooling_phase: 'Abkühlphase',
|
|
464
|
+
// Saugroboter
|
|
465
|
+
vacuum_cleaning: 'Saugt',
|
|
466
|
+
returning: 'Rückfahrt zur Station',
|
|
467
|
+
vacuum_cleaning_paused: 'Saugen pausiert',
|
|
468
|
+
going_to_target_area: 'Fährt zum Zielbereich',
|
|
469
|
+
docked: 'In der Station',
|
|
470
|
+
remote_controlled: 'Ferngesteuert',
|
|
461
471
|
};
|
|
462
472
|
|
|
463
473
|
/**
|
|
@@ -491,7 +501,7 @@ const BY_TYPE_DE = {
|
|
|
491
501
|
24: { phase: ProgramPhaseWashingMachineDe }, // Waschtrockner
|
|
492
502
|
7: { phase: ProgramPhaseDishwasherDe }, // Spülmaschine
|
|
493
503
|
12: { phase: ProgramPhaseOvenDe }, // Backofen
|
|
494
|
-
|
|
504
|
+
67: { phase: ProgramPhaseOvenDe }, // Dialoggarer (gleiche Phasentabelle wie der Backofen)
|
|
495
505
|
};
|
|
496
506
|
|
|
497
507
|
/**
|
package/lib/objects.js
CHANGED
|
@@ -80,7 +80,24 @@ function mitErsatz(text, art, v) {
|
|
|
80
80
|
function programTextDe(dt, v) {
|
|
81
81
|
const en = enums.programText(dt, v);
|
|
82
82
|
const eigen = de.programNameDe(en);
|
|
83
|
-
return eigen != null ? eigen : en;
|
|
83
|
+
return eigen != null ? eigen : lesbar(en);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Englischen Enum-Wert lesbar machen, wenn es keine deutsche Fassung gibt.
|
|
88
|
+
*
|
|
89
|
+
* Die 410 Rezeptprogramme des Dampfgarers mit Mikrowelle (seit 0.3.41) haben keine deutschen
|
|
90
|
+
* Namen; roh stuende dort "artichokes_small". "Artichokes small" ist nicht Deutsch, aber lesbar.
|
|
91
|
+
*
|
|
92
|
+
* @param {string|null} en Enum-Wert
|
|
93
|
+
* @returns {string|null} lesbarer Text
|
|
94
|
+
*/
|
|
95
|
+
function lesbar(en) {
|
|
96
|
+
if (!en) {
|
|
97
|
+
return en;
|
|
98
|
+
}
|
|
99
|
+
const t = String(en).replace(/_/g, ' ');
|
|
100
|
+
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
84
101
|
}
|
|
85
102
|
// Phase: erst numerische DE-Tabelle (Waschen/Spülen/Backofen), dann englisch-basierte DE-Map
|
|
86
103
|
// (deckt alle uebrigen Gerätetypen ab), sonst englischer Klartext.
|
|
@@ -104,7 +121,7 @@ function phaseTextDe(dt, v) {
|
|
|
104
121
|
if (uebersetzt != null) {
|
|
105
122
|
return uebersetzt;
|
|
106
123
|
}
|
|
107
|
-
return en;
|
|
124
|
+
return lesbar(en);
|
|
108
125
|
}
|
|
109
126
|
|
|
110
127
|
/**
|
|
@@ -526,8 +543,8 @@ function zustandsTexte(sub, deviceType, german) {
|
|
|
526
543
|
// die Schleuderdrehzahl auch bei Spülmaschine und Backofen (sinnlos). Key = STATE_FIELDS-Schlüssel,
|
|
527
544
|
// Wert = erlaubte deviceTypes. Nicht gelistete Felder gelten für ALLE Geräte (Status, Programm, …).
|
|
528
545
|
const FIELD_DEVICE_TYPES = {
|
|
529
|
-
SpinningSpeed: [1, 24], // Schleuderdrehzahl:
|
|
530
|
-
DryingStep: [2, 24], // Trockenstufe: Trockner, Waschtrockner
|
|
546
|
+
SpinningSpeed: [1, 3, 5, 24], // Schleuderdrehzahl: Waschmaschinen (auch Semi-Prof/Prof), Waschtrockner
|
|
547
|
+
DryingStep: [2, 4, 6, 24], // Trockenstufe: Trockner (auch Semi-Prof/Prof), Waschtrockner
|
|
531
548
|
};
|
|
532
549
|
|
|
533
550
|
/**
|
package/main.js
CHANGED
|
@@ -312,7 +312,11 @@ class MieleLocal extends utils.Adapter {
|
|
|
312
312
|
await this.discoverDevices();
|
|
313
313
|
|
|
314
314
|
if (!Object.keys(this.devices).length) {
|
|
315
|
-
this.log.warn(
|
|
315
|
+
this.log.warn(
|
|
316
|
+
'No Miele devices found (neither via mDNS nor manually configured). If the appliances are in ' +
|
|
317
|
+
'another subnet/VLAN, behind a firewall or multicast is blocked (e.g. Docker bridge network), ' +
|
|
318
|
+
"enter their IP addresses on the 'Appliances' tab.",
|
|
319
|
+
);
|
|
316
320
|
} else {
|
|
317
321
|
await this.setStateAsync('info.connection', { val: true, ack: true });
|
|
318
322
|
}
|
package/package.json
CHANGED