Binding Request : Buderus web gateway

Hi Steffen,
you can set the binding to DEBUG in the karaf console.
So when starting it up the binding queries the device for available services and will dump the information to the log file.
if you find the service / value you are looking for you can ask @Markinus is it would be possible to add that information.
You are right with the number of different devices, depending on their configuration and firmware they all report differently. E.g. I run a Junkers gas heating with an integrated heat pump. The heat pump part does not show up in the KM200 (MB LAN2) which is true for the official app as well.
Besides that there are features like the holiday periods which are shown, but are not fully supported yet. in @_David s posting above you see that the devices sometime report different values for the same things ( on / high ) which is tricky to filter / map in the binding.
Maybe a solution like JSON based mapping tables for the devices would help here - in case a device delivers things differently a new mapping configuration could be build and added to the binding so it can have a stabilised generic channel set in direction to the end user. With this in place adding support for new heating devices might be easier than having multiple special branches and exceptions in the binding code. Plus it would not only rely on @Markinus limited time to maintain it.
But this would require major rework on the binding I guess.
Regards
Oggerschummer

Hey again,
it looks like the real interesting things are hidden behind $$protected$$ whatever that means in terms of API. I doublechecked the post here and unfortunately @Markinus already stated, there is currently no information how to get those values:

0;0;0;0;$$PROTECTED$$;/heatSources/total/energyMonitoring/consumedEnergy;;;
0;0;0;0;$$PROTECTED$$;/heatSources/total/energyMonitoring/compressor;;;
and so on

Or is there anything new here?
are you in contact with those Buderus Tech Support maybe?

Buderus will afaik not help, there is no support for accessing the gateway - actually the communication protocol was never released and it is encrypted (thatā€™s why you need to generate the keys).
How to access the protected values is unknown, maybe it only works for Buderus or it is protected cause it does not work well - just speculations.
Maybe there is more information in the FHEM community, they are interfacing this to.

Yes, thatā€™s correct. There are no informations how to read these values. If I try to read it then the device returns an error code.

btw. if you will find in you log something like ā€œunknown serviceā€ then I could take a look to it. In this case itā€™s maybe possible ot extend this binding.

Hello everyone,
I also run this binding (currently km200 v2.4) for my setup is a Junkers STE-100 with MB LAN2 (/gateway/versionFirmware;01.05.01, /gateway/versionHardware;iCom_low_CAN_v1;). It is basically a water/water heat pump which supplies energy to the boiler and floor heating.

  • The binding/things run pretty smooth, but after every other week or so, the binding stops working for unknown reason. I checked the log, but no signs. I activated the ā€œDEBUGā€ log level, to have more information on the next occurence. The mobile app has no problem connecting to the gateway, when I know the binding has failed.
  • My main ā€œreasonā€ though to write here, is the fact, I am missing information from the heating like is the compressor ON/OFF - what is the incoming and outgoing water temperature of the heating etc.

I did some research regarding the endpoints which supposedly are supported by the different infrastructures, one souce I found was from smarthome-ng:


Another one, I grabbed via network sniffing are here
https://pastebin.com/5aYR9RtP

i.e. /systemStates/compressor and /heatingCircuits/hc1/actualSupplyTemperature are of particula interest for me.

Sadly I cannot implement these endpoints myself, because my JAVA knowledge is simply not enough advanced to add these.

tl;tr: Problem 1: Binding stops working - log with debug level DEBUG will be provided / Problem 2: I miss data from the binding, which are not yet supported

Problem 1: Same here. I could not find a real solution. My workaround is a small cronjob with restarts the binding every night.

Hi,

I will take a look to your problem but it could take some days because Iā€™m very busy in the moment.
Please enable debug, restart the system and send be the whole logfile after full initalization. (Please remove your password from log).
The /systemStates/compressor path is new for me. I will take a look whether my system is supporting it too. If not then I will need some more informations from your system.
But as first send me your log please.
Greetings
Markus

Hi,

try : this version. I added systemStates to the supportet apis. You should see a new thing named systemStates. I cannot test is because my system is not supporting it.
(Uninstall this binding and copy the file to the addonds folder).

Greetings
Markus

Hey Markus, thanks for the fast reply and the snapshot. The snapshot recognizes the systemStates and displays more endpoints than I expected:

00:42:04.734 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: refEnum service: /systemStates
00:42:04.734 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;refEnum;/systemStates;;;
00:42:04.735 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: floatValue service: /systemStates/additionalHeater
00:42:04.735 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;floatValue;/systemStates/additionalHeater;0.000000;;0.000000;100.000000;%
00:42:04.735 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/ColdCarrierPumpMotorProtection
00:42:04.735 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/ColdCarrierPumpMotorProtection;engaged;engaged|not_engaged;;;
00:42:04.735 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/lowPressureState
00:42:04.736 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/lowPressureState;not_engaged;engaged|not_engaged;;;
00:42:04.736 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/highPressureState
00:42:04.736 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/highPressureState;not_engaged;engaged|not_engaged;;;
00:42:04.736 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/CompressorMotorProtection
00:42:04.736 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/CompressorMotorProtection;not_engaged;engaged|not_engaged;;;
00:42:04.737 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/alarmPowerSupply
00:42:04.737 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/alarmPowerSupply;not_engaged;engaged|not_engaged;;;
00:42:04.737 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/compressor
00:42:04.737 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/compressor;OFF;ON|OFF;;;
00:42:04.737 [DEBUG] [ab.binding.km200.internal.KM200Device] - List type: stringValue service: /systemStates/summaryAlarm
00:42:04.738 [DEBUG] [ab.binding.km200.internal.KM200Device] - 1;0;0;0;stringValue;/systemStates/summaryAlarm;OFF;ON|OFF;;;
00:42:04.744 [DEBUG] [.internal.handler.KM200GatewayHandler] - Add Property rootPath: /systemStates

However, I was not able to add a thing (via PaperUI) - in the log I get following error:
2019-03-24 00:33:09.512 [WARN ] [g.discovery.internal.PersistentInbox] - Cannot create thing. No binding found that supports creating a thing of type km200:systemStates.

On the positive side, I know now we can get the information out of the MB LAN 2 gateway, which is great.

Hi,

that was what I ment with ā€œI cannot test itā€. I simple forgott something.
Here is a new version. This version should works now.

Greetings
Markus

It works flawless. I will leave it running and see if this 2.5. snapshot runs into problems. May take a few days. Thanks Markus.

Ok, great. I will wait some days and then commit it into the next version.

Hello @Markinus,

small question regarding the data delivered by the binding:
The values returned for e.g. temperatures are delivered with 15 decimal places - seems
to be some sort of precision issue.
This causes the update of linked items to be triggered very often, even if the actual value does not
really change. From my experience and from what I see on the console of the heating or the Buderus App the precision of the sensors is one decimals in the best case.
Is it possible that the binding cuts of these useless decimals (round to one single decimal) to avoid triggering unnecessary updates ? Otherwise I have to set up ā€œmirrorā€ items and feed them by a rounding rule when using them as data basis for Grafana.
Best Regards
Thomas

Edit: Just did a research with binding set to debug:
The data is received correctly from the device, the number of decimals fit.
Somehow the data given to OH is handled with the wrong precision - IĀ“ve seen this when e.g. using float instead of double in a different project. Somewhere in that direction I assume an error is located.

Example of what happens from the log:

km200_appliance_817210159_appliance_actualSupplyTemperature changed from 55.70000076293945 to 55.79999923706055

Thomas

Iā€™ve given the latest Beta binding a try myself and do not see issues there (the new systemStates is not provided by my heating), so there seem to be no side-effect (for me).

Hi,

hmm, that is a bit strange. Iā€™m using bigdecimal for this values to the precision should be ok.
I will think about itā€¦

Greetings
Markus

that is a bit strange

Guess it is more than one single bit that is strange :joy:
SCNR

Update: running flawlessly and also reporting nicely since more than 4 weeks now. Thanks @Markinus! Now the next target would be to find out the used in- and outgoing temperature of the heating. Did you check https://github.com/smarthomeNG/plugins/blob/master/buderus/URLs.md for missing paths?

Hi,

this binding needs the base paths only (like systemStates) . The other stuff inside of the paths is detected automatically. You should take a look to the heating circuits (hc1). Here is inside my hardware configuration a value called ā€œactualSupplyTemperatureā€. Maybe you will find some other sensor values too.
Greetings
Markus

Same behaviour here (number of decimal places; Junkers with MB Lan 2). Did you find a solution?