General concept

The Miele 3rd Party API is based on REST technology.

To access the API, a Miele user account with registered Miele appliances is required.

Authorisation for access is done via the OAUTH2 authorisation flow. The necessary credentials can be generated in the Get involved section.

The Miele 3rd Party API follows a generic approach, this means the API returns always the information for a so called Generic appliance. This generic appliance contains all capabilities of all Miele appliances that are mapped via the Miele 3rd Party API. An overview about the supported capabilities by device can be found here.


                                            GET /devices
                                            {
                                                "000148508574": {
                                                    "ident": {
                                                        "type": {
                                                            "key_localized": "Devicetype",
                                                            "value_raw": 1,
                                                            "value_localized": "Washing Machine"
                                                        },
                                                    ....
                                                    },
                                                    "state": {
                                                        "ProgramID": {
                                                            "value_raw": 122,
                                                            "value_localized": "Express 20",
                                                            "key_localized": "Program Id"
                                                        },
                                                    ....
                                                },
                                                "000137439624": {
                                                    ....
                                                },
                                                ....
                                            }
                                        

The ident object is used to identify a Miele appliance in detail. The most important information within the ident object are represented by the fabNumber-, the type- and the techType object. Where the fabnumber object allows to uniquely identify an appliance, the type object represents the basic type of an appliance and finally the techType object represents the catalog type of the appliance. Within the specification the fabNumber is also used as deviceId, to address an appliance directly.


                                            GET /devices/<deviceId>/ident
                                            {
                                                "type": {
                                                    "key_localized": "Devicetype",
                                                    "value_raw": 1,
                                                    "value_localized": "Washing Machine"
                                                },
                                                "deviceName": "",
                                                "deviceIdentLabel": {
                                                    "fabNumber": "000148508574",
                                                    "fabIndex": "10",
                                                    "techType": "WWV980",
                                                    "matNumber": "10708820",
                                                    "swids": ["4850", ....]
                                                },
                                                "xkmIdentLabel": {
                                                    "techType": "EK037",
                                                    "releaseVersion": "03Q72"
                                                }
                                            }                                        

The state object represents the actual state of an Miele appliance. Due to the generic approach of the API the state object provides all state information, no matter if a physical device supports it or not.

e.g the Washing machine does not support the dryingStep object

In case that an appliance is not supporting an object or one of its properties the return value is 'null'. In dependency of the state of the real appliance, an object or one of its properties may not have an actual value. in this case the return value -32768.


                                            GET /devices/<deviceId>/state
                                            {
                                                "ProgramID": {
                                                    "value_raw": 122,
                                                    "value_localized": "Express 20",
                                                    "key_localized": "Program Id"
                                                },
                                                "status": {
                                                    "value_raw": 5,
                                                    "value_localized": "In use",
                                                    "key_localized": "State"
                                                },
                                                ....
                                                "targetTemperature": [
                                                    {
                                                        "value_raw": 2000,
                                                        "value_localized": 20.0,
                                                        "unit": "Celsius"
                                                    },
                                                    {
                                                        "value_raw": -32768,
                                                        "value_localized": null,
                                                        "unit": "Celsius"
                                                    },
                                                    ....
                                                ],
                                                ....
                                                "spinningSpeed": {
                                                    "unit": "rpm",
                                                    "value_raw": 1200,
                                                    "value_localized": "1200",
                                                    "key_localized": "Spinning Speed"
                                                },
                                                "dryingStep": {
                                                    "value_raw": null,
                                                    "value_localized": "",
                                                    "key_localized": "Drying level"
                                                },
                                                ....
                                            }
                                        

The API supports also the control of appliance in dependency of their respective state. The actions object is used to request the available device actions and also to execute a dedicated device action.

The below requested appliance offer the capabilities to START or STOP it via processAction, to manipulate the startTime, to change the deviceName or to powerOff.


                                            GET /devices/<deviceId>/actions
                                            {
                                                "processAction": [1,2],
                                                "light": [],
                                                "startTime": [
                                                    [0,0],
                                                    [23,59]
                                                ],
                                                "ventilationStep": [],
                                                "programId": [],
                                                "targetTemperature": [],
                                                "deviceName": true,
                                                "powerOff": true
                                            }
                                        

By sending one of the available actions to the device, it will be executed.


            PUT /devices/<deviceId>/actions
            {
                "processAction": 1
            }