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


I’m currently working some evenings on the Miele@home binding (not to be mistaken with the new cloud-based binding), and now wondering how many are still using this binding?

For me it has been broken since I migrated to file-based configuration and I didn’t even notice for months. Now it’s working again, although my automations for this are somewhat limited at the moment. Mainly I have used it to enable boost on my recuperator (Danfoss Air A2) if the smoke alarm (Nest Protect) is triggered and the oven is running. :slight_smile: And of course to trigger an alarm notification if someone opens the fridge while no one is home.

With there are some more use-cases as it is now possible to track power and water consumption per running program. Using rules this can be aggregated and used for statistical purposes etc.

Now, two concrete questions:

Best regards,
Jacob Laursen

Just found this. I don’t really use this binding because it doesn’t work properly for me. The binding keeps on resetting the network address to, but that is not the address that I have assigned it. When I correct the address in the configuration parameters, it reverts to after a few seconds. In the brief interim it appears to work correctly.


Hi @stephen_winnall,

Since I’ve recently worked on this binding, I might be able to help. So help me help you by providing some details:

  • Which version of openHAB are you running?
  • Which appliances do you have?
  • What is the correct IP address of your XGW 3000 gateway, and what is your netmask?
  • Does mean anything to you? Has it previously been used? Is it on the same subnet?
  • Did you create the XGW3000 thing from auto-discovery?
  • If not, are you using UI-based configuration or file-based?
  • And last, can you enable trace logging and collect this information to be analyzed?

Best regards,
Jacob Laursen

Hi Jacob

Sorry, I’ve been dealing with a lot of non-OH matters recently and have only just seen this.

  • Which version of openHAB are you running?
    2.5.10-1. I am working on migrating to 3.x but have nothing in place yet. I want a clean new architecture for my Smart Home.

  • Which appliances do you have?
    XGW3000, a fridge (K 35563-55 iDF) and an oven (H6860-60BPX); some not networked Miele stuff; and lots of other technologies.

  • What is the correct IP address of your XGW 3000 gateway, and what is your netmask? / - My network is UniFi-based with a number of VLANs. The XGW3000 is in VLAN 32.

  • Does mean anything to you? Has it previously been used? Is it on the same subnet?
    It has no meaning to me. The IP number is in VLAN 0, which is where my core network stuff lives.

  • Did you create the XGW3000 thing from auto-discovery?
    I cannot remember, I’m afraid.

  • If not, are you using UI-based configuration or file-based?

  • And last, can you enable trace logging and collect this information to be analyzed?
    I suppose so. I’m not really familiar with the functionality of the Miele stuff.


Let’s get back to this when you have finished your migration to openHAB 3.2 (or later). If the problem persists after this upgrade, please send the logs and I’ll try to help trouble-shoot and fix this issue.


Hi Jacob

OK by me. It may be a few months yet, but I’ll get to 3.x eventually :face_with_spiral_eyes:


Hi, where can i find the firmware to use xgw 3000 gateway in qivicon home base?
Thanks a lot

Am still using this binding together with the XGW3000. But am missing the channels for water- and power comsumption. Acc. to the binding description, they should be available.

On the Miele iPhone app i can see that both values are provided by the machine.

Has @laursen or anybody an idea what i could do?

Which openHAB version?

openHAB 3.4.0 - snapshot #3133 under Windows10.

Its a washing machine WMV960. Also tried the cloud binding but it does also not show the missing channels.

The most recent related change is here:

If I understand you correctly, you cannot see the channel at all? In this case, if your washing machine thing was created from the UI, can you try to recreate it?

If you see the channels, but don’t receive any values, please check warnings in the log.

1 Like

Sorry, you would need to enable DEBUG logging to see this.

1 Like

Did not see the channels at all. Recreated the washing machine thing and this did the job :smiley:. Also the other channels look a bit different than those comming from my “old” thing. Thanks for your great support.

1 Like

Have a dryer from Miele since this week. Power consumption as well as end time seem to be missing. Would it be possible to add to the binding? Thanks for your support in advance.

Possibly, yes, but I don’t have a tumble dryer myself with support for consumption data through the Zigbee module (only on the display). You would need to enable TRACE logging and look for ExtendedDeviceState binary data and correlate that with the readings from your display (i.e. how does the packet look at 0,1 kWh compared to 0,2 kWh etc.).

I can give you some more guidance later. In the meantime you can get a general idea from this post: Miele XGW 3000 firmware 2.09 and new dishwasher with Wi-Fi | Jacob Laursen's techblog

Which dryer do you have? And can you see power consumption in the Miele app?

1 Like

Thanks for such quick response. Have a TWH780WP and see the power consumption in the Miele app. Will check for log data.

Actually activated thing is: mielecloud:dryer:xgw3000:000178022763
Also tested thing: miele:tumbledryer:Miele_XGW3000:000178022763_0

Power consumption is missing for both but endtime is available for the tumbledryer (miele@home binding).

TRACE log for …binding.miele does only provide data on washingmachine but not on dryer?
Also activated TRACE log for binding .mielecloud. Will evaluate data for next dryer run.

Just to be clear, I’m only working on the binding.miele/Miele@home binding, so for this binding you would need to enable TRACE logging. As far as I know, consumption data is not available in the Public Cloud API, only in the private API used by the Miele@home app.

Yes, understood this difference yesterday. Have setup all items now in the Miele@home binding where my device is called TumbleDryer. Its much more comfortable with respect to time. The Miele cloud binding shows seconds which need to be converted into hh:mm using rules. The Miele@home binding does not need this.

Will research the TRACE log today (next dryer run) and come back.


Explored the log using TRACE. Don’t see too much but it might tell you more:

2022-11-24 15:45:41.003 [TRACE] [.MieleGatewayCommunicationController] - The request '{"jsonrpc":"2.0","id":91534805,"method":"HDAccess/getDeviceClassObjects","params":["hdm:LAN:000178022763#0",true]}' yields '{"id":91534805,"result":[{"DeviceClassType":"Actuator","Operations":[{"Name":"start","Metadata":{"Filter":"false","description":"Start operation which must force the protocol adapter implementation to send Start command to the appliance.","LocalizedID":"Start"}},{"Name":"stop","Metadata":{"Filter":"true","description":"Stop operation which must force the protocol adapter implementation to send Stop command to the appliance.","LocalizedID":"Stop"}}],"DeviceClass":"com.miele.xgw3000.gateway.hdm.deviceclasses.MieleTumbleDryer","Properties":[{"Name":"companyId","Value":"MI","Polling":0,"Metadata":{"Filter":"false","description":"Company ID","access":"R"}},{"Name":"brandId","Value":"MI","Polling":0,"Metadata":{"Filter":"false","description":"Brand ID","access":"R"}},{"Name":"productTypeId","Value":22018,"Polling":0,"Metadata":{"Filter":"false","description":"Company ID","access":"R"}},{"Name":"mieleDeviceType","Value":2,"Polling":0,"Metadata":{"Filter":"false","description":"Miele Device Type","LocalizedValue":"Wäschetrockner","access":"R"}},{"Name":"extendedDeviceState","Polling":0,"Metadata":{"Filter":"false","description":"Extended Device State","access":"RE"}},{"Name":"specificationVersion","Value":0,"Polling":0,"Metadata":{"Filter":"false","description":"Specification Version","access":"R"}},{"Name":"state","Value":5,"Polling":0,"Metadata":{"Filter":"true","description":"Property name for the appliance's current state.","LocalizedID":"Gerätestatus","enum":{"End":"7","Abort":"9","Service":"12","Off":"1","Stand-By":"2","Programmed":"3","Paused":"6","Unknown":"0","Running":"5","Failure":"8","Locked":"145","Not Connected":"255","Waiting to Start":"4"},"LocalizedValue":"In Betrieb","access":"RE"}},{"Name":"internalDeviceState","Value":0,"Polling":0,"Metadata":{"Filter":"false","description":"Internal Device State","access":"RE"}},{"Name":"mieleName","Value":"TWH780WP","Polling":0,"Metadata":{"Filter":"false","description":"User Appliance Name","access":"RWE"}},{"Name":"remoteEnabledFlag","Value":15,"Polling":0,"Metadata":{"Filter":"false","description":"Remote Enabled Flag","access":"RE"}},{"Name":"smartGridEnabledFlag","Value":0,"Polling":0,"Metadata":{"Filter":"false","description":"SmartGrid Enabled Flag","access":"RE"}},{"Name":"programSelectionEnabledFlag","Value":0,"Polling":0,"Metadata":{"Filter":"false","description":"Program Selection Enabled Flag","access":"RE"}},{"Name":"tunnelingVersion","Value":4,"Polling":0,"Metadata":{"Filter":"false","description":"Tunneling Version","access":"R"}},{"Name":"programType","Value":3,"Polling":0,"Metadata":{"Filter":"false","description":"Program Type","access":"RE"}},{"Name":"programId","Value":2,"Polling":0,"Metadata":{"Filter":"false","description":"Property name for the currently selected program on the appliance.","access":"RE"}},{"Name":"phase","Value":2,"Polling":0,"Metadata":{"Filter":"true","description":"Property name for the current phase of a running program on the appliance.","LocalizedID":"Phase","LocalizedValue":"Trocknen","access":"RE"}},{"Name":"rawPhase","Value":514,"Polling":0,"Metadata":{"Filter":"false","description":"Program Phase Raw Value","access":"RE"}},{"Name":"dryingStep","Value":2,"Polling":0,"Metadata":{"Filter":"true","description":"Property name for the current drying step of a running program on the appliance.","LocalizedID":"Trockenstufe","LocalizedValue":"Schranktrocken","access":"RE"}},{"Name":"startTime","Value":0,"Polling":0,"Metadata":{"unit":"min","Filter":"false","description":"Property name for the selected start time of the appliance.","LocalizedID":"Startzeit","access":"RWE"}},{"Name":"duration","Value":131,"Polling":0,"Metadata":{"unit":"min","Filter":"true","description":"Property name for the current duration of the selected program of the appliance.","LocalizedID":"Restzeit","LocalizedValue":"2:11","access":"RE"}},{"Name":"elapsedTime","Value":0,"Polling":0,"Metadata":{"Filter":"false","description":"Total elapsed time of a program running process in minutes","LocalizedID":"Laufzeit","access":"RE"}},{"Name":"finishTime","Value":131,"Polling":0,"Metadata":{"Filter":"false","description":"Finish Time (Relative) in minutes","LocalizedID":"Endzeit","access":"RE"}},{"Name":"signalFailure","Value":false,"Polling":0,"Metadata":{"Filter":"false","description":"Signal Failure","LocalizedID":"Fehler!","access":"RE"}},{"Name":"signalInfo","Value":false,"Polling":0,"Metadata":{"Filter":"false","description":"Signal Info","LocalizedID":"Hinweis","access":"RE"}},{"Name":"signalDoor","Value":false,"Polling":0,"Metadata":{"Filter":"false","description":"Signal Door","LocalizedID":"Tür ist offen!","access":"RE"}},{"Name":"processAction","Polling":0,"Metadata":{"Filter":"false","description":"Process Action","enum":{"":"0","Disable Gas":"8","Enable Gas":"9","Start":"1","Stop Superfreezing":"5","Start Supercooling":"6","Stop Supercooling":"7","Pause":"3","Start Superfreezing":"4","Stop":"2"},"access":"W"}}]}],"jsonrpc":"2.0"}

This contains the strings “ExtendedDeviceState” and “SmartGrid”.

Also see the following lines:

2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - internalDeviceState is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - mieleName is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - remoteEnabledFlag is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - smartGridEnabledFlag is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - programSelectionEnabledFlag is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - tunnelingVersion is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - signalFailure is not a valid channel for a TumbleDryer
2022-11-24 15:38:49.394 [TRACE] [ternal.handler.MieleApplianceHandler] - signalInfo is not a valid channel for a TumbleDryer

Don’t see any data which correlates with actually 0.3 kWh visible in the Miele app. Think that it has to do with SmartGrid?

Detected another issue. Elapsed time remains 00:00 h and is not updated during the dryer run:

This payload was what I needed. Value is missing for ExtendedDeviceState:

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

So unfortunately it will not be possible to get consumption data. There is one other API you could try though: HTTP GET for http://<gateway IP>/Rest/Devices/<uid>/State

The response might contain ExtendedState even if JSON-RPC protocol does not. This could make is possible to support it, although effort would be high as another protocol would need to be implemented. However, for this to make sense we would also need to make sense out of the bytes, i.e. understand how/where energy consumption is stored.

Let me hear the results.