[Modul] Miele@Home

Was hast du eingestellt Volker? Bei mir gibts leider keine Besserung…

welche Version hast du denn aktuell?

In den aktuellen Versionen im Modulstore/beta habe ich eingebaut, das die Abrufe (an Miele) mehrfach wiederholt werden, bevor die als Fehler gewertet werden.
Und in dem letzten Update dazu kann man noch einstellen, wie lange man warten möchte und wie häufig (2 post drüber).

Es gibt ja immer wieder wieder Timeouts bei dem Versuch, dem Miele-Server was zu entlocken.
Sehr wechselnd, mal weniger häufig, manchmal vielfach hintereinander

Version 2.6.2 vom 23.03.2025 (beta)

Du meinst das?

image

Ja, damit kann man „spielen“, also versuchen, die ideale Kombination zu finden.
Je länger das Timeout und je häufig, umso eher könnte die Instanz natürlich als „langlaufender Thread“ auftauchen.

Leider reagiert die Miele-Cloud häufiger mal mit Timeouts und ich versuche, das damit etwas zu kompensieren

Ich habe die Defaults belassen und nur gestern das Modul auf die Beta aktualisiert. Vorher war im Log irgendwas mit Authentifizierung die fehlschlug. Was auch immer da gehakt hatte, nach dem Update lief es wieder.

Ich nehme an, das in der IO-Instanz (der SSE-Client) gab es ein Problem, das der Token nicht mehr gültig war.
Eigentlich wird die Splitter-Instant (MieleAtHomeSplitter) dann aktiv und erneuter den.
Es passiert manchmal, das das irgendwie nicht automatisch läuft.

Man kann in der Splitter-Instanz das mittels „Zugang prüfen“ beheben.

2 „Gefällt mir“

Hat Jemand einen Geschirrspüler, den er fernstartet?

Ich möchte das nun mit PV Überschuss machen.
Wie ist Vorgehensweise?
Kann ich von IPS heraus, das Programm auswählen und dann starten?

BTW: Der Link in der Doku / Funktionsreferenz zu Miele funktioniert nicht mehr.

Update:
Ich habe etwas gefunden:

D.h. es müsste das setzen einer Startzeit und processAction funktionieren.
Aber mit

MieleAtHome_SetStarttime(XXXXXX, 10, 05);

hat es nicht funktioniert.

Debug:

14.04.2025, 08:49:23 |          checkAction | action "SetStarttime" is disabled

Hmm, ich habe das gerade nochmal versucht, das zeigt bei mir korrekterweise auf https://github.com/demel42/IPSymconMieleAtHome/blob/master/README.md

was erscheint da bei dir?

ich hatte neulich das Thema in einem anderen Post:

Man muss ein Programm ausgewählt habe und der Geschirrspüler muss in Bereitschaft sein (also „fernsteuerbar“, ist ein eigener Punkt in der Konfiguration des Geschirrspülers, das Symbol (so eine Art Handy mit Funkwellen, bei mir 2. Symbol von links)
Und dann kann man wohl starten.

Was man wirklich zu welchen Zeitpunkt machen kann bestimmt die Miele-Cloud - ich muss immer vor einer Aktion abfragen, was zulässig ist.

Ich meine, dass sich die Spülmaschine nach einem Spannungsausfall merkt, wo sie ausging. So könnte man sie starten und dann mit einer Schaltsteckdose wegschalten, bis genug Sonnenstrom vorhanden ist.

Danke!

Einschalten funktioniert.
Einschaltzeitpunkt geht nicht.
Starten (teste ich).

Kannst Du dazu mal ein Debug machen? Also den Befehl, warten, bis über die WebSocket-IO-Schnittstelle die Änderungen kommen und danach einen Status-Abruf
Unbedingt aber die Limitierung des Debug deutlich erhöhen!

Ich habe das bei mir nie wirklich getestet, weil ich den Geschirrrspüler immer Nachts laufen habe und aus der Batterie versorge (im Sommer).

Aber bei meinen halbherzigen Tests habe ich das glaube ich so gemacht, das der Spüler bereit war zum Arbeiten mit einer gesetzten Startzeit irgendwann. Und dann (meine ich mich zu erinnern) habe ich dann mit dem Startbefehl aus IPS das Ding zum Arbeiten bekommen.

1 „Gefällt mir“

Ich hoffe ich habe dich richtig verstanden:

dump (2).txt (26,5 KB)

Update:

Starten geht leider nicht:

14.04.2025, 14:37:20 |          checkAction | action "Start" is disabled

Update:
Starten via IPS geht NUR wenn du wie irgendwo schon geschrieben hast, einen Start oder Endzeitpunkt ausgewählt hast (bei mir 18 Uhr Beginn) und dann in der App gestartet hast.

Befehl für Starten hat jetzt gerade funktioniert (14:47 Uhr)

MieleAtHome_Start(21880);

Und hier das Debug:
dump (3).txt (267,6 KB)

Ja, hast du richtig verstanden.
Es ist so, wie ich befürchtet habe

In der ersten Zeile steht, das die Funktion deaktiviert ist

TXT: 14.04.2025, 13:34:11 |          checkAction | action "SetStarttime" is disabled

das mache ich, weil die Antwort von Miele auf meine entsprechende Anfrage so ist

TXT: 14.04.2025, 13:34:23 |        DecodeActions | source=Update, actions=Array<LF>(<LF>    [processAction] => Array<LF>        (<LF>        )<LF><LF>    [light] => Array<LF>        (<LF>            [0] => 1<LF>        )<LF><LF>    [ambientLight] => Array<LF>        (<LF>        )<LF><LF>    [startTime] => Array<LF>        (<LF>        )<LF><LF>    [ventilationStep] => Array<LF>        (<LF>        )<LF><LF>    [programId] => Array<LF>        (<LF>        )<LF><LF>    [targetTemperature] => Array<LF>        (<LF>        )<LF><LF>    [deviceName] => 1<LF>    [powerOn] => <LF>    [powerOff] => 1<LF>    [colors] => Array<LF>        (<LF>        )<LF><LF>    [modes] => Array<LF>        (<LF>        )<LF><LF>    [runOnTime] => Array<LF>        (<LF>        )<LF><LF>)<LF>
...
TXT: 14.04.2025, 13:34:23 |          checkAction | action "Start" is disabled
TXT: 14.04.2025, 13:34:23 |          checkAction | action "Stop" is disabled
TXT: 14.04.2025, 13:34:23 |          checkAction | action "Pause" is disabled
TXT: 14.04.2025, 13:34:23 |        DecodeActions | MaintainAction "Action": enabled=false, value=
TXT: 14.04.2025, 13:34:23 |          checkAction | action "SetStarttime" is disabled
TXT: 14.04.2025, 13:34:23 |        DecodeActions | MaintainAction "StartTime": enabled=false
TXT: 14.04.2025, 13:34:23 |          checkAction | action "PowerOn" is disabled
TXT: 14.04.2025, 13:34:23 |          checkAction | action "PowerOff" is enabled
TXT: 14.04.2025, 13:34:23 |        DecodeActions | MaintainAction "PowerSupply": enabled=true, value=ausschalten

startTime ist false („nichts“ ist bei boolean das gleiche wie false): [startTime] => Array<LF> (<LF> )<LF>

das bedeutet, das in dem derzeitige Betriebszustand des Geschirrspülers ein setzen der Zeit nicht zulässig ist. Das Feld mit der Startzeit sollte im Modul auch inaktiv sein.

Das ist hier auch nochmal darauf hingewiesen (Ende der Seite).

Nicht wundern übrigens: SetStartime() erwartet keine absolute Zeit sondern eine relative, gerechnet von jetzt an. Ich sehe gerade, das das im README nicht ausgeführt ist … aber so erwartet die API das (API-Beschreibung, am Ende unter dem Punkt startTime)

1 „Gefällt mir“

Prima. Im Debug ist das leider nicht drin, der endet um 14:45. Aber ist ja egal, wenn es (soweit) funktioniert hat.

So richtig ist die diesbezügliche Logik von Miele ja nicht zu verstehen. Ich meine, grundsätzlich ja schon, das das Gerät geschlossen ist, Reiniger drin und ein Programm ausgewählt wurde … aber das man schon eine Startzeit drin haben muss?

Bei der Waschmaschine ist es etwas anders, da muss man natürlich auch die Wäsche und Waschmittel drin, Tür zu und ein Programm ausgewählt … aber dann stellt man die Maschine in so eine Art von „StandBy“.

Mhh ja,
blöd ist halt nur wenn ich vorher eine Zeit einstellen muss (mit der App), dann kann ich die Maschine auch gleich via App starten.

Genial wäre halt gewesen bei PV Überschuss die Maschine zu starten.

Aber trotzdem vielen Dank für deine Mühe und Arbeit :smiling_face_with_three_hearts:

Du könntest es ja auch (am Geschirrspüler) auf den spätesten möglichen Zeitpunkt stellen (geht ja 24h im Voraus) und dann den eigentlichen Start IPS überlassen.

Wir lassen den immer mit einer angegebenen Endezeit laufen, das bleibt eingestellt und dann muss ich abends nur „Timer“ ausgewählen und dann 2x mit Ok bestätigen. Bedienung ist aber sicherlich vom Modell zu Modell unterschiedlich

Ist aber eher kontra-intuitiv.

1 „Gefällt mir“

Ok, ich habe nochmal etwas in der API gestöbert.

Es gibt mit der aktuelle API-Version eine Funktionalität, um ein Programm direkt zu starten.

Ist aber etwas tricks und nicht in Gänze beschrieben → gibt einen Hinwies, das man das nur machen kann, wenn das gerät im Richtigen Zustand ist, aber es gibt keinen Hinweis, das was der richtige Zustand ist.
Ich habe herausgefunden, das

  1. mobiler Start muss am Gerät aktiviert sein (das ist das Symbol, was ich heute nachmittag erwähnt hatte, ein Telefon mit Funkwellen).

  2. das Gerät muss eingeschaltet worden sein. das kann auch mit einem MieleAtHome_PowerOn(); erfolgen.
    aber dann muss man etwas warten, das sich alles zurecht gerüttelt hat.

Bei dem nächsten Datenabruf wird dann auch ein Variablenprofil gefüllt (MieleAtHome.Programs, d.h. für jede Miele-Instanz ein eigenes Profil).
Da stehen dann die Programme drin, die dieses Gerät unterstützt; der numerische Wert ist die programId.

  1. dann kann man starten mit MieleAtHome_StartProgram(, );

… das hat dann bei mir zum Start geführt. den habe ich natürlich immer wieder abgebrochen, aber das sollte dann ja laufen.

Es kann sein - und das hat mit dem o.g. Unsicherheiten zu tun, das der MieleSplitter HTTP-Fehler meldet.
Dann brauch ich sowohl ein Debug vom Splitter und von dem Device (ausreichend lang!) und eine Beschreibung, was der Ablauf war.

Modulstore/Beta v2.7

1 „Gefällt mir“

Danke!
Das Profil ist bei mir nicht gekommen:

Debug:
dump (4).txt (192,2 KB)

Update:

Habs gefunden!!! Die Variable heisst Programm starten:

VIELEN DANK!! so funktioniert es!

Prima. Aber es wird eventuell Situationen geben, wo es im Splitter HTTP-Fehler gibt. Dieser Bereich ist in der API-Dokumentation ziemlich unklar und „wackelig“.

Das muss man sich dann anschauen.

Die Programme sind vermutlich statisch, als #3 ist immer „ECO“. Nur bei Geräten, wo man eigene Programme erstellen kann (zB Backofen) könnte ich mir vorstellen, das die grundsätzlich erscheinen könnten.
Oder es kommt mal mit einem Firmware-Update ein Programm dazu…

Also kannst Du m.E. nach im Script immer eine bestimmte Nummer fix verwenden.

1 „Gefällt mir“

Nun ist es einfach eine Automatik zu machen, die bei PV Überschuss und geschlossener Tür den GS startet :smiling_face_with_three_hearts:

Fehlt nur noch eine Überprüfung ob er auch voll ist :slight_smile: