Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PlateStep wird nicht mehr angezeigt! #356

Closed
UweLoyal opened this issue Apr 4, 2023 · 31 comments
Closed

PlateStep wird nicht mehr angezeigt! #356

UweLoyal opened this issue Apr 4, 2023 · 31 comments
Labels
bug Something isn't working Fixed Already fixed in current developent branch

Comments

@UweLoyal
Copy link

UweLoyal commented Apr 4, 2023

mielecloudservice.0.000XXXXXXXXX.PlateStep_0 bis _5 zeigen keine Werte an (Herdplatte an).
mielecloudservice.0.000XXXXXXXXX.PlateStepZone-0 bis -5 zeigen korrekte Werte an.

image

@Grizzelbee
Copy link
Owner

Das ist korrekt so:

V6.1.0 (2022-04-27) (Black Wings)

  • (grizzelbee) Fix: Added some error handling
  • (grizzelbee) Chg: Changed PlateStep_x data structure to PlateStepZone-x
  • (grizzelbee) Chg: Removed unused ambientLight function
  • (grizzelbee) Chg: 225 Removed unused freezerZone code for knownDevices

Das hat sich mit Version 6.1.0 geändert.
Bitte die alten Datenpunkte löschen.

Vielleicht einfach den ganzen Baum löschen und neu anlegen lassen.
Es hat in der Vergangenheit immer mal wieder Änderungen an den Datenpunkten gegeben. Da könnten also noch mehr verwaist sein - Kommt auf deine Geräte und den Versionssprung an.

@Grizzelbee Grizzelbee added documentation Improvements or additions to documentation Fixed Already fixed in current developent branch labels Apr 4, 2023
@UweLoyal
Copy link
Author

UweLoyal commented Apr 4, 2023

Habe die Datenpunkte gelöscht und den Adapter neu gestartet.
Datenpunkte werden leider nicht angelegt, warum?
Wie werden die neuen Datenpunkte angelegt?
Muss ich ggf. das Kochfeld ganz löschen (alle Objekte) und dann neu starten?

Um das ganze noch genauer zu beschreiben, ich will erkennen welche(s) Kochfeld(er) eingeschaltet/besetzt ist/sind.
Der neue Datenpunkt mielecloudservice.0.000176005566.PlateStepZone-0 bis -5 zeigt lediglich die eingestellte Stufe an.

LG
Uwe Loyal

@Grizzelbee
Copy link
Owner

Habe die Datenpunkte gelöscht und den Adapter neu gestartet. Datenpunkte werden leider nicht angelegt, warum? Wie werden die neuen Datenpunkte angelegt? Muss ich ggf. das Kochfeld ganz löschen (alle Objekte) und dann neu starten?

Die alten Datenpunkte wurde einfach nur umbenannt. Aus PlateStep_1 wurde PlateStepZone-1, etc..
Das machte die Code-Struktur einfacher. Mehr ist nicht passiert. PlateStep_x kommt nicht wieder.

Um das ganze noch genauer zu beschreiben, ich will erkennen welche(s) Kochfeld(er) eingeschaltet/besetzt ist/sind. Der neue Datenpunkt mielecloudservice.0.000176005566.PlateStepZone-0 bis -5 zeigt lediglich die eingestellte Stufe an.

Mehr hat PlateStep aber auch nicht angezeigt und ich würde davon ausgehen das der Wert 0 anzeigt, das die Platte aus ist.
Ich verstehe also nach wie nicht wo genau das Problem liegt.

@UweLoyal
Copy link
Author

UweLoyal commented Apr 4, 2023

Genau hier liegt das Problem, es wird lediglich die zuletzt eingestellte Stufe angezeigt. Auch wenn man manuell auf Stufe 0 stellt wird das nicht im Objekt gesetzt.
Gibt es hier eine Lösung?
Wie kann ich sehen, was aus der Cloud für Infos kommen?
Im Objekt Baum gibt es da leider kein z.B. Jason um alles zu sehen.

Die Miele App zeigt übrigens das eingeschaltete Herdfeld.

LG
Uwe

@Grizzelbee
Copy link
Owner

Grizzelbee commented Apr 5, 2023

Die Miele App zeigt übrigens das eingeschaltete Herdfeld.

Das mag sein - die API und die App sind aber nicht funktionsgleich. Die App bietet regelmäßig mehr Informationen als die API. Ein Umstand, den ich schon mehrfach bei Miele adressiert habe.

Wie kann ich sehen, was aus der Cloud für Infos kommen?

Im Debug-Modus schreibt der Adapter alle Infos, die er bekommt, ins Log raus.
Die Miele-Dokumentation dazu findest Du

Den aktuellen Status des Gerätes (Ein, Aus, mehr ...) findest Du hier:
grafik

Ob Du mit Hilfe von Status UND PlateStep herausfinden kannst welche Platte gerade an ist, weiß ich allerdings nicht. Ich selbst besitze kein Kochfeld.

@Grizzelbee Grizzelbee reopened this Apr 5, 2023
@UweLoyal
Copy link
Author

UweLoyal commented Apr 5, 2023

Erste Analyse:

Plattenaufbau KM7575 (6 Zonen Herd)

1 | 5 | 2
--+--+--
0 | 4 | 3

Zone 0 auf Stufe

  "plateStep": [
    {
      "value_raw": 5,
      "value_localized": "3",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    }

Zone 1 auf Stufe

  "plateStep": [
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 5,
      "value_localized": "3",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    },
    {
      "value_raw": 0,
      "value_localized": "0",
      "key_localized": "Leistungsstufe"
    }
  ],

ioBroker Object

image

Die Werte werden nicht auf 0 gesetzt, wenn die Zone abgeschaltet (inaktiv) ist!

LG
Uwe Loyal

@Grizzelbee Grizzelbee added bug Something isn't working and removed documentation Improvements or additions to documentation labels Apr 5, 2023
Grizzelbee added a commit that referenced this issue Apr 5, 2023
Grizzelbee added a commit that referenced this issue Apr 5, 2023
#356 fixed false suppression of value 0 -> V6.5.0-beta2
@Grizzelbee
Copy link
Owner

Ich habe tatsächlich einen Fehler gefunden und in der V6.5.0-beta2 gefixed.
Bite installiere die einmal und teste ob sich das Problem damit erledigt hat.

@UweLoyal
Copy link
Author

UweLoyal commented Apr 5, 2023

Ich habe heute nochmal raumgetestet, ich glaube auch value_raw spielt eine Rolle, man muss ja feststellen können, ob Platten einzeln oder in Gruppe geschaltet wurden.
0+1, 4+5 oder 3+2
Hier muß ich mir aber noch Zeit nehmen und ein bisschen testen.
Gibt es eigentlich Feldbeschreibungen von Miele?

Zeit, für IT'ler Mangelware ;-)

LG
Uwe

@Grizzelbee
Copy link
Owner

Grizzelbee commented Apr 5, 2023

Ich habe heute nochmal raumgetestet, ich glaube auch value_raw spielt eine Rolle, man muss ja feststellen können, ob Platten einzeln oder in Gruppe geschaltet wurden. 0+1, 4+5 oder 3+2 Hier muß ich mir aber noch Zeit nehmen und ein bisschen testen.

Sollte eigentlich keine Rolle spielen. Value_raw und Value_localized sind (zumindest bei anderen Werten) das Selbe - nur in unterschiedlichen (lokalisierten) Interpretationen. Z.B. °F und °C. Warum das bei Kochfeldern abweicht - keine Idee.
Wenn in Gruppen geschaltet wird, würde ich erwarten, das beide Platten der Gruppe jeweils die gleichen Werte haben.

Gibt es eigentlich Feldbeschreibungen von Miele?

Ja. Wärest Du den Links gefolgt, die ich heute morgen hier gepostet habe, würdest Du die Frage nicht stellen. Die Beschreibung von Miele habe ich aber jeweils im Feld "Name" hinterlegt.

Wie gesagt: Bitte 6.5.0-beta2 testen.

@UweLoyal
Copy link
Author

UweLoyal commented Apr 5, 2023

Meine Tests heute haben ergeben, dass nur über das Feld value_localized (PlateStepZone) nicht festzustellen ist, ob die Felder zusammengeschaltet wurden. Ich vermute aber, dass dies zusammen mit dem Feld value_raw möglich ist. Natürlich habe ich die Links mir angeschaut, denn sonst hättest Du heute nicht die obigen Infos erhalten (Miele API Tool). Ich konnte leider noch nicht alles gründlich Durchforsten, so habe ich die Info zu value_raw noch nicht gefunden, deshalb auch meine Frage.
Wir werden das schon zusammen hinbekommen, ich habe ja einen Herd zum Testen ;-)

Ich werde Deine neue Version versuchen so schnell wie möglich einzuspielen um Dir Rückmeldung zu geben.

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 5, 2023

Nur zur Sicherheit, darüber installiere ich die V6.5.0-beta2 ?
In den Releases sehe ich die Beta leider nicht, was mich etwas verunsicherte.

image

@Grizzelbee
Copy link
Owner

Das sollte normalerweise klappen - ja.
Ich habe da aber auch schon Murks erlebt.

Im Zweifel alternativ so:'
grafik

@UweLoyal
Copy link
Author

UweLoyal commented Apr 6, 2023

Schlechte Nachricht, Adapter ließ sich nicht starten!
Hat aber 6.5.0-beta2 angezeigt.
Auch kompletter Start von ioBroker hat nichts gebracht.
Mußte alles deinstallieren, damit die 6.4.0 wieder lief.

LG
Uwe

@Grizzelbee
Copy link
Owner

Der oauth is not a function Bug sollte behoben sein und damit der Adapter wieder starten. Bitte noch einmal testen.

@UweLoyal
Copy link
Author

UweLoyal commented Apr 7, 2023

Ok, hat jetzt geklappt.
Es hat aber auch interessante Ergebnisse gezeigt!

Hier der erste Test:
ioBroker Objects:
image

GET /devices/{deviceId}
"plateStep": [
{
"value_raw": 0,
"value_localized": "0",
"key_localized": "Leistungsstufe"
},
{
"value_raw": 0,
"value_localized": "0",
"key_localized": "Leistungsstufe"
},
{
"value_raw": 0,
"value_localized": "0",
"key_localized": "Leistungsstufe"
},
{
"value_raw": 110,
"value_localized": "Warmhalten ",
"key_localized": "Leistungsstufe"
},
{
"value_raw": 13,
"value_localized": "7",
"key_localized": "Leistungsstufe"
},
{
"value_raw": 0,
"value_localized": "0",
"key_localized": "Leistungsstufe"
}

Das interessante dort ist "value_localized": "Warmhalten ", was ja bei type numer zu NULL führt!
Ok, im weitesten Sinne ist ein Text (value_localized) auch ein Wert. ;-)
Sollte man jetzt das auf Type Text umstellen?

Ich habe mir schon einiges in der Doku angeschaut, aber so eine Felderaufstellung mit Beschreibung habe ich noch nicht gefunden. Habe ich da was übersehen?

Mehr Test's in Kürze

Nachtrag:
Wenn der Herd mit eingeschalteter(en) Platte(en) ausgeschaltet wird, bleibt die eingestellt Stufe im Object!
Bei "Aus" allen "value_localized" auf 0 setzten ... oder "" wenn String ... ;-)

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 7, 2023

Habe was in Doku entdeckt!

https://www.miele.com/developer/swagger-ui/index.html unter Schemas.
Sieht man nicht auf den ersten Blick, da zugeklappt!
state-->plateStep-->Untermenü ohne Titel -->

image

Mein Bachgefühl sagt, dass wir alle Werte ("value_raw", "value_localized" und "key_localized") brauchen.
Ich vermute, dass die verschiedenen Funktionen sich hinter dem "value_raw" verbergen.

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 8, 2023

Ich muss mich korrigieren, an value_raw kann man leider nicht erkennen, ob die Platten zusammengeschaltet sind.
value_raw bestimmt nur die eingestellte Stufe, jedoch als Wert.
Ich glaube das Beste ist, Du setzt value_localized auf string, dann deckt das alles ab, also auch "Boost 1", "Boost 2" und "Warmhalten".
Was sagst Du dazu?

Hier die Testergebnisse:
image

Achja, beim Auschalten alles auf 0 !!!

"status": {
  "value_raw": 1,
  "value_localized": "Aus",
  "key_localized": "Status"
}

image

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 11, 2023

Nachtrag:
state-->spinningSpeed-->value_localized ist auch ein String
Deswegen wird hier auch NULL bei mir angezeigt!

Am besten alle value_localized anschauen, Stichproben zeigten immer String, auch wenn value eigentlich Wert sagt!

LG
Uwe

@Grizzelbee
Copy link
Owner

Grizzelbee commented Apr 17, 2023

Ich glaube das Beste ist, Du setzt value_localized auf string, dann deckt das alles ab, also auch "Boost 1", "Boost 2" und "Warmhalten".
Was sagst Du dazu?

Ja - das gehe ich mit. Das ergibt Sinn so.
Das ist auch analog zu anderen ähnlichen Datenpunkten, wie z.B: das Programm bei Wasch- und Spülmaschinen und Wäschetrocknern. Da wird auch der Programmname in value_localized als sprachlich lokalisierter String (Deutsch/Englisch/...) geliefert (Waschen/Wasching/..., Spülen/Rinse/..., Trocknen/Drying/...) und in Value_raw gibt es eine passende Zahl dazu ( siehe auch: https://github.com/Grizzelbee/ioBroker.mielecloudservice/blob/master/machine_states.md )

Aus diesem Grunde habe ich gerade die beta-4 hochgeladen in der PlateStepZone-x ein String ist und - neu - PlateStepZone-x_raw den entsprechenden value_raw enthält. Alle _raw Datenpunkte sind im Adapter IMMER die value_raw des sonst gleichnamigen Datenpunktes. In Skripten bevorzuge ich immer die _raw Datenpunkte, weil numerische Vergleiche sicherer funktionieren und schneller gehen als text-(string)-Vergleiche.

Ich bin mir nicht ganz sicher ob die Umstellung auf String so ohne Weiteres funktioniert. Ggf. musst Du die PlateStepZone-x Datenpunkte einmal löschen und neu anlegen lassen.

Nachtrag:
state-->spinningSpeed-->value_localized ist auch ein String
Deswegen wird hier auch NULL bei mir angezeigt!

Das verstehe ich nicht ganz. Reden wir über die Schleuderdrehzahl bei Waschmaschinen? Das funktioniert bei mir wunderbar.

@UweLoyal
Copy link
Author

Laut Miele ist spinningSpeed ein String, bei Dir number, deshalb gibt es auch hier ein Problem.

Deshalb auch meine Empfehlung im Nachtrag.

image

image

image

image

image

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 17, 2023

Ich warte noch mit Test's, bist Du obige Info berücksichtigt hast.
Bitte dann kurze Rückinfo an mich.

Ach ja, werden die PlateStepZone-* auf 0 gesetzt, wenn der Herd ausgeschaltet ist/wird?
War Vorschlag von mir.

Danke!

LG
Uwe

@UweLoyal
Copy link
Author

@Grizzelbee
Copy link
Owner

Laut Miele ist spinningSpeed ein String, bei Dir number, deshalb gibt es auch hier ein Problem.

Das ist zwar grundsätzlich korrekt, aber mir fehlt gerade die Idee was außer einer Zahl da vielleicht stehen könnte.
Ich habe das gerade einmal getestet und (null) steht da, wenn die Maschine noch nie gelaufen ist. Sobald die Maschine einmal gelaufen ist, bleibt da eigentlich immer der letzte Wert stehen - und das funktioniert bislang tadellos.
grafik

Ungeachtet dessen, ist es lt. Miele-Doku korrekt als String - deshalb habe ich mich entschieden auf String umzustellen und einen _raw Datenpunkt hinzugefügt - aber auch die werden erst beim ersten Lauf der Maschine mit Daten befüllt. So lange die Maschine aus ist steht da: (null) - möglicherweise auch wieder nach dem Ausschalten; da hängt davon ab, was Miele dann sendet.

Ach ja, werden die PlateStepZone-* auf 0 gesetzt, wenn der Herd ausgeschaltet ist/wird?
War Vorschlag von mir.

Keine Ahnung. Das hängt davon ab, was Miele als letzten Wert sendet. Da werde ich nicht reingrätschen. Wenn Status=Aus, ist das Kochfeld eben aus - egal was dann in Platestep steht. Das Selbe gilt ja z.B. auch spinningSpeed.

grafik

Danke für die Info. Habe den broken-Link entfernt.

@UweLoyal
Copy link
Author

UweLoyal commented Apr 17, 2023

Also spinningSpeed geht nach Programmende auf NULL.
image

Abfrage GET über Miele-Tool:

"spinningSpeed": {
  "unit": "U/min",
  "value_raw": null,
  "value_localized": null,
  "key_localized": "Schleuderdrehzahl"
},

Bei plateStep kann nichts gesetzt werden da keine Werte übermittelt werden, wenn der Herd aus ist.
"plateStep": [],
"ecoFeedback": null,
"batteryLevel": null

Erst wenn Herd eingeschaltet wird, werden alle Werte auf 0 gesetzt.
Stufe auf Einzelplatte bleit auf eingestellten Stufe (ohne Topf) für einige Zeit, geht dann aber auf 0 bei eingeschaltetem Herd.
Wenn man aber vor Nullung ausschaltet, bleiben die Werte im Object von ioBroker!

"plateStep": [],
"ecoFeedback": null,
"batteryLevel": null

@Grizzelbee
Copy link
Owner

Aha. Und was bedeutet das jetzt? Funktionieren die Datenpunkte zu SpinningSpeed und PlateStep jetzt, oder nicht?

@UweLoyal
Copy link
Author

UweLoyal commented Apr 17, 2023

Ich habe ja erst die vorherige Version getestet und da war folgendes:

SpinningSpeed geht nach Ende des Waschprogrammes immer auf NULL (siehe eine Antwort vorher).

PlateStep behält den letzten Zustand (eingestellte Stufe) vor Abschaltung, erst beim Einschalten werden alle auf 0 gesetzt.
Ok, könnte man sich überlegen, ob man das so lässt, dann muss man halt darauf achten, ob der Herd an oder aus ist,
Bei mir zeige ich den Status, wenn den aber jemand nicht mit einblendet, könnte man denken, dass der Herd an ist.

Soll ich jetzt die neue Version Testen, oder muss noch was korrigiert werden?
Bitte kurze Rückmeldung an mich.

LG
Uwe

@Grizzelbee
Copy link
Owner

SpinningSpeed geht nach Ende des Waschprogrammes immer auf NULL (siehe eine Antwort vorher).
PlateStep behält den letzten Zustand (eingestellte Stufe) vor Abschaltung, erst beim Einschalten werden alle auf 0 gesetzt.

Okay. Works as designed. Für mich ist das fein.

Soll ich jetzt die neue Version Testen, oder muss noch was korrigiert werden?
Bitte kurze Rückmeldung an mich.

Das musst Du selbst entscheiden. Für mich sieht das jetzt alles fein aus und ich bin geneigt das so als Release freizugeben.

@UweLoyal
Copy link
Author

Ok, dann werde ich es so schnell wie möglich testen.

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 18, 2023

Erste Rückmeldung (Kochfeld):
Jetzt wird auch Boost 1, Boost 2 und Warmhalten angezeigt.
Beim Ausschalten behält er die letzten Stufen.
Beim Einschalten wird dann alles auf 0 gesetzt.
Kann natürlich jetzt über einen Trigger alles auf 0 setzen, wenn Herd aus ist.
User ohne ioBroker können das natürlich nicht, ggf. könne diese dann nur über value_template den Anzeigewert setzen.
Ob Du das jetzt über Dein Modul noch machst oder nicht, das überlasse ich Dir. ;-)

Erste Rückmeldung (Waschmaschine):
Bei Schleuderdrehzahl kommt nach Abschaltung der Waschmaschine ein "unknown" (so wie früher bei Herd). Im Objekt findet man den Wert NULL.
image
Kann das an der role=value liegen?
"role": "value",
"type": "string",

Bei der Herdplatte verwendest Du role=text!
"role": "text",
"type": "string",

Bei Schleuderdrehzahl_raw hast Du eine Unit U/min angegeben, ist das für raw richtig?

LG
Uwe

@UweLoyal
Copy link
Author

UweLoyal commented Apr 20, 2023

Für die, die kein unknown und Herdplatte mit Stufe im Aus Status haben wollen, eine Korrekturscript.

   on ({ id: 'mielecloudservice.0.000XXXXXXXXX.Status', change: 'ne' }, async function(){
        
        if(getState('mielecloudservice.0.000XXXXXXXXX.Status').val=='Aus'){
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.Schleuderdrehzahl', '0', true);
             log('Waschmaschine ausgeschaltet');

       }

        }
    );

    on ({ id: 'mielecloudservice.0.000XXXXXXXXX.Status', change: 'ne' }, async function(){
        
        if(getState('mielecloudservice.0.000XXXXXXXXX.Status').val=='Aus'){

             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-0', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-0_raw', 0, true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-1', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-1_raw', 0, true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-2', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-2_raw', 0, true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-3', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-3_raw', 0, true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-4', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-4_raw', 0, true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-5', '0', true);
             await setStateAsync( 'mielecloudservice.0.000XXXXXXXXX.PlateStepZone-5_raw', 0, true);

        log('Herd ausgeschaltet');
        }

        }
    );

@UweLoyal
Copy link
Author

Ist eigentlich die 6.5.0 jetzt öffentlich, wird bei mir noch nicht angezeigt?

LG
Uwe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Fixed Already fixed in current developent branch
Projects
None yet
Development

No branches or pull requests

2 participants