Home Connect Direct Binding (no cloud)

Hi Stefan,

Thanks for testing! I have altered the code. The remaining program time now uses BSH.Common.Option.FinishInRelative and BSH.Common.Option.RemainingProgramTime as source input.

Can you please test again:

OH 4.3.x: https://openhab.bruestel.net/org.openhab.binding.homeconnectdirect-4.3.0-SNAPSHOT-2025-06-09-08-20.jar
OH 5.0.x: https://openhab.bruestel.net/org.openhab.binding.homeconnectdirect-5.0.0-SNAPSHOT-2025-06-09-08-20.jar

Thanks
Jonas

Hi Jonas,

thanks a lot for sharing the updated file. I will run some tests - so far it looks good :slight_smile:
Just came back from vacation :wink:

I want to report another issue I just reproduced.

If the washing is paused and resumed (to add some more items while a program is running already), the binding doesn’t show the correct ActiveProgram anymore once the door is closed again and the program is resumed - ActiveProgram is then UNDEF instead of Cotton (in the example below)

The log file is showing ActiveProgram: 0

Bildschirmfoto 2025-06-19 um 14.38.44
Bildschirmfoto 2025-06-19 um 14.37.56
Bildschirmfoto 2025-06-19 um 14.37.51

Looks all fine to me (but currently I only use state).
Do you plan to put this into the openhab release? I tried the OH5 RC1 but this seems to be the old binding so I switched back to the jar.
Anything specific I should test?

Hi!
Thanks for the binding!
I hope it will be available soon via the normal add-on store.

I have a few new Bosch devices and was able to add them successfully with openHAB 4.3.6.
Apart from the stove, everything was recorded correctly.
The induction hob is only a “generic appliance”.

It worked for me with the following devices:
Dishwasher: Bosch SMV4HB802E
Hood: Bosch DWK81AN65
Hob: Bosch PVS675HB1E

For all those who have just purchased Bosch devices, here is a tip for setting them up:
The devices need 1x Internet access to join the WLAN.
If they are connected directly to a Wi-Fi network that does not have Internet access, they will go on strike and will not connect properly.
So once the Internet is on for the join, they can be locked in the IoT WLAN forever.

1 Like

Dear Jonas,

thanks again for this great binding and all your effort you put into it. We would really appreciate to see it in the 5.1 release.

Is it possible to setup a pull interval for getting more frequent state values of the devices? E.g. the cavity temperature for the ovens? Currently this value is only sent every hour.

Hi Jonas - ist die SNAPSHOT Version bereits im offiziellen OH5.0 mit integriert?

Die Anzeige bei programmiertem Programmstart scheint wieder nicht zu stimmen.

I think the binding is now very stable and I will start in the fall. :smiley:

I’m not really sure, I’ve made a lot of small changes. Now that I’m back from vacation and the weather isn’t so nice anymore, I’ll publish a new version soon.

3 Likes

Hi Jonas,

I’m afraid I have a problem with homeconnectdirect. Despite my ovens being online, responding to power_state and even a sendCommand to eventKey “BSH.Common.Setting.ApplianceDateTime”, I’m unable to set MOST oven programs. I’ve tried a variety of techniques but even selecting an option from the selected_program dropdown fails for the majority of the programs; the oven issues a “power_off” sound and immediately returns to the date/time display. However, selected_program “Drying” and “Pyrolysis” options work as expected but I’ve yet to find any others that work. Is this a ‘profile’ issue? I’ve used homeconnect-profile-downloader to download my profiles for each oven and http://…/homeconnectdirect to upload them.

Some details are:

OS - Kubuntu 22.04

openHAB 5.0.0
Release Build

java --version
openjdk 21.0.8 2025-07-15
OpenJDK Runtime Environment (build 21.0.8+9-Ubuntu-0ubuntu122.04.1)
OpenJDK 64-Bit Server VM (build 21.0.8+9-Ubuntu-0ubuntu122.04.1, mixed mode, sharing)

/usr/share/openhab/addons/org.openhab.binding.homeconnectdirect-5.0.0-SNAPSHOT-2025-06-09-08-20.jar

Thing homeconnectdirect:oven:Baker [haId=“SIEMENS-HR678GES6B-68A40E0591BC”, address=“192.168.80.123”]
{ Channels:
Type switch: SynchronizeWithTimeServer “SyncTime” [ eventKey = “BSH.Common.Setting.SynchronizeWithTimeServer” ]
Type string: TOD “DateTime” [ eventKey = “BSH.Common.Setting.ApplianceDateTime” ]
Type number: setpoint_temperature “SetTemperature” [ eventKey = “BSH.Common.Setting.setpoint_temperature” ]
Type number: ElapsedProgramTime “ElapsedTime” [ eventKey = “BSH.Common.Setting.elapsed_program_time” ]
}
Thing homeconnectdirect:oven:Mica [haId=“SIEMENS-CM678G4S6B-68A40E0436F2”, address=“192.168.80.124”]
{ Channels:
Type switch: SynchronizeWithTimeServer “SyncTime” [ eventKey = “BSH.Common.Setting.SynchronizeWithTimeServer” ]
Type string: TOD “DateTime” [ eventKey = “BSH.Common.Setting.ApplianceDateTime” ]
Type number: setpoint_temperature “SetTemperature” [ eventKey = “BSH.Common.Setting.setpoint_temperature” ]
Type number: ElapsedProgramTime “ElapsedTime” [ eventKey = “BSH.Common.Setting.elapsed_program_time” ]
Type string: MicrowavePowerTest “MicrowavePowerTest” [ eventKey = “Cooking.Oven.Option.MicrowavePower” ]
Type number: DurationTest “DurationTest” [ eventKey = “BSH.Common.Option.Duration” ]
}

Incidentally, I’ve also failed to find a form of json to work with program_command, for example trying {“data”: [ { “uid”: 257, “value”: 9220 } ]} for “Drying”. Please indicate where I might find an example of a valid json command.

I could provide downloaded log and profile .zip files if required but, being a newbie on https://community.openhab.org, I currently see no DM info for you.

Any assistance/advice that you can provide would be greatly appreciated.

UPDATE
I note that failed attempted selected_program settings are followed by RESPONSE “code”: 526 (0x020E - Not Available)
I suspect an incorrect version of the profile has been downloaded/uploaded. I note that the ovens’ firmware were updated (automatically) in March/April 2024 (at the same time as automatic synchronisation of date/time started failing - Siemens failed to provide a solution). Could it be that this updated refUIDs to require a different profile? Further information of the current states of the ovens are:

{
“deviceID”: “SIEMENS-HR678GES6B-68A40E0591BC”,
“eNumber”: “HR678GES6B/30”,
“brand”: “SIEMENS”,
“vib”: “HR678GES6B”,
“mac”: “68-A4-0E-05-91-BC”,
“haVersion”: “60.7”,
“swVersion”: “1.11.4”,
“hwVersion”: “5560056177”,
“deviceType”: “Oven”,
“deviceInfo”: “Oven”,
“customerIndex”: “30”,
“serialNumber”: “387030379485001097”,
“fdString”: “9703”
}

{
“deviceID”: “SIEMENS-CM678G4S6B-68A40E0436F2”,
“eNumber”: “CM678G4S6B/26”,
“brand”: “SIEMENS”,
“vib”: “CM678G4S6B”,
“mac”: “68-A4-0E-04-36-F2”,
“haVersion”: “60.7”,
“swVersion”: “1.11.4”,
“hwVersion”: “5560056177”,
“deviceType”: “Oven”,
“deviceInfo”: “Oven”,
“customerIndex”: “26”,
“serialNumber”: “387010375189001728”,
“fdString”: “9701”
}

UPDATEs 2 (Main oven firmware) & 3 (Microwave firmware and main oven factory reset)

The main oven just updated it’s own firmware (and now the Microwave as well). This is either a massive coincidence or more likely someone at Siemens has spotted this post and taken action. If so, that’s mightily impressive, thanks very much indeed. The good news is that automatic date/time synchronisation is now working again, the not so good news is that the homeconnectdirect selected_program issue appears to be still as outlined above (but I’ve found that the Pizza setting did and still does work along with Drying and I presume Pyrolysis). I’ve modified both oven’s data above to show the new swVersions. A factory reset of the main oven and reconnecting with the Siemens Cloud / App did not result in a change to the profile data apart from dates and credentials.


To answer my own question regarding the syntax of raw json,

Using a uid for Pizza (13351) that is specific to my microwave (Mica) (the uid for the main oven Pizza differs), the following line in an openhab rule works (to set and start running a “Pizza” setting):

Mica_ProgramCommand.sendCommand(‘{ “program” : 13351 }’)

Where “Mica_ProgramCommand” is an item:

String Mica_ProgramCommand “Command” {channel=“homeconnectdirect:oven:Mica:program_command”}

The json was derived from the POST action in the homedirectconnect console associated with selecting option Pizza from the openhab UI selected_program dropdown.

I’ve had a Siemens oven (HM978GNB1) for a month now. It’s really complicated to figure out how all the different programs work. Different parameters are used depending on the program. For example, the internal temperature is always displayed differently. It’s really difficult to standardize this. I think I’ll first remove oven-type home appliances from the binding and only display the most necessary information.

I’m glad you found a way. Thank you for sharing it.

Hello Jonas,

I was taking another look to your Home Connect Direct binding this afternoon. First have to say that is really great job, but after testing it with my home appliance, it lead me 1 or 2 question.

1/

First simple one is about timeline for integration inside openhab.
It’s now at least 9 month since you start to work on this new version of binding.
But you don’t have submit a PR so far for integration.
My point is not to say that it is two long, but I was just a little curious about it.

2/

2nd is about profile downloader.
If I understand, you move it to standalone program because of issue having it directly integrated into Openhab. Perhaps because of authentification flow or some other issues with integrations ?
Do you have plan to try reintegrate it inside Openhab to make configuration easier ?

3/

3rd is about home appliance device description. Today you are using stating device description base on the thing definition in xml resource file (that was already the case in the old binding).

But when looking at it, has there is certainly some common channel between for exemple dishwasher device, like on/off, or Program, there is also a lot of specific channel that is working for only some specific devices.

For exemple, on my coocktop device, a SIEMENS-EX975KXW1E-68A40E39819 I have individual channel for each zone. For example:

  {
    "name": "Cooking.Hob.Status.Zone.100.State",
    "value": "Off"
  },
  {
    "name": "Cooking.Hob.Status.Zone.100.ActiveProgram",
    "value": 12289
  },
  {
    "name": "Cooking.Hob.Status.Zone.100.SelectedProgram",
    "value": 0
  },
  {
    "name": "Cooking.Hob.Status.Zone.100.OperationState",
    "value": "Ready"
  },
  {
    "name": "Cooking.Hob.Status.Zone.100.PowerLevel",
    "value": "Off"
  },
  {
    "name": "Cooking.Hob.Status.Zone.100.Duration",
    "value": 0
  },

But today, they doesn’t appears as channel just after discovering the device.
And I have to manual edit thing channel to add them if I want to use it.

So my question, do you have think to implements ThingTypeProvider / ChannelTypeProvider / ChannelGroupTypeProvider to dynamically registered all available channel base on the profile description / and the result of API calls ? If it seems possible of course, I don’t know in details the HomeConnect API to check if we have sufficient information from it, but I think so.

Thanks,

Laurent.

Does anyone happen to have a home connect connected oven? I just noticed that the current cloud solution does not expose the oven cavity light but the home connect app has it. Was wondering if this one does.

To be honest, I don’t have a schedule. I’ll try to create a PR soon. Since I’m about to embark on a new career path, I’ll have to see if I can find the time. It would be cool to have a second maintainer.

I would like to get rid of the additional tool, but I don’t see a way to do so. I wrote it specifically to make it “easier.” Take a look at how hcpy2 does it. GitHub - hcpy2-0/hcpy: Python tool to talk to Home Connect appliances over the local network (no cloud required)
If anyone has a cool idea, I would be very grateful.

I think that would be a good idea. It makes particular sense in the case of ovens. I find the communication and the various attributes very complicated. I also think it is very difficult to define a generalized version given the different models.

Yes, I have an oven. Using openhab-addons/bundles/org.openhab.binding.homeconnectdirect at main · bruestel/openhab-addons · GitHub, it should definitely be possible to measure the internal temperature.

Sorry, I meant cavity light!

Use case: turn on light and see camera feed to check if there’s something inside before my wife pre heats the oven and burns my pizza…

At least for my oven i neither find an option in the HomeConnect app nor the binding to activate the light. Seems to be directly triggered by the door.

Interesting/ maybe a per device option.