emsesp / EMS-ESP

ESP8266 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
303 stars 97 forks source link

Solar Module SM200 #267

Closed PhillyGilly closed 4 years ago

PhillyGilly commented 4 years ago

Hello Proddy, Is it possible to extend the supported Solar Modules to include the Bosch/Bruderus SM200. The second device is a Sense II module that is working as a passive display. Here is the output of my logging.

SM200.txt

Also the results iof my mqttlog:

MQTT subscriptions: Topic:home/ems-esp/restart
Topic:home/ems-esp/start
Topic:home/ems-esp/thermostat_cmd_temp1
Topic:home/ems-esp/thermostat_cmd_mode1
Topic:home/ems-esp/thermostat_cmd_temp2
Topic:home/ems-esp/thermostat_cmd_mode2
Topic:home/ems-esp/thermostat_cmd_temp3
Topic:home/ems-esp/thermostat_cmd_mode3
Topic:home/ems-esp/thermostat_cmd_temp4
Topic:home/ems-esp/thermostat_cmd_mode4
Topic:home/ems-esp/thermostat_cmd
Topic:home/ems-esp/boiler_cmd
Topic:home/ems-esp/boiler_cmd_wwactivated
Topic:home/ems-esp/boiler_cmd_wwonetime
Topic:home/ems-esp/boiler_cmd_wwtemp
Topic:home/ems-esp/generic_cmd
Topic:home/ems-esp/shower_data

proddy commented 4 years ago

Yes, should be possible. I'll take a look.

proddy commented 4 years ago

I extended the code to support the SM200 in 1.9.5b6

But what I find worrying for your logs is the message "Error! Unable to read the EMS bus.". Do you always get that?

PhillyGilly commented 4 years ago

Hi Proddy. Thanks. I will check later today but I need to eliminate errors due to the fact that I have two EMS buses and only connected the EMS-ESP to them in turn. This is because the Sense II, which is acting as a passive display for the SM200, tries to sieze control of the boiler if it's on the same bus. Now that I have 1.9.5b installed I can remove the Sense II and connect the SM200 to the boiler bus and use my PC to monitor it. That could be interesting as the Sense II displays the 14 days data. I can't use the Sense II as a controller until I've got the MM200 in and working, so I'll add that next and see how it works for monitoring temperatures.

On Mon, 30 Dec 2019, 12:47 Proddy, notifications@github.com wrote:

I extended the code to support the SM200 in 1.9.5b6

But what I find worrying for your logs is the message "Error! Unable to read the EMS bus.". Do you always get that?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/267?email_source=notifications&email_token=ANNKV75WT4TR4CRCBAQSV2DQ3HUUHA5CNFSM4J7MUOA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH2HR2A#issuecomment-569669864, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANNKV7Z5NVI43C6L7HAZ5SDQ3HUUHANCNFSM4J7MUOAQ .

PhillyGilly commented 4 years ago

Here is the info from 1.9.5b7 with only the Sense II and the MS200 attached to the EMS-ESP. I tried running with Boiler, MS200 and EMS-ESP but there was an EMS issue.

image image

It seems to take a few minutes to settle down during which there were intermittent problems with reading the EMS bus.

Here is the mqttlog: mqttlog MQTT publish log: Timestamp:18:20:10 Topic:status Payload:online Timestamp:18:20:10 Topic:start Payload:start Timestamp:18:20:10 Topic:shower_data Payload:{"timer":"0","alert":"0"} Timestamp:18:42:05 Topic:heartbeat Payload:{"version":"1.9.5b7","IP":"192.168.2.101","rssid":62,"load":1,"uptime":1326,"freemem":47,"MQTTdisconnects":0} Timestamp:18:42:05 Topic:sm_data Payload:{"collectortemp":6,"bottomtemp":42.8,"pumpmodulation":0,"pump":"off"} MQTT subscriptions: Topic:home/ems-esp/restart Topic:home/ems-esp/start Topic:home/ems-esp/thermostat_cmd_temp1 Topic:home/ems-esp/thermostat_cmd_mode1 Topic:home/ems-esp/thermostat_cmd_temp2 Topic:home/ems-esp/thermostat_cmd_mode2 Topic:home/ems-esp/thermostat_cmd_temp3 Topic:home/ems-esp/thermostat_cmd_mode3 Topic:home/ems-esp/thermostat_cmd_temp4 Topic:home/ems-esp/thermostat_cmd_mode4 Topic:home/ems-esp/thermostat_cmd Topic:home/ems-esp/boiler_cmd Topic:home/ems-esp/boiler_cmd_wwactivated Topic:home/ems-esp/boiler_cmd_wwonetime Topic:home/ems-esp/boiler_cmd_wwtemp Topic:home/ems-esp/generic_cmd Topic:home/ems-esp/shower_data

Here is the telnet info: log30122019.txt

PhillyGilly commented 4 years ago

I ran 1.9.5b7 overnight and found that I had lost connection between the EMS-ESP and web interface this morning. I rebooted the EMS-ESP and connection was re-established. Initially things looked fine and I confirmed this via a telnet session and left it running with log v. After running for about 90 minutes, I checked the HA interface and I have "flat lining" where data isn't arriving image Here are the last few entries from the log. (10:37:25) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
(10:37:30) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(10:37:53) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
Error! Unable to read the EMS bus.
(10:38:23) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 DC 00 F8 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 (CRC=A8) #data=24 (10:38:23) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2 (10:38:24) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(10:38:24) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 04 00 00 FF 00 00 00 00 03 64 00 00 00 00 00 (CRC=3C) #data=18
(10:38:24) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
(10:38:25) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2 (10:38:25) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1 (10:38:25) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
(10:38:25) Thermostat -> All, type 0x06, telegram: 90 00 06 00 13 0C 0A 1F 25 2D 01 00 10 FF 00 (CRC=7A) #data=11
(10:38:30) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(10:38:43) Thermostat -> Solar Module, type 0x1802, telegram: 90 B0 FF 00 18 02 91 (CRC=32) #data=1
(10:38:43) Solar Module -> Thermostat, type 0x0291, telegram: B0 10 FF 00 02 91 00 02 FB F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=4A) #data=24 (10:38:43) Thermostat -> Solar Module, type 0x1802, telegram: 90 B0 FF 18 18 02 91 (CRC=F2) #data=1
(10:38:43) Solar Module -> Thermostat, type 0x0291, telegram: B0 10 FF 18 02 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=2D) #data=24 (10:38:43) Thermostat -> Solar Module, type 0x1802, telegram: 90 B0 FF 30 18 02 91 (CRC=AB) #data=1
(10:38:43) Solar Module -> Thermostat, type 0x0291, telegram: B0 10 FF 30 02 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=5F) #data=24 (10:38:43) Thermostat -> Solar Module, type 0x0402, telegram: 90 B0 FF 48 04 02 91 (CRC=30) #data=1
(10:38:43) Solar Module -> Thermostat, telegram: B0 10 FF 48 02 91 (CRC=DD)
(10:38:48) Thermostat -> All, type 0xBF, telegram: 90 00 BF 00 10 CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=8D) #data=24
(10:38:53) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
Starting scheduled MQTT publish...
Error! Unable to read the EMS bus.
(10:39:24) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 DA 00 F8 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 (CRC=58) #data=24 (10:39:24) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2 (10:39:24) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(10:39:24) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 04 00 00 FF 00 00 00 00 03 64 00 00 00 00 00 (CRC=3C) #data=18
(10:39:25) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
(10:39:25) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2 (10:39:25) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1 (10:39:25) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
(10:39:26) Thermostat -> All, type 0x06, telegram: 90 00 06 00 13 0C 0A 1F 26 2E 01 00 10 FF 00 (CRC=DA) #data=11
(10:39:30) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(10:39:54) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
(10:40:01) Solar Module -> All, type 0xBF, telegram: B0 00 BF 00 30 A4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=01) #data=24
Fetching data from EMS devices
Requesting type SM100Monitor(0x262) from dest 0x30
(10:40:14) Sending read of type 0x262 to 0x30, telegram: 8B B0 FF 00 20 02 62 (CRC=B7) (10:40:14) Solar Module -> Me, type 0x0262, telegram: B0 0B FF 00 02 62 00 DA 00 F8 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 (CRC=CE) #data=25 (10:40:14) Solar Module -> All, type 0x07, telegram: B0 00 07 00 08 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=CE) #data=15
(10:40:15) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(10:40:24) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 DA 00 F8 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 (CRC=58) #data=24 (10:40:24) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2 (10:40:24) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(10:40:24) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 04 00 00 FF 00 00 00 00 03 64 00 00 00 00 00 (CRC=3C) #data=18
(10:40:25) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0D 6F 00 03 08 (CRC=D4) #data=5
(10:40:25) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2 (10:40:25) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1 (10:40:26) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
(10:40:27) Thermostat -> All, type 0x06, telegram: 90 00 06 00 13 0C 0A 1F 27 2F 01 00 10 FF 00 (CRC=BA) #data=11

proddy commented 4 years ago

I wouldn't bother with the web interface - it's problematic and I'm busy rewriting the whole thing anyway.

If you think you've lost a connection, the first thing is to start the Telnet and look for errors like 'TCP disconnect'. Then type 'system' and check the uptime and look down for the "# disconnects". It could be that the MQTT was flooding again and not sending packages out. I haven't personally tested with a SM (don't have one) but could expect a lot of information is being sent to the broker. Use something like MQTT Explorer to see. Then also check settings like MQTT QOS and increase the publish_time to 5 or 10 seconds.

I will continue to run stress tests here.

PhillyGilly commented 4 years ago

Here is the content of my system. Not sure I like the fatal errors!!

ESP8266 System stats: [APP] EMS-ESP version: 1.9.5b7
[APP] MyESP version: 1.2.22
[APP] Build timestamp: 2019-12-30 14:54:37
[APP] Uptime: 0 days 3 hours 38 minutes 51 seconds
[APP] System Load: 1%
[WIFI] WiFi Hostname: ems-esp
[WIFI] WiFi IP: 192.168.2.101
[WIFI] WiFi signal strength: 66%
[WIFI] WiFi MAC: 4C:11:AE:10:8F:E6
[MQTT] is connected (heartbeat enabled)
[NTP] Local Time is 16:40:49 GMT (1577810449)
[SYSTEM] System is Stable
[SYSTEM] Board: PLATFORMIO_D1_MINI
[SYSTEM] CPU frequency: 80 MHz
[SYSTEM] SDK version: 2.2.2-dev(38a443e)
[SYSTEM] CPU chip ID: 0x108FE6
[SYSTEM] Core version: 2_6_3
[SYSTEM] Boot version: 6
[SYSTEM] Boot mode: 1
[SYSTEM] Last reset reason: Hardware Watchdog
[SYSTEM] Last reset info: Fatal exception:4 flag:1 (WDT) epc1:0x40000f68 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000
[SYSTEM] Restart count: 0
[SYSTEM] # TCP disconnects: 0
[SYSTEM] rtcmem status: blocks:2 addr:0x60001280
[SYSTEM] rtcmem 00: 1163087990
[SYSTEM] rtcmem 01: 65536
[FLASH] Flash chip ID: 0x1640EF
[FLASH] Flash speed: 40000000 Hz
[FLASH] Flash mode: DIO
[FLASH] Flash size (CHIP): 4194304
[FLASH] Flash size (SDK): 4194304
[FLASH] Flash Reserved: 4096
[MEM] Firmware size: 616640
[MEM] Max OTA size: 2523136
[MEM] OTA Reserved: 16384
[MEM] Free Heap: 23992 bytes initially | 10408 bytes used (43%) | 13584 bytes free (56%) Error! Unable to read the EMS bus.

proddy commented 4 years ago

looks fine. the fatal exception is normal after a reset (cold-start) of the ESP. no need to panic there.

proddy commented 4 years ago

I forgot about this one, implementing SM200. I'll take a look this week.

PhillyGilly commented 4 years ago

I will try to reconfigure and run the trace tonight. It would be neat if you could produce JSONs with sections for each Solar Circuit as sc1, sc2 in the same way that multiple heating circuits are hc1, hc2 etc but I don't know what that means for the current SM100 implementations.

FWIW I'm still on 1.9.5b7 (as I still can't find any newer bin files on the dev branch) and living with the web interface EMS bus error as it doesn't seen to impact telnet logging or HA.

proddy commented 4 years ago

wow, didn't notice my automatic TravisCI builds were breaking. Last one was 6 days ago!

On Mon, Jan 6, 2020 at 1:48 PM PhillyGilly notifications@github.com wrote:

I will try to reconfigure and run the trace tonight. It would be neat if you could produce JSONs with sections for each Solar Circuit as sc1, sc2 in the same way that multiple heating circuits are hc1, hc2 etc but I don't know what that means for the current SM100 implementations.

FWIW I'm still on 1.9.5b7 (as I still can't find any newer bin files on the dev branch) and living with the web interface EMS bus error as it doesn't seen to impact telnet logging or HA.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/267?email_source=notifications&email_token=AAJMO6B7AUDVNHUK54DMEO3Q4MSB5A5CNFSM4J7MUOA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEIFLDBI#issuecomment-571126149, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJMO6FM7HKP5ZVON5DABXLQ4MSB5ANCNFSM4J7MUOAQ .

PhillyGilly commented 4 years ago

Here is the trace log: [TELNET] Connected to EMS-ESP version 1.9.5b7. Type ? for commands.
System Logging set to None
devices These device IDs are on the EMS Bus: 0x10 0x30 and 2 were recognized by EMS-ESP as: unknown? (DeviceID:0x10 ProductID:207 Version:17.01) SM200 Solar Module (DeviceID:0x30 ProductID:164 Version:25.04) You have a device is that is not yet known by EMS-ESP. Please report this as a GitHub issue so we can expand the EMS device library.
info EMS-ESP system stats:
System logging set to None
LED: on, Listen mode: off
Boiler: disabled, Thermostat: disabled, Solar Module: enabled, Mixing Module: disabled
Shower Timer: disabled, Shower Alert: disabled
EMS Bus stats: No connection can be made to the EMS bus
Boiler stats:
Boiler:
Warm Water activated: ?
Warm Water circulation pump available: ?
Warm Water selected temperature: ? C
Warm Water desinfection temperature: ? C
Warm Water current temperature: ? C
Warm Water current tap water flow: ? l/min
Warm Water # starts: ? times
Warm Water 3-way valve: on
Selected flow temperature: ? C
Current flow temperature: ? C
Return temperature: ? C
Gas: ?
Boiler pump: ?
Fan: ?
Ignition: ?
Circulation pump: ?
Burner selected max power: ? %
Burner current power: ? %
Flame current: ? uA
System pressure: ? bar
System service code: ??
Heating temperature setting on the boiler: ? C
Boiler circuit pump modulation max power: ? %
Boiler circuit pump modulation min power: ? %
Boiler temperature: ? C
Exhaust temperature: ? C
Pump modulation: ? %
Burner # starts: ? times
Solar Module stats:
Solar module: SM200 Solar Module (DeviceID:0x30 ProductID:164 Version:25.04)
Collector temperature: 9.2 C
Bottom temperature: 18.1 C
Pump modulation: 0 %
Pump active: off
Energy last hour: 0.0 Wh
Energy today: 0 Wh
Energy total: 1624.6 kWh
log v
System Logging set to Verbose
Error! Unable to read the EMS bus.
(16:15:20) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
Error! Unable to read the EMS bus.
(16:15:48) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(16:15:48) Thermostat -> All, type 0x06, telegram: 90 00 06 00 14 01 10 06 0F 07 00 00 10 FF 00 (CRC=24) #data=11
(16:15:50) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 5C 00 B5 80 00 80 00 80 00 80 00 80 00 80 00 00 6D 80 00 80 00 80 00 (CRC=4E) #data=24
(16:15:51) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2
(16:15:51) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(16:15:51) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 00 00 00 FF 00 00 00 00 00 64 00 00 00 00 00 (CRC=A4) #data=18
(16:15:51) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
(16:15:52) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2
(16:15:52) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1
(16:15:52) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
Error! Unable to read the EMS bus.
(16:16:20) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
(16:16:31) Solar Module -> All, type 0xBF, telegram: B0 00 BF 00 30 A4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=01) #data=24
(16:16:36) Thermostat -> All, type 0xBF, telegram: 90 00 BF 00 10 CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=8D) #data=24
Fetching data from EMS devices
Requesting type SM100Monitor(0x262) from dest 0x30
Starting scheduled MQTT publish...
Publishing SM data via MQTT
(16:16:48) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(16:16:48) Thermostat -> All, type 0x06, telegram: 90 00 06 00 14 01 10 06 10 07 00 00 10 FF 00 (CRC=AB) #data=11
(16:16:49) Sending read of type 0x262 to 0x30, telegram: 8B B0 FF 00 20 02 62 (CRC=B7)
(16:16:49) Solar Module -> Me, type 0x0262, telegram: B0 0B FF 00 02 62 00 5C 00 B5 80 00 80 00 80 00 80 00 80 00 80 00 00 6D 80 00 80 00 80 00 80 (CRC=E2) #data=25
(16:16:49) Solar Module -> All, type 0x07, telegram: B0 00 07 00 08 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=CE) #data=15
(16:16:50) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(16:16:51) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 5C 00 B5 80 00 80 00 80 00 80 00 80 00 80 00 00 6D 80 00 80 00 80 00 (CRC=4E) #data=24
(16:16:51) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2
(16:16:51) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(16:16:51) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 00 00 00 FF 00 00 00 00 00 64 00 00 00 00 00 (CRC=A4) #data=18
(16:16:52) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
(16:16:52) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2
(16:16:52) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1
(16:16:52) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
Error! Unable to read the EMS bus.
(16:17:21) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
Error! Unable to read the EMS bus.
(16:17:48) Solar Module -> All, type 0x07, telegram: B0 00 07 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 (CRC=7E) #data=15
(16:17:49) Thermostat -> All, type 0x06, telegram: 90 00 06 00 14 01 10 06 11 08 00 00 10 FF 00 (CRC=12) #data=11
(16:17:51) Solar Module -> All, type 0x0262, telegram: B0 00 FF 00 02 62 00 5C 00 B5 80 00 80 00 80 00 80 00 80 00 80 00 00 6D 80 00 80 00 80 00 (CRC=4E) #data=24
(16:17:51) Solar Module -> All, type 0x0262, telegram: B0 00 FF 18 02 62 80 00 (CRC=B8) #data=2
(16:17:51) Solar Module -> All, type 0x0263, telegram: B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 (CRC=5A) #data=15
(16:17:51) Solar Module -> All, type 0x0264, telegram: B0 00 FF 00 02 64 64 00 00 00 00 00 FF 00 00 00 00 00 64 00 00 00 00 00 (CRC=A4) #data=18
(16:17:52) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5
(16:17:52) Solar Module -> All, type 0x0268, telegram: B0 00 FF 00 02 68 0C 00 (CRC=08) #data=2
(16:17:52) Solar Module -> All, type 0x0269, telegram: B0 00 FF 00 02 69 00 (CRC=0A) #data=1
(16:17:53) Solar Module -> All, type 0x026A, telegram: B0 00 FF 00 02 6A 03 03 03 03 03 03 03 03 03 03 03 03 (CRC=95) #data=12
Error! Unable to read the EMS bus.
(16:18:21) Solar Module -> All, type 0x0266, telegram: B0 00 FF 00 02 66 0F 7B 00 4B 09 (CRC=C5) #data=5

There is new data in the 0x0262 telegram at positions 16+17 which is the bottom temperature on the second circuit confirmed by putting the T2 and T5 probes alternately in ice/hot water. But I can't see anything obvious relating the three way valve position or status. This Excell contains the results of my test and suggested addition to the Wiki. Trace2 06012020.xlsx

proddy commented 4 years ago

a few observations

PhillyGilly commented 4 years ago

Hi @proddy You don't have a boiler so I should probably suppress showing the Boiler Stats in info, right? I do have a boiler (WB Greenstar see #226 but it isn't on the EMS bus yet. However suppressing unnecessary info would be better but this is a low priority as most users have a boiler.) I see the warning "No connection can be made to the EMS bus" and "Error! Unable to read the EMS bus." yet you are receiving data so that is something else I need to fix Agreed. did you see you had multiple circuits on the SM200? Can you identify them in the incoming telegrams? Yes (and no). The SM200 does not have multiple circuits like I suggested. However all the "missing" data is contained in the 0x0262 temperature telegram or in the 0x026A status telegram.

image

I can't definitively test my findings in January but I've described my process here:

MS200 analysis.pdf

PhillyGilly commented 4 years ago

Bin file for 1.9.5b16 found and uploaded. New devices added (note: it is a CS200 ) image Thanks :-)

proddy commented 4 years ago

What should we consider adding to the project a) Including the 6 other TSs (TS3-TS8) using 0x26A to see which are active, and having their data included in a single MQTT payload ? b) or as above but just the the additional cylinder as in your setup

and how much of a priority is this. There's a lot on the to-do list and I'm thinking of moving them to a backlog

PhillyGilly commented 4 years ago

Hi @proddy Bearing in mind everything that is going on I would be grateful if you could just add TS5 and VS2 into the existing SM100 set up as below. This would work for 100% of known SM200 users and also inconvenience 0% of current SM100 users. image I agree that using separate or nested payloads would be a tidier way of proceeding, but wouldn't we need a fully configured installation to test and map the physical connections to telegram data? As there aren't any users with this configuration (AFAIK) I suggest you put this development into the backlog. Thanks.

PhillyGilly commented 4 years ago

Hello @proddy. In issue #299 @MichaelDvP has kindly created a test version for the MM200 problem. This made me think that I could help get the missing SM200 into a future release by making a version that brings back TS5 and VS2. I have looked at how the SM100 code works in ems.cpp and it seems fairly straight forward to add in those two points. So, if I were to do this which file version should I use (i.e. last stable 1.9.4 of latest version 1.95b17) ?

proddy commented 4 years ago

@PhillyGilly sure, give it a shot. Add the two variables to ems.h, make sure you init them in ems_init(), add the handler to EMS_Types[] and create the new functions. I can help you out if you get stuck. Actually looking at ems.cpp is monstrously long. It's in need of a refactor to separate classes and files which I'll do after the new web UI is functional.

Also thinking about it, I could create a new branch for the SM200/MM200 work so we can all work collaboratively without PRs. Let me know if that's easier for y'all.

proddy commented 4 years ago

The SM200 telegrams look to be documented now in Norbert's hometop (https://github.com/norberts1/hometop_HT3/blob/master/HT3/docu/HT3-Bus_Telegramme.pdf) which may give some insights in where the rest of the data is hiding. I'm busy refactoring the code to make it much easier to extend. The solar module will be a separate class library for example so I would before adding code to 1.9,x

PhillyGilly commented 4 years ago

This message crossed with the one above. I haven't looked at Norbert's pdf yet but I had started copying SM100 code and updating it for SM200 in line with the Wiki https://emsesp.github.io/docs/#/SM100. The various declarations and functions are here: SM200 code.txt This covers the basic SM200 functionality that I need now., but Norbert's info may open the option to have SM200 code that covers all the possible configurations although it couldn't be tested. I'm not going to get a chance to compile it for a bit but if anybody can yet give me a bin file, I will be able to test it.

PhillyGilly commented 4 years ago

I have had a quick look at Norbert's documentation of x0262, x0264, and x028E telegrams. Everything appears to be the same in these. In x026A he identifies Solar Pump on/off although his values are 0/1 for on/off where we have 3/4 and he does not identify VS2 at all. As I have seen this change at byte 4, I am happy with the changes proposed above

proddy commented 4 years ago

ok, let's stick to the original design. I'll incorporate them into the new code. Just did heatpumps. Solar is next

PhillyGilly commented 4 years ago

I agree. Is there any sensible way fir me to feedback my thoughts on x0262 to Norbert?

proddy commented 4 years ago

I agree. Is there any sensible way fir me to feedback my thoughts on x0262 to Norbert?

just create an issue on his github and refer to the document.

proddy commented 4 years ago

I forgot about this one. What are the next steps?

PhillyGilly commented 4 years ago

Regarding Norbert: I created an issue on his Github and have had a small dialogue with him. In summary he is on the case for the 0x0262 Temperature but I can contribute further on the statuses in 0x026A. I don't need anything else from you on this one.

Regarding the SM200 module: I followed your suggestions above and "wrote" the lines of code for the ems.h and ems.cpp as below (and in txt file due to format) and posted them above at the beginning of the Feb. As you can see I have simply added a few lines to your code, and although there may be more elegant solutions than multiple nested elseif, I don't think there's a good enough reason to rewrite the working SM100 code. I was hoping that you would be able to add this into into a new release as its a small change. I will test the firmware if somebody can compile it for me.

SM200 code.txt

for ems.h at line~40 // Device Flags

define EMS_DEVICE_FLAG_NONE 0 // no flags set

define EMS_DEVICE_FLAG_SM10 10 // solar module1

define EMS_DEVICE_FLAG_SM100 11 // solar module2

define EMS_DEVICE_FLAG_SM200 12 // solar module3

at line~350 // Solar Module - SM10/SM100/SM200/ISM1 typedef struct { uint8_t device_id; // the device ID of the Solar Module uint8_t device_flags; // Solar Module flags const char * device_desc_p; uint8_t product_id; char version[10]; int16_t collectorTemp; // collector temp (TS1) int16_t bottomTemp; // bottom temp (TS2) int16_t bottomTemp2; // bottom temp cylinder 2 (TS5) uint8_t pumpModulation; // modulation solar pump uint8_t pump; // pump active uint8_t valveStatus; // valve status (VS2) int16_t setpoint_maxBottomTemp; // setpoint for maximum collector temp uint16_t EnergyLastHour; uint16_t EnergyToday; uint16_t EnergyTotal; uint32_t pumpWorkMin; // Total solar pump operating time } _EMS_SolarModule;

for ems.cpp at line~180 // Solar Module values EMS_SolarModule.collectorTemp = EMS_VALUE_SHORT_NOTSET; // collector temp from SM10/SM100/SM200 EMS_SolarModule.bottomTemp = EMS_VALUE_SHORT_NOTSET; // bottom temp from SM10/SM100/SM200 EMS_SolarModule.bottomTemp2 = EMS_VALUE_SHORT_NOTSET; // bottom temp 2 from SM200 EMS_SolarModule.pumpModulation = EMS_VALUE_INT_NOTSET; // modulation solar pump SM10/SM100/SM200 EMS_SolarModule.pump = EMS_VALUE_BOOL_NOTSET; // pump active EMS_SolarModule.valveStatus = EMS_VALUE_BOOL_NOTSET; // valve status from SM200 EMS_SolarModule.EnergyLastHour = EMS_VALUE_USHORT_NOTSET; EMS_SolarModule.EnergyToday = EMS_VALUE_USHORT_NOTSET; EMS_SolarModule.EnergyTotal = EMS_VALUE_USHORT_NOTSET; EMS_SolarModule.device_id = EMS_ID_NONE; EMS_SolarModule.product_id = EMS_ID_NONE; EMS_SolarModule.pumpWorkMin = EMS_VALUE_LONG_NOTSET; EMS_SolarModule.setpoint_maxBottomTemp = EMS_VALUE_SHORT_NOTSET;

at line~1470 /*

/*

/*

/*

at line~1950 void ems_getSolarModuleValues() { if (ems_getSolarModuleEnabled()) { if (EMS_SolarModule.device_flags == EMS_DEVICE_FLAG_SM10) { ems_doReadCommand(EMS_TYPE_SM10Monitor, EMS_ID_SM); // fetch all from SM10Monitor } else if (EMS_SolarModule.device_flags == EMS_DEVICE_FLAG_SM100) { ems_doReadCommand(EMS_TYPE_SM100Monitor, EMS_ID_SM); // fetch all from SM100Monitor } else if (EMS_SolarModule.device_flags == EMS_DEVICE_FLAG_SM200) { ems_doReadCommand(EMS_TYPE_SM200Monitor, EMS_ID_SM); // fetch all from SM200Monitor } }

at line~2785 // Solar Module devices {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM10Monitor, "SM10Monitor", _process_SM10Monitor}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM100Monitor, "SM100Monitor", _process_SM100Monitor}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM100Status, "SM100Status", _process_SM100Status}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM100Status2, "SM100Status2", _process_SM100Status2}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM100Energy, "SM100Energy", _process_SM100Energy}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM200Monitor, "SM200Monitor", _process_SM100Monitor}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM200Status, "SM200Status", _process_SM100Status}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM200Status2, "SM200Status2", _process_SM100Status2}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_SM200Energy, "SM200Energy", _process_SM100Energy}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_ISM1StatusMessage, "ISM1StatusMessage", _process_ISM1StatusMessage}, {EMS_DEVICE_UPDATE_FLAG_SOLAR, EMS_TYPE_ISM1Set, "ISM1Set", _process_ISM1Set},a

proddy commented 4 years ago

sorry, must have missed that. I'll add the code tonight.

PhillyGilly commented 4 years ago

I'm not getting bottomtemp2 still in 1.9.5b43 image Also I hadn't previously noticed but the system status page dropped the mqtt info box between 1.9.5b37 and 1.9.5b38 hence the MQTT explorer image image

proddy commented 4 years ago

you code hasn't gone in yet, hence no bottomtemp2. Also MQTT log has been removed entirely from telnet console and web. It was too much memory overhead and not really aligned with the goals of EMS-ESP

proddy commented 4 years ago

btw this is all documented in the changelog.md file

PhillyGilly commented 4 years ago

Sorry. I jumped the gun. I didn't look at the code/change log before commenting Agree there's no need for mqttlog when external app can be used. Also mqttlog still appears as option after telnet ? command. Cheers.

On Wed, 26 Feb 2020, 07:55 Proddy, notifications@github.com wrote:

you code hasn't gone in yet, hence no bottomtemp2. Also MQTT log has been removed entirely from telnet console and web. It was too much memory overhead and not really aligned with the goals of EMS-ESP

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/267?email_source=notifications&email_token=ANNKV75W7LVX3O2BQZ2TIOTREYN63A5CNFSM4J7MUOA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEM7FVEA#issuecomment-591288976, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANNKV7Y3RQ33RAKGDTPM4CTREYN63ANCNFSM4J7MUOAQ .

proddy commented 4 years ago

mqttlog shows the publish queue. It has a limit of 50 messages and is sent sequentially every 750ms. A better name for this would probably be mqttqueue I agree.

proddy commented 4 years ago

@PhillyGilly I merged in your changes and tried to simplify it a bit. It's in 1.9.5b44. Can you check? Note only telnet will show the boiler temp2, not the web UI.

PhillyGilly commented 4 years ago

Hello @proddy . Thank you. Yes the SM100/SM200 code was a bit repetitive. I've got all the data in telenet info but not MQTT explorer. (However can you note that the IP in my Explorer is the HA Raspberry Pi and my Telnet IP is the ESP. Is that OK?) image

proddy commented 4 years ago

didn't do the MQTT. If the data looks ok I'll do that next

PhillyGilly commented 4 years ago

Yes it looks right. Cylinder 1 has been heating today. Cylinder 2 is colder at the bottom because that is where it fills.
image

proddy commented 4 years ago

ok. Added to 1.9.5b45 just now

PhillyGilly commented 4 years ago

@Proddy. BottomTemperature2 and ValveStatus both there! Thank you very much. image

The valve status is right in EMS-ESP. My plumbing & wiring is wrong! To be fixed next week.

proddy commented 4 years ago

great. BTW that HA dashboard is sweet. If at some point you want to share the config let me know and I'll add it to the wiki

PhillyGilly commented 4 years ago

Sure. Here it is. I've included code for the Lovelace tab, sensor.yaml and binary_sensor.yaml HomeAssistantSM200.txt I can do a screenshot too, once my system is fixed and the sun is shining. (BTW I wouldn't have found out that the valve is plumbed and wired incorrectly if I hadn't been able to extract the data and be confident that it was right and the physical world was wrong).

PhillyGilly commented 4 years ago

Correction to above:

04 sensor.hw_solar_valve_status

proddy commented 4 years ago

ok, I'll adjust the files on the wiki too

PhillyGilly commented 4 years ago

The installation team came and reorientated the three way valve in my system today, so I should have a good screenshot in a week and be able to run the digital tests for @Norbert too. When I have posted the picture I will close the Issue.

On Tue, 3 Mar 2020, 15:27 Proddy, notifications@github.com wrote:

ok, I'll adjust the files on the wiki too

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/267?email_source=notifications&email_token=ANNKV75VG6EAMFXNNN6OBHLRFUOVRA5CNFSM4J7MUOA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENT5WXY#issuecomment-594008927, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANNKV74EHPSISWU7EJ3AMPDRFUOVRANCNFSM4J7MUOAQ .

joanwa commented 4 years ago

Hello Proddy, Is it possible to extend the supported Solar Modules to include the Bosch/Bruderus SM200.

stupid question: isn't the Buderus solar module SM200 with EMSplus, whereas for Bosch/Junkers it's the MS200 solar module and EMS2?

PhillyGilly commented 4 years ago

There is only one device which is badged variously as SM200 and MM200. So which ever you've got should work already. Obviously @proddy has only written code that can be tested against available configurations. So if you have a really "interesting" installation it might need a bit of tweaking. Referring to the installation manual (see last few pages) MS200 full installation manual.pdf (or the device set up) do you know what configuration you have?

proddy commented 4 years ago

correct, the Buderus SM100/SM200 and Junkers MS100/MS200 are all EMS plus and use the same range of telegram types (0x262, 0x264, 0x26A, 0x28E). I haven't tested it though but in theory....

joanwa commented 4 years ago

edit, wrong language before... ok, thanks a lot! The MS200 manual you linked states in table/chapter 2.8 that the MS200 does have an EMS2/EMSplus bus. Does that mean EMSplus/EMS2 are the same thing? One of my EMS1 devices went belly up and I'm now replacing them all with EMS2 devices. I had FW200, ISM2 & IPM 1 and replace them with CW400, MS200 & MM100. The CW400 and MM100 I already have. The solar module I still have to get, was just confused with the whole EMSplus vs. EMS2 and MS200 vs. SM200 thing. EMS-ESP already was of great help in finding out which device broke down, whereas the MB LAN 2 was completely useless.

proddy commented 4 years ago

I haven't heard of EMS2plus. I think its all the same, i.e. EMS 2.0 = EMS+ = EMS Plus. It's just telegrams of bytes after all. There is however a difference between some telegrams that Buderus devices and HT3 (Junkers/Bosch/Worcester) use, so a lot of EMS-ESP was built by trial and error with input from the good folks on the forum (like PhillyGilly!). If you run into strange telegrams then let us know and we'll figure them out. Those MB LAN modules are seriously overpriced.

joanwa commented 4 years ago

yeah, sorry just EMSplus, not EMS2plus, corrected above. I'll definitely post here what issues I run into with my configuration. Would also gladly assist in getting the CW400 fully supported. I'll keep you posted!