Seitdem gibt es Änderungen bei Miele@Home (siehe https://developer.miele.com):
- Miele 3rd Party API ist jetzt v1.1.0 mit neuem OAuth 2.0 Auth Provider und Tokens mit gerätespezifischen Berechtigungen auf auth.domestic.miele-iot.com
- Das bisherige OAuth2_Legacy-Verfahren auf api.mcs3.miele.com/thirdparty/login wird im Laufe des Jahres 2026 abgeschaltet, neue Implementierungen sollen es deshalb nicht mehr verwenden.
- Eine neue SPINE-IoT API wird entsprechend EN 50631 und IEC 63510 eine standardisierte Kommunikation zwischen Energy Smart Appliances und Energy Management Systems (EMS) ermöglichen und soll herstellerübergreifend funktionieren (EEBUS). Damit können ESA-Geräte den geplanten Stromverbrauch im Programmablauf melden und mit dem EMS passendes Programm+Zeitslot auswählen. Diese neue SPINE-IoT-API ist zwar schon als v1.0.0 veröffentlicht, aber noch nicht nutzbar ("Access will be granted shortly—please check back soon.")
0) Voraussetzung
Voraussetzung für die Nutzung der API ist eine Registrierung auf https://developer.miele.com/get-involved, man bekommt dann einen Link, mit dem man sich Client ID und Client Secret erzeugen lassen kann. Die Email braucht meistens einige Minuten. Ausserdem braucht man einen Miele-Account, in dem man in der App die Geräte zugeordnet hat.
1) Ersten Token erstellen
Mittels der Client ID und Secret und einem Miele-Account kann man sich einen Bearer-Token für seine Geräte erzeugen lassen.
1a) Das funktioniert manuell auf der Miele Developer-Seite im API-Explorer. Der API-Explorer brauchte bei mir beim ersten Aufruf einige Zeit, um dargestellt zu werden, vorher hatte ich nur eine schwarze Seite, also Geduld.

Bei den Scopes kann man einschränken, was der Zugriff darf. Ich habe alles ausgewählt.
Im Anschluss muss man das Land auswählen, auf dem der eigene Miele-Nutzeraccount (=Anmeldedaten für die Miele@home-App) läuft.
1b) Etwas einfacher geht es mit dem Tool "Postman", dass man sich auf dem PC installieren kann.
In Postman erstellt man mit "Create Request" einen neuen Eintrag und schreibt darin:

Auth URL und Token URL entsprechend https://developer.miele.com/docs/authorization
Client ID und Client Secret entsprechend 1).
Bei Scope muss man die Scopes eintragen, auf die man zugreifen möchte, mit Leerzeichen getrennt. Für alle Scopes schreibt man also:
mcs_thirdparty_read mcs_thirdparty_write openid mcs_thirdparty_media openid
Dann nach ganz unten scrollen und "Get New Access Token" drücken.
Es erscheint eine Anmeldemaske und man muss sich mit dem Miele-Account anmelden. Anschliessend die zu steuernden Geräte in der Liste anklicken und "Weiter" anklicken, anschliessend "Zugriff anfordern". Darauf achten, dass Popup-Blocker deaktiviert sind. In Postman erhält man dann "Access Token" und "Refresh Token" angezeigt.
1c) Man kann den Access Token auch direkt vom Timberwolf empfangen lassen.
Dazu braucht es ein HPPT-API-Server Subsystem als Redirect-Adresse. Ich brauche so ein Subsystem später auch zum Einlesen von Tarifdaten meines Stromversorgers EKZ, deshalb war es eine gute Übung.

Darin zwei Auswertungen erstellen:
i. Bezeichnung = Authorization Code, Lokation = URI, Selektor = code, Format = Text (STRING)
ii. Bezeichnung = State, Lokation = URI, Selektor = state, Format = Text (STRING)
Idealerweise verknüpft man dann gleich den Authorization Code mit einem Objekt im Timberwolf, um ihn zu speichern.
Um den Access Token zu erstellen, ruft man dann im Browser diese URL auf:
Code: Alles auswählen
https://auth.domestic.miele-iot.com/partner/realms/mcs/protocol/openid-connect/auth?
client_id=YOUR_CLIENT_ID&
response_type=code&
redirect_uri=YOUR_REDIRECT_URI&
scope=mcs_thirdparty_read%20mcs_thirdparty_write%20mcs_thirdparty_media%20openid&
state=RANDOM_STRINGMan muss sich dann mit seinem Miele-User anmelden und die Geräte auswählen, die steuerbar sein sollen. Anschliessend bestätigen, und im Browser erscheint im Erfolgsfall nur {}.
Der Authorization code wird dann im Timberwolf empfangen. Zur Kontrolle sieht man auch den state, den man vorher eingegeben hatte.
<Fortsetzung zum Token Refresh und zur Nutzung folgt>
