Closed PhillyGilly closed 4 years ago
Yes, should be possible. I'll take a look.
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?
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 .
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.
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
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
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
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.
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.
looks fine. the fatal exception is normal after a reset (cold-start) of the ESP. no need to panic there.
I forgot about this one, implementing SM200. I'll take a look this week.
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.
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 .
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
a few observations
info
, right?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.
I can't definitively test my findings in January but I've described my process here:
Bin file for 1.9.5b16 found and uploaded. New devices added (note: it is a CS200 ) Thanks :-)
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
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. 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.
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) ?
@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.
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
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.
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
ok, let's stick to the original design. I'll incorporate them into the new code. Just did heatpumps. Solar is next
I agree. Is there any sensible way fir me to feedback my thoughts on x0262 to Norbert?
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.
I forgot about this one. What are the next steps?
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.
for ems.h at line~40 // Device Flags
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
sorry, must have missed that. I'll add the code tonight.
I'm not getting bottomtemp2 still in 1.9.5b43 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
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
btw this is all documented in the changelog.md file
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 .
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.
@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.
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?)
didn't do the MQTT. If the data looks ok I'll do that next
Yes it looks right. Cylinder 1 has been heating today. Cylinder 2 is colder at the bottom because that is where it fills.
ok. Added to 1.9.5b45 just now
@Proddy. BottomTemperature2 and ValveStatus both there! Thank you very much.
The valve status is right in EMS-ESP. My plumbing & wiring is wrong! To be fixed next week.
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
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).
Correction to above:
ok, I'll adjust the files on the wiki too
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 .
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?
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?
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....
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.
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.
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!
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