iobroker.miele-local 0.3.42 → 0.3.44

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 CHANGED
@@ -177,13 +177,13 @@ evaluated ones.
177
177
  **Data collection.** Records one dataset per completed programme — model, programme, all raw
178
178
  fields, and at the end the final state of every answering leaf. To turn that into a mapping the
179
179
  adapter needs a reference value: either from a cloud adapter, or entered by hand into
180
- `sammlung.eingabeEnergie` and `sammlung.eingabeWasser` after a programme. `sammlung.fortschritt`
181
- says what is still missing, `sammlung.befund` holds the result: which field fits, with which
180
+ `collection.inputEnergy` and `collection.inputWater` after a programme. `collection.progress`
181
+ says what is still missing, `collection.finding` holds the result: which field fits, with which
182
182
  divisor, and how closely.
183
183
 
184
184
  **Leaf scan.** DOP2 addresses data as `unit/attribute`, and only a handful of those addresses are
185
185
  documented anywhere. The scan works through the address space gently enough not to overwhelm the
186
- module; `sammlung.leafScanJson` collects what answered. `sammlung.leafVerlaufFein` records a
186
+ module; `collection.scanJson` collects what answered. `collection.trendLeaf` records a
187
187
  single leaf closely while a programme runs — the field whose value grows with consumption is the
188
188
  one you are looking for.
189
189
 
@@ -237,6 +237,16 @@ engineering work of the projects `MieleRESTServer` (akappner),
237
237
  ### **WORK IN PROGRESS**
238
238
  -->
239
239
 
240
+ ### 0.3.44
241
+ - (SmarthomeElektroniker) History objects are only rewritten when they actually changed - this prevents an empty (null) point in the history adapter after every adapter restart
242
+
243
+ ### 0.3.43
244
+
245
+ - (SmarthomeElektroniker) All log messages are English now; diagnostic texts in states (`finding`, `check`, `progress`, `scanState`, `trendSize`), error messages and the CSV export too (review 2026-09-27)
246
+ - (SmarthomeElektroniker) Admin UI: all texts use English i18n keys; the diagnostics tab is translated into all 11 languages
247
+ - (SmarthomeElektroniker) README: diagnostics section uses the current English state IDs
248
+ - (SmarthomeElektroniker) `@iobroker/testing` 6.2.2; `common.news` limited to 7 entries
249
+
240
250
  ### 0.3.42
241
251
 
242
252
  - (SmarthomeElektroniker) All program phases have German names now, a new test keeps it that way; status codes 144 (default) and 145 (locked) added. Translations and test idea by @meistermopper (#14)
package/README_de.md CHANGED
@@ -182,14 +182,14 @@ ausgewerteten.
182
182
  **Datensammlung.** Legt je abgeschlossenem Programm einen Datensatz an – Modell, Programm, alle
183
183
  Rohfelder und am Ende den Schlussstand jedes antwortenden Leafs. Damit daraus eine Zuordnung
184
184
  wird, braucht der Adapter einen Vergleichswert: entweder aus einem Cloud-Adapter oder nach jedem
185
- Programm von Hand in `sammlung.eingabeEnergie` und `sammlung.eingabeWasser` eingetragen. In
186
- `sammlung.fortschritt` steht, was noch fehlt; in `sammlung.befund` das Ergebnis: welches Feld
185
+ Programm von Hand in `collection.inputEnergy` und `collection.inputWater` eingetragen. In
186
+ `collection.progress` steht, was noch fehlt; in `collection.finding` das Ergebnis: welches Feld
187
187
  passt, mit welchem Teiler und wie genau.
188
188
 
189
189
  **Leaf-Suche.** DOP2 adressiert Daten als `Unit/Attribut`, und nur eine Handvoll dieser Adressen
190
190
  ist überhaupt irgendwo dokumentiert. Die Suche arbeitet den Adressraum schonend genug ab, um das
191
- Modul nicht zu überlasten; in `sammlung.leafScanJson` sammelt sich, was geantwortet hat. Mit
192
- `sammlung.leafVerlaufFein` lässt sich ein einzelnes Leaf während eines laufenden Programms
191
+ Modul nicht zu überlasten; in `collection.scanJson` sammelt sich, was geantwortet hat. Mit
192
+ `collection.trendLeaf` lässt sich ein einzelnes Leaf während eines laufenden Programms
193
193
  engmaschig mitschreiben – das Feld, dessen Wert mit dem Verbrauch mitwächst, ist das gesuchte.
194
194
 
195
195
  **CSV-Ausdruck.** Der Knopf im Diagnose-Reiter legt zwei Tabellen im Dateibereich der Instanz ab
@@ -1,95 +1,108 @@
1
1
  {
2
- "1. E-Mail und Passwort deines Miele-App-Kontos eingeben und auf „Anmeldung“ klicken.\n2. Wichtig: Nach dem Login bleibt die Seite bei einem sich drehenden Laderad stehen (oder meldet einen Fehler). Das ist völlig normal und bedeutet, dass die Anmeldung erfolgreich war!": "1. E-Mail und Passwort deines Miele-App-Kontos eingeben und auf „Anmeldung“ klicken.\n2. Wichtig: Nach dem Login bleibt die Seite bei einem sich drehenden Laderad stehen (oder meldet einen Fehler). Das ist völlig normal und bedeutet, dass die Anmeldung erfolgreich war!",
3
- "1. Im Netzwerk-Tab (F12) ganz nach unten zur letzten (meist rot markierten) Zeile scrollen. Sie beginnt mit „redirect?redirect_uri=miele...“ oder „miele://oauth2-code/...“.\n2. Rechtsklick auf diese Zeile ➔ „URL kopieren“ (bzw. „Adresse des Links kopieren“).\n3. Die kopierte Adresse unten in das Feld einfügen und auf „GroupKey ermitteln“ klicken.": "1. Im Netzwerk-Tab (F12) ganz nach unten zur letzten (meist rot markierten) Zeile scrollen. Sie beginnt mit „redirect?redirect_uri=miele...“ oder „miele://oauth2-code/...“.\n2. Rechtsklick auf diese Zeile ➔ „URL kopieren“ (bzw. „Adresse des Links kopieren“).\n3. Die kopierte Adresse unten in das Feld einfügen und auf „GroupKey ermitteln“ klicken.",
4
- "1. Oben auf „Login-Seite öffnen“ klicken (ein neuer Browser-Tab öffnet sich).\n2. Im neuen Tab F12 drücken und auf den Reiter „Netzwerk“ (Network) wechseln.\n3. Protokollierung dauerhaft aktivieren:\n • Chrome / Edge / Brave: Haken bei „Log beibehalten“ (Preserve log) setzen.\n • Firefox: Zahnrad ⚙️ ➔ „Protokolle dauerhaft anzeigen“ (Persist Logs) aktivieren.": "1. Oben auf „Login-Seite öffnen“ klicken (ein neuer Browser-Tab öffnet sich).\n2. Im neuen Tab F12 drücken und auf den Reiter „Netzwerk“ (Network) wechseln.\n3. Protokollierung dauerhaft aktivieren:\n • Chrome / Edge / Brave: Haken bei „Log beibehalten“ (Preserve log) setzen.\n • Firefox: Zahnrad ⚙️ ➔ „Protokolle dauerhaft anzeigen“ (Persist Logs) aktivieren.",
5
- "Abfrage & Werte": "Abfrage & Werte",
6
- "Abfrageintervall (Ruhe) in Sekunden": "Abfrageintervall (Ruhe) in Sekunden",
7
- "Abfrageintervall (aktiv) in Sekunden": "Abfrageintervall (aktiv) in Sekunden",
8
- "Anmeldung": "Anmeldung",
9
- "Antwortet ein manuell eingetragenes Gerät nicht mehr, wird das eigene /24-Netz einmal abgeklopft (höchstens alle 30 Minuten). Nötig, wenn die Geräte ihre IP per DHCP bekommen und mDNS nicht durchkommt – etwa im Docker-Bridge-Netz.": "Antwortet ein manuell eingetragenes Gerät nicht mehr, wird das eigene /24-Netz einmal abgeklopft (höchstens alle 30 Minuten). Nötig, wenn die Geräte ihre IP per DHCP bekommen und mDNS nicht durchkommt – etwa im Docker-Bridge-Netz.",
10
- "Asien (AS)": "Asien (AS)",
11
- "Aufbewahrung in Tagen": "Aufbewahrung in Tagen",
12
- "Bei Ausfall die neue IP im Subnetz suchen": "Bei Ausfall die neue IP im Subnetz suchen",
13
- "Cloud-Region": "Cloud-Region",
14
- "Datenpunkt-Namen auf Deutsch": "Datenpunkt-Namen auf Deutsch",
15
- "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.": "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.",
16
- "Der vom Gerät gemeldete Verbrauch ist eine Erwartung, keine Messung. Wer eine Messsteckdose davor hat, trägt hier deren Zähler-Datenpunkt ein.": "Der vom Gerät gemeldete Verbrauch ist eine Erwartung, keine Messung. Wer eine Messsteckdose davor hat, trägt hier deren Zähler-Datenpunkt ein.",
17
- "Deutschland": "Deutschland",
18
- "Dänemark": "Dänemark",
19
- "EcoFeedback (Energie/Wasser) abrufen": "EcoFeedback (Energie/Wasser) abrufen",
20
- "EcoFeedback-Intervall in Sekunden": "EcoFeedback-Intervall in Sekunden",
21
- "Eingehender Push-Port (TCP)": "Eingehender Push-Port (TCP)",
22
- "Einträge im Ringpuffer": "Einträge im Ringpuffer",
23
- "Energie, Wasser und Dauer je Programm mit dem Zeitpunkt des Programmendes – damit lassen sich Diagramme über beliebige Zeiträume bauen.": "Energie, Wasser und Dauer je Programm mit dem Zeitpunkt des Programmendes – damit lassen sich Diagramme über beliebige Zeiträume bauen.",
24
- "Energiezähler je Gerät (optional)": "Energiezähler je Gerät (optional)",
25
- "Erweitert": "Erweitert",
26
- "Europa (EU)": "Europa (EU)",
27
- "Europa (EU2)": "Europa (EU2)",
28
- "Feldindex Energie": "Feldindex Energie",
29
- "Feldindex Wasser": "Feldindex Wasser",
30
- "Findet Geräte per mDNS im selben Netz. Im Docker-Bridge-Netz kommt Multicast nicht durch – dann die IP-Adressen unten von Hand eintragen.": "Findet Geräte per mDNS im selben Netz. Im Docker-Bridge-Netz kommt Multicast nicht durch – dann die IP-Adressen unten von Hand eintragen.",
31
- "Frankreich": "Frankreich",
32
- "Für Geräte, welche die Suche nicht findet, und immer dann, wenn kein Multicast durchkommt. Eine Zeile je Gerät.": "Für Geräte, welche die Suche nicht findet, und immer dann, wenn kein Multicast durchkommt. Eine Zeile je Gerät.",
33
- "Geräte": "Geräte",
34
- "Geräte automatisch per mDNS finden": "Geräte automatisch per mDNS finden",
35
- "Geräte melden Änderungen sofort, statt abgefragt zu werden. Nicht jedes Modul kann das: ältere XKM nehmen die Anmeldung an, senden aber nichts.": "Geräte melden Änderungen sofort, statt abgefragt zu werden. Nicht jedes Modul kann das: ältere XKM nehmen die Anmeldung an, senden aber nichts.",
36
- "GroupID (16 Hex-Zeichen)": "GroupID (16 Hex-Zeichen)",
37
- "GroupKey (128 Hex-Zeichen)": "GroupKey (128 Hex-Zeichen)",
38
- "GroupKey ermitteln": "GroupKey ermitteln",
39
- "Großbritannien": "Großbritannien",
40
- "Hintergrund-Suche Intervall in Minuten": "Hintergrund-Suche Intervall in Minuten",
41
- "History-Instanz": "History-Instanz",
42
- "IP-Adresse": "IP-Adresse",
43
- "Instanz des Cloud-Adapters, aus der die Vergleichswerte kommen, zum Beispiel mielecloudservice.0.": "Instanz des Cloud-Adapters, aus der die Vergleichswerte kommen, zum Beispiel mielecloudservice.0.",
44
- "Italien": "Italien",
45
- "Jetzt suchen": "Jetzt suchen",
46
- "Land": "Land",
47
- "Legt beschreibbare Datenpunkte an. Befehle wirken nur, wenn am Gerät MobileStart freigegeben ist; manche Firmwares lehnen sie grundsätzlich ab.": "Legt beschreibbare Datenpunkte an. Befehle wirken nur, wenn am Gerät MobileStart freigegeben ist; manche Firmwares lehnen sie grundsätzlich ab.",
48
- "Legt die Datenpunkt-Namen zweisprachig an; der Admin zeigt sie dann auf Deutsch. Wirkt nach dem Speichern und Neustart.": "Legt die Datenpunkt-Namen zweisprachig an; der Admin zeigt sie dann auf Deutsch. Wirkt nach dem Speichern und Neustart.",
49
- "Legt die geräteinternen Werte als Datenpunkte an – Heizrelais, Wasserstand, Drehzahl und mehr. Die Feldnamen stammen aus öffentlichen Projekten und sind nicht geprüft.": "Legt die geräteinternen Werte als Datenpunkte an – Heizrelais, Wasserstand, Drehzahl und mehr. Die Feldnamen stammen aus öffentlichen Projekten und sind nicht geprüft.",
50
- "Legt zwei Tabellen ab und öffnet die erste: eine Zeile je Programm mit allen Rohfeldern, dazu eine Auswertung mit einer Zeile je Feld. Achtung beim Weitergeben – die Tabelle enthält die Zeitpunkte der Programme.": "Legt zwei Tabellen ab und öffnet die erste: eine Zeile je Programm mit allen Rohfeldern, dazu eine Auswertung mit einer Zeile je Feld. Achtung beim Weitergeben – die Tabelle enthält die Zeitpunkte der Programme.",
51
- "Liest Energie und Wasser per DOP2. Nur Geräte, die das liefern – bisher Waschmaschinen.": "Liest Energie und Wasser per DOP2. Nur Geräte, die das liefern – bisher Waschmaschinen.",
52
- "Liest Rest- und Laufzeit sekundengenau per DOP2 statt nur in Minuten.": "Liest Rest- und Laufzeit sekundengenau per DOP2 statt nur in Minuten.",
53
- "Login-Seite öffnen": "Login-Seite öffnen",
54
- "Manuelle Geräte-IPs (optional, zusätzlich)": "Manuelle Geräte-IPs (optional, zusätzlich)",
55
- "Muss aus dem Gerätenetz eingehend erreichbar sein. Im Docker-Container zuverlässig nur mit network_mode: host.": "Muss aus dem Gerätenetz eingehend erreichbar sein. Im Docker-Container zuverlässig nur mit network_mode: host.",
56
- "Nach erfolgreicher Ermittlung stehen GroupID und (verschlüsselt gespeicherter) GroupKey unten im Tab „Erweitert\". Speichern nicht vergessen.": "Nach erfolgreicher Ermittlung stehen GroupID und (verschlüsselt gespeicherter) GroupKey unten im Tab „Erweitert\". Speichern nicht vergessen.",
57
- "Niederlande": "Niederlande",
58
- "Nummer des Feldes im Eco-Leaf, das die Energie trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.": "Nummer des Feldes im Eco-Leaf, das die Energie trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.",
59
- "Nummer des Feldes im Eco-Leaf, das die Wassermenge trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.": "Nummer des Feldes im Eco-Leaf, das die Wassermenge trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.",
60
- "Polen": "Polen",
61
- "Programme mitschreiben": "Programme mitschreiben",
62
- "Push & Ports": "Push & Ports",
63
- "Rohfelder mitschreiben (nur zur Fehlersuche)": "Rohfelder mitschreiben (nur zur Fehlersuche)",
64
- "Rohwert ÷ Teilungsfaktor = Liter": "Rohwert ÷ Teilungsfaktor = Liter",
65
- "Schreibt alle Felder des Eco-Leaf nach eco.felderJson statt nur der zwei ausgewerteten. Hilft, wenn Energie oder Wasser bei Ihrem Modell falsch ankommen.": "Schreibt alle Felder des Eco-Leaf nach eco.felderJson statt nur der zwei ausgewerteten. Hilft, wenn Energie oder Wasser bei Ihrem Modell falsch ankommen.",
66
- "Schreibt je Programm einen Datensatz mit Modell, Programm und allen Rohfeldern. Aus Cloud-Werten oder eigenen Eingaben ermittelt der Adapter daraus die Feldzuordnung.": "Schreibt je Programm einen Datensatz mit Modell, Programm und allen Rohfeldern. Aus Cloud-Werten oder eigenen Eingaben ermittelt der Adapter daraus die Feldzuordnung.",
67
- "Schreibt jedes abgeschlossene Programm mit. Die Geräte heben nichts auf – der Verlauf beginnt mit dem Einschalten und lässt sich nicht rückwirkend füllen.": "Schreibt jedes abgeschlossene Programm mit. Die Geräte heben nichts auf – der Verlauf beginnt mit dem Einschalten und lässt sich nicht rückwirkend füllen.",
68
- "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.": "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.",
69
- "Schritt 1: Entwicklertools im Browser vorbereiten": "Schritt 1: Entwicklertools im Browser vorbereiten",
70
- "Schritt 2: Bei Miele anmelden": "Schritt 2: Bei Miele anmelden",
71
- "Schritt 3: Adresse kopieren & GroupKey ermitteln": "Schritt 3: Adresse kopieren & GroupKey ermitteln",
72
- "Schweden": "Schweden",
73
- "Schweiz": "Schweiz",
74
- "Sekunden-Abfrageintervall in Sekunden": "Sekunden-Abfrageintervall in Sekunden",
75
- "Sekundengenaue Rest-/Laufzeit abrufen (DOP2)": "Sekundengenaue Rest-/Laufzeit abrufen (DOP2)",
76
- "Seriennummer des Geräts": "Seriennummer des Geräts",
77
- "Spanien": "Spanien",
78
- "Steuerung": "Steuerung",
79
- "Steuerung (Schreibbefehle) aktivieren": "Steuerung (Schreibbefehle) aktivieren",
80
- "SuperVision-Push aktivieren (experimentell, Echtzeit)": "SuperVision-Push aktivieren (experimentell, Echtzeit)",
81
- "Teilungsfaktor Wasserfeld": "Teilungsfaktor Wasserfeld",
82
- "Tschechien": "Tschechien",
2
+ "1. Click 'Open login page' above (a new browser tab opens).\n2. In the new tab, press F12 and switch to the 'Network' tab.\n3. Enable persistent logging:\n • Chrome / Edge / Brave: Check 'Preserve log'.\n • Firefox: Click gear ⚙️ ➔ check 'Persist Logs'.": "1. Oben auf „Login-Seite öffnen“ klicken (ein neuer Browser-Tab öffnet sich).\n2. Im neuen Tab F12 drücken und auf den Reiter „Netzwerk“ (Network) wechseln.\n3. Protokollierung dauerhaft aktivieren:\n • Chrome / Edge / Brave: Haken bei „Log beibehalten“ (Preserve log) setzen.\n • Firefox: Zahnrad ⚙️ ➔ „Protokolle dauerhaft anzeigen“ (Persist Logs) aktivieren.",
3
+ "1. Enter your Miele app account email and password and click 'Sign in'.\n2. Note: After login, the page will hang on a spinning loading wheel (or show an error). This is completely normal and indicates success!": "1. E-Mail und Passwort deines Miele-App-Kontos eingeben und auf „Anmeldung“ klicken.\n2. Wichtig: Nach dem Login bleibt die Seite bei einem sich drehenden Laderad stehen (oder meldet einen Fehler). Das ist völlig normal und bedeutet, dass die Anmeldung erfolgreich war!",
4
+ "1. In the Network tab (F12), scroll to the very last (often red) request starting with 'redirect?redirect_uri=miele...' or 'miele://oauth2-code/...'.\n2. Right-click that entry ➔ 'Copy URL' / 'Copy link address'.\n3. Paste the URL into the field below and click 'Fetch GroupKey'.": "1. Im Netzwerk-Tab (F12) ganz nach unten zur letzten (meist rot markierten) Zeile scrollen. Sie beginnt mit „redirect?redirect_uri=miele...“ oder „miele://oauth2-code/...“.\n2. Rechtsklick auf diese Zeile ➔ „URL kopieren“ (bzw. „Adresse des Links kopieren“).\n3. Die kopierte Adresse unten in das Feld einfügen und auf „GroupKey ermitteln“ klicken.",
5
+ "Advanced": "Erweitert",
6
+ "Also write to the history adapter": "Zusätzlich in den History-Adapter schreiben",
7
+ "Appliance serial number": "Seriennummer des Geräts",
8
+ "Appliances": "Geräte",
9
+ "Appliances report changes immediately instead of being polled. Not every module can do this: older XKM accept the subscription but send nothing.": "Geräte melden Änderungen sofort, statt abgefragt zu werden. Nicht jedes Modul kann das: ältere XKM nehmen die Anmeldung an, senden aber nichts.",
10
+ "Asia (AS)": "Asien (AS)",
11
+ "Austria": "Österreich",
12
+ "Background discovery interval in minutes": "Hintergrund-Suche Intervall in Minuten",
13
+ "Cloud adapter instance": "Instanz des Cloud-Adapters",
14
+ "Cloud region": "Cloud-Region",
15
+ "Collect datasets": "Datensätze sammeln",
16
+ "Control": "Steuerung",
17
+ "Country": "Land",
18
+ "Create and open CSV": "CSV erzeugen und öffnen",
19
+ "Create what the device delivers": "Anlegen, was das Gerät liefert",
20
+ "Creates the appliance's internal values as states – heating relay, water level, drum speed and more. The field names come from public projects and are unverified.": "Legt die geräteinternen Werte als Datenpunkte an – Heizrelais, Wasserstand, Drehzahl und mehr. Die Feldnamen stammen aus öffentlichen Projekten und sind nicht geprüft.",
21
+ "Creates the state names bilingually; the admin then shows them in German. Takes effect after saving and restarting.": "Legt die Datenpunkt-Namen zweisprachig an; der Admin zeigt sie dann auf Deutsch. Wirkt nach dem Speichern und Neustart.",
22
+ "Creates writable states. Commands only take effect while MobileStart is enabled on the appliance; some firmwares reject them outright.": "Legt beschreibbare Datenpunkte an. Befehle wirken nur, wenn am Gerät MobileStart freigegeben ist; manche Firmwares lehnen sie grundsätzlich ab.",
23
+ "Czechia": "Tschechien",
24
+ "Data collection for other models": "Datensammlung für andere Modelle",
25
+ "Denmark": "Dänemark",
26
+ "Diagnostics": "Diagnose",
27
+ "EcoFeedback interval in seconds": "EcoFeedback-Intervall in Sekunden",
28
+ "Enable SuperVision push (experimental, real-time)": "SuperVision-Push aktivieren (experimentell, Echtzeit)",
29
+ "Enable control (write commands)": "Steuerung (Schreibbefehle) aktivieren",
30
+ "Energy field index": "Feldindex Energie",
31
+ "Energy meter per appliance (optional)": "Energiezähler je Gerät (optional)",
32
+ "Energy, water and duration per cycle, timestamped at the end of the cycle – so charts can cover any period.": "Energie, Wasser und Dauer je Programm mit dem Zeitpunkt des Programmendes – damit lassen sich Diagramme über beliebige Zeiträume bauen.",
33
+ "Entries in the ring buffer": "Einträge im Ringpuffer",
34
+ "Europe (EU)": "Europa (EU)",
35
+ "Europe (EU2)": "Europa (EU2)",
36
+ "Export collected data": "Gesammelte Daten ausgeben",
37
+ "Fetch EcoFeedback (energy/water)": "EcoFeedback (Energie/Wasser) abrufen",
38
+ "Fetch GroupKey": "GroupKey ermitteln",
39
+ "Fetch second-precise remaining/elapsed time (DOP2)": "Sekundengenaue Rest-/Laufzeit abrufen (DOP2)",
40
+ "Find devices automatically via mDNS": "Geräte automatisch per mDNS finden",
41
+ "Finds appliances via mDNS on the same network. Multicast does not pass through a Docker bridge network – then enter the IP addresses below by hand.": "Findet Geräte per mDNS im selben Netz. Im Docker-Bridge-Netz kommt Multicast nicht durch – dann die IP-Adressen unten von Hand eintragen.",
42
+ "For appliances the scan does not find, and whenever multicast does not get through. One row per appliance.": "Für Geräte, welche die Suche nicht findet, und immer dann, wenn kein Multicast durchkommt. Eine Zeile je Gerät.",
43
+ "France": "Frankreich",
44
+ "Germany": "Deutschland",
45
+ "GroupID (16 hex chars)": "GroupID (16 Hex-Zeichen)",
46
+ "GroupKey (128 hex chars)": "GroupKey (128 Hex-Zeichen)",
47
+ "History": "Verlauf",
48
+ "History instance": "History-Instanz",
49
+ "How many recent cycles are kept in cyclesJson. Meant for quick display; long-term data comes from the history adapter.": "Wie viele der letzten Programme in cyclesJson stehen. Für die Schnellanzeige gedacht; Langzeitdaten kommen aus dem History-Adapter.",
50
+ "How often the adapter polls while a programme is running.": "Wie oft der Adapter während eines laufenden Programms fragt.",
51
+ "How often the adapter polls while no programme is running.": "Wie oft der Adapter fragt, solange kein Programm läuft.",
52
+ "IP address": "IP-Adresse",
53
+ "If a manually entered device stops answering, the adapter probes its own /24 network once (at most every 30 minutes). Needed when the appliances get their IP via DHCP and mDNS does not get through - for instance inside a Docker bridge network.": "Antwortet ein manuell eingetragenes Gerät nicht mehr, wird das eigene /24-Netz einmal abgeklopft (höchstens alle 30 Minuten). Nötig, wenn die Geräte ihre IP per DHCP bekommen und mDNS nicht durchkommt – etwa im Docker-Bridge-Netz.",
54
+ "Inbound push port (TCP)": "Eingehender Push-Port (TCP)",
55
+ "Include cloud values for comparison": "Cloud-Werte als Vergleich mitschreiben",
56
+ "Instance of the cloud adapter the reference values come from, for example mielecloudservice.0.": "Instanz des Cloud-Adapters, aus der die Vergleichswerte kommen, zum Beispiel mielecloudservice.0.",
57
+ "Italy": "Italien",
58
+ "Login": "Anmeldung",
59
+ "Manual device IPs (optional, additional)": "Manuelle Geräte-IPs (optional, zusätzlich)",
60
+ "Meter datapoint (Wh, monotonically increasing)": "Zähler-Datenpunkt (Wh, laufend steigend)",
61
+ "Must be reachable inbound from the appliance network. In a Docker container this reliably works only with network_mode: host.": "Muss aus dem Gerätenetz eingehend erreichbar sein. Im Docker-Container zuverlässig nur mit network_mode: host.",
62
+ "Netherlands": "Niederlande",
63
+ "Normally set through the login. Enter by hand only if GroupID and GroupKey are already known.": "Wird normalerweise über die Anmeldung gesetzt. Von Hand nur, wenn GroupID und GroupKey bereits bekannt sind.",
64
+ "Number of the field in the eco leaf that carries the energy. The default fits the WCR860; on other models determine it via the data collection.": "Nummer des Feldes im Eco-Leaf, das die Energie trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.",
65
+ "Number of the field in the eco leaf that carries the water volume. The default fits the WCR860; on other models determine it via the data collection.": "Nummer des Feldes im Eco-Leaf, das die Wassermenge trägt. Die Vorgabe passt zur WCR860; bei anderen Modellen über die Datensammlung ermitteln.",
66
+ "Older entries drop out of the ring buffer. 730 days is two years.": "Ältere Einträge fallen aus dem Ringpuffer. 730 Tage sind zwei Jahre.",
67
+ "Once retrieved, GroupID and encrypted GroupKey appear on the 'Advanced' tab. Don't forget to save.": "Nach erfolgreicher Ermittlung stehen GroupID und (verschlüsselt gespeicherter) GroupKey unten im Tab „Erweitert\". Speichern nicht vergessen.",
68
+ "Only for devices whose search has never run. A device that is off most of the time would otherwise never be searched. The search only reads, and stops as soon as the device is off again.": "Nur bei Geräten, deren Suche noch nie gelaufen ist. Ein Gerät, das meistens aus ist, wird sonst nie durchsucht. Die Suche liest ausschließlich und hält an, sobald das Gerät wieder aus ist.",
69
+ "Open login page": "Login-Seite öffnen",
70
+ "Poland": "Polen",
71
+ "Poll interval (active) in seconds": "Abfrageintervall (aktiv) in Sekunden",
72
+ "Poll interval (idle) in seconds": "Abfrageintervall (Ruhe) in Sekunden",
73
+ "Polling & values": "Abfrage & Werte",
74
+ "Push & ports": "Push & Ports",
75
+ "Raw value ÷ divisor = litres": "Rohwert ÷ Teilungsfaktor = Liter",
76
+ "Reads energy and water via DOP2. Only appliances that provide it – so far washing machines.": "Liest Energie und Wasser per DOP2. Nur Geräte, die das liefern – bisher Waschmaschinen.",
77
+ "Reads remaining and elapsed time to the second via DOP2 instead of only in minutes.": "Liest Rest- und Laufzeit sekundengenau per DOP2 statt nur in Minuten.",
78
+ "Record cycles": "Programme mitschreiben",
79
+ "Record raw fields (diagnostics only)": "Rohfelder mitschreiben (nur zur Fehlersuche)",
80
+ "Records every completed programme. The appliances keep nothing – the history starts when you switch this on and cannot be filled retroactively.": "Schreibt jedes abgeschlossene Programm mit. Die Geräte heben nichts auf – der Verlauf beginnt mit dem Einschalten und lässt sich nicht rückwirkend füllen.",
81
+ "Records one dataset per programme with model, programme and all raw fields. From cloud values or your own entries the adapter derives the field mapping.": "Schreibt je Programm einen Datensatz mit Modell, Programm und allen Rohfeldern. Aus Cloud-Werten oder eigenen Eingaben ermittelt der Adapter daraus die Feldzuordnung.",
82
+ "Requires a running instance of the mielecloudservice adapter.": "Braucht eine laufende Instanz des Adapters mielecloudservice.",
83
+ "Retention in days": "Aufbewahrung in Tagen",
84
+ "Search now": "Jetzt suchen",
85
+ "Search the subnet for the new IP if a device drops out": "Bei Ausfall die neue IP im Subnetz suchen",
86
+ "Second polling interval in seconds": "Sekunden-Abfrageintervall in Sekunden",
87
+ "Spain": "Spanien",
88
+ "Start the leaf search when a device is switched on": "Leaf-Suche selbst starten, wenn ein Gerät eingeschaltet wird",
89
+ "State names in German": "Datenpunkt-Namen auf Deutsch",
90
+ "Step 1: Click \"Open login page\" and sign in with your Miele account in the browser. At the end the browser tries to open an address of the form \"miele://oauth2-code/?code=…&state=…\". This complete address (the \"code\") is needed in step 2.": "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.",
91
+ "Step 1: Prepare browser developer tools": "Schritt 1: Entwicklertools im Browser vorbereiten",
92
+ "Step 2: Sign in with Miele": "Schritt 2: Bei Miele anmelden",
93
+ "Step 3: Copy redirect address & fetch GroupKey": "Schritt 3: Adresse kopieren & GroupKey ermitteln",
94
+ "Stored encrypted and never shown in clear text.": "Wird verschlüsselt gespeichert und nie im Klartext angezeigt.",
95
+ "Sweden": "Schweden",
96
+ "Switzerland": "Schweiz",
97
+ "The adapter retrieves local credentials (GroupID/GroupKey) once by signing in with your Miele account. The Miele app continues to work as before. No credentials are transmitted to third parties.": "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.",
98
+ "The consumption reported by the appliance is an estimate, not a measurement. If you have a metering plug in front of it, enter its meter state here.": "Der vom Gerät gemeldete Verbrauch ist eine Erwartung, keine Messung. Wer eine Messsteckdose davor hat, trägt hier deren Zähler-Datenpunkt ein.",
99
+ "These settings serve troubleshooting and field mapping. They are not needed for daily operation and are off by default. Collected data stays in this instance.": "Hier stehen die Einstellungen, die der Fehlersuche und der Feldzuordnung dienen. Für den täglichen Betrieb werden sie nicht gebraucht; alles hier ist ab Werk aus. Die gesammelten Daten bleiben in dieser Instanz.",
83
100
  "USA": "USA",
84
- "Verlauf": "Verlauf",
85
- "Wie oft der Adapter fragt, solange kein Programm läuft.": "Wie oft der Adapter fragt, solange kein Programm läuft.",
86
- "Wie oft der Adapter während eines laufenden Programms fragt.": "Wie oft der Adapter während eines laufenden Programms fragt.",
87
- "Wie viele der letzten Programme in cyclesJson stehen. Für die Schnellanzeige gedacht; Langzeitdaten kommen aus dem History-Adapter.": "Wie viele der letzten Programme in cyclesJson stehen. Für die Schnellanzeige gedacht; Langzeitdaten kommen aus dem History-Adapter.",
88
- "Wird normalerweise über die Anmeldung gesetzt. Von Hand nur, wenn GroupID und GroupKey bereits bekannt sind.": "Wird normalerweise über die Anmeldung gesetzt. Von Hand nur, wenn GroupID und GroupKey bereits bekannt sind.",
89
- "Wird verschlüsselt gespeichert und nie im Klartext angezeigt.": "Wird verschlüsselt gespeichert und nie im Klartext angezeigt.",
90
- "Zusätzlich in den History-Adapter schreiben": "Zusätzlich in den History-Adapter schreiben",
91
- "Zähler-Datenpunkt (Wh, laufend steigend)": "Zähler-Datenpunkt (Wh, laufend steigend)",
92
- "miele://-Redirect-URL": "miele://-Redirect-URL",
93
- "Ältere Einträge fallen aus dem Ringpuffer. 730 Tage sind zwei Jahre.": "Ältere Einträge fallen aus dem Ringpuffer. 730 Tage sind zwei Jahre.",
94
- "Österreich": "Österreich"
101
+ "United Kingdom": "Großbritannien",
102
+ "Water field divisor": "Teilungsfaktor Wasserfeld",
103
+ "Water field index": "Feldindex Wasser",
104
+ "Without cloud: after each programme, enter energy and water from the Miele app into \"collection.inputEnergy\" and \"collection.inputWater\" - they are attached to the most recent dataset. \"collection.progress\" shows what is still missing.": "Ohne Cloud: Nach jedem Programm Energie und Wasser aus der Miele-App in die Punkte \"collection.inputEnergy\" und \"collection.inputWater\" eintragen - sie gehören dann zum zuletzt gesammelten Datensatz. Wie viele noch fehlen, steht in \"collection.progress\".",
105
+ "Writes all fields of the eco leaf to eco.felderJson instead of only the two evaluated ones. Helps when energy or water arrive wrong on your model.": "Schreibt alle Felder des Eco-Leaf nach eco.felderJson statt nur der zwei ausgewerteten. Hilft, wenn Energie oder Wasser bei Ihrem Modell falsch ankommen.",
106
+ "Writes two tables and opens the first: one row per programme with all raw fields, plus an analysis with one row per field. Take care when sharing – the table contains the programme timestamps.": "Legt zwei Tabellen ab und öffnet die erste: eine Zeile je Programm mit allen Rohfeldern, dazu eine Auswertung mit einer Zeile je Feld. Achtung beim Weitergeben – die Tabelle enthält die Zeitpunkte der Programme.",
107
+ "miele:// redirect URL": "miele://-Redirect-URL"
95
108
  }