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
607 stars 102 forks source link

Support for SM100/MS100 to control Warm Water circuit #212

Closed aHVzY2g closed 2 years ago

aHVzY2g commented 2 years ago

Is your feature request related to a problem? Please describe. Currently, I am not able to control the warm water temperature, which actually was for me the reason to set up EMS-ESP in the first place.

Describe the solution you'd like I would like to be able to control, the warm water temperature via MQTT and web.

Additional context For a more detailed overlook of my setup, please see https://github.com/emsesp/EMS-ESP/issues/359

The only change since then is that I upgraded to a ESP32. Like @MichaelDvP suggested I did anwatch on 2A, output below. I changed the value for warm water from 44 to 45 forward and backward. I also checked https://emsesp.github.io/docs/#/Solar?id=decoded-ems-messages , but it does not seem to be relevant in this context. What are the next steps?

From my understanding, the message:

[emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)

is relevant to implement this feature.

Full watch on 2a

Watching incoming telegrams, displayed in decoded format
Filtering only telegrams that match a device ID or telegram type of 0x2A
000+01:59:01.798 N 677: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A9), data: 2F
000+01:59:03.854 N 678: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:03.917 N 679: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+01:59:06.125 N 680: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+01:59:06.398 N 681: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 B4
000+01:59:06.581 N 682: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+01:59:07.397 N 683: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)
000+01:59:09.401 N 684: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 93 00 93 80 00 00 80 00 80 00 80 00 00
000+01:59:16.722 N 685: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 F8 (offset 4)
000+01:59:17.705 N 686: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:17.769 N 687: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2D
000+01:59:19.375 N 688: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 93 00 92 80 00 00 80 00 80 00 80 00 00
000+01:59:20.201 N 689: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)
000+01:59:20.845 N 690: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2C (offset 10)
000+01:59:21.920 N 691: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2C (offset 6)
000+01:59:27.800 N 692: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:27.863 N 693: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+01:59:29.301 N 694: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 01 2B 00 93 80 00 00 80 00 80 00 80 00 00
000+01:59:30.022 N 695: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+01:59:30.895 N 696: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+01:59:31.078 N 697: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)
000+01:59:31.799 N 698: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A9), data: 2F
000+01:59:32.005 N 699: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 00 00 04 00 03 00 2D 01 0F
000+01:59:32.638 N 700: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:32.701 N 701: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2D
000+01:59:32.978 N 702: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7AD), data: 64 00 00 03
000+01:59:33.178 N 703: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7B1), data: 01 80 00 01 00 00 00 00
000+01:59:34.177 N 704: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 A6 00 00 01 DE 00 C7 00 C0 80 00 01 C2
000+01:59:34.408 N 705: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 03 03 03 03
000+01:59:34.998 N 706: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)
000+01:59:35.296 N 707: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2C (offset 10)
000+01:59:36.796 N 708: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2C (offset 6)
000+01:59:37.630 N 709: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:37.692 N 710: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+01:59:39.350 N 711: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 01 2B 01 2B 80 00 00 80 00 80 00 80 00 00
000+01:59:39.819 N 712: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+01:59:41.245 N 713: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+01:59:41.428 N 714: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)
000+01:59:42.580 N 715: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:42.644 N 716: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2D
000+01:59:44.746 N 717: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)
000+01:59:45.446 N 718: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2C (offset 6)
000+01:59:45.628 N 719: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2C (offset 10)
000+01:59:47.274 N 720: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:47.337 N 721: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+01:59:48.801 N 722: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+01:59:48.885 N 723: [emsesp] Thermostat(0x10) -> Solar(0x2A), SM100wwCommand(0x7AB), data: 01 00 01
000+01:59:49.745 N 724: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+01:59:49.950 N 725: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 01 2B 01 2B 80 00 00 80 00 80 00 80 00 00
000+01:59:51.270 N 726: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)
000+01:59:52.394 N 727: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:52.457 N 728: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2D
000+01:59:54.401 N 729: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)
000+01:59:54.696 N 730: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2C (offset 10)
000+01:59:55.796 N 731: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2C (offset 6)
000+01:59:56.391 N 732: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+01:59:56.455 N 733: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+01:59:58.325 N 734: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+01:59:58.621 N 735: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+01:59:59.900 N 736: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 01 2B 00 52 80 00 00 80 00 80 00 80 00 00
000+02:00:00.671 N 737: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)
000+02:00:02.881 N 738: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+02:00:02.943 N 739: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2D
000+02:00:03.423 N 740: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A9), data: 2F
000+02:00:03.608 N 741: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 C5 (offset 4)
000+02:00:04.125 N 742: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2C (offset 10)
000+02:00:04.995 N 743: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2C (offset 6)
000+02:00:05.178 N 744: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2C (offset 10)
000+02:00:06.405 N 745: [emsesp] Thermostat(0x10) <- Solar(0x2A), ParamCfg(0xF9), data: 11 FF 06 A6 0A
000+02:00:06.469 N 746: [emsesp] Solar(0x2A) -> Thermostat(0x10), ParamCfg(0xF9), data: FF 06 A6 0A 0F 00 00 00 0F 00 00 00 2D 00 00 00 3C 00 00 00 2C
000+02:00:08.645 N 747: [emsesp] Thermostat(0x10) -> Solar(0x2A), ?(0x7A6), data: 2D (offset 10)
000+02:00:09.095 N 748: [emsesp] Solar(0x2A) -> All(0x00), SM100wwStatus(0x7AA), data: 2D (offset 6)
000+02:00:09.700 N 749: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 01 2B 00 00 80 00 00 80 00 80 00 80 00 00
000+02:00:10.945 N 750: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A6), data: 2D (offset 10)

for reference also the output of show:

Boiler: Junkers Logamax Plus/GB192/Condens GC9000 (DeviceID:0x08 ProductID:208, Version:01.04)
  heating active: on
  warm water active: off
  selected flow temperature: 40 °C
  burner selected max power: 100 %
  heating pump modulation: 19 %
  outside temperature: 10.3 °C
  current flow temperature: 39.2 °C
  return temperature: 32.7 °C
  system pressure: 1.6 bar
  gas: on
  flame current: 12.5 uA
  heating pump: on
  fan: on
  ignition: off
  heating activated: on
  heating temperature: 80 °C
  burner pump max power: 65 %
  burner pump min power: 15 %
  pump delay: 3
  burner min period: 10
  burner min power: 0 %
  burner max power: 100 %
  hysteresis on temperature: -6 °C
  hysteresis off temperature: 6 °C
  burner current power: 23 %
  # burner starts: 16345
  total burner operating time: 291 days 11 hours 20 minutes
  total heat operating time: 209 days 10 hours 49 minutes
  total UBA operating time: 756 days 11 hours 30 minutes
  service code number: 200
  ww selected temperature: 60
  ww type: off
  ww comfort: hot
  ww flow temperature offset: 40
  ww max power: 100
  ww circulation pump available: off
  ww charging type: 3-way valve
  ww hysteresis on temperature: -5
  ww hysteresis off temperature: 0
  ww disinfection temperature: 70
  ww circulation pump frequency: 2x3min
  ww circulation active: off
  ww activated: on
  ww heating: off

Thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:18.06)
  error code: (0)
  date/time: 17:48:00 20/11/2021
  floor drying: off
  damped outdoor temperature: 11.0 °C
  floor drying temperature: 0 °C
  building: medium
  minimal external temperature: -10 °C
  set temperature: 60 °C
  mode: own_prog
  set low temperature: 50 °C
  circulation pump frequency: auto
  circuit 1 extra: 0 °C
  hc1 selected room temperature: 21.0
  hc1 mode: auto
  hc1 mode type: comfort
  hc1 eco temperature: 17.0
  hc1 manual temperature: 5.0
  hc1 comfort temperature: 21.0
  hc1 summer temperature: 16
  hc1 design temperature: 55
  hc1 offset temperature: 0
  hc1 min flow temperature: 25
  hc1 max flow temperature: 55
  hc1 room influence: 0
  hc1 nofrost temperature: 5
  hc1 target flow temperature: 35
  hc1 heating type: floor
  hc1 set summer mode: auto
  hc1 summer mode: off
  hc1 control mode: simple
  hc1 program: 1
  hc2 selected room temperature: 21.0
  hc2 mode: auto
  hc2 mode type: comfort
  hc2 eco temperature: 15.0
  hc2 manual temperature: 22.0
  hc2 comfort temperature: 21.0
  hc2 summer temperature: 16
  hc2 design temperature: 55
  hc2 offset temperature: 0
  hc2 min flow temperature: 25
  hc2 max flow temperature: 55
  hc2 room influence: 0
  hc2 nofrost temperature: 5
  hc2 target flow temperature: 35
  hc2 heating type: radiator
  hc2 set summer mode: auto
  hc2 summer mode: off
  hc2 control mode: simple
  hc2 program: 1

Mixer: MM200 (DeviceID:0x20, ProductID:161, Version:29.04)
  hc1 setpoint flow temperature: 35
  hc1 flow temperature in assigned hc (TC1): 33.0
  hc1 pump status in assigned hc (PC1): on
  hc1 mixing valve actuator in assigned hc (VC1): 99

Mixer: MM100 (DeviceID:0x21, ProductID:160, Version:24.05)
  hc2 setpoint flow temperature: 35
  hc2 flow temperature in assigned hc (TC1): 32.7
  hc2 pump status in assigned hc (PC1): on
  hc2 mixing valve actuator in assigned hc (VC1): 100

Mixer: MM200 (DeviceID:0x28, ProductID:161, Version:29.04)
  wwc1 current temperature: 61.4
  wwc1 pump status in assigned wwc (PC1): off
  wwc1 temperature switch in assigned wwc (MC1): 0

Solar: SM200/MS200 (DeviceID:0x30, ProductID:164, Version:25.05)
  collector temperature (TS1): 12.6 °C
  tank bottom temperature (TS2): 26.5 °C
  pump (PS1): off
  pump working time: 124 days 18 hours 30 minutes
  maximum tank temperature: 90 °C
  pump modulation (PS1): 0 %
  minimum pump modulation: 2 %
  pump turn on difference: 110 °C
  pump turn off difference: 50 °C
  cylinder pump modulation (PS5): 0 %
  valve status: off
  tank heated: off
  collector shutdown: off
  maximum collector temperature: 120 °C
  minimum collector temperature: 20 °C
  energy last hour: 0.0 Wh
  energy today: 0 Wh
  energy total: 4788.1 kWh
  heattransfer system: off
  external tank: off
  thermal disinfection: off
  heatmetering: off
  activated: on
  solar pump mode: pwm
  pumpkick: on
  plain water mode: off
  doublematchflow: off
  climate zone: 80
  collector 1 area: 7.4
  collector 1 type: vacuum

Solar: SM100/MS100 (DeviceID:0x2A, ProductID:163, Version:27.05)
  type: warm water circuit
  temperature 1: 1 °C
  temperature 3: 2 °C
  temperature 4: 0 °C
  temperature 5: 0 °C
  temperature 7: 1 °C
  pump: 0 °C

Gateway: KM200/MB LAN 2 (DeviceID:0x48, ProductID:189, Version:04.07)

Controller: 9000i (DeviceID:0x09, ProductID:224, Version:35.05)
MichaelDvP commented 2 years ago

Most of this is done in #164 and the ft_solar branch, but there is no activity anymore. You can compile yourself, or use the bins i've posted in #164(, or check my tests).

aHVzY2g commented 2 years ago

Thank you Michael, this seems to work just fine. I will do some test and let you know if I find anything.

aHVzY2g commented 2 years ago

From what I can tell looking at this commit it should be possible to set the wwtemp of the solar circuit now. If try that by using call via telnet or via the dashboard itself, the value does not change.

_using build EMS-ESP-3_22b14-ESP32 from #164

ems:$ watch on 2a
Watching incoming telegrams, displayed in decoded format
Filtering only telegrams that match a device ID or telegram type of 0x2A
000+00:08:19.723 N 0: [emsesp] Me(0x0B) <- Solar(0x2A), SM100wwCirc(0x7A5), data: 20
000+00:08:19.760 N 1: [emsesp] Solar(0x2A) -> Me(0x0B), SM100wwCirc(0x7A5), data: 00 03 0A 02 FF 1E 32
000+00:08:20.102 N 2: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 07 (offset 8)
000+00:08:20.572 N 3: [emsesp] Me(0x0B) <- Solar(0x2A), SM100wwParam(0x7A6), data: 20
000+00:08:20.653 N 4: [emsesp] Solar(0x2A) -> Me(0x0B), SM100wwParam(0x7A6), data: FF 05 0F 5F 00 01 3C 3C 3C 3C 28 12 46 01 3C 1E 03 07 3C 00 0F 00 05
000+00:08:20.879 N 5: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 EB 00 EA 80 00 00 80 00 80 00 80 00 00
000+00:08:21.177 N 6: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 ED
000+00:08:21.361 N 7: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 ED (offset 12)
000+00:08:22.750 N 8: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: FF (offset 5)
000+00:08:22.932 N 9: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 00 (offset 9)
000+00:08:29.242 I 10: [command] Calling solar command 'wwtemp', value 50, id is default
000+00:08:30.348 N 11: [emsesp] Me(0x0B) -> Solar(0x2A), SM100wwParam(0x7A6), data: F4 (offset 9)
000+00:08:30.624 N 12: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 00 (offset 5)
000+00:08:31.379 N 13: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 EB 00 EA 80 00 00 80 00 80 00 80 00 00
000+00:08:31.872 N 14: [emsesp] Me(0x0B) <- Solar(0x2A), SM100wwParam(0x7A6), data: 20
000+00:08:31.954 N 15: [emsesp] Solar(0x2A) -> Me(0x0B), SM100wwParam(0x7A6), data: FF 05 0F 5F 00 01 3C 3C 3C 3C 28 12 46 01 3C 1E 03 07 3C 00 0F 00 05
000+00:08:32.250 N 16: [emsesp] Solar(0x2A) -> All(0x00), SM100wwParam(0x7A6), data: 3C (offset 9)
000+00:08:32.433 N 17: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 90 (offset 12)
000+00:08:34.375 N 18: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 0A (offset 9)
000+00:08:35.625 N 19: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 06 (offset 8)
000+00:08:35.809 N 20: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 A9
000+00:08:36.574 N 21: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 05 (offset 9)
000+00:08:41.455 N 22: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 EB 00 EC 80 00 00 80 00 80 00 80 00 00
000+00:08:41.677 N 23: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7A9), data: 2F
000+00:08:46.625 N 24: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 07 (offset 8)
000+00:08:47.851 N 25: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 EF
000+00:08:48.037 N 26: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 EF (offset 12)
000+00:08:51.200 N 27: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: FF (offset 5)
000+00:08:51.383 N 28: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 00 (offset 9)
000+00:08:52.229 N 29: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 EB 00 EB 80 00 00 80 00 80 00 80 00 00
000+00:08:52.649 N 30: [emsesp] Controller(0x09) <- Boiler(0x08), MC110Status(0x2A), data: 01 (offset 20)
000+00:08:52.653 N 31: [emsesp] Boiler(0x08) -> Controller(0x09), MC110Status(0x2A), data: 00 (offset 20)
000+00:08:55.049 N 32: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 00 (offset 5)
000+00:08:57.977 N 33: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 90 (offset 12)
000+00:09:00.098 N 34: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 06 (offset 8)
000+00:09:01.698 N 35: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 0A (offset 9)
000+00:09:01.903 N 36: [emsesp] Boiler(0x08) -> All(0x00), MC110Status(0x2A), data: 00 00 00 00 00 00 00 00 EB 00 EC 80 00 00 80 00 80 00 80 00 00
000+00:09:04.250 N 37: [emsesp] Solar(0x2A) -> All(0x00), SM100wwTemperature(0x7D6), data: 01 92
000+00:09:04.434 N 38: [emsesp] Solar(0x2A) -> All(0x00), ?(0x7E0), data: 05 (offset 9)
000+00:09:08.416 N 39: [emsesp] Thermostat(0x10) -> Solar(0x2A), SM100wwCommand(0x7AB), data: 01 00 01
MichaelDvP commented 2 years ago

Thanks, this is a bug, there is a wrong factor 10: input 5.0 for 50°C should work. The same for wwMaxTemp and wwRedTemp, which also have wrong addresss.

aHVzY2g commented 2 years ago

Yes, that does the trick, according to the EMS the temperature is now 50. However, the APP “Easy Remote” reports a value of 40. I will do some more tests and let you know what I find.

MichaelDvP commented 2 years ago

I've updated the branch on my github and merged the latest dev. Test this bin file.

aHVzY2g commented 2 years ago

Works fine, "Easy Remote" still does not show the correct value, but that does not matter.

One thing I noticed is that the "minimum pump modulation" is displayed wrong, if it's set to 100% EMS reports 20%. But as I can control the WW, I will close this issue, everything else can be discussed in #164?

MichaelDvP commented 2 years ago

I guess the minimum pump modulation is set in units of 5%, please try with the updated file (same link). Is the "Easy Remote" value wrong or the emsesp? Your log shows a lot of changing values in telegram 0x7E0, offset 5: changes from 0 to 0xFF, something goes off->on offset 8: 0x07->0x06->0x07 offset 9: 0x00->0x0A->0x00->0x0A->0x05 any idea what is this?

aHVzY2g commented 2 years ago