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

Wrong DHW modes in HMC310 #2465

Open
4 of 5 tasks
Sbried opened this issue Mar 12, 2025 · 7 comments
Open
4 of 5 tasks

Wrong DHW modes in HMC310 #2465

Sbried opened this issue Mar 12, 2025 · 7 comments
Labels
enhancement New feature or request
Milestone

Comments

@Sbried
Copy link
Contributor

Sbried commented Mar 12, 2025

DESCRIPTION

I continued to map my manual of the heat pump to the EMS-ESP variables, now I´m reached the DHW mode setting.
We touched the topic already in #2410 where too many modes were selectable. Now, with my appliance, I see the wrong modes.
EMS-ESP offers the states off, low, high, auto and own prog (modes 0, 1, 2, 3, 4) to select, which may result from the case that the program runs through the last else statement, see below.

Image

My appliance offers to select one of the dhw states below:
off, always on eco+, always on eco, always on comfort and own prog (modes 0, 5, 1, 2, 4)
Image

Choosing auto in EMS-ESP (mode 3) is not accepted by my appliance and the dhw mode results in low/eco (mode 1).
I would need for my HMC310 what is defined for the BC400 thermostat.

REQUESTED INFORMATION

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

  • Searched the issue in issues
  • Searched the issue in discussions
  • Searched the issue in the docs
  • Searched the issue in the chat
  • Provide the System information in the area below, taken from http://<IP>/api/system
  {
  "system": {
    "version": "3.7.2-dev.27",
    "uptime": "000+05:36:02.163",
    "uptimeSec": 20162,
    "platform": "ESP32",
    "cpuType": "ESP32-D0WD-V3",
    "arduino": "ESP32 Arduino v2.0.17",
    "sdk": "v4.4.7-dirty",
    "freeMem": 152,
    "maxAlloc": 107,
    "freeCaps": 4170,
    "usedApp": 2242,
    "freeApp": 3454,
    "partition": "app0",
    "flash_chip_size": 16384,
    "resetReason": "Software reset CPU / Software reset CPU",
    "psram": true,
    "psramSize": 4093,
    "freePsram": 4051,
    "model": "BBQKees Gateway Model EMS Gateway E32 V2 v2.0/2024071"
  },
  "network": {
    "network": "Ethernet",
    "hostname": "ems-esp",
    "TxPowerSetting": 0,
    "staticIP": false,
    "lowBandwidth": false,
    "disableSleep": true,
    "enableMDNS": true,
    "enableCORS": false,
    "APProvisionMode": "disconnected",
    "APSecurity": "wpa2",
    "APSSID": "ems-esp"
  },
  "ntp": {
    "NTPStatus": "connected",
    "enabled": true,
    "server": "fritz.box",
    "tzLabel": "Europe/Amsterdam"
  },
  "mqtt": {
    "MQTTStatus": "connected",
    "MQTTPublishes": 6637,
    "MQTTQueued": 0,
    "MQTTPublishFails": 0,
    "MQTTReconnects": 0,
    "enabled": true,
    "clientID": "esp32-2cb865e4",
    "keepAlive": 60,
    "cleanSession": false,
    "entityFormat": 0,
    "base": "ems-esp",
    "discoveryPrefix": "homeassistant",
    "discoveryType": 0,
    "nestedFormat": 1,
    "haEnabled": true,
    "mqttQos": 0,
    "mqttRetain": false,
    "publishTimeHeartbeat": 60,
    "publishTimeBoiler": 10,
    "publishTimeThermostat": 10,
    "publishTimeSolar": 10,
    "publishTimeMixer": 10,
    "publishTimeWater": 10,
    "publishTimeOther": 10,
    "publishTimeSensor": 10,
    "publishSingle": false,
    "publish2command": false,
    "sendResponse": false
  },
  "syslog": {
    "enabled": false
  },
  "sensor": {
    "temperatureSensors": 0,
    "temperatureSensorReads": 0,
    "temperatureSensorFails": 0,
    "analogSensors": 0,
    "analogSensorReads": 0,
    "analogSensorFails": 0
  },
  "api": {
    "APICalls": 137,
    "APIFails": 4
  },
  "bus": {
    "busStatus": "connected",
    "busProtocol": "Buderus",
    "busTelegramsReceived": 76917,
    "busReads": 18390,
    "busWrites": 0,
    "busIncompleteTelegrams": 4,
    "busReadsFailed": 0,
    "busWritesFailed": 0,
    "busRxLineQuality": 100,
    "busTxLineQuality": 100
  },
  "settings": {
    "boardProfile": "E32V2",
    "locale": "de",
    "txMode": 1,
    "emsBusID": 11,
    "showerTimer": false,
    "showerMinDuration": 180,
    "showerAlert": false,
    "hideLed": false,
    "noTokenApi": false,
    "readonlyMode": false,
    "fahrenheit": false,
    "dallasParasite": false,
    "boolFormat": 5,
    "boolDashboard": 1,
    "enumFormat": 1,
    "analogEnabled": true,
    "telnetEnabled": true,
    "maxWebLogBuffer": 50,
    "modbusEnabled": false,
    "forceHeatingOff": false,
    "developerMode": true
  },
  "devices": [
    {
      "type": "boiler",
      "name": "CUH/Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",
      "deviceID": "0x08",
      "productID": 172,
      "brand": "",
      "version": "02.03",
      "entities": 155,
      "handlersReceived": "0xBF 0xC2 0xD1 0xE3 0xE4 0xE5 0xE9 0x0494 0x0495 0x048F",
      "handlersFetched": "0x14 0xE6 0xEA 0x048D 0x048A 0x04A2 0x0485 0x0486 0x0492 0x0488 0x0484 0x048B 0x0491 0x0499 0x049C 0x049D 0x02CC 0x04AA 0x02D6",
      "handlersPending": "0x10 0x11 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0x28 0x04AE 0x04AF 0x04A5 0x04A7",
      "handlersIgnored": "0xE7 0x02E0 0x02EA 0x061E 0x0240 0x049F 0x04A0 0x04A3 0xF7 0x2E 0x3B"
    },
    {
      "type": "thermostat",
      "name": "HMC310/RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",
      "deviceID": "0x10",
      "productID": 158,
      "brand": "",
      "version": "73.07",
      "entities": 72,
      "handlersReceived": "0x06 0x02BA 0x02BB 0x02BC 0x02BD 0x02BE 0x02BF 0x02C0 0x031D 0x0267",
      "handlersFetched": "0x02A5 0x02B9 0x02AF 0x029B 0x0471 0x02CC 0x0467 0x0291 0x0292 0x0293 0x0294 0x02F5 0x023A 0x0240 0xBB 0x023E 0x0269",
      "handlersPending": "0xA3 0xA2 0x12 0x13 0x02A6 0x02B0 0x029C 0x0472 0x02A7 0x02B1 0x029D 0x0473 0x02A8 0x02B2 0x029E 0x0474 0x02A9 0x02B3 0x029F 0x0475 0x02AA 0x02B4 0x02A0 0x0476 0x02AB 0x02B5 0x02A1 0x0477 0x02AC 0x02B6 0x02A2 0x0478 0x02CE 0x0468 0x02D0 0x0469 0x02D2 0x046A 0x02F6 0x031B 0x031E 0x016E",
      "handlersIgnored": "0x0508 0x0509 0x050A 0x0507 0x0239 0xBF"
    },
    {
      "type": "thermostat",
      "name": "RC100.2 H/RC100H, CR10H",
      "deviceID": "0x38",
      "productID": 200,
      "brand": "",
      "version": "23.02",
      "entities": 3,
      "handlersReceived": "0x042B 0x047B",
      "handlersPending": "0x0273 0x0A6A",
      "handlersIgnored": "0xBF"
    },
    {
      "type": "gateway",
      "name": "MX300/WiFi module",
      "deviceID": "0x48",
      "productID": 252,
      "brand": "Buderus",
      "version": "11.01",
      "entities": 0,
      "handlersIgnored": "0x2040 0xF9 0x0495 0x0494 0x3B 0xE5 0xE9 0x0CBD"
    },
    {
      "type": "custom",
      "name": "custom",
      "entities": 4
    }
  ]
}

TO REPRODUCE

Only possible if you have a HMC310

EXPECTED BEHAVIOUR

Have the selectable states off, always on eco+, always on eco, always on comfort and own prog to choose from

SCREENSHOTS

Already in the description

ADDITIONAL CONTEXT

n/a

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

@proddy
Copy link
Contributor

proddy commented Mar 22, 2025

Do you want to make the change in the code yourself and test? looks like you know you way around the source code

@Sbried
Copy link
Contributor Author

Sbried commented Mar 22, 2025

Let me think about. But I would @MichaelDvP ´s advice how to approach. I don´t have an overview of the whole code. Creating a new device flag like ´EMS_DEVICE_FLAG_HMC310´ may be one way but this, I think, would have an impact in many places of the code. Maybe there is a better and easier way to achieve the goal.

@MichaelDvP
Copy link
Contributor

ProductId 158 is now the only thermostat with FLAG_RC300 and covers RC300, RC310 and others. If we change this, a lot of users will complain. Seems Bosch changes options with different software versions within same productId.
Only possible solution i see, is to add a flag change based on software version.
emsesp.cpp, line 1317:

    if (product_id == 158 && strncmp(version,"73",2) == 0) {
        flags        = DeviceFlags::EMS_DEVICE_FLAG_BC400;
        default_name = "HMC310";
    }

@proddy proddy added the enhancement New feature or request label Mar 23, 2025
@proddy proddy added this to the v3.7.x milestone Mar 23, 2025
@MichaelDvP
Copy link
Contributor

I have made this change in https://github.com/MichaelDvP/EMS-ESP32/releases/tag/latest
The BC400 also changes the HC-mode, does this work with the HMC310, or do we need an extra Flag?

@Sbried
Copy link
Contributor Author

Sbried commented Mar 25, 2025

Today I had the chance to try it. HC mode just stays empty:

Image

The thing is that the HMC310 uses 0x02B9 offset 0 for the HC mode and the BC400 uses 0x02B9 offset 21 to control the HC mode. So, it just stays empty.
I think a new flag for HMC300/HMC310 may be the only solution.

@MichaelDvP
Copy link
Contributor

@Sbried
Copy link
Contributor Author

Sbried commented Mar 26, 2025

Works good :-) Thanks for implementing the new flag.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants