Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get/set compressor max power #1475

Closed
5 tasks
petslane opened this issue Dec 3, 2023 · 7 comments
Closed
5 tasks

Get/set compressor max power #1475

petslane opened this issue Dec 3, 2023 · 7 comments

Comments

@petslane
Copy link

petslane commented Dec 3, 2023

I have Bosch Compress CS7800i LW. From HVAC screen, I can change the heat pump "Max. power f. compressor". This is the maximum power heat pump can work in percentage.

On 1. December somewhere at 15:00 I set the max to 85%. From HA history, I can see that it works, although the max speed is actually 78%, not 85%:
image

I would like to see that max compressor power setting from HA and also I would like to change it from HA.

I thought that "burner selected max power (selburnpow)" is for that, but when i write something to that, then this value will be set to "burner set power (setburnpow)" and "burner selected max power (selburnpow)" remains unchanged. And this setting in HVAC actually does not change.

I opened a telnet connection, started "watch on", and changed the setting from HVAC to 83%, then 86%, and then 90%. From telnet logs, i found that HpPower at index 18 is showing that settings:

petslane@mf:~$ grep HpPower test2.log 
001+05:56:04.736 N 2: [emsesp] Me(0x0B) -R-> boiler(0x08), HpPower(0x048D), length: 0x19
001+05:56:04.773 N 3: [emsesp] boiler(0x08) -W-> Me(0x0B), HpPower(0x048D), data: 03 00 10 30 1F 45 00 01 01 00 00 3C 00 00 00 2B 17 4E 53 00 00 0B 50
001+05:56:06.324 N 12: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 45 00 01 01 00 00 3B 00 00 00 2B 17 4E 53 00 00 0B 50
001+05:56:09.648 N 34: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 44 00 01 01 00 00 3B 00 00 00 2B 17 4E 53 00 00 0B 50
001+05:56:40.438 N 120: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 40 00 01 01 00 00 3B 00 00 00 2B 16 4D 53 00 00 0B 50
001+05:56:43.413 N 121: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 40 00 01 01 00 00 3B 00 00 00 2B 17 4D 53 00 00 0B 50
001+05:56:58.063 N 158: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 42 00 01 01 00 00 3B 00 00 00 2B 16 4D 53 00 00 0B 50
001+05:56:59.439 N 160: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 42 00 01 01 00 00 3B 00 00 00 2A 17 4D 53 00 00 0B 50
001+05:57:03.414 N 163: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 44 00 01 01 00 00 3B 00 00 00 2B 17 4D 53 00 00 0B 50
001+05:57:05.088 N 174: [emsesp] Me(0x0B) -R-> boiler(0x08), HpPower(0x048D), length: 0x19
001+05:57:05.125 N 175: [emsesp] boiler(0x08) -W-> Me(0x0B), HpPower(0x048D), data: 03 00 10 30 1F 43 00 01 01 00 00 3B 00 00 00 2B 17 4E 53 00 00 0B 50
001+05:57:06.163 N 181: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 44 00 01 01 00 00 3B 00 00 00 2A 17 4E 53 00 00 0B 50
001+05:57:22.465 N 271: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 56 00 00 0B 50
001+05:57:25.039 N 281: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 56 00 00 0B 50
001+05:57:26.701 N 289: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 56 00 00 0B 50
001+05:57:50.614 N 331: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1E 44 00 01 01 00 00 3B 00 00 00 2B 17 4E 56 00 00 0B 50
001+05:57:58.077 N 343: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 44 00 01 01 00 00 3B 00 00 00 2B 17 4D 56 00 00 0B 50
001+05:57:58.453 N 344: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 44 00 01 01 00 00 3B 00 00 00 2B 17 4D 56 00 00 0B 50
001+05:58:04.454 N 355: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 16 4D 56 00 00 0B 50
001+05:58:05.028 N 358: [emsesp] Me(0x0B) -R-> boiler(0x08), HpPower(0x048D), length: 0x19
001+05:58:05.065 N 359: [emsesp] boiler(0x08) -W-> Me(0x0B), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 16 4D 56 00 00 0B 50
001+05:58:07.440 N 375: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4E 56 00 00 0B 50
001+05:58:26.516 N 472: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3C 00 00 00 2B 17 4E 5A 00 00 0B 50
001+05:58:36.242 N 479: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 5A 00 00 0B 50
001+05:58:47.566 N 499: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 5A 00 00 0B 51
001+05:59:04.780 N 531: [emsesp] Me(0x0B) -R-> boiler(0x08), HpPower(0x048D), length: 0x19
001+05:59:04.817 N 532: [emsesp] boiler(0x08) -W-> Me(0x0B), HpPower(0x048D), data: 03 00 10 30 1F 46 00 01 01 00 00 3B 00 00 00 2B 17 4D 5A 00 00 0B 51

From the source code, it looks like Boiler::process_HpPower does not read index 18 at all.

For testing purposes, is it possible to write a new value there using telnet? And if it works, make a separate entity for it?

Using EMS-ESP version v3.6.5-dev.2

PROBLEM DESCRIPTION

A clear and concise description of what the problem is.

REQUESTED INFORMATION

Make sure your have performed every step and checked the applicable boxes before submitting your issue. Thank you!

  System information output here:

TO REPRODUCE

Steps to reproduce the behavior:

EXPECTED BEHAVIOUR

A clear and concise description of what you expected to happen.

SCREENSHOTS

If applicable, add screenshots to help explain your problem.

ADDITIONAL CONTEXT

Add any other context about the problem here.

(Please, remember to close the issue when the problem has been addressed)

@MichaelDvP
Copy link
Contributor

In telnet you can use the send command for a raw telegram:
call system send "0B 08 FF 12 03 8D xx" with xx the new value in hex.
Easier is to use web and add a custom entity with device 08, type 48D, offset 18 and make it writeable. This will show up in dashboard and mqtt. If it works we can add the entity.

BTW: your methode is best for sensor values, for settings it's easier to check the log for the command telegram from thermostate to boiler e.g. thermostat(0x10) -W -> Boiler(0x08), HPPower(0x48D) data: 53 (offset 18) when changing the value (for themostate values it is a broadcast to All)

@petslane
Copy link
Author

petslane commented Dec 3, 2023

Easier is to use web and add a custom entity with device 08, type 48D, offset 18 and make it writeable. This will show up in dashboard and mqtt. If it works we can add the entity.

Thank you, with this I can read current setting.
image

But when I try to change it, then nothing happens.

000+15:30:16.505 I 1586: [command] Calling command 'custom/pump_max_power' (set custom value on ems) with value 90
000+15:30:16.524 N 1587: [emsesp] boiler(0x08) -B-> All(0x00), UBAMonitorSlowPlus2(0xE3), data: 01 00 01 00 00 08 00 00 00 00 00 01 BC 56 00 50
000+15:30:16.726 N 1588: [emsesp] boiler(0x08) -B-> All(0x00), UBAMonitorSlowPlus(0xE5), data: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 (offset 2)
000+15:30:16.927 N 1589: [emsesp] boiler(0x08) -B-> All(0x00), UBAMonitorWWPlus(0xE9), data: 37 01 C8 01 9E 00 00 00 00 41 3C 00 00 00 00 00 00 00 00 00 00 00 00 37 02
000+15:30:17.160 N 1590: [emsesp] boiler(0x08) -B-> All(0x00), ?(0x02D6), data: 01 00 00 00 00 30
000+15:30:17.355 N 1591: [emsesp] boiler(0x08) -B-> All(0x00), ?(0x0489), data: 00 00 00 00 80 00 00 00 00 00 00 00 00 7B
000+15:30:17.553 N 1592: [emsesp] boiler(0x08) -B-> All(0x00), HpPower(0x048D), data: 03 00 10 30 23 4C 00 01 01 00 00 42 00 00 00 32 19 56 55 00 00 0A 55
000+15:30:17.798 N 1593: [emsesp] gateway(0x48) -R-> thermostat(0x10), ?(0xF9), length: 0x11
000+15:30:17.858 N 1594: [emsesp] thermostat(0x10) -W-> gateway(0x48), ?(0xF9), data: FF 01 B0 05 0B 00 00 00 19 00 00 00 23 00 00 00 3C 00 00 00 23
000+15:30:17.901 N 1595: [emsesp] boiler(0x08) -B-> All(0x00), HpTemperatures(0x048F), data: 03 02 01 BC 01 CA 01 6C 00 1D 00 01 00 00 02 EC 01 84 7F FF FF F3

Any advice on how to change this setting from EMS-ESP?

@MichaelDvP
Copy link
Contributor

Seems 0x48D is only monitoring the value and is not writeable. You have to search for a setting telegram. Try to change the value on the thermostat and log what the thermostat sends to the boiler.

@petslane
Copy link
Author

petslane commented Dec 4, 2023

So, I changed pump max power to 99%, to 98%, to 97%, to 96%, to 95%, to 100%. Looks like these telegrams are setting the values:

000+23:11:26.582 N 2: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 63 (offset 31)
000+23:11:29.732 N 13: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 62 (offset 31)
000+23:11:33.059 N 19: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 61 (offset 31)
000+23:11:36.084 N 25: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 60 (offset 31)
000+23:11:40.283 N 36: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 5F (offset 31)
000+23:11:43.658 N 44: [emsesp] thermostat(0x10) -W-> boiler(0x08), HPSilentMode(0x0484), data: 64 (offset 31)

This also means that this value can be also read from HPSilentMode at offset 31.

000+23:28:08.194 N 71: [emsesp] Me(0x0B) -R-> boiler(0x08), HPSilentMode(0x0484), length: 0x19
000+23:28:08.232 N 72: [emsesp] boiler(0x08) -W-> Me(0x0B), HPSilentMode(0x0484), data: 01 00 23 2D 06 00 00 00 00 02 00 F6 28 12 02 00 05 19 0A 0A 1E 0D 07 00 0A
000+23:28:08.544 N 73: [emsesp] Me(0x0B) -R-> boiler(0x08), HPSilentMode(0x0484), length: 0x19 (offset 25)
000+23:28:08.582 N 74: [emsesp] boiler(0x08) -W-> Me(0x0B), HPSilentMode(0x0484), data: 01 90 00 F6 00 00 64 00 00 00 00 00 00 00 10 00 01 64 54 20 02 01 00 00 11 (offset 25)
000+23:28:08.819 N 75: [emsesp] Me(0x0B) -R-> boiler(0x08), HPSilentMode(0x0484), length: 0x19 (offset 50)
000+23:28:08.845 N 76: [emsesp] boiler(0x08) -W-> Me(0x0B), HPSilentMode(0x0484), data: 00 00 58 1C 00 00 01 00 00 01 00 00 00 (offset 50)

Added custom entity like this:
image

I can not set the pump max power.

From the source code, looks like Boiler::process_HpSilentMode is not processing offset 31. Maybe this should be added? Not sure if this telegram offset is my heat pump model specific, but from the source code, I didn't notice any model specific code. Are these telegram messages same for all Bosch models?

@MichaelDvP
Copy link
Contributor

This looks ok to me, it's the right custom setting. It could take a minute for custom values to show up, but it should work. What happend when you set a new value by dashboard - custom entitiy? You should see the read/write of offset 31 in the log. Is it overwritten by thermostat?

The process function is not processing offset 31 because you have determined the meaning now and we did not know about before.

@petslane
Copy link
Author

petslane commented Dec 4, 2023

I can not set the pump max power.

Oh, sorry for the typo. I meant that I can now set the pump max power.

When I change this setting in HVAC, then it updates in HA and if I change it from HA, then it updates in HVAC.

@MichaelDvP
Copy link
Contributor

Ok, i'll add it to dev and make a PR.

proddy added a commit that referenced this issue Dec 4, 2023
@proddy proddy closed this as completed in 7b9a04e Mar 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants