emsesp / EMS-ESP32

ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps
https://emsesp.github.io/docs
GNU Lesser General Public License v3.0
628 stars 107 forks source link

improve EMS brand detection #2073

Open proddy opened 1 month ago

proddy commented 1 month ago

EMS-ESP tries to determine the manufacturer/brand (Buderus, Sieger, Junkers, Bosch, Nefit etc..) from each connected EMS device by reading the last byte from the Version 0x02 telegram (in emsesp.cpp::process_version()).

But it does a poor job and only detects a few brands correctly. Let's improve this, ask the community for make/model and the results of a read <deviceID> 2 to correctly build the mapping.

MichaelDvP commented 1 month ago

Good idea, i think the 2nd and 3rd identifier WILL gives some more info, also for the thermostats with same 1st ID. I'll start with my system: Type Brand Name DeviceID data

Boiler      Buderus GB125   (0x08): data: 48 03 00 4B 04 1C 00 00 00 00
Controller  Buderus BC10    (0x09): data: 44 02 03
Thermostat  Buderus RC35    (0x10): data: 56 01 12
Mixer       Buderus MM10    (0x21): data: 45 02 01
Solar       Buderus SM10    (0x30): data: 49 02 00
proddy commented 1 month ago

Mine:

Boiler       Nefit Trendline (0x08):     data 7B 06 01 00 00 00 00 00 00 04
Controller   BC10 (0x09):                data BE 01 03
Thermostat   Nefit Moduline 300 (0x17):  data 4D 03 03

Notes

VlastiBroucek commented 1 month ago

Mine (I am including more data FYI, since the device 0x08 and 0x09 return same string)...

ems-esp:$ show devices
These EMS devices are currently active:

boiler: Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3 (DeviceID:0x08, ProductID:95, Version:12.16)
 Received telegram type IDs: 0x10 0x11 0x15 0x1C 0x18 0x19 0x34 0x2A 0x04
 Fetched telegram type IDs: 0x14 0x16 0x33
 Pending telegram type IDs: 0xBF 0xC2 0x1A 0x35 0x26
 Ignored telegram type IDs: 0x23

thermostat: RC200/CW100 (DeviceID:0x18, ProductID:157, Version:43.02)
 Received telegram type IDs: 0x06 0xA2 0x31D
 Fetched telegram type IDs: 0x2A5 0x2B9 0x2AF 0x29B 0x291 0x2F5 0x23A
 Pending telegram type IDs: 0xA3 0x12 0x13 0x471 0x2A6 0x2BA 0x2B0 0x29C 0x472 0x2A7 0x2BB 0x2B1 0x29D 0x473 0x2A8 0x2BC 0x2B2 0x29E 0x474 0x2A9 0x2BD 0x2B3 0x29F 0x475 0x2AA 0x2BE 0x2B4 0x2A0 0x476 0x2AB 0x2BF 0x2B5 0x2A1 0x477 0x2AC 0x2C0 0x2B6 0x2A2 0x478 0x2CC 0x467 0x2CE 0x468 0x292 0x2D0 0x469 0x293 0x2D2 0x46A 0x294 0x31B 0x31E 0x267 0x240 0xBB 0x23E
 Ignored telegram type IDs: 0xBF

controller: HT3 (DeviceID:0x09, ProductID:95, Version:12.16)

ems-esp:$ read 0x08 2
001+03:26:24.319 N 1: [emsesp] boiler(0x08) -W-> Me(0x0B), Version(0x02), data: 5F 0C 10 00 00 00 00 00 00 00
ems-esp:$ read 0x09 2
001+03:29:46.595 N 2: [emsesp] controller(0x09) -W-> Me(0x0B), Version(0x02), data: 5F 0C 10 00 00 00 00 00 00 00
ems-esp:$ read 0x18 2
001+03:31:13.439 N 3: [emsesp] thermostat(0x18) -W-> Me(0x0B), Version(0x02), data: 9D 2B 02 00 FF 00 00 00 00
ems-esp:$

These are Australian market.

I can send PDFs with installation manuals if they would be of any help.

SoftVienka commented 1 month ago

thermostat Bosch CW100 thermostat(0x18) -W-> me(0x0B), Version(0x02), data: 9D 29 09 00 FF 00 00 00 00

boiler Bosch Condens 2300i W (GC2300i W 24 P 23) boiler(0x08) -W-> me(0x0B), Version(0x02), data: EA 05 06 00 00 00 00 00 00 01 00 00

Delta1977 commented 1 month ago

Boiler: Buderus Logamax GB172i.2-15KW Thermostat Buderus RC220 Controller: Internal Buderus BC400

ems-esp:$ show devices
These EMS devices are currently active:

boiler: Buderus Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2 (DeviceID:0x08, ProductID:195, Version:05.06)
 Received telegram type IDs: 0xBF 0xC2 0x14 0x15 0xD1 0xE3 0xE4 0xE5 0xE9 0x2E 0x3B 0x04
 Fetched telegram type IDs: 0xE6 0xEA 0x28
 Pending telegram type IDs: 0x10 0x11 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A
 Ignored telegram type IDs: 0x2E0 0x2EA 0xD7 0xD8 0x2D6 0x29B 0x17 0x36

thermostat: RT800, RC220 (DeviceID:0x38, ProductID:3, Version:21.04)
 Received telegram type IDs: 0x42B 0x47B
 Fetched telegram type IDs:
 Pending telegram type IDs: 0x273 0xA6A
 Ignored telegram type IDs: 0xBF 0x3B

thermostat: UI800, BC400 (DeviceID:0x10, ProductID:4, Version:49.07)
 Received telegram type IDs: 0x06 0x2BA 0x2BB 0x2BC 0x267
 Fetched telegram type IDs: 0x2A5 0x2B9 0x2AF 0x29B 0x2CC 0x291 0x292 0x293 0x294 0x2F5 0x2F6 0x23A 0x240
 Pending telegram type IDs: 0xA3 0xA2 0x12 0x13 0x471 0x2A6 0x2B0 0x29C 0x472 0x2A7 0x2B1 0x29D 0x473 0x2A8 0x2B2 0x29E 0x474 0x2A9 0x2BD 0x2B3 0x29F 0x475 0x2AA 0x2BE 0x2B4 0x2A0 0x476 0x2AB 0x2BF 0x2B5 0x2A1 0x477 0x2AC 0x2C0 0x2B6 0x2A2 0x478 0x467 0x2CE 0x468 0x2D0 0x469 0x2D2 0x46A 0x31B 0x31D 0x31E 0xBB 0x23E 0x269
 Ignored telegram type IDs: 0xC4 0x31 0xBF 0x3B

ems-esp:$ read 08 2
001+08:01:14.651 N 1: [emsesp] boiler(0x08) -W-> me(0x0B), Version(0x02), data: C3 05 06 EF 02 12 00 00 00 03 00 00
ems-esp:$ read 38 2
001+08:01:20.762 N 2: [emsesp] thermostat(0x38) -W-> me(0x0B), Version(0x02), data: 03 15 04 00 FF
ems-esp:$ read 10 2
001+08:01:29.691 N 3: [emsesp] thermostat(0x10) -W-> me(0x0B), Version(0x02), data: 04 31 07 00 FF 00 00 00 00 00
kwertie01 commented 1 month ago
Boiler       Nefit Smartline HRC24/CW4 (0x08):  data 40 03 02
Controller   BC10 (built-in)           (0x09):  data 44 02 01
Thermostat   Nefit Moduline 400        (0x10):  data 4E 02 14
mattreim commented 1 month ago
Boiler: Buderus Logamax plus GB172i.2-15
(0x08) -W-> me(0x0B), Version(0x02), data: C3 05 06 EF 02 12 00 00 00 03 00 00

Thermostat: Logamatic BC400
(0x10) -W-> me(0x0B), Version(0x02), data: 04 31 04 00 FF 00 00 00 00 00
4l4R1 commented 1 month ago

boiler(0x08) -W-> me(0x0B), Version(0x02), data: 5F 17 00 00 00 00 00 00 00 00 Junkers Cerapur Smart ZWB28-3C (detected as Condens 2500/5000W, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3)

thermostat(0x10) -W-> me(0x0B), Version(0x02), data: 69 0D 05 00 00 00 00 00 00 02 Junkers FW100

controller(0x09) -W-> me(0x0B), Version(0x02), data: 5F 17 00 00 00 00 00 00 00 00 HT3

suaveolent commented 1 month ago

Here the data for Buderus Logatherm WLW186i (heatpump) , MM100 (mixer) and MX300 (Wifi-Module).

ems-esp:$ show devices
These EMS devices are currently active:

boiler: Buderus CS*800i, Logatherm WLW* (DeviceID:0x08, ProductID:8, Version:00.00)
 Received telegram type IDs: 0xBF 0x14 0xD1 0xE3 0xE4 0xE5 0xE9 0x494 0x495 0x48F 
 Fetched telegram type IDs: 0xE6 0xEA 0x48D 0x4A2 0x485 0x486 0x492 0x488 0x484 0x48B 0x491 0x499 0x49C 0x49D 0x4AE 0x4AF 0x2CC 0x4AA 0x4A7 0x2D6 
 Pending telegram type IDs: 0x10 0x11 0xC2 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0x28 0x48A 0x4A5 
 Ignored telegram type IDs: 0x61E 0xD2 0xE2 0x23E 0x240 0x291 0x292 0x293 0x294 0x29B 0x2A5 0x2F5 0x2CD 0x4A8 0x4A9 0x4AB 0x4AC 0x4CA 0x4CB 0x4A0 0xF7 0xF6 

thermostat: Rego 3000, UI800, Logatherm WLW186i/WSW196i, Logamatic BC400 (DeviceID:0x10, ProductID:253, Version:47.10)
 Received telegram type IDs: 0x06 0x2BA 0x2BB 0x2BC 0x267 
 Fetched telegram type IDs: 0x2A5 0x2B9 0x2AF 0x29B 0x471 0x2CC 0x467 0x291 0x292 0x293 0x294 0x2F5 0x23A 0x240 0xBB 0x23E 
 Pending telegram type IDs: 0xA3 0xA2 0x12 0x13 0x2A6 0x2B0 0x29C 0x472 0x2A7 0x2B1 0x29D 0x473 0x2A8 0x2B2 0x29E 0x474 0x2A9 0x2BD 0x2B3 0x29F 0x475 0x2AA 0x2BE 0x2B4 0x2A0 0x476 0x2AB 0x2BF 0x2B5 0x2A1 0x477 0x2AC 0x2C0 0x2B6 0x2A2 0x478 0x2CE 0x468 0x2D0 0x469 0x2D2 0x46A 0x2F6 0x31B 0x31D 0x31E 0x269 
 Ignored telegram type IDs: 0x507 0x508 0x509 0x50A 0x59D 0xBF 0xF7 0xF9 

mixer: MM100 (DeviceID:0x20, ProductID:160, Version:24.05)
 Received telegram type IDs: 0x2D7 
 Fetched telegram type IDs: 0x2CD 
 Pending telegram type IDs: 
 Ignored telegram type IDs: 0x2E1 0x2EB 0xE6 0x255 0x291 0xBF 

gateway: Buderus WiFi module (DeviceID:0x48, ProductID:252, Version:08.02)

Output from read device:

000+06:41:15.365 N 2: [emsesp] boiler(0x08) -W-> me(0x0B), Version(0x02), data: 08 00 00 00 00 00 00 00 00 03 03 18
000+06:41:38.318 N 5: [emsesp] thermostat(0x10) -W-> me(0x0B), Version(0x02), data: FD 2F 0A 00 FF 00 00 00 00
000+06:40:08.701 N 1: [emsesp] mixer(0x20) -W-> me(0x0B), Version(0x02), data: A0 18 05 00 FF 00 00 00 00 00
000+06:41:54.490 N 6: [emsesp] gateway(0x48) -W-> me(0x0B), Version(0x02), data: FC 08 02 00 04 00 00 00 00 03 00 00
proddy commented 1 month ago

Analyzing the data (thanks everyone!), maybe there's is something in offset 1+2 which we use for the version.

@VlastiBroucek is there way you can see the version of the boiler and/or controller on the unit yourself? Does it also show 12.16?

@suaveolent could you also report back the version showed on you EMS devices, to see if they are the same what EMS-ESP thinks they are.

suaveolent commented 1 month ago

In principle, they look good, with some slight deviations and different naming: Here is the actual versions I found.

Boiler:

Mixer

Gateway:

Edit: I guess Logatherm WLW186i/WSW196i can be removed from the thermostat description, since both the WLW186 and the WSW196 use the BC400 internally.

proddy commented 1 month ago

Thanks @suaveolent . Seeing that the version telegram from your Boiler gives 08 00 00 00 00 00 00 00 00 03 03 18 the version (which is 47.10) must come from some other telegram.

airhead1234 commented 1 month ago
Boiler      Buderus Logamax kompakt WS170       (0x08): data: DB 33 04 00 FF 00 00 00 00 00
Thermostat  Buderus Logamatic RC310         (0x10): data: 9E 4A 03 00 FF 00 00 00 00
suaveolent commented 1 month ago

Thanks @suaveolent . Seeing that the version telegram from your Boiler gives 08 00 00 00 00 00 00 00 00 03 03 18 the version (which is 47.10) must come from some other telegram.

@proddy the 47.10 comes from the BC400 (identified as thermostat) and is already correctly identified. But for the boiler itself they must come from somewhere else. You are right.

Let me know if I can help any further.

VlastiBroucek commented 1 month ago

@VlastiBroucek is there way you can see the version of the boiler and/or controller on the unit yourself? Does it also show 12.16?

Yes, it shows software version (service function code 8.A) as "CF1216"

vmonkey commented 1 month ago

For me, the requested data are as follows:

ems-esp:$ show devices
These EMS devices are currently active:

boiler: Condens 2500/5000W, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3 (DeviceID:0x08, ProductID:95, Version:18.14)
 Received telegram type IDs: 0x10 0x11 0x15 0x1C 0x18 0x19 0x34 0x04
 Fetched telegram type IDs: 0x14 0x16 0x33 0x26
 Pending telegram type IDs: 0xBF 0xC2 0x1A 0x35 0x2A 0x2E 0x3B
 Ignored telegram type IDs: 0x23

thermostat: RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410 (DeviceID:0x10, ProductID:158, Version:18.05)
 Received telegram type IDs: 0x06 0xA2 0x2BB 0x2BC 0x2BD 0x2BE 0x2BF 0x2C0 0x31D 0x267
 Fetched telegram type IDs: 0x2A5 0x2B9 0x2AF 0x29B 0x471 0x2A6 0x2BA 0x2B0 0x29C 0x472 0x2CC 0x467 0x291 0x2CE 0x468 0x292 0x293 0x294 0x2F5 0x2F6 0x31B 0x23A 0x240 0xBB 0x23E 0x269
 Pending telegram type IDs: 0xA3 0x12 0x13 0x2A7 0x2B1 0x29D 0x473 0x2A8 0x2B2 0x29E 0x474 0x2A9 0x2B3 0x29F 0x475 0x2AA 0x2B4 0x2A0 0x476 0x2AB 0x2B5 0x2A1 0x477 0x2AC 0x2B6 0x2A2 0x478 0x2D0 0x469 0x2D2 0x46A 0x31E
 Ignored telegram type IDs:

mixer: MM100 (DeviceID:0x21, ProductID:160, Version:24.05)
 Received telegram type IDs: 0x2D8
 Fetched telegram type IDs: 0x2CE
 Pending telegram type IDs:
 Ignored telegram type IDs: 0x255 0x16 0x33 0x292 0x2E2 0x2EC

controller: HT3 (DeviceID:0x09, ProductID:95, Version:18.14)

ems-esp:$ read 0x08 2
000+00:00:42.513 N 1: [emsesp] boiler(0x08) -W-> me(0x0B), Version(0x02), data: 5F 12 0E 00 00 00 00 00 00 00

ems-esp:$ read 0x10 2
000+00:00:56.450 N 2: [emsesp] thermostat(0x10) -W-> me(0x0B), Version(0x02), data: 9E 12 05 00 FF 00 00 00 00

ems-esp:$ read 0x21 2
000+00:01:16.505 N 3: [emsesp] mixer(0x21) -W-> me(0x0B), Version(0x02), data: A0 18 05 00 FF 00 00 00 00 00

ems-esp:$ read 0x09 2
000+00:01:27.808 N 4: [emsesp] controller(0x09) -W-> me(0x0B), Version(0x02), data: 5F 12 0E 00 00 00 00 00 00 00

The actual products are Boiler: Junkers Cerapur Comfort ZSBR 16-3E Thermostat: Bosch CW400 Mixer: MM100

Versions match (except for MM100 thermostat, which reports NF24.05)

Sbried commented 1 month ago

For my installation the data is as follows:

Heat pump

Detected by ESM-ESP: boiler: Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i (DeviceID:0x08, ProductID:172, Version:02.02) Installed: Buderus Logatherm WLW166i12 T190 SP AR (Indoor unit WLW166i, Outdoor unit WLW-12 SP AR P3) Read output data type 2 001+06:06:32.241 N 1: [emsesp] boiler(0x08) -W-> me(0x0B), Version(0x02), data: AC 02 02 AD 01 01 00 00 00 00

Data shown in the control unit HMC310

Thermostat

Detected by ESM-ESP: *thermostat: RC30, Moduline 3000/1010H, CW400, Sense II, HPC410 (DeviceID:0x10, ProductID:158, Version:73.04) Installed: HMC310 Read output data type 2 001+06:06:53.889 N 2: [emsesp] thermostat(0x10) -W-> me(0x0B), Version(0x02), data: 9E 49 04 00 FF 00 00 00 00**

Data shown in the control unit HMC310

Gateway

Detected by ESM-ESP: Buderus WiFi module (DeviceID:0x48, ProductID:252, Version:08.02) Installed: MX300 Read output data type 2 001+06:22:39.134 N 3: [emsesp] gateway(0x48) -W-> me(0x0B), Version(0x02), data: FC 08 02 00 04 00 00 00 00 03 00 FF

Data shown in the control unit HMC310

Where to find the product name

read <device-ID> 1 returns from byte 27 on the ASCII text for the product name (looks like \0 terminated) For the heat pump I get CUHP, maybe Central Unit Heat Pump. The other names are as above written under Installed

proddy commented 1 month ago

thanks @Sbried - I never thought about telegram 0x01. It would make sense to store the device information there (as 2 is only the version). On my Nefit Trendline combi-boiler offset 27 of 0x01 is the letters CBS (Combi-Boiler System?) (using this link)

Could we ask everyone to do a read <device-id> 1 to compare? Maybe we can extract the brand from that data.

@MichaelDvP we could ask Norbert what he knows about telegram 1 - it's not in his list either.

MichaelDvP commented 1 month ago

I know when connecting a device the 0x01 is requested/sent, in normal operation is not repeated any more. My system have only 26 bytes in each 01 telegram, seems no ascii:

boiler(0x08) -W-> me(0x4A),     ?(0x01), data: AA 25 30 20 62 05 29 68 71 85 72 92 1A AA 06 00 00 00 00 00 00 00 00 00 00 00 00
thermostat(0x10) -W-> me(0x4A), ?(0x01), data: 25 30 20 62 14 02 58 71 85 81 71 2A AA AA 0E 35 00 00 00 00 00 00 00 00 00 00 00
mixer(0x21) -W-> me(0x4A),      ?(0x01), data: AA 25 30 20 63 66 65 01 02 19 15 AA AA AA 06 00 00 00 00 00 00 00 00 00 00 00 00
solar(0x30) -W-> me(0x4A),      ?(0x01), data: 70 00 72 79 01 32 32 00 93 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
suaveolent commented 1 month ago

here for my devices:

boiler(0x08) -W-> me(0x0B), ?(0x01), data: 30 35 37 30 33 37 37 31 30 31 32 39 30 38 37 35 30 37 36 37 38 30 31 00 FF FF FF
boiler(0x08) -W-> me(0x0B), ?(0x01), data: 58 43 55 5F 54 48 48 00 00 00 00 00 00 00 00 00 (offset 27)

thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 33 31 36 33 30 38 35 35 30 32 33 30 38 33 30 39 39 30 30 31 31 30 31 38 37 33 37
thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 48 4D 49 38 30 30 2E 32 00 00 00 00 00 00 00 00 (offset 27)

mixer(0x20) -W-> me(0x0B), ?(0x01), data: 32 35 33 30 31 37 38 30 30 33 34 32 34 37 37 33 38 31 31 30 31 31 34 00 FF FF FF
mixer(0x20) -W-> me(0x0B), ?(0x01), data: 4D 4D 31 30 30 00 00 00 00 00 00 00 00 00 00 00 (offset 27)

gateway(0x48) -W-> me(0x0B), ?(0x01), data: 32 35 33 30 33 33 37 33 30 36 33 30 34 38 37 33 38 38 30 36 31 32 34 00 00 00 00
gateway(0x48) -W-> me(0x0B), ?(0x01), data: 4D 58 33 30 30 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 (offset 27)
gateway(0x48) -W-> me(0x0B), ?(0x01), data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (offset 54)
gateway(0x48) -W-> me(0x0B), ?(0x01), data: <empty> (offset 81)
vmonkey commented 1 month ago

In my case, the responses are

ems-esp:$ read 0x08 1
000+00:01:29.526 N 2: [emsesp] boiler(0x08) -W-> me(0x0B), ?(0x01), data: 00 00 49 07 56 42 00 20 01 21 02 00 02 02 FF FF
ems-esp:$ read 0x10 1
000+00:01:51.995 N 3: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 32 35 33 30 39 35 37 39 31 31 32 31 34 37 37 33 38 31 31 31 30 38 33 00 FF FF FF
000+00:01:52.058 N 4: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 43 57 34 30 30 00 00 00 00 00 00 00 00 00 00 00 (offset 27)
ems-esp:$ read 0x21 1
000+00:02:05.599 N 5: [emsesp] mixer(0x21) -W-> me(0x0B), ?(0x01), data: 32 35 33 30 39 35 37 30 30 30 34 39 36 37 37 33 38 31 31 30 31 33 38 00 FF FF FF
000+00:02:05.666 N 6: [emsesp] mixer(0x21) -W-> me(0x0B), ?(0x01), data: 4D 4D 31 30 30 00 00 00 00 00 00 00 00 00 00 00 (offset 27)
ems-esp:$ read 0x09 1
000+00:02:33.915 N 7: [emsesp] controller(0x09) -W-> me(0x0B), ?(0x01), data: 00 00 49 07 56 42 00 20 01 21 02 00 02 02 FF FF
proddy commented 1 month ago

here for my devices

The offset 27 is definitely a name of sorts, but not the brand so probably not useful to us. Your mixer says MM100, the Thermostat says HMI800.2, Gateway MX300 and the Boiler XCU_THH !

Delta1977 commented 1 month ago

Boiler: Buderus Logamax GB172i.2-15KW Thermostat Buderus RC220 Controller: Internal Buderus BC400

`read 0x08 1 000+18:37:54.199 N 10: [emsesp] boiler(0x08) -W-> me(0x0B), ?(0x01), data: 33 36 37 34 39 39 39 39 38 32 34 30 31 32 33 32 33 30 31 34 39 34 34 38 37 35 30 000+18:37:54.239 N 11: [emsesp] boiler(0x08) -W-> me(0x0B), ?(0x01), data: 41 43 55 2D 4D 48 00 00 00 00 00 00 00 00 00 00 (offset 27)

read 0x10 1 000+18:38:26.028 N 12: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 33 31 36 33 30 38 35 35 30 32 33 31 30 33 30 39 39 30 30 35 33 32 30 38 37 33 37 000+18:38:26.123 N 13: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 42 43 34 30 30 2D 46 4F 00 00 00 00 00 00 00 00 37 31 35 33 30 33 00 00 00 00 00 (offset 27) 000+18:38:28.702 N 14: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (offset 54) 000+18:38:29.514 N 15: [emsesp] thermostat(0x10) -W-> me(0x0B), ?(0x01), data: (offset 81)

read 0x38 1 000+18:38:48.044 N 16: [emsesp] thermostat(0x38) -W-> me(0x0B), ?(0x01), data: 32 35 33 30 33 37 37 34 30 31 30 37 31 37 37 33 38 31 31 32 39 34 38 00 00 00 00 000+18:38:49.423 N 17: [emsesp] thermostat(0x38) -W-> me(0x0B), ?(0x01), data: 52 43 32 32 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF (offset 27) 000+18:38:50.160 N 18: [emsesp] thermostat(0x38) -W-> me(0x0B), ?(0x01), data: (offset 54)`

MichaelDvP commented 1 month ago

The offset 27 is definitely a name of sorts, but not the brand so probably not useful to us.

We can set this as custom name if not set by user. Maybe more specific that the name list in database. But offset 27 only exist for ems+ devices. Also the first 26 bytes seems to be ascii numbers (0x3?) for ems+, on ems devices this is binary.

vmonkey commented 1 month ago

Can it be that there is no info about the brand at all? Checking system info in my system using CW400, I see controller as HT3, thermostat as CW400 and mixer as MM100. No brand mentioned. And the component names match the offset 27 (except for controller that does not publish offset 27 in my case).

In the worst case, brand can be identified by creating a map of component names (e.g., CW400 is Bosch)

VlastiBroucek commented 1 month ago
ems-esp:$ read 0x08 1
002+20:19:34.243 N 1: [emsesp] boiler(0x08) -W-> Me(0x0B), ?(0x01), data: 00 00 54 28 59 25 00 20 01 28 02 00 02 02 FF FF
ems-esp:$ read 0x09 1 
002+20:19:51.733 N 2: [emsesp] controller(0x09) -W-> Me(0x0B), ?(0x01), data: 00 00 54 28 59 25 00 20 01 28 02 00 02 02 FF FF
ems-esp:$ read 0x18 1
002+20:20:22.171 N 3: [emsesp] thermostat(0x18) -W-> Me(0x0B), ?(0x01), data: 30 35 37 30 38 35 35 32 30 30 30 30 31 37 37 33 38 31 31 31 30 32 32
30 FF FF FF
002+20:20:22.246 N 4: [emsesp] thermostat(0x18) -W-> Me(0x0B), ?(0x01), data: 43 52 35 30 00 00 00 00 00 00 00 00 00 00 00 00 (offset 27)
ems-esp:$
Sbried commented 4 weeks ago

Next "research" result: data type 0x02 offset 9: is 0=undefined, 1=Bosch, 2= Junkers, 3=Buderus, 4=Nefit? On 2 of my modules I get back 0, which maybe indicates that it is used in some/all brands. But the MX300 returns 3 and it is Buderus. Maybe others try read <module-ID> 2 9 1 and compare the output with what they have installed

proddy commented 4 weeks ago

Next "research" result: data type 0x02 offset 9: is 0=undefined, 1=Bosch, 2= Junkers, 3=Buderus, 4=Nefit? On 2 of my modules I get back 0, which maybe indicates that it is used in some/all brands. But the MX300 returns 3 and it is Buderus. Maybe others try read <module-ID> 2 9 1 and compare the output with what they have installed

This is what EMS-ESP does now, reads the 9th data byte from 0x02 (Version). It should be shown in EMS-ESP when you click on the info button. Problem with this is that it isn't always accurate and missing on some devices.

Sbried commented 4 weeks ago

ok, I see

VlastiBroucek commented 4 weeks ago
ems-esp:$ read 0x08 2 9 1
003+23:58:36.570 N 1: [emsesp] boiler(0x08) -W-> Me(0x0B), Version(0x02), data: 00 (offset 9)
ems-esp:$ read 0x09 2 9 1
003+23:59:27.425 N 2: [emsesp] controller(0x09) -W-> Me(0x0B), Version(0x02), data: 00 (offset 9)
ems-esp:$ read 0x18 2 9 1
003+23:59:32.724 N 3: [emsesp] thermostat(0x18) -W-> Me(0x0B), Version(0x02), data: <empty> (offset 9)

Boiler is branded Bosch, controller is inside of the boiler and Room Thermostat is branded Bosch

30kw__37kw_user_manual.pdf 2019_-_condens_5000w_30kw__37kw.pdf cr50_controller_installation_instructions.pdf cr50_operating_instructions.pdf

proddy commented 2 weeks ago

The name we capture, I called it model and added to 3.7.1. It will be prefixed to the Device Name if no custom one is set.

gh47110815 commented 2 weeks ago

"Just my 2 cents" - hope it helps ...

ems-esp:$ show devices These EMS devices are currently active:

Boiler: Bosch MX25/GC7000F (DeviceID:0x08, ProductID:132, Version:02.12) (87) Received telegram type IDs: 0xBF 0xC2 0x14 0x15 0x1C 0xD1 0xE3 0xE4 0xE5 0xE9 0x2E 0x3B 0x04 Fetched telegram type IDs: 0xE6 0xEA 0x28 Pending telegram type IDs: 0x10 0x11 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A Ignored telegram type IDs: 0x8E4 0xD8 0xE7 0xD2 0xE2 0xF52 0x17 0x36

Thermostat: CW400/RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410 (DeviceID:0x10, ProductID:158, Version:74.05) (55) Received telegram type IDs: 0x06 0x2BA 0x2BB 0x2BC 0x2BD 0x2BE 0x2BF 0x2C0 0x31D 0x267 Fetched telegram type IDs: 0x2A5 0x2B9 0x2AF 0x29B 0x2CC 0x291 0x292 0x293 0x294 0x2F5 0x2F6 0x23A 0x240 0x269 Pending telegram type IDs: 0xA3 0xA2 0x12 0x13 0x471 0x2A6 0x2B0 0x29C 0x472 0x2A7 0x2B1 0x29D 0x473 0x2A8 0x2B2 0x29E 0x474 0x2A9 0x2B3 0x29F 0x475 0x2AA 0x2B4 0x2A0 0x476 0x2AB 0x2B5 0x2A1 0x477 0x2AC 0x2B6 0x2A2 0x478 0x467 0x2CE 0x468 0x2D0 0x469 0x2D2 0x46A 0x31B 0x31E 0xBB 0x23E Ignored telegram type IDs: 0xBF

Mixer Module: MM100/MM100 (DeviceID:0x20, ProductID:160, Version:24.05) (7) Received telegram type IDs: 0x2D7 Fetched telegram type IDs: 0x2CD Pending telegram type IDs: Ignored telegram type IDs: 0x2E1 0x2EB 0x255 0xE6 0x291 0xBF

Heat Pump: MH200-1/Hybrid Manager HM200 (DeviceID:0x53, ProductID:248, Version:06.03) (36) Received telegram type IDs: 0x9A0 0x99B 0x99C Fetched telegram type IDs: 0x998 0x999 0x4AE 0x4AF Pending telegram type IDs: 0x47B Ignored telegram type IDs: 0x99D 0x9A6 0x4AA 0x99A 0x99E 0x99F 0x9A2 0x9A3 0x9A4 0x9A5 0x9A8 0x9AA 0x9AB 0xBF 0x12E 0x13B 0xF7

Gateway Module: Bosch K30RF/WiFi module (DeviceID:0x48, ProductID:252, Version:08.02) (0)

ems-esp:$ read 0x08 2 9 1 001+04:09:24.723 N 2: [emsesp] boiler(0x08) -W-> me(0x0B), Version(0x02), data: 01 (offset 9)

ems-esp:$ read 0x10 2 9 1 001+04:12:07.846 N 4: [emsesp] thermostat(0x10) -W-> me(0x0B), Version(0x02), data: (offset 9)

ems-esp:$ read 0x20 2 9 1 001+04:12:26.144 N 5: [emsesp] mixer(0x20) -W-> me(0x0B), Version(0x02), data: 00 (offset 9)

ems-esp:$ read 0x53 2 9 1 001+04:12:36.659 N 6: [emsesp] heatpump(0x53) -W-> me(0x0B), Version(0x02), data: 00 (offset 9)

ems-esp:$ read 0x48 2 9 1 001+04:12:47.961 N 7: [emsesp] gateway(0x48) -W-> me(0x0B), Version(0x02), data: 01 (offset 9) ems-esp:$

Regelgerät MX25: https://junkers-de-de-b.boschtt-documents.com/download/file/file/6720848354.pdf

Bosch Gas-Brennwertkessel Condens 7000 F https://junkers-de-de-b.boschtt-documents.com/download/file/file/6720867012.pdf

Bosch Bedieneinheit CR 400/CW 400/CW 800 https://junkers-de-de-b.boschtt-documents.com/download/file/file/6720894052.pdf

Bosch Luft-Wasser-Wärmepumpe Compress 7400i AW https://junkers-de-de-b.boschtt-documents.com/download/file/file/6721814822.pdf

MH 200 https://junkers-de-de-b.boschtt-documents.com/download/file/file/6721826270.pdf