Das Modul ist eingebaut - Nun kanns los gehen!
Als erstes habe ich das Modul erstmal auf Werkseinstellungen gesetzt. Das geht entweder über die Taste auf dem Modul (10 Sekunde drücken = Werkszustand) oder über das Miele@Home Menü der Waschmaschine.
Danach habe ich über mein Handy das Gerät ins WLAN eingebunden. Das Modul spannt ein eigenes Miele-WLAN auf, wo man sich mit dem Handy einbuchen muss. Das Passwort die die SerienNr der Maschine ohne führende Nullen. Dann kann man über die Miele@Mobile App das Netzwerk konfigurieren.
Nachdem man dann das WLAN auf dem Handy zurück auf das eigene gesetzt hat, sollte das Modul (Waschmaschine) gefunden werden.
Um die Kommunikation analysieren zu können, habe ich das Modul an einen Bintec Accesspoint angemeldet. Dieser Accespoint lässt es zu, die Kommunikation mit Wireshark zu analysieren.
Mich interessierte als erstes, wie die Anmeldung des Moduls mit der App funktioniert. Voraussetzung ist dabei, dass das Modul bereits im WLAN eingebunden ist.
1. Broadcast Frames
Jedes Miele-Gerät sendet auf dem Netzwerk regelmäßig Broadcast-Frames. Meine Waschmaschine sendet den Strings
mieleathome.tcp.local W Miele WMR860
.
Damit kann z.B. die Miele@Mobile App das Gerät finden.
Vermutung: Das „W“ bei der Gerätekennung besagt, dass das Gerät ein Waschautomat ist. „T“ würde für Trockner stehen.
2. Hinzufügen des Gerätes zur Miele@Mobile App
Nachdem die App das Gerät via Broadcast gefunden hat, kann man das Gerät auswählen und hinzufügen.
Nun passiert folgendes:
Die App sendet via HTTP-PUT folgendes ans Modul:
PUT /Security/Commissioning/ HTTP/1.1
Host: Miele-001D63FFFE049B4F.local.
Connection: keep-alive
Date: Sun, 12 Mar 2017 12:42:04 GMT
Accept: application/vnd.miele.v1+json
User-Agent: Miele@mobile 2.3.3 iOS
Content-Length: 172
Accept-Language: de-de
Accept-Encoding: gzip, deflate
{"GroupID":"0025DC69F3CE9FA4","GroupKey":"9F944A76F46AAAC11B818439BA53735A869BF1E1ACE6C3FCBAE898BFA87FE2CE595CB27BB23F3F6C1921D94D28FA0EB048537A2ADEC666B05F7BE4CDD5D46BDB"}
Das Modul antwortet mit:
HTTP/1.1 200 OK
Content-Type: application/vnd.miele.v1+json; charset=utf-8
access-control-allow-origin:*
access-control-allow-headers:Authorization
Date: Sun, 12 Mar 2017 12:42:03 GMT
Content-Length:205
[
{"Success":{"GroupID":"0025DC69F3CE9FA4"}},
{"Success":{"GroupKey":"9F944A76F46AAAC11B818439BA53735A869BF1E1ACE6C3FCBAE898BFA87FE2CE595CB27BB23F3F6C1921D94D28FA0EB048537A2ADEC666B05F7BE4CDD5D46BDB"}}
]
Was jetzt hier genau gemacht wird, kann ich nicht 100%ig sagen. Es scheint so, dass eine Verschlüsselung initialisiert wird. Die GroupID scheint eine Art einmalige Kennung des Gerätes zu sein. Der GroupKey wird eine Art Verschlüsselungszertifikat sein, womit die weitere Kommunikation verschlüsselt wird.
3. Gerätedaten abfragen
Die weitere Kommunikation erfolgt über HTTP-GET Aufrufe.
Die App fragt die allgemeinen Gerätedaten ab:
GET /Devices/ HTTP/1.1
Host: Miele-001D63FFFE049B4F.local.
Connection: keep-alive
Date: Sun, 12 Mar 2017 12:42:09 GMT
Accept: application/vnd.miele.v1+json
User-Agent: Miele@mobile 2.3.3 iOS
Authorization: MieleH256 0025DC69F3CE9FA4:733979F4F79A0E4D638E040DF0C218D355A85E7DA9D4BCE43F6A85A5D9FE1684
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Das Modul antwortet mit:
HTTP/1.1 200 OK
Content-Type: application/vnd.miele.v1+json; charset=utf-8
access-control-allow-origin:*
access-control-allow-headers:Authorization
Date: Sun, 12 Mar 2017 12:42:08 GMT
Content-Length:112
X-Signature: MieleH256 0025DC69F3CE9FA4:DC65CAE29ABFF0D0E8836FBD1123AEB439591D360F2A976A4816F3B903EDD8DC
..>....u....@Z?.....p.1LE.T...V.z.[..m..L.b. ..iDm...iZ..F..@..O..T....V.....A.-.I!.p....K...=.m.@...~.u.U......
Bei der Anfrage wird als Authentication „MieleH256“ gesendet. Danach die GroupID und ein 32Byte lange Zeichenfolge, Hex-kodiert. Was das genau ist, kann ich nicht sagen.
Die eigentlichen Daten sind nicht lesbar, da verschlüsselt. Da bei Content-Type oben was von „json“ steht, kann man wohl von verschlüselten JSON-Daten ausgehen.
Soweit erstmal der aktuelle stand.
Fazit:
[ul]
[li]Die Kommunikation erfolgt über einfache HTTP-Nachrichten
[/li][li]Die eigentlichen Daten sind verschlüsselt mittels eines eigenen Verfahrens, was Miele „MieleH256“ nennt
[/li][li]Eine Kommunikation wäre grundsätzlich möglich, wenn wir die Verschlüsselung verstehen würden
[/li][/ul]
weiteres folgt in Kürze.