Miele@home XGW3000 am Gira Homeserver KNX

Grundlagen

Miele Haushaltsgeräte unterstützen, wie auch andere Hersteller, das Smarthome gern mit Apps. Dazu funkt z.B. die Waschmaschine (hier wird nur die WiFi Version betrachtet, kein ZigBee) ihre Daten direkt und verschlüsselt an die Miele Server, damit eine einfach App von überall auf die Daten zugreifen kann.

Hat man jedoch schon ein Smarthome, hier beispielsweise KNX, so bietet Miele ein Gateway an, dass die Aufgabe für das lokale Netzwerk übernimmt.

Dieses Gateway ist derzeit das XGW3000 in der Firmware-Version 2.1 (Stand 03.11.2017).

Einrichtung des Gateway

Dieses Gateway soll zuerst eingerichtet sein, bevor Sie das Haushaltsgerät anmelden. Die z.B. Waschmaschine sucht zuerst nach einem lokalen Gateway, findet es dies nicht, meldet sie sich direkt auf den Servern von Miele an. Ist die Maschine dort bereits angemeldet, reicht es sie in den Einstellungen abzumelden und den Vorgang über das Gateway zu wiederholen. (siehe Handbuch)

Sinnvoll ist es, dem XGW3000 eine feste IPv4 zu geben, sodass man ohne Sorgen direkt darauf zugreifen kann. Komischweise kann man dies nur einstellen, wenn man das Gateway direkt mittels Netzwerkkabel an einen PC oder Mac anschließt. Der PC bekommt dann eine DHCP Adresse aus dem Bereich 192.168.5.x zugewiesen. Nun kann man die Adresse 192.168.5.5 im Webbrowser aufrufen und gelangt so in eine weitere Gerätekonfiguration. Hier lässt sich u.a. die feste IP für das XGW3000 vergeben.

Nun kann das Gateway wieder zurück in das normale Netzwerk und man kann mittels der festen IP auf das XGW3000 zugreifen (Webseite). Hier ist u.a. in „weitere Einstellungen“ zu verzweigen und die Konfiguration wie folgt vorzunehmen.

Zugriffsmöglichkeiten

Das XGW3000 bietet, wahrscheinlich aufgrund der Historie, verschiedene Möglichkeiten an Daten abzurufen/auszulesen.

  • REST Abfrage
  • JSON RPC
  • XML Abfrage
  • Multicast Datagramme

Ich nutze mit dem Gira-Homeserver derzeit nur die Multicast-Datagramm, da ich nur wenige Stati zu Visualiserung benötige.

REST Abfragen

http://XGW3000-IP/Rest
http://XGW3000-IP/Rest/Update
http://XGW3000-IP/Rest/Devices/UID-No
http://XGW3000-IP/Rest/Devices/UID-No/State
http://XGW3000-IP/Rest/Devices/UID-No/Ident

Die UID-No findet man einfach über http://XGW3000-IP/homebus oder auf der Web-Oberfläche des XGW3000.

JSON RPC

Die JSON Abfragen sind schon mächtiger und gibt es anscheinend nur seit der Version 2.0.

Die Abfrage erfolgt immer via POST und auf die URL: http://XGW3000-IP/remote/json-rpc.

Im Body sendet man dann:

a.) {„jsonrpc“:“2.0″,“method“:“system.listMethods“}
b.) {„jsonrpc“:“2.0″,“method“:“HDAccess/getHomeDevices“,“params“:[„(type=SuperVision)“],“id“:1}
c.) {„jsonrpc“:“2.0″,“method“:“HDAccess/getDeviceClassObjects“,“params“:[„hdm:LAN:UID-No#0″,true],“id“:1}

Es gibt sicherlich noch viele mehr, die sind mir nur bekannt.

XML Anfrage

Dies scheint ein Überbleibsel aus älternen Tagen zu sein. Mir ist nur die Anfrage über http://XGW3000-IP/homebus via GET bekannt.

Multicast Datagramme

Kommen wir jetzt zu Multicast-Nutzung mittels des Gira Homeservers. Das Gateway sendet Multicast Datagramme immer dann ins Netzwerk, wenn sich an Status, Phasen, Restlaufzeiten etc. etwas ändern. So muss man keine Daten am Gateway pollen und ist immer aktuell in der Visualisierung usw.

Dazu nutzt es die Adresse 239.255.68.139 auf Port 2810. Es gibt noch eine weitere Adresse, auf die das XGW3000 vergleichbare Daten sendet (224.255.68.139), aber die lassen wir mal außen vor.

Ein Datengramm sieht z.B. so aus:

type=1&id=12345678&property=state&value=3

oder so

type=1&id=12345678&property=finishTime&value=114&typeAtr=finishTime (Restlaufzeit in Minuten)

oder so

type=1&id=12345678&property=remoteEnabledFlag&value=7

Die id ist hier wieder die UID des Gerätes. Neben state, finishTime und remoteEnabledFlag gibt es noch programId und phase.

Im Gira Homeserver habe ich nun interne Kommunikationsobjekte angelegt.


Im zweiten Schritt lauche ich auf die Multicast-Adresse. Dies richtet man unter Kommunikation und IP-empfangen ein. So sieht das dann am Beispiel für die Status ID aus:

Statt der „0001“ ist hier wieder die UDI des Gerätes einzusetzen.

Analog setzt man das nun für die anderen „Properties“ um. Es ist immer das gleiche Schema.

Natürlich fehlt nun noch die Übersetzung in Text. Dies erledige ich im Logikeditor, hier vertretend für den Status:

Übersetzungen

Leider habe ich noch nicht alle „ID zu Text“ Relationen herausbekommen. Vielleicht findet ja jemand mehr heraus und sendet sie mir dann, ich ergänze sie dann hier.

Status

0 undefiniert
1 aus
2 bereit
3 Programm gewählt
4 warte auf Start
5 in Betrieb
6 Pause
7 Ende
8 Fehler
9 unterbrochen
10 Leerlauf
11 spülen angeh.
12 Service
13 Superfrosten
14 Superkühlen
15 Superheizen
144 Standard
145 verschlossen
146 frosten/kühlen
255 nicht verbunden

Phasen

0 undefiniert
1 Vorwaschen
2 Einweichen
3
4 Waschen
5 Spülen
6
7
8 Komfortkühlen
9 Abpumpen
10 Schleudern
11 Knitterschutz
12 Ende

Translate »