Grizzelbee / ioBroker.mielecloudservice

Integrates your MieleCloudService (aka Miele@Home) Devices to ioBroker
MIT License
19 stars 8 forks source link

Miele API-Antwortsprache immer Englisch #376

Closed Jailobeam closed 1 year ago

Jailobeam commented 1 year ago

Die Miele API-Antwortspracheist immer auf Englisch

der fehler kommt nun auch seit ein paar tagen Sorry. No programs to add for device: Tumble dryer (000140879800). Reason: Device 000140879800 is not in the correct state.

Gibt es da eine Lösung oder ist das seitens Miele ab jetzt alles auf Englisch ?

Wäre echt Doof ganze Visu deswegen umzubauen weil die Werte nicht einfach so eingebunden werden können sondern erst übersetzt werden müssten.

reihd commented 1 year ago

genau das gleiche Problem habe ich auch. Ich brauchte erstmal ein paar Minuten bis ich das überhaupt gesehen habe. Ich habe jetzt die Antwortsprache auf Englisch eingestellt, damit ich in Zukunft keine Probleme dieser Arte habe und die VIS habe ich mittels Bindings eingedeutscht. Das Funktioniert soweit und ich bin da nicht von der Sprache der API abhängig, denn Englisch wird wohl immer gehen hoffe ich.

Grizzelbee commented 1 year ago

Sieht für mich wie ein Problem in der API aus. Während der Entwicklung der v6.5.4 habe ich keine englischen Einträge gehabt - alles sauber in Deutsch. Das Problem gab es seitens Miele übrigens schon einmal: #281

Ich schreibe denen mal eine Mail und hoffe auf baldige Lösung.

Grizzelbee commented 1 year ago

Update: Miele sagt das der Lokalisierungsdienst funktioniert - aber ein downgrade auf 6.4.0 (die definitiv funktionierte) brachte keine Änderung. Die API antwortet nach wie vor in englisch.

Habe Miele informiert und warte auf die nächste Antwort.

Ich habe auch schon mit dem Gedanken gespielt die Lokalisierung zu deaktivieren einfach alle DPs in englisch hinzunehmen - aber die Programmphasen etc. sind dann ja auch in englisch - Drying statt Trocknen, etc. Das finde ich doof.

reihd commented 1 year ago

ja, deswegen habe ich die einfach mit Bindings auf Deutsch zum anzeigen gebracht, dann umgehe ich das Problem, aber du hast recht, schön ist das nicht

lansester commented 1 year ago

Gleiches Problem auch hier. Hab noch entdeckt, dass wenn ich den Adapter starte sehe ich im Log folgende Meldungen: "No programs have been returned by the API" Könnte das Problem mit der Übersetzung damit zusammenhängen, sprich Miele liefert keine deutschen Bezeichnungen mehr mit?

image

Grizzelbee commented 1 year ago

Miele hat soeben den Bug auf seiner Seite bestätigt:

Hallo Hanjo, wir haben tatsächlich ein Problem mit dem Lokalisierungsservice. Der Bug ist eingestellt und wird kurzfristig bearbeitet. Kind regards Miele 3rd party API Team

Fix ist auf dem Weg ...

UweLoyal commented 1 year ago

Miele hatte vor kurzem eine Downtime für Ihre Server angekündigt wegen Wartung/Updates. Könnte das auch damit zu tun haben?

Übrigens haben sich einige Objekte (nicht alle) geändert, so z.B.: Status --> status Programmbezeichnung --> Program name Programmphase--> Program phase ... dto. der raw ... etc.

LG Uwe Loyal

reihd commented 1 year ago

ja logisch, die Objekte sind einfach nur Englisch und nicht mehr Deutsch, dass ist ja das Problem wodurch dieses Ticket entstanden ist. Aus diesem Grund nutze ich jetzt Englisch und deutsche es ein, vielleicht läuft es dann zuverlässig, aber der Adapter kann eben nichts dafür.

UweLoyal commented 1 year ago

Ein Teil der Objekte war zuvor schon in englisch. Ich vermute mal, Miele will die Feld-Namen alle einheitlich in englisch haben.

UweLoyal commented 1 year ago

image

https://api.mcs3.miele.com/v1/devices/000XXXXXXXXXX/state?language=de

{ "ProgramID": { "value_raw": 1, "value_localized": "Baumwolle", "key_localized": "Programmbezeichnung" }, "status": { "value_raw": 5, "value_localized": "In Betrieb", "key_localized": "Status" }, "programType": { "value_raw": 1, "value_localized": "Eigenes Programm", "key_localized": "Programmart" }, "programPhase": { "value_raw": 261, "value_localized": "Spülen", "key_localized": "Programmphase" }, "remainingTime": [ 0, 33 ], "startTime": [ 0, 0 ], "targetTemperature": [ { "value_raw": 6000, "value_localized": 60, "unit": "Celsius" }, { "value_raw": -32768, "value_localized": null, "unit": "Celsius" }, { "value_raw": -32768, "value_localized": null, "unit": "Celsius" } ], "coreTargetTemperature": [ { "value_raw": -32768, "value_localized": null, "unit": "Celsius" } ], "temperature": [ { "value_raw": -32768, "value_localized": null, "unit": "Celsius" }, { "value_raw": -32768, "value_localized": null, "unit": "Celsius" }, { "value_raw": -32768, "value_localized": null, "unit": "Celsius" } ], "coreTemperature": [ { "value_raw": -32768, "value_localized": null, "unit": "Celsius" } ], "signalInfo": false, "signalFailure": false, "signalDoor": false, "remoteEnable": { "fullRemoteControl": true, "smartGrid": false, "mobileStart": false }, "ambientLight": null, "light": null, "elapsedTime": [ 2, 19 ], "spinningSpeed": { "unit": "U/min", "value_raw": 1000, "value_localized": "1000", "key_localized": "Schleuderdrehzahl" }, "dryingStep": { "value_raw": null, "value_localized": "", "key_localized": "Trockenstufe" }, "ventilationStep": { "value_raw": null, "value_localized": "", "key_localized": "Lüfterstufe" }, "plateStep": [], "ecoFeedback": { "currentWaterConsumption": { "unit": "l", "value": 28 }, "currentEnergyConsumption": { "unit": "kWh", "value": 0.5 }, "waterForecast": 0.3, "energyForecast": 0.5 }, "batteryLevel": null }

Grizzelbee commented 1 year ago

@UweLoyal

Ein Teil der Objekte war zuvor schon in englisch. Ich vermute mal, Miele will die Feld-Namen alle einheitlich in englisch haben.

Nein - das hat damit nichts zu tun. Es gibt einige Datenpunkte, die der Adapter selber erzeugt - will sagen: Die kommen nicht von Miele und die gibt es in der API so nicht. Alles was von Miele kommt, wird lokalisiert. Ob das eine gute Idee ist - darüber kann man unterschiedlicher Meinung sein. es wird also auch in Zukunft eine Mischung aus der eingestellten API Sprache und Englisch sein.

Denen z. B. habe ich englische Namen gegeben um die nicht in die diversen ioBroker Sprachen übersetzen zu müssen. image

UweLoyal commented 1 year ago

Das bedeutet für mein Verständnis, er hat früher alles in die alten Objekte geschrieben (blauer Rahmen) und jetzt in die neuen Objekte (roter Rahmen) und das hat Dein Script automatsch angelegt. Wie wird denn das festgestellt, dass es neue Objekte gibt, die angelegt werden müssen? Ich sehe da bei den Daten von Miele kein Indikator, lediglich der Wert ändert sich aufgrund der eingestellten Sprache. Es sei denn, Miele hat hier die Feldnamen geändert, was ich im nachhinein nicht feststellen kann.

Hier Auszug Miele:

in Englisch: "state": { "ProgramID": { "value_raw": 0, "value_localized": "", "key_localized": "Program name" },

in Deutsch: "state": { "ProgramID": { "value_raw": 0, "value_localized": "", "key_localized": "Programmbezeichnung"

image

UweLoyal commented 1 year ago

Nachtrag: Kann es sein, dass Du den Parameter language=de vergessen hast? Ohne language=XX kommt standardmäßig englisch.

Ohne language=XX: image Mit language=de: image Mit language=en: image

Grizzelbee commented 1 year ago

@UweLoyal

Das bedeutet für mein Verständnis, er hat früher alles in die alten Objekte geschrieben (blauer Rahmen) und jetzt in die neuen Objekte (roter Rahmen) und das hat Dein Script automatsch angelegt.

Nein. Du interpretierst Dinge in meine Aussagen, die ich so nie gesagt habe - der Adapter hat natürlich alle Datenpunkte in deinem Screenshot angelegt; blau UND rot. Also noch einmal ganz deutlich: Die IDs für die Datenpunkte nimmt der Adapter aus dem key_localized der Antwort der Miele-API. Die Sprache dafür wird in den Einstellungen des Adapters eingestellt. Und dann gibt es ein paar Datenpunkte, die der Adapter selber errechnet (Connected, remainingTime, ... -> siehe mein Screenshot) die werden unabhängig von der eingestellten Sprache IMMER in englisch angelegt, weil mir die Lokalisierung zu aufwändig war und die Sprache ggf. ebenfalls von der eingestellten Sprache abweicht - die API kann (wenn ich das richtig im Gedächtnis habe) mehr Sprachen als der Broker. Also -> einheitlich für alle Sprachen in englisch. Dieser Mix ist also bewusst hingenommen.

Wie wird denn das festgestellt, dass es neue Objekte gibt, die angelegt werden müssen?

Wenn die ObjectID im Broker nicht existiert - wird sie neu angelegt.

Ich sehe da bei den Daten von Miele kein Indikator, lediglich der Wert ändert sich aufgrund der eingestellten Sprache.

Nicht nur der Wert (value_localized) ändert sich, sondern auch die Object-ID (key_localized).

Es sei denn, Miele hat hier die Feldnamen geändert, was ich im nachhinein nicht feststellen kann.

Im Prinzip passiert genau das.

Kann es sein, dass Du den Parameter language=de vergessen hast?

Nein - habe ich nicht. Zumal dieser Parameter für die meisten Nutzer des Adapters irrelevant ist. Die Lokalisierung passiert bei Server-Send-Events aufgrund eines Parameters, der beim Login mitgegeben wird - der Adapter macht dann ja praktisch keine eigenen requests mehr. Das ist genau der Umstand auf den ich Miele hingewiesen habe und aufgrund dessen sie dann den Fehler gefunden haben - der dann heute wohl hoffentlich behoben wird. Der Miele Support hatte nämlich zuerst auch nur so getestet wie Du und behauptet, alles sei in Ordnung. Erst aufgrund meines Einwandes wurde das Problem entdeckt.

Grizzelbee commented 1 year ago

Bei mir läuft das jetzt wieder richtig - das darf also als gelöst betrachtet werden.