Anyone still using the Miele@home (XGW 3000) binding?

One more thing to add: When there is ExtendedDeviceState available, this should be logged explicitly with TRACE level:

[TRACE] [ternal.handler.MieleApplianceHandler] - Extended device state for miele:fridge:home:fridge: 01[...]

In the payload it will look like this:

				{
					"Name": "extendedDeviceState",
					"Value": "\u0001",
					"Polling": 0,
					"Metadata": {
						"Filter": "false",
						"description": "Extended Device State",
						"access": "RE"
					}
				},

(truncated after “\u0001” in text above)

Here is the response to the HTTP GET (dryer not running now):

{"SignalFailure":false,"TargetTemperature":[],"Temperature":[],"SignalInfo":false,"ProgramID":6,"InternalState":0,"RemainingTime":[0,0],"RemoteEnable":[7,0,0],"Status":1,"ProgramPhase":521,"ProgramType":3,"ExtendedState":"","ElapsedTime":[0,0],"SignalDoor":false,"Light":0,"ProcessAction":0,"StartTime":[0,0],"DryingStep":null}

Thus, this string contains “ExtendedState”.

Think that i have to repeat this because i have two devices at the gateway:

  • One with ID 000178022763 which is a miele cloud device.
  • One with ID 000178022763#0 which is the miele@home device.

For a HTTP GET the 000178022763#0 seems to be expected as 000178022763_0 (???) and provides a different response:

{"SignalFailure":false,"TargetTemperature":[-32768],"Temperature":[-32768,-32768,-32768],"SignalInfo":false,"ProgramID":40,"InternalState":0,"RemainingTime":[0,0],"RemoteEnable":[15,1,0],"Status":2,"ProgramPhase":512,"ProgramType":0,"ExtendedState":"","SignalDoor":false,"Light":0,"ProcessAction":0,"StartTime":[0,0]}

Yes, but empty: "ExtendedState": ""

Most likely it’s also empty when running, but you could of course test that. If this is the case, sadly, you are out of luck.

Have you restarted the XGW 3000 gateway since you added the tumble dryer? If not, that could be one last shot.

Sorry, missed this part. You can see correct uids here: http://<gateway IP>/Rest/Devices/

Thanks for this hint. At the moment the washing machine is running. Here i already have water- and power-consumption working. The HTTP GET string looks like this:

{"SignalFailure":false,"TargetTemperature":[3000],"Temperature":[],"SignalInfo":false,"ProgramID":3,"InternalState":3,"RemainingTime":[1,17],"RemoteEnable":[15,0,0],"Status":5,"ProgramPhase":260,"ProgramType":0,"SpinningSpeed":1200,"ExtendedState":"000101010B8C04B00102000064642EE0025801C2025801C20000000000000000000000000000000000000000000000000000000200060002FF5800","ElapsedTime":[0,21],"SignalDoor":false,"Light":0,"ProcessAction":0,"StartTime":[0,0]}

The data under “ExtendedState” looks complicated. But this job is already done. The dryer will come in the afternoon, and then i will check again.

The dryer is running now. But using http://192.168.1.200/Rest/Devices/ i only get the washing machine (000119707209) which ran earlier and is off now.

{"000119707209":{"Pairing":false,"href":"000119707209/","Group":"0025DC69B7206847"}}

But the tumbledryer data from the binding is present. Am confused now. Do you have any idea why the dryer device is not shown?

Using http://192.168.1.200/Rest/Devices/000178022763/State, i get a similar response than yesterday:

{"SignalFailure":false,"TargetTemperature":[],"Temperature":[],"SignalInfo":false,"ProgramID":3,"InternalState":0,"RemainingTime":[0,29],"RemoteEnable":[15,0,0],"Status":5,"ProgramPhase":514,"ProgramType":3,"ExtendedState":"","ElapsedTime":[0,0],"SignalDoor":false,"Light":0,"ProcessAction":0,"StartTime":[0,0],"DryingStep":4}

This is the tumbledryer’s data, can see this from remaining time. But then, having no “Extended State” data, i conclude, that i am out of luck :thinking:.

Yes, Wi-Fi devices are not included in the list. You can still use the API though, they are just not listed. The UIDs can be fetched using the even older API: http://192.168.1.200/homebus

Am probably not completely out of luck :smiley:

Found a method to retrieve the data through the Miele API:

Adress:

https://api.mcs3.miele.com/v1/devices/000178022763

HTTP GET command (applied the Exec binding for this):

curl -X 'GET' \
  'https://api.mcs3.miele.com/v1/devices/000178022763?language=de' \
  -H 'accept: application/json; charset=utf-8' \
  -H 'Authorization: Bearer DE_xxxxxxxxxxxxxxxxxxxx'

For Windows users (Curl for Windows):

C:\Curl\bin\curl -i "https://api.mcs3.miele.com/v1/devices/000178022763?language=de" -H "accept: application/json; charset=utf-8" -H "Authorization: Bearer DE_xxxxxxxxxxxxxxxxxxxx"

Remember that such commands for the Exec binding have to be added to the exec.whitelist.

Answer:

{
  "ident": {
    "type": {
      "key_localized": "Device type",
      "value_raw": 2,
      "value_localized": "Tumble dryer"
    },
    "deviceName": "TWH780WP",
    "protocolVersion": 4,
    "deviceIdentLabel": {
      "fabNumber": "000178022763",
      "fabIndex": "40",
      "techType": "TWH780WP",
      "matNumber": "11819590",
      "swids": [
        "5678",
        "25359",
        "25360",
        "20559",
        "25277",
        "5136",
        "20445",
        "25234",
        "4657"
      ]
    },
    "xkmIdentLabel": {
      "techType": "EK057",
      "releaseVersion": "08.10"
    }
  },
  "state": {
    "ProgramID": {
      "value_raw": 2,
      "value_localized": "Cottons",
      "key_localized": "Program name"
    },
    "status": {
      "value_raw": 5,
      "value_localized": "In use",
      "key_localized": "status"
    },
    "programType": {
      "value_raw": 3,
      "value_localized": "Cleaning/Care programme",
      "key_localized": "Program type"
    },
    "programPhase": {
      "value_raw": 514,
      "value_localized": "Drying",
      "key_localized": "Program phase"
    },
    "remainingTime": [
      2,
      7
    ],
    "startTime": [
      0,
      0
    ],
    "targetTemperature": [
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      },
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      },
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      }
    ],
    "temperature": [
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      },
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      },
      {
        "value_raw": -32768,
        "value_localized": null,
        "unit": "Celsius"
      }
    ],
    "signalInfo": false,
    "signalFailure": false,
    "signalDoor": false,
    "remoteEnable": {
      "fullRemoteControl": true,
      "smartGrid": false,
      "mobileStart": false
    },
    "ambientLight": null,
    "light": null,
    "elapsedTime": [
      1,
      9
    ],
    "spinningSpeed": {
      "unit": "rpm",
      "value_raw": null,
      "value_localized": null,
      "key_localized": "Spin speed"
    },
    "dryingStep": {
      "value_raw": 0,
      "value_localized": "Extra dry",
      "key_localized": "Drying level"
    },
    "ventilationStep": {
      "value_raw": null,
      "value_localized": "",
      "key_localized": "Fan level"
    },
    "plateStep": [],
    "ecoFeedback": {
      "currentWaterConsumption": {
        "unit": "l",
        "value": 0
      },
      "currentEnergyConsumption": {
        "unit": "kWh",
        "value": 0.5
      },
      "waterForecast": 0,
      "energyForecast": 0.6
    },
    "batteryLevel": null
  }
}
Response headers
 content-length: 695 

Here i see the power consumption. The task is now to extract the value using some transformation code. Will see if i get this done?

In that case the best solution would be to have the Miele Cloud binding support this. I don’t know if @BjoernLange would be interested in adding channels for water/energy consumption? :slight_smile:

1 Like

Retrieved the power consumption value of the tumble dryer by application of the following JSONPath transformation :

$.state.ecoFeedback.currentEnergyConsumption.value

Coverted the retrieved string to a number in order to calculate power consumption cost.

@BjoernLange
Nevertheless, i would also very much appreciate if you could support the “ecoFeedback” data within the Miele cloud binding. Actually i anyway need both Miele bindings, “Miele@home” and “Miele cloud”, to use all interesting parameters. Both bindings have their advantages versus the other one.