Ems-esp: Wrong and random values from Boiler

Created on 2 Jan 2019  Â·  116Comments  Â·  Source: proddy/EMS-ESP

Bug description
I get unrealistic and seemingly random values from the boiler.

Here a few examples:

(16:08:29)   Return temperature: 67.0 C
...
(16:08:29)   Flame current: 5.8 uA
(16:08:29)   System pressure: 1.1 bar
(16:08:29)   Current System Service Code: =H
(16:08:29)   Outside temperature: 4.4 C
(16:08:29)   Boiler temperature: ? C
(16:08:29)   Pump modulation: 85 %
---
(16:08:46)   Return temperature: 12.8 C
...
(16:08:46)   Flame current: 12.8 uA
(16:08:46)   System pressure: 0.0 bar
(16:08:46)   Current System Service Code:
(16:08:46)   Outside temperature: 4.4 C
(16:08:46)   Boiler temperature: ? C
(16:08:46)   Pump modulation: 85 %
---
(16:10:13)   Return temperature: 1.7 C
...
(16:10:13)   Flame current: -1664.0 uA
(16:10:13)   System pressure: 12.8 bar
(16:10:13)   Current System Service Code:
(16:10:13)   Outside temperature: 4.4 C
(16:10:13)   Boiler temperature: ? C
(16:10:13)   Pump modulation: 85 %

Device information
I use a Buderus Logamax plus GB192-25 and the integrated thermostat. Here are a few 0x19 and 0x18 I got:

Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 1F 64 00 00 01 64 40 80 00 02 5F 02 DC 00 00 0B 30 41 01 31 00 01 00 00 00 (CRC=7F, #data=27)
Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF, #data=11)
Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 1F 64 00 00 01 44 40 80 00 02 5F 02 DB 00 00 0B 30 41 01 31 00 01 00 00 00 (CRC=BC, #data=27)
Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF, #data=11)
Boiler -> all, type 0x19 telegram: 08 00 19 00 00 2C 80 00 80 00 00 00 00 00 00 1E 8E 01 14 E1 00 00 00 00 B5 81 00 0C CF 80 00 (CRC=AC, #data=27)
Boiler -> all, type 0x1C telegram: 08 00 1C 00 92 06 0F 05 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=1B, #data=25)
bug

All 116 comments

Looks like with your boiler it broadcasts sometimes with an offset. The 4th byte is the offset which I assumed is 0 always for broadcast but I also see '1B' too. I'll modify the code. Please see if that helped.

After flashing 1.2.1 I don't get any values at all as the boiler is not detected. Can I force it somehow? I tried pressing D but this gives the following:

l 4
System Logging set to Verbose
(00:06:18) 0x10 -> 0x08, type 0x23 telegram: 10 08 23 00 38 64 64 (CRC=33), #data=3
D
(00:06:19) 0x08 -> all, type 0x18 telegram: 08 00 18 00 38 02 41 64 0B 09 01 25 40 80 00 02 73 01 A1 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=65), #data=27

Thermostat set to disabled
Boiler set to disabled
Scanning EMS bus for devices. This may take a few seconds.
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x08
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x08
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x09
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x21
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x11
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x10
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x17
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x10
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x10
Boiler not initialized, queuing the read request.
Requesting type Version(0x02) from dest 0x18
(00:06:19) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:06:19) 0x10 -> all, type 0x06 telegram: 10 00 06 00 13 01 16 02 08 29 02 00 10 FF 00 (CRC=C2), #data=11
(00:06:19) 0x08 -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 93 80 00 00 80 00 80 00 80 00 00 (CRC=82), #data=21
(00:06:20) 0x08 -> all, type 0x34 telegram: 08 00 34 00 3C 02 73 02 73 A1 00 01 03 00 00 5F 88 00 11 C7 00 80 00 (CRC=0A), #data=19
(00:06:20) 0x08 -> all, type 0x18 telegram: 08 00 18 00 38 02 42 64 0B 09 01 25 40 80 00 02 73 01 A1 00 2E 0D 2D 48 00 C8 00 02 18 00 00 (CRC=C0), #data=27
(00:06:20) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:06:22) 0x08 -> all, type 0x18 telegram: 08 00 18 00 38 02 42 64 0B 09 01 25 40 80 00 02 73 01 A1 00 2F 0E 2D 48 00 C8 00 02 18 00 00 (CRC=F2), #data=27
(00:06:22) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:06:22) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:06:22) 0x08 -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:06:23) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:06:23) 0x10 -> 0x08, type 0x1A telegram: 10 08 1A 00 38 64 64 (CRC=88), #data=3
(00:06:23) 0x10 -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:06:23) 0x10 -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
(00:06:23) 0x08 -> all, type 0x18 telegram: 08 00 18 00 38 02 43 64 0B 09 01 25 40 80 00 02 73 01 A1 00 2F 0E 2D 48 00 C8 00 02 18 00 00 (CRC=A5), #data=27
(00:06:23) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:06:24) 0x08 -> all, type 0x18 telegram: 08 00 18 00 38 02 43 64 0B 09 01 25 40 80 00 02 73 01 A1 00 30 0E 2D 48 00 C8 00 02 18 00 00 (CRC=9D), #data=27
(00:06:24) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:06:24) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11

That is strange. I'll modify the logging slightly and check it in tonight. Then please send this 'r 0b 88 02 00 63' which will return the version from the boiler.

After updating I sent the raw telegram, here is the log output:

r 0b 88 02 00 63
(00:01:08) Sending read of type 0x18 to 0x00: telegram: 0B 80 18 00 63 (CRC=D7), #data=1
(00:01:08) Sending read of type 0x18 to 0x00: telegram: 0B 80 18 00 63 (CRC=D7), #data=1
(00:01:08) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 03 3E 64 34 0A 11 65 40 80 00 02 51 02 D4 00 FF 0B 3D 48 00 C9 00 03 18 00 00 (CRC=FC), #data=27
(00:01:09) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:01:09) 0x08 -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 01 57 01 58 80 00 00 80 00 80 00 80 00 00 (CRC=93), #data=21
(00:01:09) Sending read of type 0x19 to 0x00: telegram: 0B 80 19 00 63 (CRC=D3), #data=1
(00:01:09) 0x08 -> all, type 0x34 telegram: 08 00 34 00 3C 02 51 02 51 89 00 01 03 00 00 5F C2 00 11 D2 00 80 00 (CRC=35), #data=19
(00:01:10) 0x08 -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:01:10) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 03 3F 64 34 0A 11 65 40 80 00 02 52 02 D5 01 00 0B 3D 48 00 C9 00 03 18 00 00 (CRC=2C), #data=27
(00:01:10) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:01:10) Sending read of type 0x19 to 0x00: telegram: 0B 80 19 00 63 (CRC=D3), #data=1
(00:01:11) Sending read of type 0x33 to 0x00: telegram: 0B 80 33 00 63 (CRC=7B), #data=1
(00:01:11) Sending read of type 0x33 to 0x00: telegram: 0B 80 33 00 63 (CRC=7B), #data=1
(00:01:12) Sending read of type 0x14 to 0x00: telegram: 0B 80 14 00 63 (CRC=E7), #data=1
(00:01:12) Sending read of type 0x14 to 0x00: telegram: 0B 80 14 00 63 (CRC=E7), #data=1
(00:01:13) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:01:14) 0x08 -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:01:17) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 03 48 64 34 0A 11 65 40 80 00 02 52 02 DC 00 FD 0B 3D 48 00 C9 00 03 18 00 00 (CRC=EA), #data=27
(00:01:17) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:01:18) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 03 4A 64 34 0A 11 65 40 80 00 02 53 02 DC 00 FF 0B 3D 48 00 C9 00 03 18 00 00 (CRC=9A), #data=27
(00:01:18) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:01:18) 0x08 -> all, type 0x19 telegram: 08 00 19 00 00 19 80 00 80 00 00 00 00 55 00 1E D9 01 18 D2 00 00 00 00 B9 10 00 0D 07 80 00 (CRC=FA), #data=27
(00:01:19) 0x08 -> all, type 0x1C telegram: 08 00 1C 00 92 06 0F 05 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=1B), #data=25
(00:01:19) 0x08 -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 01 57 01 56 80 00 00 80 00 80 00 80 00 00 (CRC=D9), #data=21
(00:01:19) 0x08 -> all, type 0x34 telegram: 08 00 34 00 3C 02 53 02 53 89 00 01 03 00 00 5F C2 00 11 D2 00 80 00 (CRC=A9), #data=19
(00:01:20) 0x08 -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13

I was not sure which lines were in response of the version request... :-|

Can you try again with my latest version, 1.2.3

Sure:

l 4
System Logging set to Verbose
(00:00:32) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 02 DB 64 64 0A 11 65 40 80 00 02 1D 02 5D 01 55 0B 3D 48 00 C9 00 03 18 00 00 (CRC=9B), #data=27
(00:00:33) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
r 0b 88 02 00 63
(00:00:36) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 02 E6 64 64 0A 11 65 40 80 00 02 1D 02 65 01 55 0B 3D 48 00 C9 00 03 18 00 00 (CRC=D0), #data=27
(00:00:37) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:00:37) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:00:37) 0x08 -> all, type 0x19 telegram: 08 00 19 00 00 19 80 00 80 00 00 00 00 55 00 1E DF 01 19 0A 00 00 00 00 B9 44 00 0D 0C 80 00 (CRC=A2), #data=27
(00:00:37) 0x08 -> all, type 0x1C telegram: 08 00 1C 00 92 06 0F 05 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=1B), #data=25
(00:00:38) 0x08 -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 02 39 02 39 80 00 00 80 00 80 00 80 00 00 (CRC=27), #data=21
(00:00:38) 0x08 -> all, type 0x34 telegram: 08 00 34 00 3C 02 1D 02 1D 89 00 01 03 00 00 5F C6 00 11 D3 00 80 00 (CRC=65), #data=19
(00:00:38) 0x08 -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:00:38) 0x10 -> 0x08, type 0x23 telegram: 10 08 23 00 3A 64 00 (CRC=5F), #data=3
(00:00:38) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 02 EB 64 64 0A 11 65 40 80 00 02 1D 02 6A 01 54 0B 3D 48 00 C9 00 03 18 00 00 (CRC=94), #data=27
(00:00:39) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:00:39) 0x08 -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:00:39) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 02 EF 64 64 0A 11 65 40 80 00 02 1D 02 6D 01 54 0B 3D 48 00 C9 00 03 18 00 00 (CRC=45), #data=27
(00:00:40) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
(00:00:43) 0x08 -> all, type 0x18 telegram: 08 00 18 00 54 02 FA 64 64 0A 11 65 40 80 00 02 1D 02 75 01 54 0B 3D 48 00 C9 00 03 18 00 00 (CRC=2E), #data=27
(00:00:44) 0x08 -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11

I just saw that I can define the boiler type in my_config.h and tried that. Now I get the correct values :-)

  Selected flow temperature: 57 C
  Current flow temperature: 40.9 C
  Return temperature: 29.6 C

Just the thermostat seems to have troubles, the time is correct, but it does not display any of the other values. I'm not sure if I have an RC35, though. I just 'assumed' by reading the EMS wiki and knowing that I can set 'holiday mode', which seems to be a feature available only on the RC35...

Thermostat stats:
  Thermostat type: RC35 (or compatible [TypeID 0x10] Product ID:86
  Thermostat time is 15:38:07 3/1/2019
  Setpoint room temperature: ? C
  Current room temperature: ? C
  Mode is set to ?

great. I added that feature for you, and others that will have the same problem until I've built up a library of EMS devices. I'm sure it must be published somewhere on the internet, just haven't found it yet so its all trial and error. So looks like you have an RC35 compatible, but they do differ between Budrus, Nefit, Sieger, Bosch etc. Can you do a 't 2' which will tell you the firmware version? Your thermostat may respond to different heating circuits. Then do a 't 41' (for an RC30) and a 't 3e' (for a RC35)

t 2:

t 2
Requesting type Version(0x02) from dest 0x10
(01:50:29) Thermostat -> all, type 0xFF telegram: 10 00 FF 0F 01 A5 02 D8 (CRC=A4), #data=4
(01:50:29) Thermostat -> all, type 0xFF telegram: 10 00 FF 0D 01 A5 01 6F (CRC=35), #data=4
(01:50:31) Sending read of type 0x02 to 0x10: telegram: 0B 90 02 00 63 (CRC=3F), #data=1
(01:50:31) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(01:50:31) Sending read of type 0x02 to 0x10: telegram: 0B 90 02 00 63 (CRC=3F), #data=1
(01:50:33) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(01:50:33) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 64 (CRC=37), #data=3

t 3e:

Requesting type RC35StatusMessage(0x3E) from dest 0x10
(01:51:06) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
Calling schedule fetch of values from EMS devices..
Requesting type RC35StatusMessage(0x3E) from dest 0x10
Requesting type RC35Set(0x3D) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(01:51:06) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(01:51:06) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(01:51:07) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 64 (CRC=8C), #data=3
<--- UBASetPoints(0x1A) received
 SetPoint=57, hk_power=100 ww_power=100
(01:51:07) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(01:51:07) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
(01:51:07) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(01:51:08) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(01:51:08) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(01:51:09) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(01:51:09) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(01:51:10) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(01:51:10) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(01:51:10) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(01:51:11) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 11 03 26 2F 03 00 10 FF 00 (CRC=BE), #data=11
<--- RCTime(0x06) received
(01:51:11) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(01:51:12) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 63 (CRC=3B), #data=1
(01:51:12) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 63 (CRC=3B), #data=1
(01:51:12) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(01:51:13) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(01:51:14) Corrupt telegram: telegram: 0B 08 00 18 00 39 02 4E 64 0B 09 01 25 40 80 00 02 7C 01 97 00 31 0D 2D 48 00 C8 00 02 18 00 00 (CRC=55), #data=28
(01:51:14) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11

t 41:

Requesting type RC30StatusMessage(0x41) from dest 0x10
(01:51:55) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 93 80 00 00 80 00 80 00 80 00 00 (CRC=82), #data=21
(01:51:55) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 7B 02 7C A1 00 01 03 00 00 5F D7 00 11 D6 00 80 00 (CRC=A4), #data=19
<--- UBAMonitorWWMessage(0x34) received
(01:51:55) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(01:51:56) Sending read of type 0x41 to 0x10: telegram: 0B 90 41 00 63 (CRC=2A), #data=1
(01:51:57) Sending read of type 0x41 to 0x10: telegram: 0B 90 41 00 63 (CRC=2A), #data=1
(01:51:57) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(01:51:58) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(01:52:01) 0x09 -> Boiler, type 0x1A telegram: 09 08 1A 00 00 00 00 (CRC=D2), #data=3
(01:52:01) 0x09 -> Boiler, type 0x23 telegram: 09 08 23 00 00 00 00 (CRC=69), #data=3
(01:52:02) Thermostat -> Boiler, type 0x35 telegram: 10 08 35 00 11 11 (CRC=30), #data=2
(01:52:04) Boiler -> all, type 0x18 telegram: 08 00 18 00 39 02 57 64 0B 09 01 25 40 80 00 02 7B 01 97 00 2F 0E 2D 48 00 C8 00 02 18 00 00 (CRC=ED), #data=27
<--- UBAMonitorFast(0x18) received
(01:52:04) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(01:52:04) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 92 80 00 00 80 00 80 00 80 00 00 (CRC=E6), #data=21
(01:52:04) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 7B 02 7B A1 00 01 03 00 00 5F D7 00 11 D6 00 80 00 (CRC=C6), #data=19
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
Calling schedule fetch of values from EMS devices..
Requesting type RC35StatusMessage(0x3E) from dest 0x10
Requesting type RC35Set(0x3D) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(01:52:06) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(01:52:06) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(01:52:07) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(01:52:07) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
l (01:52:08) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1

I just noticed that tap water and central heating show up as off, which they are not. Or would this just be on when it is heating up?

  Hot tap water is off
  Central Heating is off

It looks like the Thermostat is not responding to any of the calls you
issue. Which is odd. Can you upload my latest version, set your thermostat
to 0x10 like you did in my_config.h, fire up the Telnet console and type 'U
0'. This will do a full scan of all available telegram types on your
thermostat to see how it responds. It'll take about 5 minutes.

Also remind me which make/model boiler and thermostat you are using?

Hot tap water is calculated by the 'tapwater flow'. Use 's' to see what the
value is when the tap water is running. And the gas is 'on'.
Central Heating looks at the Selected Flow Temperature. Take a look at that
too.

EMS_Boiler.tapwaterActive = ((EMS_Boiler.wWCurFlow != 0) &&
(EMS_Boiler.burnGas == EMS_VALUE_INT_ON));

// heating
EMS_Boiler.heatingActive = ((EMS_Boiler.selFlowTemp >=
EMS_BOILER_SELFLOWTEMP_HEATING) && (EMS_Boiler.burnGas ==
EMS_VALUE_INT_ON));

On Thu, Jan 3, 2019 at 5:42 PM Nils Uliczka notifications@github.com
wrote:

I just noticed that tap water and central heating show up as off, which
they are not. Or would this just be on when it is heating up?

Hot tap water is off
Central Heating is off

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/proddy/EMS-ESP-Boiler/issues/23#issuecomment-451201484,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABLHeJHPyuEHP19XLaNERrza9D3u9tKoks5u_jMFgaJpZM4Zmmqq
.

The results of U 0

System Logging set to Thermostat only
Doing a deep scan on all message types to the thermometer start at 0x%. Reboot ESP when finished.
> Scanning thermostat message type #0x00..
> Scanning thermostat message type #0x01..
> Scanning thermostat message type #0x02..
> Scanning thermostat message type #0x03..
> Scanning thermostat message type #0x04..
> Scanning thermostat message type #0x05..
> Scanning thermostat message type #0x06..
> Scanning thermostat message type #0x07..
> Scanning thermostat message type #0x08..
> Scanning thermostat message type #0x09..
(00:00:49) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 64 (CRC=8C), #data=3
 SetPoint=57, hk_power=100 ww_power=100
(00:00:49) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:00:49) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
> Scanning thermostat message type #0x0A..
> Scanning thermostat message type #0x0B..
> Scanning thermostat message type #0x0C..
> Scanning thermostat message type #0x0D..
> Scanning thermostat message type #0x0E..
> Scanning thermostat message type #0x0F..
> Scanning thermostat message type #0x10..
> Scanning thermostat message type #0x11..
> Scanning thermostat message type #0x12..
> Scanning thermostat message type #0x13..
> Scanning thermostat message type #0x14..
> Scanning thermostat message type #0x15..
> Scanning thermostat message type #0x16..
> Scanning thermostat message type #0x17..
> Scanning thermostat message type #0x18..
> Scanning thermostat message type #0x19..
> Scanning thermostat message type #0x1A..
> Scanning thermostat message type #0x1B..
> Scanning thermostat message type #0x1C..
(00:01:08) Thermostat -> all, type 0xFF telegram: 10 00 FF 08 01 A5 01 18 03 03 01 01 18 03 2F (CRC=20), #data=11
> Scanning thermostat message type #0x1D..
> Scanning thermostat message type #0x1E..
> Scanning thermostat message type #0x1F..
> Scanning thermostat message type #0x20..
(00:01:11) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 13 03 05 0B 03 00 10 FF 00 (CRC=60), #data=11
> Scanning thermostat message type #0x21..
> Scanning thermostat message type #0x22..
> Scanning thermostat message type #0x23..
> Scanning thermostat message type #0x24..
> Scanning thermostat message type #0x25..
> Scanning thermostat message type #0x26..
> Scanning thermostat message type #0x27..
> Scanning thermostat message type #0x28..
> Scanning thermostat message type #0x29..
> Scanning thermostat message type #0x2A..
> Scanning thermostat message type #0x2B..
> Scanning thermostat message type #0x2C..
> Scanning thermostat message type #0x2D..
> Scanning thermostat message type #0x2E..
> Scanning thermostat message type #0x2F..
> Scanning thermostat message type #0x30..
> Scanning thermostat message type #0x31..
> Scanning thermostat message type #0x32..
> Scanning thermostat message type #0x33..
> Scanning thermostat message type #0x34..
> Scanning thermostat message type #0x35..
(00:01:33) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 64 (CRC=37), #data=3
> Scanning thermostat message type #0x36..
> Scanning thermostat message type #0x37..
> Scanning thermostat message type #0x38..
> Scanning thermostat message type #0x39..
> Scanning thermostat message type #0x3A..
(00:01:38) Thermostat -> all, type 0xFF telegram: 10 00 FF 02 01 A5 02 (CRC=56), #data=3
> Scanning thermostat message type #0x3B..
> Scanning thermostat message type #0x3C..
> Scanning thermostat message type #0x3D..
(00:01:40) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 00 (CRC=E8), #data=3
 SetPoint=57, hk_power=100 ww_power=0
(00:01:40) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 00 (CRC=53), #data=3
> Scanning thermostat message type #0x3E..
> Scanning thermostat message type #0x3F..
> Scanning thermostat message type #0x40..
> Scanning thermostat message type #0x41..
> Scanning thermostat message type #0x42..
> Scanning thermostat message type #0x43..
> Scanning thermostat message type #0x44..
> Scanning thermostat message type #0x45..
> Scanning thermostat message type #0x46..
> Scanning thermostat message type #0x47..
> Scanning thermostat message type #0x48..
> Scanning thermostat message type #0x49..
(00:01:53) Thermostat -> Boiler, type 0x35 telegram: 10 08 35 00 11 11 (CRC=30), #data=2
> Scanning thermostat message type #0x4A..
> Scanning thermostat message type #0x4B..
> Scanning thermostat message type #0x4C..
> Scanning thermostat message type #0x4D..
> Scanning thermostat message type #0x4E..
> Scanning thermostat message type #0x4F..
> Scanning thermostat message type #0x50..
> Scanning thermostat message type #0x51..
(00:02:01) Thermostat -> all, type 0xFF telegram: 10 00 FF 0F 01 A5 03 30 (CRC=4E), #data=4
> Scanning thermostat message type #0x52..
(00:02:01) Thermostat -> all, type 0xFF telegram: 10 00 FF 0D 01 A5 01 17 (CRC=4D), #data=4
> Scanning thermostat message type #0x53..
> Scanning thermostat message type #0x54..
> Scanning thermostat message type #0x55..
> Scanning thermostat message type #0x56..
> Scanning thermostat message type #0x57..
> Scanning thermostat message type #0x58..
> Scanning thermostat message type #0x59..
(00:02:09) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 00 (CRC=E8), #data=3
 SetPoint=57, hk_power=100 ww_power=0
(00:02:09) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:02:09) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 A5 80 00 02 2A 39 00 2A 1E 01 17 03 03 01 01 17 03 30 00 00 11 01 03 FF FF 00 (CRC=36), #data=27
> Scanning thermostat message type #0x5A..
(00:02:10) Thermostat -> all, type 0xFF telegram: 10 00 FF 19 01 A5 06 04 00 00 00 00 FF 64 4B 00 3C 01 FF 01 02 (CRC=93), #data=17
(00:02:10) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
> Scanning thermostat message type #0x5B..
> Scanning thermostat message type #0x5C..
> Scanning thermostat message type #0x5D..
(00:02:13) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 13 03 06 0D 03 00 10 FF 00 (CRC=60), #data=11
> Scanning thermostat message type #0x5E..
> Scanning thermostat message type #0x5F..
> Scanning thermostat message type #0x60..
> Scanning thermostat message type #0x61..
> Scanning thermostat message type #0x62..
> Scanning thermostat message type #0x63..
> Scanning thermostat message type #0x64..
> Scanning thermostat message type #0x65..
> Scanning thermostat message type #0x66..
> Scanning thermostat message type #0x67..
> Scanning thermostat message type #0x68..
> Scanning thermostat message type #0x69..
> Scanning thermostat message type #0x6A..
> Scanning thermostat message type #0x6B..
> Scanning thermostat message type #0x6C..
> Scanning thermostat message type #0x6D..
> Scanning thermostat message type #0x6E..
> Scanning thermostat message type #0x6F..
> Scanning thermostat message type #0x70..
> Scanning thermostat message type #0x71..
(00:02:33) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 00 (CRC=53), #data=3
> Scanning thermostat message type #0x72..
> Scanning thermostat message type #0x73..
> Scanning thermostat message type #0x74..
> Scanning thermostat message type #0x75..
> Scanning thermostat message type #0x76..
> Scanning thermostat message type #0x77..
> Scanning thermostat message type #0x78..
> Scanning thermostat message type #0x79..
> Scanning thermostat message type #0x7A..
> Scanning thermostat message type #0x7B..
> Scanning thermostat message type #0x7C..
> Scanning thermostat message type #0x7D..
> Scanning thermostat message type #0x7E..
> Scanning thermostat message type #0x7F..
> Scanning thermostat message type #0x80..
> Scanning thermostat message type #0x81..
> Scanning thermostat message type #0x82..
> Scanning thermostat message type #0x83..
> Scanning thermostat message type #0x84..
> Scanning thermostat message type #0x85..
> Scanning thermostat message type #0x86..
> Scanning thermostat message type #0x87..
> Scanning thermostat message type #0x88..
> Scanning thermostat message type #0x89..
> Scanning thermostat message type #0x8A..
> Scanning thermostat message type #0x8B..
> Scanning thermostat message type #0x8C..
> Scanning thermostat message type #0x8D..
> Scanning thermostat message type #0x8E..
> Scanning thermostat message type #0x8F..
> Scanning thermostat message type #0x90..
> Scanning thermostat message type #0x91..
> Scanning thermostat message type #0x92..
(00:03:06) Thermostat -> all, type 0xFF telegram: 10 00 FF 0D 01 A5 01 16 03 31 (CRC=1E), #data=6
> Scanning thermostat message type #0x93..
> Scanning thermostat message type #0x94..
> Scanning thermostat message type #0x95..
> Scanning thermostat message type #0x96..
> Scanning thermostat message type #0x97..
> Scanning thermostat message type #0x98..
> Scanning thermostat message type #0x99..
> Scanning thermostat message type #0x9A..
(00:03:14) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 13 03 07 0E 03 00 10 FF 00 (CRC=40), #data=11
> Scanning thermostat message type #0x9B..
> Scanning thermostat message type #0x9C..
> Scanning thermostat message type #0x9D..
> Scanning thermostat message type #0x9E..
> Scanning thermostat message type #0x9F..
> Scanning thermostat message type #0xA0..
> Scanning thermostat message type #0xA1..
> Scanning thermostat message type #0xA2..
> Scanning thermostat message type #0xA3..
> Scanning thermostat message type #0xA4..
> Scanning thermostat message type #0xA5..
> Scanning thermostat message type #0xA6..
> Scanning thermostat message type #0xA7..
(00:03:27) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 00 (CRC=E8), #data=3
 SetPoint=57, hk_power=100 ww_power=0
(00:03:27) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:03:27) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
> Scanning thermostat message type #0xA8..
> Scanning thermostat message type #0xA9..
> Scanning thermostat message type #0xAA..
(00:03:30) Thermostat -> all, type 0xBF telegram: 10 00 BF 00 10 9E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=71), #data=24
> Scanning thermostat message type #0xAB..
> Scanning thermostat message type #0xAC..
> Scanning thermostat message type #0xAD..
> Scanning thermostat message type #0xAE..
(00:03:34) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 00 (CRC=53), #data=3
> Scanning thermostat message type #0xAF..
> Scanning thermostat message type #0xB0..
> Scanning thermostat message type #0xB1..
> Scanning thermostat message type #0xB2..
> Scanning thermostat message type #0xB3..
> Scanning thermostat message type #0xB4..
> Scanning thermostat message type #0xB5..
> Scanning thermostat message type #0xB6..
> Scanning thermostat message type #0xB7..
(00:03:43) Thermostat -> all, type 0xA2 telegram: 10 00 A2 00 00 00 00 00 00 (CRC=CA), #data=5
> Scanning thermostat message type #0xB8..
> Scanning thermostat message type #0xB9..
> Scanning thermostat message type #0xBA..
> Scanning thermostat message type #0xBB..
> Scanning thermostat message type #0xBC..
> Scanning thermostat message type #0xBD..
> Scanning thermostat message type #0xBE..
> Scanning thermostat message type #0xBF..
> Scanning thermostat message type #0xC0..
> Scanning thermostat message type #0xC1..
> Scanning thermostat message type #0xC2..
(00:03:53) Thermostat -> Boiler, type 0x35 telegram: 10 08 35 00 11 11 (CRC=30), #data=2
> Scanning thermostat message type #0xC3..
> Scanning thermostat message type #0xC4..
> Scanning thermostat message type #0xC5..
> Scanning thermostat message type #0xC6..
> Scanning thermostat message type #0xC7..
> Scanning thermostat message type #0xC8..
> Scanning thermostat message type #0xC9..
> Scanning thermostat message type #0xCA..
> Scanning thermostat message type #0xCB..
> Scanning thermostat message type #0xCC..
> Scanning thermostat message type #0xCD..
> Scanning thermostat message type #0xCE..
(00:04:06) Thermostat -> all, type 0xFF telegram: 10 00 FF 0D 01 A5 01 15 03 32 (CRC=11), #data=6
> Scanning thermostat message type #0xCF..
> Scanning thermostat message type #0xD0..
> Scanning thermostat message type #0xD1..
> Scanning thermostat message type #0xD2..
> Scanning thermostat message type #0xD3..
> Scanning thermostat message type #0xD4..
> Scanning thermostat message type #0xD5..
> Scanning thermostat message type #0xD6..
> Scanning thermostat message type #0xD7..
> Scanning thermostat message type #0xD8..
(00:04:15) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 13 03 08 0F 03 00 10 FF 00 (CRC=8B), #data=11
> Scanning thermostat message type #0xD9..
> Scanning thermostat message type #0xDA..
> Scanning thermostat message type #0xDB..
> Scanning thermostat message type #0xDC..
> Scanning thermostat message type #0xDD..
> Scanning thermostat message type #0xDE..
> Scanning thermostat message type #0xDF..
> Scanning thermostat message type #0xE0..
> Scanning thermostat message type #0xE1..
> Scanning thermostat message type #0xE2..
> Scanning thermostat message type #0xE3..
> Scanning thermostat message type #0xE4..
> Scanning thermostat message type #0xE5..
> Scanning thermostat message type #0xE6..
> Scanning thermostat message type #0xE7..
> Scanning thermostat message type #0xE8..
> Scanning thermostat message type #0xE9..
> Scanning thermostat message type #0xEA..
(00:04:34) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 39 64 00 (CRC=53), #data=3
> Scanning thermostat message type #0xEB..
> Scanning thermostat message type #0xEC..
> Scanning thermostat message type #0xED..
> Scanning thermostat message type #0xEE..
> Scanning thermostat message type #0xEF..
> Scanning thermostat message type #0xF0..
> Scanning thermostat message type #0xF1..
> Scanning thermostat message type #0xF2..
> Scanning thermostat message type #0xF3..
> Scanning thermostat message type #0xF4..
> Scanning thermostat message type #0xF5..
> Scanning thermostat message type #0xF6..
> Scanning thermostat message type #0xF7..
(00:04:47) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 39 64 00 (CRC=E8), #data=3
 SetPoint=57, hk_power=100 ww_power=0
(00:04:47) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:04:47) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 A5 80 00 02 2A 39 00 2A 1E 01 15 03 03 01 01 15 03 32 00 00 11 01 03 FF FF 00 (CRC=94), #data=27
> Scanning thermostat message type #0xF8..
(00:04:47) Thermostat -> all, type 0xFF telegram: 10 00 FF 19 01 A5 06 04 00 00 00 00 FF 64 4B 00 3C 01 FF 01 02 (CRC=93), #data=17
(00:04:48) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
> Scanning thermostat message type #0xF9..
> Scanning thermostat message type #0xFA..
> Scanning thermostat message type #0xFB..
> Scanning thermostat message type #0xFC..
> Scanning thermostat message type #0xFD..
> Scanning thermostat message type #0xFE..
> Scanning thermostat message type #0xFF..
> Scanning thermostat message type #0x00..

I didn't look at the code to see how the on and off state of tapwater and heating active is determined, sorry. It makes sense now... :-)

The boiler is the Buderus Logamax plus GB192-25 iW and the thermostat is the one that comes integrated in the front lid. I found a sticker in there that said 'BC30', maybe that is relevant...?

Looking at the Buderus page it seems the thermostat is the RC310...

ok, we're getting closer. From the U dump it shows that the thermostat is not listening to any of the Tx messages we sent. Just did a quick look at the boiler and I have a feeling it uses the EMS Plus type of telegram packages, which my code doesn't support - but should be fun to decipher. I'll think about some tests you can run.

Can you set logging to basic 'l 2' and do a 't 2'. I'd like to see the firmware version.

I can see that your thermostat is using EMS Plus (https://emswiki.thefischer.net/doku.php?id=wiki:ems:plus-telegramme) since the 3rd byte is FF.

So to support EMS+ we would need to test for the 3rd byte being >F0 and then taking the type from bytes 4&5. Everything shifts across by two bytes. It'll be a lot of trial and error and not something I can code without having a physical device.

t 2 seems to do nothing

l 2
System Logging set to Basic
t 2
Requesting type Version(0x02) from dest 0x10
<--- UBAMonitorFast(0x18) received
<--- UBAMonitorFast(0x18) received
<--- UBAMonitorFast(0x18) received
<--- UBAMonitorFast(0x18) received
<--- UBAMonitorWWMessage(0x34) received
<--- UBAMonitorFast(0x18) received
<--- UBAMonitorFast(0x18) received

When using verbose logging I get this. It looks like the thermostat doesn't respond at all

l 4
System Logging set to Verbose
t 2
Requesting type Version(0x02) from dest 0x10
(00:06:05) Sending read of type 0x02 to 0x10: telegram: 0B 90 02 00 63 (CRC=3F), #data=1
(00:06:05) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:06:06) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type RC35StatusMessage(0x3E) from dest 0x10
Requesting type RC35Set(0x3D) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:06:06) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 02 D9 64 64 0A 11 65 40 80 00 02 18 02 55 01 55 0B 3D 48 00 C9 00 03 18 00 00 (CRC=57), #data=27
<--- UBAMonitorFast(0x18) received
(00:06:06) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:06:07) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 02 39 02 3A 80 00 00 80 00 80 00 80 00 00 (CRC=8B), #data=21
(00:06:07) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 18 02 18 89 00 01 03 00 00 60 4F 00 11 E9 00 80 00 (CRC=34), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:06:07) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 02 DC 64 64 0A 11 65 40 80 00 02 18 02 57 01 53 0B 3D 48 00 C9 00 03 18 00 00 (CRC=0F), #data=27
<--- UBAMonitorFast(0x18) received
(00:06:07) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:06:09) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(00:06:09) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:06:09) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(00:06:10) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(00:06:10) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(00:06:10) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 02 E6 64 64 0A 11 65 40 80 00 02 18 02 5F 01 52 0B 3D 48 00 C9 00 03 18 00 00 (CRC=74), #data=27
<--- UBAMonitorFast(0x18) received
(00:06:11) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:06:11) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(00:06:11) 0x09 -> Boiler, type 0x2A telegram: 09 88 2A 14 01 (CRC=35), #data=1
(00:06:11) Boiler -> 0x09, type 0x2A telegram: 08 09 2A 14 00 (CRC=48), #data=1
(00:06:11) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(00:06:12) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(00:06:12) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(00:06:13) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(00:06:13) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 02 EE 64 64 0A 11 65 40 80 00 02 18 02 65 01 54 0C 3D 48 00 C9 00 03 18 00 00 (CRC=EE), #data=27
<--- UBAMonitorFast(0x18) received

For now the information I get from the boiler is probably all I need, as the thermostat is basically just the input device for the boiler, directly attached to it. But if I can help in any way just tell me what I can do :-)
If it helps, I have a spare 'internet-connection-gateway'-thing that came with the boiler, not sure if that uses EMS+, though...

I was just wondering if it could be a hardware problem, maybe my Tx line is not working properly? Looking at my logs and logs from other tickets it seems like I don't get responses, only broadcasts

Requesting type Version(0x02) from dest 0x08
(23:23:16) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(23:23:16) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(23:23:16) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(23:23:17) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(23:23:22) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 EA 64 0B 09 01 25 40 80 00 02 79 01 11 00 34 0D 2D 48 00 C8 00 02 18 00 00 (CRC=9A), #data=27
<--- UBAMonitorFast(0x18) received
(23:23:22) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(23:23:22) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 93 80 00 00 80 00 80 00 80 00 00 (CRC=82), #data=21
(23:23:22) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 79 02 79 A1 00 01 03 00 00 60 BD 00 11 FE 00 80 00 (CRC=7E), #data=19
<--- UBAMonitorWWMessage(0x34) received
(23:23:23) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 EB 64 0B 09 01 25 40 80 00 02 79 01 11 00 35 0D 2D 48 00 C8 00 02 18 00 00 (CRC=A9), #data=27
<--- UBAMonitorFast(0x18) received
(23:23:23) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

I tried various requests but never noticed anything that looked like a direct response...

did you build the circuit yourself or using a pre-fab one like one from bbqkees? Since it recognizes your boiler you should be able to send it Tx packages, but again this is the most complex piece of the code (and circuit) and hard to calibrate the timings. So if you do a 'b 2' and in verbose logging what does it come back with?

I bought a board from bbqkees, but I had to remove the pin headers to fit it in the enclosure I wanted to use, so I might have messed something up there. I'm going to check that tomorrow. I tried b 2 with verbose logging:

(04:01:30) 0x09 -> Boiler, type 0x1A telegram: 09 08 1A 00 00 00 00 (CRC=D2), #data=3
(04:01:30) 0x09 -> Boiler, type 0x23 telegram: 09 08 23 00 00 00 00 (CRC=69), #data=3
(04:01:31) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 14 06 01 24 06 00 10 FF 00 (CRC=49), #data=11
<--- RCTime(0x06) received
(04:01:32) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 64 64 0B 0A 11 E5 40 80 00 02 31 02 F8 00 41 0B 3D 48 00 C9 00 03 18 00 00 (CRC=AF), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:33) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
b 2
Requesting type Version(0x02) from dest 0x08
(04:01:35) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 61 64 0B 0A 11 E5 40 80 00 02 32 02 F7 00 40 0B 3D 48 00 C9 00 03 18 00 00 (CRC=5B), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:36) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(04:01:36) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 92 80 00 00 80 00 80 00 80 00 00 (CRC=E6), #data=21
(04:01:36) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 31 02 32 89 00 05 03 00 00 61 57 00 12 17 00 80 00 (CRC=41), #data=19
<--- UBAMonitorWWMessage(0x34) received
(04:01:37) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(04:01:37) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(04:01:38) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(04:01:39) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(04:01:40) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 5A 64 0B 0A 11 E5 40 80 00 02 33 02 F5 00 3E 0B 3D 48 00 C9 00 03 18 00 00 (CRC=0A), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:41) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

It does not seem to be responding... I'll check the Tx line and test again... :-/

strange indeed. Double check that the Tx on kees' board is on D8 on the
ESP8266. Also that you don't have a Serial connected. Better still, don't
power it via the USB on a PC

On Sun, Jan 6, 2019 at 8:05 PM Nils Uliczka notifications@github.com
wrote:

I bought a board from bbqkees, but I had to remove the pin headers to fit
it in the enclosure I wanted to use, so I might have messed something up
there. I'm going to check that tomorrow. I tried b 2 with verbose logging:

(04:01:30) 0x09 -> Boiler, type 0x1A telegram: 09 08 1A 00 00 00 00 (CRC=D2), #data=3
(04:01:30) 0x09 -> Boiler, type 0x23 telegram: 09 08 23 00 00 00 00 (CRC=69), #data=3
(04:01:31) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 14 06 01 24 06 00 10 FF 00 (CRC=49), #data=11
<--- RCTime(0x06) received
(04:01:32) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 64 64 0B 0A 11 E5 40 80 00 02 31 02 F8 00 41 0B 3D 48 00 C9 00 03 18 00 00 (CRC=AF), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:33) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
b 2
Requesting type Version(0x02) from dest 0x08
(04:01:35) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 61 64 0B 0A 11 E5 40 80 00 02 32 02 F7 00 40 0B 3D 48 00 C9 00 03 18 00 00 (CRC=5B), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:36) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(04:01:36) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 92 80 00 00 80 00 80 00 80 00 00 (CRC=E6), #data=21
(04:01:36) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 31 02 32 89 00 05 03 00 00 61 57 00 12 17 00 80 00 (CRC=41), #data=19
<--- UBAMonitorWWMessage(0x34) received
(04:01:37) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(04:01:37) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(04:01:38) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(04:01:39) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(04:01:40) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 5A 64 0B 0A 11 E5 40 80 00 02 33 02 F5 00 3E 0B 3D 48 00 C9 00 03 18 00 00 (CRC=0A), #data=27
<--- UBAMonitorFast(0x18) received
(04:01:41) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

It does not seem to be responding... I'll check the Tx line and test
again... :-/

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/proddy/EMS-ESP-Boiler/issues/23#issuecomment-451765893,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABLHeBOfSEHI1fo0r6r2SldItet-gkvfks5vAkj1gaJpZM4Zmmqq
.

I finally got around to checking the board with an arduino uno and it works (I used the sketch from bbqkees to request 0x02 from the boiler and it got a correct response). I'm now going to check the ESP when I have a bit more time.

ok, thats good. It must be something in my code then, perhaps the timing
which I set in the emsuart.h. I can help you debug this

On Thu, Jan 10, 2019 at 1:52 PM Nils Uliczka notifications@github.com
wrote:

I finally got around to checking the board with an arduino uno and it
works (I used the sketch from bbqkees to request 0x02 from the boiler and
it got a correct response). I'm now going to check the ESP when I have a
bit more time.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/proddy/EMS-ESP/issues/23#issuecomment-453085641, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABLHeNydbQd8st0X3xla2pU0K7Fko4p2ks5vBzeJgaJpZM4Zmmqq
.

I changed my ESP from a d1_mini to a witty cloud and the problem still persists. I used this sketch from bbqkees to check the EMS converter is working. I noticed that you are using #define EMSUART_BAUD 9600 and #define EMS_TX_BRK_WAIT 2070, wheres the sketch I tried uses 9700 baud, and delay(2). I already changed the baud rate, but that didn't make it work, then I changed 2070 to 2000 and it didn't change anything either

(00:01:40) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:01:41) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 38 64 64 (CRC=88), #data=3
<--- UBASetPoints(0x1A) received
 SetPoint=56, hk_power=100 ww_power=100
(00:01:41) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:01:41) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
(00:01:42) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 30 64 12 09 01 25 40 80 00 02 7B 01 D3 00 70 0E 2D 48 00 C8 00 02 18 00 00 (CRC=01), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:42) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:01:44) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 30 64 12 09 01 25 40 80 00 02 7B 01 D3 00 70 0E 2D 48 00 C8 00 02 18 00 00 (CRC=01), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:44) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:01:44) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 B5 00 B5 80 00 00 80 00 80 00 80 00 00 (CRC=42), #data=21
(00:01:44) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 7B 02 7B A1 00 01 03 00 00 63 A1 00 12 78 00 80 00 (CRC=50), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:48) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 28 64 12 09 01 25 40 80 00 02 7B 01 D3 00 71 0E 2D 48 00 C8 00 02 18 00 00 (CRC=E2), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:48) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:01:49) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 28 64 12 09 01 25 40 80 00 02 7B 01 D3 00 71 0D 2D 48 00 C8 00 02 18 00 00 (CRC=B4), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:49) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:01:53) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 0A 0B 28 05 04 00 10 FF 00 (CRC=56), #data=11
<--- RCTime(0x06) received
(00:01:54) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 28 64 12 09 01 25 40 80 00 02 7B 01 D3 00 71 0D 2D 48 00 C8 00 02 18 00 00 (CRC=B4), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:54) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:01:54) Thermostat -> all, type 0xFF telegram: 10 00 FF 08 01 A5 03 11 03 03 01 03 11 01 36 (CRC=DF), #data=11
(00:01:54) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 B6 00 B5 80 00 00 80 00 80 00 80 00 00 (CRC=C0), #data=21
(00:01:54) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 7B 02 7B A1 00 01 03 00 00 63 A1 00 12 78 00 80 00 (CRC=50), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:56) Boiler -> all, type 0x18 telegram: 08 00 18 00 38 02 30 64 12 09 01 25 40 80 00 02 7B 01 D3 00 71 0D 2D 48 00 C8 00 02 18 00 00 (CRC=33), #data=27

What should I do now? Further reduce the delay value?

Logamax plus GB192-25 is the latest generation boiler and it uses EMS Plus. I have the older one which is EMS. Just recently I needed to add a new thermostat to the system and Bosch engineer told me that new thermostats are not compatible with the old bus, so needed to buy old RC10.

It is using EMS Plus, but it seems that it is largely compatible with 'old' EMS. At least I get readable data, thanks to @proddy, and also when using the test sketch from bbqkees, which also did send a request and got a response from the boiler. I would not be surprised if the actual Bosch thermostats would refuse to talk to 'old' devices so they can sell new stuff... ;-)

yes, as I said your thermostat uses EMS Plus which isn't implemented so you will not be able to read or write to the built in RC310. But you should be able to request commands from the boiler, like "boiler read 18" should come back with something. Please try that to verify the circuit & ESP is working.

Adding EMS Plus is possible if more people want this and I get some help. It's uncharted territory.

I received my Arduino Mega today and tried again with the example sketch from bbqkees. I just modified the requested data from 0x18 to 0x02 and here is the result.

Boiler

EMS bus request started.
Do request
Received a dataframe!
Correct frametype received.
-----Datagram----- BYTES=17
HEX: 0x8 0xB 0x2 0x0 0xD0 0x1 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x28 0x0 0xF4
-----End of Datagram-----
Do request
Received a dataframe!
Correct frametype received.
-----Datagram----- BYTES=17
HEX: 0x8 0xB 0x2 0x0 0xD0 0x1 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x28 0x0 0xF4
-----End of Datagram-----

Thermostat

EMS bus request started.
Do request
Received a dataframe!
Correct frametype received.
-----Datagram----- BYTES=16
HEX: 0x10 0xB 0x2 0x0 0x9E 0x12 0x3 0x0 0xFF 0x0 0x0 0x0 0x0 0x9A 0x0 0x65
-----End of Datagram-----

So the circut is working, I should be able to send and receive from both, the boiler and the thermostat, and it should respond, at least to the 0x02 request, which it unfortunately does not using EMS-ESP. What can I do now? :-)

ok so the circuit is fine. Are you're 100% certain you set the Tx to the correct pin on ESP? (note, these are not the standard pins but D7 and D8). The baud is 9600 (9700 is a mistake by the original owner. bbqkees didn't write the code). What we'll need to do is uncomment some lines which will show all the messages coming in after a write/Tx operation. We then can see if anything is coming back and just being ignored because of the noise filter or because of CRC failures. I'm away this week so won't be able to guide you until later in the month when I'm back home. If you're comfortable with coding then look in ems.cpp for the 'noisy' line and comment it out.

I connected the ESP board to my witty cloud again, checking that Rx is on D7 and Tx is on D8 (using this pinout diagram). I then uncommented the Noisy data:...line, uploaded it to the ESP and tried to request 0x02 from the boiler:

boiler read 02
Requesting type Version(0x02) from dest 0x08
(00:00:46) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:00:46) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 73 64 00 02 11 64 40 80 00 02 19 02 DB 00 00 0C 30 59 00 CC 00 01 00 00 00 (CRC=D7), #data=27
<--- UBAMonitorFast(0x18) received
(00:00:46) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:00:48) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:00:48) Noisy data: telegram: 63 (CRC=FF)
(00:00:48) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:00:48) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:00:50) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 79 64 00 02 11 64 40 80 00 02 19 02 E1 00 00 0C 30 59 00 CC 00 01 00 00 00 (CRC=3C), #data=27
<--- UBAMonitorFast(0x18) received
(00:00:50) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:00:51) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 01 2C 01 50 80 00 00 80 00 80 00 80 00 00 (CRC=A7), #data=21
(00:00:51) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 19 02 19 89 00 01 03 00 00 66 58 00 12 E9 00 80 00 (CRC=DC), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:00:51) Boiler -> all, type 0x18 telegram: 08 00 18 00 54 03 7A 64 00 02 11 64 40 80 00 02 19 02 E3 00 00 0C 30 59 00 CC 00 01 00 00 00 (CRC=CE), #data=27
<--- UBAMonitorFast(0x18) received
(00:00:52) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

Here are a few other Noisy data... lines I got:

(00:01:13) 0x09 -> Boiler, type 0x23 telegram: 09 08 23 00 00 00 00 (CRC=69), #data=3
(00:01:13) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(00:01:13) Noisy data: telegram: 63 (CRC=93)
(00:01:13) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(00:01:13) Noisy data: telegram: 63 (CRC=93)
(00:01:14) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 63 (CRC=3B), #data=1
(00:01:14) Noisy data: telegram: 63 (CRC=3B)
(00:01:14) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 63 (CRC=3B), #data=1
(00:01:14) Noisy data: telegram: 63 (CRC=3B)
(00:01:15) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(00:01:15) Noisy data: telegram: 63 (CRC=A7)
(00:01:15) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(00:01:15) Noisy data: telegram: 63 (CRC=A7)

Looks like the Tx is dead, nothing is being sent out. Either faulty wiring or something not supported on your ESP board. Try connect to the Rx and Tx to the real Rx/Tx and uncomment line #138 in emsuart.cpp. This will use the serial ports. Do make sure DEBUG_SUPPORT is not enabled and also do not connect the ESP board to a PC using the USB port.

I'm powering the ESP with a USB PSU, the wittycloud does not have it's USB 'shield' connected, so there should be no conflict with the USB serial communication, DEBUG_SUPPORT is not enabled, I removed the system_uart_swap() and connected Rx/Tx on the ESP to Rx/Tx of the EMS board.

boiler read 2
(00:10:30) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F2 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 33 0D 2D 48 00 C8 00 02 18 00 00 (CRC=E8), #data=27
<--- UBAMonitorFast(0x18) received
Requesting type Version(0x02) from dest 0x08
(00:10:31) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F1 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=BD), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:33) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 94 80 00 00 80 00 80 00 80 00 00 (CRC=A7), #data=21
(00:10:33) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 6C 02 6C A1 00 01 03 00 00 66 5D 00 12 EA 00 80 00 (CRC=64), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:33) Noisy data: telegram: 63 (CRC=FF)
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:34) Noisy data: telegram: 63 (CRC=FF)
(00:10:34) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:10:35) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:10:35) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F9 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=37), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:36) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

I’m kinda out of ideas. Do you have a scope or a signal analyzer by chance?
You said same thing happens with a wemos? You changed the board definition
in platformio too right?

On Wed, 16 Jan 2019 at 19:27, Nils Uliczka notifications@github.com wrote:

I'm powering the ESP with a USB PSU, the wittycloud does not have it's USB
'shield' connected, so there should be no conflict with the USB serial
communication, DEBUG_SUPPORT is not enabled, I removed the
system_uart_swap() and connected Rx/Tx on the ESP to Rx/Tx of the EMS
board.

boiler read 2
(00:10:30) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F2 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 33 0D 2D 48 00 C8 00 02 18 00 00 (CRC=E8), #data=27
<--- UBAMonitorFast(0x18) received
Requesting type Version(0x02) from dest 0x08
(00:10:31) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F1 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=BD), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:33) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 94 80 00 00 80 00 80 00 80 00 00 (CRC=A7), #data=21
(00:10:33) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 6C 02 6C A1 00 01 03 00 00 66 5D 00 12 EA 00 80 00 (CRC=64), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:33) Noisy data: telegram: 63 (CRC=FF)
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:34) Noisy data: telegram: 63 (CRC=FF)
(00:10:34) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:10:35) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:10:35) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F9 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=37), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:36) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

—
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/23#issuecomment-454948686, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABLHeLeTR3opTTkngo1aCaz1ULSE8_NEks5vD5k7gaJpZM4Zmmqq
.

I'm powering the ESP with a USB PSU, the wittycloud does not have it's USB 'shield' connected, so there should be no conflict with the USB serial communication, DEBUG_SUPPORT is not enabled, I removed the system_uart_swap() and connected Rx/Tx on the ESP to Rx/Tx of the EMS board.

boiler read 2
(00:10:30) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F2 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 33 0D 2D 48 00 C8 00 02 18 00 00 (CRC=E8), #data=27
<--- UBAMonitorFast(0x18) received
Requesting type Version(0x02) from dest 0x08
(00:10:31) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F1 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=BD), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:32) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:10:33) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 93 00 94 80 00 00 80 00 80 00 80 00 00 (CRC=A7), #data=21
(00:10:33) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 6C 02 6C A1 00 01 03 00 00 66 5D 00 12 EA 00 80 00 (CRC=64), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:33) Noisy data: telegram: 63 (CRC=FF)
(00:10:33) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:10:34) Noisy data: telegram: 63 (CRC=FF)
(00:10:34) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:10:35) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:10:35) Boiler -> all, type 0x18 telegram: 08 00 18 00 30 01 F9 64 0B 09 01 25 40 80 00 02 6C 01 B8 00 30 0D 2D 48 00 C8 00 02 18 00 00 (CRC=37), #data=27
<--- UBAMonitorFast(0x18) received
(00:10:36) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

I would suggest you to replace the board with a wemos one.
The Witty Cloud Module has the RGB LED connected to PIN8 - a noisy communication is a result (the led will draw current from the signal line). If you take a look on the datasheet, there are only a few outputs not occupied by LDR, LED or other things.
Only D0, D1 and D5 are free to use and will probably not work with a faked serial.

I suspect the board definition is incorrect in platformio

Unfortunately I don't have a signal analyzer, but I'll look around if I can get one.

I also swapped the witty cloud with the d1 mini and have it currently running with the Tx/Rx not swapped, still the same problem:

<--- UBAMonitorWWMessage(0x34) received
(00:01:56) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:01:56) Noisy data: telegram: 63 (CRC=FF)
(00:01:56) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=13
(00:01:56) Sending read of type 0x02 to 0x08: telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:01:56) Noisy data: telegram: 63 (CRC=FF)
(00:01:57) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:01:59) Boiler -> all, type 0x18 telegram: 08 00 18 00 36 02 14 64 0B 09 01 25 40 80 00 02 64 01 B8 00 33 0E 2D 48 00 C8 00 02 18 00 00 (CRC=CF), #data=27
<--- UBAMonitorFast(0x18) received
(00:01:59) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received
(00:02:01) Boiler -> all, type 0x18 telegram: 08 00 18 00 36 02 13 64 0B 09 01 25 40 80 00 02 64 01 B8 00 34 0D 2D 48 00 C8 00 02 18 00 00 (CRC=00), #data=27
<--- UBAMonitorFast(0x18) received
(00:02:01) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF), #data=11
<--- UBAMonitorFast(0x18) received

I don't think that it is anything with the boards, they are working without problems when using it for other things; or the wiring, as it is exactly the same when I tried it with the Mega, which worked. I also tried updating platformio (3.6.0).

I have similar issue , no communication direct to me , all parameters are from broadcasts ,my board is build by me.

@tibi03 That's good, kind of.

  • What boiler and thermostat are you using?
  • What ESP board are you using?
  • Do you have an Arduino Mega on hand and could you test the this from bbqkees to confirm that it's not your EMS board that prevents the sending?

RC310 https://www.buderus.de/de/produkte/catalogue/alle-produkte/102256_logamatic-rc310 , (model: LogamaxPlus GB172-30 iKW H https://www.buderus.com/ro/ro/ocs/produse/logamax-plus-gb172i-757615-p/ , i dont have an arduino mega . i am using nodemcuv2 board with the adapter from the scheme provided by proddy.

(00:01:17) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:01:18) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 ED 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=67), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:18) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 77 00 00 00 00 40 40 00 ED 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=10), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:23) Thermostat -> all, type 0xA2 telegram: 10 00 A2 00 00 00 00 00 00 (CRC=CA), #data=5
(00:01:24) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 00 00 00 (CRC=C4), #data=3
<--- UBASetPoints(0x1A) received
SetPoint=0, hk_power=0 ww_power=0
(00:01:24) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 01 67 00 00 (CRC=AB), #data=4
(00:01:25) Thermostat -> all, type 0xFF telegram: 10 00 FF 00 02 1D 00 00 0A 07 (CRC=02), #data=6
(00:01:27) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 77 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=64), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:28) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:01:28) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:37) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:38) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:38) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:01:40) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 01 0D 16 29 37 01 00 10 FF 00 (CRC=01), #data=11
<--- RCTime(0x06) received
(00:01:47) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:01:48) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:01:48) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:50) Thermostat -> all, type 0xFF telegram: 10 00 FF 0D 01 A5 01 6B 02 0A (CRC=CA), #data=6
(00:01:54) Thermostat -> Boiler, type 0x23 telegram: 10 08 23 00 00 00 00 (CRC=7F), #data=3
(00:01:57) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:58) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:01:58) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
Publishing hot water and heating state via MQTT
Publishing thermostat data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type RC35StatusMessage(0x3E) from dest 0x10
Requesting type RC35Set(0x3D) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:02:00) Thermostat -> Boiler, type 0x35 telegram: 10 08 35 00 11 01 (CRC=20), #data=2
(00:02:03) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(00:02:06) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1
(00:02:07) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:02:07) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:02:08) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:02:08) Boiler -> all, type 0x19 telegram: 08 00 19 00 00 04 80 00 80 00 00 00 00 00 00 32 44 00 D9 B7 00 00 00 00 AD 60 00 0A EF 80 00 (CRC=ED), #data=27
<--- UBAMonitorSlow(0x19) received
(00:02:08) Boiler -> all, type 0x1C telegram: 08 00 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=4B), #data=25
(00:02:09) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:02:11) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(00:02:14) Sending read of type 0x3D to 0x10: telegram: 0B 90 3D 00 63 (CRC=C3), #data=1
(00:02:17) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:02:17) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:02:18) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:02:18) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(00:02:22) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(00:02:22) Thermostat -> all, type 0xBF telegram: 10 00 BF 00 10 9E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=71), #data=24
(00:02:25) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(00:02:27) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 01 76 00 00 00 00 40 40 00 EB 80 00 80 00 00 00 FF 30 48 00 CB 00 00 00 (CRC=BB), #data=25
<--- UBAMonitorFast(0x18) received
(00:02:27) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(00:02:28) Boiler -> all, type 0x34 telegram: 08 00 34 00 28 00 EB 80 00 21 00 00 01 00 00 2C 57 00 27 55 00 80 00 (CRC=AE), #data=19
<--- UBAMonitorWWMessage(0x34) received
(00:02:29) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1

hello , after i changed rx and tx to the standard pins and explicit disable debug , now i can send and receive telegrams correctly

emsuart.cpp
132 system_set_os_print(0);
138 //system_uart_swap();

(01:08:13) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 D9 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=D6), #data=21
(01:08:13) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(01:08:13) Boiler -> me, type 0x19 telegram: 08 0B 19 00 00 49 80 00 80 00 00 00 00 00 00 32 B7 00 DC 2B 00 00 00 00 AF C2 00 0B 28 80 00 (CRC=38), #data=27
<--- UBAMonitorSlow(0x19) received

@tibi03 glad you got it working. I tested with a nodemcuv2 with the pins switched and it worked fine so interested to understand why it didn't on your dev board. the system_set_os_print is not necessary as this is done in MyEsp with the SerialAndTelnet.setDebugOutput(false) command

so now only to fix the Tx issue with @darookee

@darookee I just pushed v1.3.2 with a few modifications. There's a check called 'txCapable' which shows if the code is able to transmit. Use info to see the status. If it says no then it means the bus is not sending poll requests to initiate a send. If that is the case then I will need to investigate how to trigger a handshake between our device and modern boilers like yours. let me know how you get on.

I just uploaded it to the d1_mini and get this

EMS Bus Stats:
  Bus Connected=yes, Tx Capable=yes, # Rx telegrams=0, # Tx telegrams=16, # Crc Errors=0

I still wonder why sending works with the bbqkees example code but not with this one :-|

@darookee I really don't know anymore. So far you seem the only one that has this issue. You're using a normal Wemos D1, you tried switching Tx/Rx, the Poll is working, the circuit works with bbqkees's arduino code so obviously its something nasty in my code - I just don't know what. What I would typically do is hook up a cheap logical analyzer see what's on the Tx line. If this is really important for you we can make a small debug program to sniff it out

@proddy I just ordered the logic analyzer, which should be here by the end of the week.

@proddy I got the analyzer today and tried capturing things. I connected this between the ESP and the EMS convertert. I really don't know what this is telling me, but it looks like it at least is trying to send things (D0 is Tx, D1 is Rx). This is the ESP doing the automatic data request, I was too slow to start the capture after manually trying to read something... :-|
image

The esp is sending on the Tx which means it is receiving a poll request and the UART is working. Which
is good and bad because I still don't know why the EMS is not responding to the send requests. What you need to do now is also put some probes on the EMS bus (UREF) to see if all the bytes we send on the Tx end up on the serial bus in the correct order. The destination device should then respond immediately. Note if you're taking the 8V from the service jack or the 12V from the EMS then it may blow your logic analyzer so you need to tap into the signal after the comparator. If you built a breadboard that would be easy, if using one of bbqkees' board you may want to check with him first where to add the probe.

@darookee coming back to this issue as I've lost track. Can you confirm

  • you have RC310 which is an EMS+ protocol thermostat
  • you are using a wemos d1 or nodemcu or compatible
  • you are using a bbqkees board with the correct jumpers (for voltage and the resistor)
  • you're unable to send an read or write requests via the Tx
  • reading/writing works using an arduino uno board together with bbqkees Arduino code

I really want to fix this!

@proddy sorry for taking so long, I didn't have much time the last weeks to tinker with this.
I can confirm that all of your assumptions are correct.

  • I have an RC310, it is using EMS+
  • I tested with wemos D1 and a witty cloud
  • The jumper is set to 100E, as in your image, J5 is empty, the board gets power from the ESP
  • Yes, tested with the default Tx pin and the 'swapped' Tx pin
  • arduino mega and the bbqkees board with the example code get responses to read requests

hello , after i changed rx and tx to the standard pins and explicit disable debug , now i can send and receive telegrams correctly

How do you explicitly disable debug? Is this a build option? I'd like to try swapping over to the RX/TX pins to see if it solves my problem.

I've swapped over to the RX/TX pins but still can't seem to transmit.

I've tried hooking up both a cheapo Chinese USB logic analyser and a cheapo USB Chinese oscilloscope but can't get the things to work with my laptop. Looks like I'll have to wait until the weekend before I can borrow a proper scope to do some more analysis.

I just looked at the example code on bbqkees' project that you linked to in one of your responses above. I'm pretty sure I've got an Arduino Mega in a box somewhere. If I can get the transmit code working on that before the weekend then I could do a scope capture of a transmit from the Wemos and the Mega and compare. That should give us a good idea of what's causing the problem.

If you have any suggestions of tests I could do then let me know. I'll only have the scope for an hour or two so would need to get all tests done in a fairly small time window.

@higgers to be honest bbqkees is the best person to give advice. I cheap logic analyzer should suffice. Place it on the Rx and Tx to make sure the Tx is actually transmitting when doing a 'boiler read' for example. If that looks ok, grab the big boy oscciliscope and hook it up to the incoming EMS lines (either the 2 wire or capture it from the jack on bbqkees board). Look for something like in this picture. If you're in NL and around the Eindhoven area perhaps we can assist.

I'm based in the UK so can't take you up on your very kind offer. Thanks though, very kind!

Checking the TX signal along the path from the Wemos to the boiler isn't a problem, I was asking more about what commands would be useful to send to the boiler while I've got the scope. I'll look at how the 'boiler read' command works. I have a wireless thermostat in the system too so maybe a 'thermostat scan' would be useful too?

Well, I'm thinking I should build in a new command which puts the board into a kind-of test mode, so basically disabling all automatic fetches and sends. That way you can connect your cheapo logic analyzer (no need for a scope) to the UEMS lines (which is the circuit after the bridge rectifier), do a 'read boiler' command and see if the Tx calls end up in the right order on the EMS line. This is basically how I built and tested my circuit.

Also I started collecting the info on EMS+ and putting it in a GitHub project (https://github.com/proddy/EMS-ESP/projects/1).

I like the idea of the test mode, that would make it easier to analyse data on the scope since there'd be less "noise" on the TX line.

I think I have the same problem that darookee experienced. I only receive broadcasts because my TX is not functioning. I ordered the EMS interface board including the Wemos from bbqkees. To test if the interface board is functioning and my boiler/thermostat (Nefit Smartline/Moduline 400) are able to supporting writes, I connected my ardruino mega and used the sketch from bbqkees EMSBusSimpleRegisterReadRequest.ino
With this setup the TX is working fine!
I haven't tried an other ESP8266 yet. I think I have one (used for an other project) I will try it later. I also will do the test using the normal RX/TX lines instead of the swapped ones (it helped for tibi03)
I have no logic analyzer yet but I ordered one today.

@kwertie01 yes there are others reporting similar issues with the Tx using newer models of boilers and thermostats. It's something that can be easily fixed with a $4 logic analyzer and some trial & error in the UART code to determine the root cause. Hope you're able to help!

I managed to get some time to look into this yesterday though our efforts were hampered by the fact that the oscilloscope seemed to die during the car journey to my house. Sad times. Anyway, after some trial and error I managed to get a USB oscilloscope working with my laptop and could see that the TX line on the Wemos seems to be permanently at 3.3v. Does this mean it's constantly sending BRK frames? At no point did I see any data on the TX line though I'd caveat that by saying I couldn't get constant capture running on my scope so I couldn't see what happens when the Wemos first boots. I could only start a ten second capture on the scope and then alt-tab to the Wemos telnet session and issue a command (I tried 'send' and 'autodetect'). I couldn't see any output on the TX line after these commands.

Typing 'queue' in the telnet session showed that commands were arriving on the queue but not leaving. The queue got progressively longer. I then started sprinkling a few myDebug calls through likely looking functions but ran out of time before I could make any headway.

What conditions are required for a command to be sent from the queue? I guess there could be two possibilities that would result in an ever expanding queue:

  1. Commands are added to the queue, sent out via the TX line but not removed from the queue
  2. Commands are added to the queue but not sent out via the TX line

If we assume that I am seeing option 2 (because I've not seen any activity on the TX line) is it possible to remove/reduce any checks on send commands and test if that results in activity on the TX line?

The code will always try and send any Tx messages that are on the queue when its status is idle (EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_IDLE). Then you should be seeing 'Sending ..." commands in verbose mode - can you confirm you see these messages.

To bypass all tests use the raw mode, so log r to reduce the chatter and then send commands using send XX XX XX XX.... . See the README documentation for the format which is basically [src] [dest] [type] [offset] [data] with src 0x0B and dest the id of your ems device like 0x10 for an RC30 thermostat. You should then see something on the Tx line. If not, something is very wrong!

Here's the first 60 seconds or so of messages directly after a reboot with the log set to verbose:

log v
System Logging set to Verbose
(00:00:16) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 02 1B 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=C9), #data=25
<--- UBAMonitorFast(0x18) received
Publishing boiler data via MQTT
Publishing hot water and heating states via MQTT
(00:00:18) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 02 16 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=EF), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:21) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:22) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 02 0A 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=53), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:22) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F8 80 00 A0 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6B), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:00:23) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 02 07 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=75), #data=25
<--- UBAMonitorFast(0x18) received
Publishing boiler data via MQTT
(00:00:28) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 F8 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=DC), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:31) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:32) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 F0 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=72), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:32) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F9 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=25), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:00:34) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 E9 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=46), #data=25
<--- UBAMonitorFast(0x18) received
Publishing boiler data via MQTT
(00:00:41) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:42) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 DE 4C 00 01 02 20 C0 00 F9 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=B0), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:42) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F8 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=33), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:00:43) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 DA 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=F1), #data=25
<--- UBAMonitorFast(0x18) received
Publishing boiler data via MQTT
(00:00:51) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:52) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 D0 4C 00 01 02 20 C0 00 F8 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=F8), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:52) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F9 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=25), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:00:57) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 CA 4C 00 01 02 20 C0 00 F9 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=A2), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:01) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:01:02) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 C8 4C 00 01 02 20 C0 00 F9 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=05), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:02) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F9 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=25), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:01:11) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:01:12) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:01:12) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 C2 4C 00 01 02 20 C0 00 F9 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=0C), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:12) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 F9 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=25), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:01:12) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 02 64 00 03 7D 08 F0 C5 00 00 00 07 3C FA 00 03 62 80 00 (CRC=8B), #data=27
<--- UBAMonitorSlow(0x19) received
Publishing boiler data via MQTT

I can't see any 'Sending...' commands there. Could you post a similar log from your device so I can see what you mean?

hmm, that is strange. When I'm at home I'll send you an example. In the meantime try my earlier suggestion send 0b 08 18 20 and see what comes back, in verbose mode

Here's an extract from the log in verbose mode:

send 0b 08 18 20
(00:15:15) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 E9 4C 00 01 02 20 C0 00 FF 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=24), #data=25
<--- UBAMonitorFast(0x18) received
Publishing boiler data via MQTT
(00:15:20) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:21) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 E0 4C 00 01 02 20 C0 00 FF 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=55), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:21) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 00 FF 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=51), #data=17
<--- UBAMonitorWWMessage(0x34) received

ok, then sending is not working at all. Its probably stuck on the queue. You should see the message 'Sending raw' and a message come back "Boiler -> me'. Look at the _ems_sendTelegram() function in ems.cpp.

The problem you have, like others, is that you're not receiveing a Poll request from the bus master (UBA). This is the trigger for us to allow to send anything. Look at the first lines of ems_parseTelegram() where its explained. Perhaps you can print out the Poll requests to verify this? I reckon it has something to do with the handshake we need to initialize to allow our device to be recognized by the Bus master. A few of us are already looking into this and some experiments have been reported in earlier issues

I added a debug statement at the top of 'ems_parseTelegram' like this:

            EMS_Sys_Status.emsPollTimestamp = millis(); // store when we received a last poll
            EMS_Sys_Status.emsTxCapable     = true;

            // SH++
            myDebug("Telegram received with length 1 (Poll): %02X", value);

            // do we have something to send thats waiting in the Tx queue? if so send it if the Queue is not in a wait state

It doesn't seem to be being called. The log after uploading the new firmware looks like this:

log v
System Logging set to Verbose
(00:00:15) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B9 4C 00 01 02 20 C0 01 13 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=44), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:16) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:16) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 13 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=79), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
Publishing hot water and heating states via MQTT
(00:00:25) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:26) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B7 4C 00 01 02 20 C0 01 12 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=0C), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:26) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 12 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6F), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:00:35) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:36) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B5 4C 00 01 02 20 C0 01 12 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=AB), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:36) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 12 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6F), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:00:45) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:46) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B5 4C 00 01 02 20 C0 01 12 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=AB), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:46) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 12 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6F), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:00:55) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:00:56) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B3 4C 00 01 02 20 C0 01 12 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=5B), #data=25
<--- UBAMonitorFast(0x18) received
(00:00:56) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 12 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6F), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:01:05) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:01:06) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:01:06) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B3 4C 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=61), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:06) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 11 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=55), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:01:06) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 01 64 00 03 8E 08 F0 E3 00 00 00 07 3D 18 00 03 73 80 00 (CRC=14), #data=27
<--- UBAMonitorSlow(0x19) received
Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:01:15) Boiler -> all, type 0x18 telegram: 88 00 18 00 3A 01 B2 4C 00 01 02 20 C0 01 12 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=84), #data=25
<--- UBAMonitorFast(0x18) received
(00:01:15) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:01:16) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 12 80 00 80 00 00 01 00 01 B3 CB 00 00 1B 00 (CRC=6F), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT

That seems to confirm your theory that the code is never reaching the state required to kick off sending a message to the boiler.

I just tried a cludgy hack to force sending telegrams, I commented out the 'if (value == (EMS_ID_ME | 0x80))' at the top of 'ems_parseTelegram'. This caused blue messages to appear in the log (when set to verbose) but there didn't appear to be any response to them.

That's the same problem - no Polls. Without a scope or logic analyzer, it's hard to tell if the polls are arriving or not. It may the code not been able to handle it quick enough, or some other collision side effect. I'm hoping someone will figure this out soon

I uploaded the sketch into an ESP-12 instead of the Wemos. Sadly still the same issue... TX not working. Untill now only my Arduino Mega is working. I think I have to wait until my logic analyzer arrives.

Do you use logic analyser software to analyse captures from an oscilloscope? I've got a ten second capture from the RX line which I'm trying to decode to look for the poll bytes send from the boiler. I've tried using the protocol decoder function in Pulseview but I'm not having much luck.

@higgers I used mostly Saleae connected to Rx line with my cheap analyzer. I have a more professional analyzer which handles higher ranges but the cheapo one is more than sufficient.

That's the same device I've got (or another clone) but I just can't get it to work on my Win10 laptop. Arrrrrgh!!!!

what doesn't work exactly? is it a driver problem?

It looks like a driver problem, yes. I plug it it, the LED on it stays red, no device is found by the Logic software so I can't get read any data.

I also bought a Hantek 6022BE which, after a lot of effort, I got to work but the logic analyser function in the Pulseview software doesn't seem to work. I can turn on the UART decoder but it doesn't recognise any data to decode.

(On a slightly different subject, I installed 1.5.6 last night and that seems to be working fine. I've increased the MQTT send frequency from 120 seconds to 10 seconds which gives far more accurate data on the graphs I plot in Grafana.)

For the logic, I'll look at how I got it working. I remember having lots of issues too.

For the MQTT which values are you sending more frequently? It's configured now that it will send data every 10seconds (on a Rx broadcast) only if the data values have changed. I did this to reduce the amount of wifi traffic. Perhaps an idea to have the frequency as a customizable setting and not hardcoded - what do you think?

The thought about having the frequency configurable occurred to me too. If I wasn't working on the transmit problem I'd have attempted to implement this myself. I just changed the 'PUBLISHVALUES_TIME' define as a quick fix.

The values that change frequently and that I'm interested in are the burner power, flow temperature and hot water temperature. I've uploaded a graph as a PNG that shows the difference between 120 second frequency and 10 second frequency.

boiler-data

Before 8am the publish frequency was 120 seconds and you can see the graph is quite coarse, after 8am I changed the frequency to 10 seconds and the graph data is far more detailed. There was also a period very early this morning when it appeared that the boiler for off for several hours, however, this wasn't the case. I believe what actually happened was that the boiler was off at each time that the MQTT data was published. (This is one of the issue I'd like to solve with my heating system, the boiler appears to be short cycling, on... off... on... off...)

if you want these boiler values to be immediately published to MQTT then just add EMS_Sys_Status.emsRefreshed = true; to ems.cpp::_process_UBAMonitorFast()

Configurable frequency would be nice indeed! I also log my data in a InfluxDB database and display the data with Grafana.

While waiting for the Logic Analyzer, which I bought cheap in China instead of just a little less cheaper, but probably much quicker locally here in the Netherlands (@proddy: I ordered mine already before I saw your post about tinytronics.nl )

I used the tip to enable noisy data and here is some verbose logging showing that I receive noisy data almost every time after transmitting:
At the end of the log I tried to send some raw data.

Calling scheduled data refresh from EMS devices..
Requesting type RC30StatusMessage(0x41) from dest 0x10
Requesting type RC30Set(0xA7) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:20:02) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AD 11 19 09 01 25 60 01 D6 02 0C 01 57 00 4C 10 2D 48 00 C8 00 02 00 (CRC=5D), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:02) Sending read of type 0x41 to 0x10: telegram: 0B 90 41 00 63 (CRC=2A), #data=1
(00:20:02) Noisy data: telegram: 63 00 (CRC=89)

(00:20:03) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AD 11 19 09 01 25 60 01 D6 02 0C 01 57 00 4C 10 2D 48 00 C8 00 02 00 (CRC=5D), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:05) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AE 11 19 09 01 25 60 01 D5 02 0C 01 57 00 4A 10 2D 48 00 C8 00 02 00 (CRC=49), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:05) Sending read of type 0xA7 to 0x10: telegram: 0B 90 A7 00 63 (CRC=99), #data=1
(00:20:07) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D5 02 0B 21 00 00 02 00 03 87 7E 02 B1 C0 00 (CRC=61), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:20:07) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AE 11 19 09 01 25 60 01 D5 02 0C 01 57 00 4B 10 2D 48 00 C8 00 02 00 (CRC=50), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:09) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 63 (CRC=2F), #data=1
(00:20:09) Noisy data: telegram: 0B AC C0 (CRC=89)

(00:20:17) Boiler -> all, type 0x19 telegram: 08 00 19 00 80 00 01 AD 80 00 00 00 00 37 03 77 6A 11 F8 E4 00 00 00 0E 71 66 00 C5 AA (CRC=43), #data=25
<--- UBAMonitorSlow(0x19) received
(00:20:17) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D5 02 0B 21 00 00 02 00 03 87 7E 02 B1 C0 00 (CRC=61), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:20:17) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:20:17) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AE 11 19 09 01 25 60 01 D5 02 0B 01 59 00 4C 10 2D 48 00 C8 00 02 00 (CRC=C1), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:20) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 63 (CRC=97), #data=1
(00:20:20) Noisy data: telegram: 0B (CRC=63)

(00:20:22) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 5A 11 00 00 (CRC=37), #data=4
<--- UBASetPoints(0x1A) received
(00:20:23) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 63 (CRC=93), #data=1
(00:20:23) Noisy data: telegram: 0B 19 (CRC=63)
(00:20:27) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D5 02 0B 21 00 00 02 00 03 87 7E 02 B1 C0 00 (CRC=61), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:20:27) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AE 11 19 09 01 25 60 01 D5 02 0B 01 5A 00 51 10 2D 48 00 C8 00 02 00 (CRC=51), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:27) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 63 (CRC=3B), #data=1
(00:20:27) Noisy data: telegram: 0B (CRC=63)
send 0B 88 02 00 63
(00:20:32) Thermostat -> all, type 0x41 telegram: 10 00 41 00 80 26 00 BC 46 00 00 00 11 5A 09 00 BC 00 (CRC=12), #data=14
<--- RC30StatusMessage(0x41) received
Publishing boiler data via MQTT
(00:20:34) Sending read of type 0x16 to 0x08: telegram: 0B 88 16 00 63 (CRC=AF), #data=1
(00:20:36) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 03 11 0E 08 18 03 00 00 00 00 00 00 (CRC=E1), #data=13
<--- RCTime(0x06) received
(00:20:36) Thermostat -> all, type 0xA3 telegram: 10 00 A3 00 F6 00 00 (CRC=5D), #data=3
<--- RCOutdoorTempMessage(0xA3) received
(00:20:37) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D5 02 0B 21 00 00 02 00 03 87 7E 02 B1 C0 00 (CRC=61), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:20:37) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 AF 11 19 09 01 25 60 01 D5 02 0B 01 5B 00 4C 10 2D 48 00 C8 00 02 00 (CRC=D6), #data=25
<--- UBAMonitorFast(0x18) received
(00:20:38) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 63 (CRC=A7), #data=1
(00:20:38) Noisy data: telegram: 0B 14 (CRC=63)

(00:20:39) Thermostat -> Boiler, type 0x35 telegram: 10 08 35 00 11 00 (CRC=21), #data=2
(00:20:42) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:20:42) Noisy data: telegram: 0B (CRC=63)
(00:20:47) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D5 02 0B 21 00 00 02 00 03 87 7E 02 B1 C0 00 (CRC=61), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:20:47) Boiler -> all, type 0x18 telegram: 08 00 18 00 5A 01 B1 11 19 09 01 25 60 01 D5 02 0B 01 5B 00 55 10 2D 48 00 C8 00 02 00 (CRC=95), #data=25
<--- UBAMonitorFast(0x18) received
send 0B 88 02 00 63
(00:20:51) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:20:51) Noisy data: telegram: 0B FF (CRC=89)
send 0B 88 02 00 63
(00:20:56) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:20:56) Noisy data: telegram: 0B (CRC=63)
send 0B 88 02 00 63
(00:20:59) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:20:59) Noisy data: telegram: 0B (CRC=63)

I hope proddy has some more ideas what the problem could be?

Since I can't seem to get that logic analyser running I tried the next best thing, well, probably an even better solution: BBQkees arduino sketch that does a full dump of the data on the EMS bus. Running it for a few seconds gives the following output:

18:52:12.843 -> EMS bus dump started.
18:52:12.876 -> Blah blah blah...
18:52:12.912 -> Received a polling message. HEX: 0x16 0x0 0x0 
18:52:12.945 -> Received a polling message. HEX: 0x17 0x0 0x0 
18:52:13.015 -> Received a polling message. HEX: 0x1C 0x0 0x0 
18:52:13.047 -> Received a polling message. HEX: 0x24 0x0 0x0 
18:52:13.115 -> Received a polling message. HEX: 0x34 0x0 0x0 
18:52:13.150 -> Received a polling message. HEX: 0x44 0x0 0x0 
18:52:13.218 -> Received a polling message. HEX: 0x4C 0x0 0x0 
18:52:13.252 -> Received a polling message. HEX: 0x54 0x0 0x0 
18:52:13.286 -> Received a polling message. HEX: 0x5C 0x0 0x0 
18:52:13.354 -> Received a polling message. HEX: 0x6C 0x0 0x0 
18:52:13.388 -> Received a polling message. HEX: 0xB 0x0 0x0 
18:52:13.458 -> Received a polling message. HEX: 0xC 0x0 0x0 
18:52:13.491 -> Received a polling message. HEX: 0xD 0x0 0x0 
18:52:13.559 -> Received a polling message. HEX: 0xE 0x0 0x0 
18:52:13.594 -> Received a polling message. HEX: 0x10 0x0 0x0 
18:52:13.661 -> Received a polling message. HEX: 0x12 0x0 0x0 
18:52:13.696 -> Received a polling message. HEX: 0x13 0x0 0x0 
18:52:13.734 -> Received a polling message. HEX: 0x14 0x0 0x0 
18:52:13.798 -> Received a polling message. HEX: 0x15 0x0 0x0 
18:52:13.831 -> Received a polling message. HEX: 0x17 0x0 0x0 
18:52:13.899 -> Received a polling message. HEX: 0x23 0x0 0x0 
18:52:13.933 -> Received a polling message. HEX: 0x2B 0x0 0x0 
18:52:14.000 -> Received a polling message. HEX: 0x33 0x0 0x0 
18:52:14.034 -> Received a polling message. HEX: 0x3B 0x0 0x0 
18:52:14.103 -> Received a polling message. HEX: 0x4B 0x0 0x0 
18:52:14.137 -> Received a polling message. HEX: 0x5B 0x0 0x0 
18:52:14.206 -> Received a polling message. HEX: 0x63 0x0 0x0 
18:52:14.241 -> Received a polling message. HEX: 0x6B 0x0 0x0 
18:52:14.311 -> Received a polling message. HEX: 0xA 0x0 0x0 
18:52:14.346 -> Received a polling message. HEX: 0xC 0x0 0x0 
18:52:14.419 -> Received a polling message. HEX: 0xF 0x0 0x0 
18:52:14.484 -> Received a polling message. HEX: 0x10 0x0 0x0 
18:52:14.519 -> Received a polling message. HEX: 0x11 0x0 0x0 
18:52:14.588 -> Received a polling message. HEX: 0x12 0x0 0x0 
18:52:14.622 -> Received a polling message. HEX: 0x14 0x0 0x0 
18:52:14.656 -> Received a polling message. HEX: 0x15 0x0 0x0 
18:52:14.726 -> Received a polling message. HEX: 0x17 0x0 0x0 
18:52:14.759 -> Received a polling message. HEX: 0x18 0x0 0x0 
18:52:14.827 -> Received a polling message. HEX: 0x20 0x0 0x0 
18:52:14.862 -> Received a polling message. HEX: 0x30 0x0 0x0 
18:52:14.931 -> Received a polling message. HEX: 0x38 0x0 0x0 
18:52:14.964 -> Received a polling message. HEX: 0x48 0x0 0x0 
18:52:15.000 -> Received a polling message. HEX: 0x50 0x0 0x0 
18:52:15.068 -> Received a polling message. HEX: 0x58 0x0 0x0 
18:52:15.103 -> Received a polling message. HEX: 0x68 0x0 0x0 
18:52:15.171 -> Received a polling message. HEX: 0xA 0x0 0x0 
18:52:15.205 -> Received a polling message. HEX: 0xC 0x0 0x0 
18:52:15.274 -> Received a polling message. HEX: 0xD 0x0 0x0 
18:52:15.309 -> Received a polling message. HEX: 0xE 0x0 0x0 
18:52:15.377 -> Received a polling message. HEX: 0x10 0x0 0x0 
18:52:15.411 -> Received a polling message. HEX: 0x11 0x0 0x0 
18:52:15.480 -> Received a polling message. HEX: 0x13 0x0 0x0 
18:52:15.525 -> Received a polling message. HEX: 0x14 0x0 0x0 
18:52:15.557 -> Received a polling message. HEX: 0x15 0x0 0x0 
18:52:15.625 -> Received a polling message. HEX: 0x17 0x0 0x0 
18:52:15.660 -> Received a polling message. HEX: 0x1A 0x0 0x0 
18:52:15.720 -> Received a polling message. HEX: 0x2A 0x0 0x0 
18:52:15.760 -> Received a polling message. HEX: 0x32 0x0 0x0 
18:52:15.812 -> Received a polling message. HEX: 0x3A 0x0 0x0 
18:52:15.856 -> Received a polling message. HEX: 0x4A 0x0 0x0 
18:52:15.939 -> Received a polling message. HEX: 0x52 0x0 0x0 
18:52:16.021 -> Received a polling message. HEX: 0x62 0x0 0x0 
18:52:16.021 -> Received a polling message. HEX: 0x6A 0x0 0x0 
18:52:16.097 -> Received a polling message. HEX: 0xA 0x0 0x0 
18:52:16.176 -> Received a polling message. HEX: 0xC 0x0 0x0 
18:52:16.176 -> Received a polling message. HEX: 0xD 0x0 0x0 
18:52:16.259 -> Received a polling message. HEX: 0xF 0x0 0x0 
18:52:16.259 -> Received a polling message. HEX: 0x10 0x0 0x0 
18:52:16.373 -> Received a polling message. HEX: 0x11 0x0 0x0 
18:52:16.373 -> Received a polling message. HEX: 0x13 0x0 0x0 
18:52:16.441 -> Received datagram.
18:52:16.441 -> -----Datagram----- BYTES=7
18:52:16.509 -> HEX: 0x88 0x13 0x5 0x22 0x0 0x80 0x0 0x0 
18:52:16.509 -> -----End of Datagram-----
18:52:16.680 -> Received datagram.
18:52:16.714 -> -----Datagram----- BYTES=31
18:52:16.787 -> HEX: 0x88 0x0 0x18 0x0 0x36 0x1 0x9B 0x20 0x0 0x1 0x2 0x20 0xC0 0x1 0x45 0x80 0x0 0x80 0x0 0xFF 0xFF 0xFF 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x69 0x0 0x0 
18:52:16.885 -> -----End of Datagram-----
18:52:16.962 -> Received datagram.
18:52:16.962 -> -----Datagram----- BYTES=23
18:52:17.042 -> HEX: 0x88 0x0 0x34 0x0 0x33 0x1 0x45 0x80 0x0 0x80 0x0 0x0 0x1 0x0 0x1 0xB4 0x1C 0x0 0x0 0x38 0x0 0xEA 0x0 0x0 
18:52:17.121 -> -----End of Datagram-----
18:52:17.121 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:17.210 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:17.290 -> Received a polling message. HEX: 0x16 0x0 0x34 
18:52:17.290 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:17.369 -> Received a polling message. HEX: 0x21 0x0 0x34 
18:52:17.369 -> Received a polling message. HEX: 0x29 0x0 0x34 
18:52:17.450 -> Received a polling message. HEX: 0x39 0x0 0x34 
18:52:17.531 -> Received a polling message. HEX: 0x41 0x0 0x34 
18:52:17.531 -> Received a polling message. HEX: 0x49 0x0 0x34 
18:52:17.613 -> Received a polling message. HEX: 0x59 0x0 0x34 
18:52:17.695 -> Received a polling message. HEX: 0x61 0x0 0x34 
18:52:17.695 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:17.773 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:17.773 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:17.852 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:17.931 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:17.931 -> Received a polling message. HEX: 0x11 0x0 0x34 
18:52:17.983 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:18.029 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:18.105 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:18.156 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:18.206 -> Received a polling message. HEX: 0x18 0x0 0x34 
18:52:18.260 -> Received a polling message. HEX: 0x20 0x0 0x34 
18:52:18.320 -> Received a polling message. HEX: 0x28 0x0 0x34 
18:52:18.381 -> Received a polling message. HEX: 0x38 0x0 0x34 
18:52:18.458 -> Received a polling message. HEX: 0x48 0x0 0x34 
18:52:18.458 -> Received a polling message. HEX: 0x50 0x0 0x34 
18:52:18.537 -> Received a polling message. HEX: 0x58 0x0 0x34 
18:52:18.537 -> Received a polling message. HEX: 0x68 0x0 0x34 
18:52:18.617 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:18.681 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:18.755 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:18.755 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:18.831 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:18.908 -> Received a polling message. HEX: 0x11 0x0 0x34 
18:52:18.908 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:18.984 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:19.060 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:19.060 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:19.136 -> Received a polling message. HEX: 0x1B 0x0 0x34 
18:52:19.219 -> Received a polling message. HEX: 0x2B 0x0 0x34 
18:52:19.219 -> Received a polling message. HEX: 0x3B 0x0 0x34 
18:52:19.298 -> Received a polling message. HEX: 0x43 0x0 0x34 
18:52:19.378 -> Received a polling message. HEX: 0x4B 0x0 0x34 
18:52:19.378 -> Received a polling message. HEX: 0x5B 0x0 0x34 
18:52:19.459 -> Received a polling message. HEX: 0x63 0x0 0x34 
18:52:19.459 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:19.541 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:19.622 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:19.622 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:19.701 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:19.767 -> Received a polling message. HEX: 0x11 0x0 0x34 
18:52:19.767 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:19.821 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:19.876 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:19.936 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:20.004 -> Received a polling message. HEX: 0x1C 0x0 0x34 
18:52:20.076 -> Received a polling message. HEX: 0x24 0x0 0x34 
18:52:20.076 -> Received a polling message. HEX: 0x2C 0x0 0x34 
18:52:20.156 -> Received a polling message. HEX: 0x3C 0x0 0x34 
18:52:20.235 -> Received a polling message. HEX: 0x4C 0x0 0x34 
18:52:20.235 -> Received a polling message. HEX: 0x54 0x0 0x34 
18:52:20.313 -> Received a polling message. HEX: 0x5C 0x0 0x34 
18:52:20.313 -> Received a polling message. HEX: 0x6C 0x0 0x34 
18:52:20.394 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:20.477 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:20.477 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:20.558 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:20.641 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:20.641 -> Received a polling message. HEX: 0x11 0x0 0x34 
18:52:20.719 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:20.719 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:20.799 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:20.880 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:20.880 -> Received a polling message. HEX: 0x1A 0x0 0x34 
18:52:20.960 -> Received a polling message. HEX: 0x2A 0x0 0x34 
18:52:21.040 -> Received a polling message. HEX: 0x32 0x0 0x34 
18:52:21.040 -> Received a polling message. HEX: 0x3A 0x0 0x34 
18:52:21.119 -> Received a polling message. HEX: 0x4A 0x0 0x34 
18:52:21.199 -> Received a polling message. HEX: 0x5A 0x0 0x34 
18:52:21.199 -> Received a polling message. HEX: 0x62 0x0 0x34 
18:52:21.280 -> Received a polling message. HEX: 0x6A 0x0 0x34 
18:52:21.280 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:21.360 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:21.443 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:21.443 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:21.523 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:21.605 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:21.605 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:21.683 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:21.763 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:21.763 -> Received a polling message. HEX: 0x1D 0x0 0x34 
18:52:21.844 -> Received a polling message. HEX: 0x25 0x0 0x34 
18:52:21.926 -> Received a polling message. HEX: 0x35 0x0 0x34 
18:52:21.926 -> Received a polling message. HEX: 0x3D 0x0 0x34 
18:52:22.009 -> Received a polling message. HEX: 0x4D 0x0 0x34 
18:52:22.009 -> Received a polling message. HEX: 0x55 0x0 0x34 
18:52:22.088 -> Received a polling message. HEX: 0x5D 0x0 0x34 
18:52:22.167 -> Received a polling message. HEX: 0x6D 0x0 0x34 
18:52:22.167 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:22.246 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:22.324 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:22.324 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:22.404 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:22.506 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:22.506 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:22.581 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:22.581 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:22.663 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:22.663 -> Received a polling message. HEX: 0x26 0x0 0x34 
18:52:22.744 -> Received a polling message. HEX: 0x2E 0x0 0x34 
18:52:22.825 -> Received a polling message. HEX: 0x36 0x0 0x34 
18:52:22.825 -> Received a polling message. HEX: 0x46 0x0 0x34 
18:52:22.904 -> Received a polling message. HEX: 0x4E 0x0 0x34 
18:52:22.984 -> Received a polling message. HEX: 0x5E 0x0 0x34 
18:52:22.984 -> Received a polling message. HEX: 0x66 0x0 0x34 
18:52:23.065 -> Received a polling message. HEX: 0x6E 0x0 0x34 
18:52:23.146 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:23.146 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:23.226 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:23.226 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:23.305 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:23.384 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:23.384 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:23.465 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:23.545 -> Received a polling message. HEX: 0x16 0x0 0x34 
18:52:23.545 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:23.625 -> Received a polling message. HEX: 0x20 0x0 0x34 
18:52:23.625 -> Received a polling message. HEX: 0x30 0x0 0x34 
18:52:23.703 -> Received a polling message. HEX: 0x38 0x0 0x34 
18:52:23.782 -> Received a polling message. HEX: 0x40 0x0 0x34 
18:52:23.862 -> Received a polling message. HEX: 0x58 0x0 0x34 
18:52:23.862 -> Received a polling message. HEX: 0x60 0x0 0x34 
18:52:23.944 -> Received a polling message. HEX: 0x68 0x0 0x34 
18:52:23.944 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:24.024 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:24.103 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:24.103 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:24.183 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:24.263 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:24.263 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:24.345 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:24.424 -> Received a polling message. HEX: 0x16 0x0 0x34 
18:52:24.424 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:24.507 -> Received a polling message. HEX: 0x27 0x0 0x34 
18:52:24.507 -> Received a polling message. HEX: 0x2F 0x0 0x34 
18:52:24.590 -> Received a polling message. HEX: 0x37 0x0 0x34 
18:52:24.668 -> Received a polling message. HEX: 0x47 0x0 0x34 
18:52:24.668 -> Received a polling message. HEX: 0x57 0x0 0x34 
18:52:24.747 -> Received a polling message. HEX: 0x5F 0x0 0x34 
18:52:24.827 -> Received a polling message. HEX: 0x67 0x0 0x34 
18:52:24.827 -> Received a polling message. HEX: 0x6F 0x0 0x34 
18:52:24.907 -> Received a polling message. HEX: 0xB 0x0 0x34 
18:52:24.907 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:24.988 -> Received a polling message. HEX: 0xE 0x0 0x34 
18:52:25.057 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:25.124 -> Received a polling message. HEX: 0x12 0x0 0x34 
18:52:25.124 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:25.200 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:25.279 -> Received a polling message. HEX: 0x15 0x0 0x34 
18:52:25.279 -> Received a polling message. HEX: 0x16 0x0 0x34 
18:52:25.358 -> Received a polling message. HEX: 0x19 0x0 0x34 
18:52:25.439 -> Received a polling message. HEX: 0x29 0x0 0x34 
18:52:25.439 -> Received a polling message. HEX: 0x31 0x0 0x34 
18:52:25.518 -> Received a polling message. HEX: 0x39 0x0 0x34 
18:52:25.597 -> Received a polling message. HEX: 0x49 0x0 0x34 
18:52:25.597 -> Received a polling message. HEX: 0x51 0x0 0x34 
18:52:25.676 -> Received a polling message. HEX: 0x61 0x0 0x34 
18:52:25.758 -> Received a polling message. HEX: 0x69 0x0 0x34 
18:52:25.758 -> Received a polling message. HEX: 0xA 0x0 0x34 
18:52:25.838 -> Received a polling message. HEX: 0xC 0x0 0x34 
18:52:25.838 -> Received a polling message. HEX: 0xD 0x0 0x34 
18:52:25.917 -> Received a polling message. HEX: 0xF 0x0 0x34 
18:52:25.997 -> Received a polling message. HEX: 0x10 0x0 0x34 
18:52:25.997 -> Received a polling message. HEX: 0x11 0x0 0x34 
18:52:26.087 -> Received a polling message. HEX: 0x13 0x0 0x34 
18:52:26.087 -> Received a polling message. HEX: 0x14 0x0 0x34 
18:52:26.166 -> Received a polling message. HEX: 0x16 0x0 0x34 
18:52:26.246 -> Received a polling message. HEX: 0x17 0x0 0x34 
18:52:26.246 -> Received a polling message. HEX: 0x18 0x0 0x34 
18:52:26.327 -> Received a polling message. HEX: 0x28 0x0 0x34 
18:52:26.407 -> Received datagram.
18:52:26.407 -> -----Datagram----- BYTES=7
18:52:26.407 -> HEX: 0x88 0x13 0x5 0x22 0x0 0x80 0x0 0x80 
18:52:26.495 -> -----End of Datagram-----
18:52:26.638 -> Received a polling message. HEX: 0x40 0x0 0x5 
18:52:26.783 -> Received datagram.
18:52:26.783 -> -----Datagram----- BYTES=31
18:52:26.783 -> HEX: 0x88 0x0 0x18 0x0 0x36 0x1 0x9B 0x20 0x0 0x1 0x2 0x20 0xC0 0x1 0x44 0x80 0x0 0x80 0x0 0xFF 0xFF 0xFF 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x7F 0x0 0x0 
18:52:26.943 -> -----End of Datagram-----
18:52:27.023 -> Received datagram.
18:52:27.023 -> -----Datagram----- BYTES=23
18:52:27.023 -> HEX: 0x88 0x0 0x34 0x0 0x33 0x1 0x44 0x80 0x0 0x80 0x0 0x0 0x1 0x0 0x1 0xB4 0x1C 0x0 0x0 0x38 0x0 0xFC 0x0 0x0 
18:52:27.148 -> -----End of Datagram-----
18:52:27.224 -> Received a polling message. HEX: 0x48 0x0 0x34 
18:52:27.224 -> Received a polling message. HEX: 0x50 0x0 0x34 
18:52:27.304 -> Received a polling message. HEX: 0x58 0x0 0x34 
18:52:27.383 -> Received a polling message. HEX: 0x68 0x0 0x34 

I haven't had time to analyse the dump because I literally just did it a few seconds ago. One thing I did notice straight away is that the series of poll messages don't form a continuous sequence of numbers. There are gaps.

0x8b doesn't appear as a poll value!

In 'ems_parseTelegram' I changed:

// if (value == (EMS_ID_ME | 0x80)) {

to

if (value == (EMS_ID_ME)) {

I also chose one of the poll values I'd seen in the dump and set EMS_ID_ME to it.

This resulted in telegrams being sent and appearing in the log:

Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:15:08) Sending read of type 0x18 to 0x08: telegram: 6B 88 18 00 63 (CRC=C1), #data=1
(00:15:12) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:13) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:15:13) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 96 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=93), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:13) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 11 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=36), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:15:13) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 06 64 00 07 8E 08 F7 E8 00 00 00 07 43 CC 00 07 56 80 00 (CRC=D8), #data=27
<--- UBAMonitorSlow(0x19) received
(00:15:15) Sending read of type 0x19 to 0x08: telegram: 6B 88 19 00 63 (CRC=C5), #data=1
Publishing boiler data via MQTT
(00:15:22) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 95 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=EB), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:23) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:23) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 10 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=20), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:15:29) Sending read of type 0x33 to 0x08: telegram: 6B 88 33 00 63 (CRC=6D), #data=1
(00:15:32) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:33) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 92 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=C4), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:33) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 11 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=36), #data=17
<--- UBAMonitorWWMessage(0x34) received

Progress!!!

However, no replies appear to be being received.

@higgers yes, strange data. In fact none of those poll bytes have the MSB (high-bit) set and also I'm not sure why its 3 bytes and always end with 0x34. I'll need to look at bbqkee's code

@kwertie01 noisy data is normal, is just line noise and the code should be able to handle any quirks. It looks like sending (Tx) is not working with your setup?

when you send something, it should always come back with the destination as
'me'. So look for "Boiler -> me" which you don't have so the messages are
getting ignored. I think bbqkees's code on an Arduino does sending too -
have you tried that?

On Thu, Mar 14, 2019 at 8:49 PM higgers notifications@github.com wrote:

In 'ems_parseTelegram' I changed:

// if (value == (EMS_ID_ME | 0x80)) {

to

if (value == (EMS_ID_ME)) {

I also chose one of the poll values I'd seen in the dump and set EMS_ID_ME
to it.

This resulted in telegrams being sent and appearing in the log:

Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices..
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:15:08) Sending read of type 0x18 to 0x08: telegram: 6B 88 18 00 63 (CRC=C1), #data=1
(00:15:12) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:13) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:15:13) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 96 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=93), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:13) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 11 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=36), #data=17
<--- UBAMonitorWWMessage(0x34) received
(00:15:13) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 06 64 00 07 8E 08 F7 E8 00 00 00 07 43 CC 00 07 56 80 00 (CRC=D8), #data=27
<--- UBAMonitorSlow(0x19) received
(00:15:15) Sending read of type 0x19 to 0x08: telegram: 6B 88 19 00 63 (CRC=C5), #data=1
Publishing boiler data via MQTT
(00:15:22) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 95 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=EB), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:23) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:23) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 10 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=20), #data=17
<--- UBAMonitorWWMessage(0x34) received
Publishing boiler data via MQTT
(00:15:29) Sending read of type 0x33 to 0x08: telegram: 6B 88 33 00 63 (CRC=6D), #data=1
(00:15:32) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:15:33) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 92 20 00 01 02 20 C0 01 11 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=C4), #data=25
<--- UBAMonitorFast(0x18) received
(00:15:33) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 11 80 00 80 00 00 01 00 01 B4 1C 00 00 38 00 (CRC=36), #data=17
<--- UBAMonitorWWMessage(0x34) received

Progress!!!

However, no replies appear to be being received.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/proddy/EMS-ESP/issues/23#issuecomment-473032701, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABLHeOkv9iNRbHh0w3dHmBfyFKV7Oe58ks5vWqfNgaJpZM4Zmmqq
.

I just tried the simple request code and got the following output:

EMS bus request started.
Do request
Do request
Do request
Received a dataframe!
Wrong frametype received (0x5).
Do request

No response received.

I may buy another Arduino Mega to use as an EMS logger/decoder and some Dupont terminals to split the TX and RX lines out to both the Wemos and two Arduinos.

I think the 3 byte long poll might be a bit of a red herring. Having looked at a much longer EMS dump, the second and third bytes always contain the same values as the second and third bytes of the previously sent telegram. In the section of the dump I posted above the first set of polls have bytes 2 and 3 set to 0 and 0 because there hadn't been a previous telegram at that point. After the 0x34 telegram was received all subsequent poll telegrams have bytes 2 and 3 set to 0x0 and 0x34. This pattern continues throughout the dump.

Finally I have received my Logic Analyzer and after a couple of days playing around with it, I got it working and I could start tracing the EMS bus at home.
After looking at some traces I found an important difference in my transmits and the examples I have seen how it probably should be. In the picture below it shows that from the bytes that are transmitted only every other byte is echoed back instead of all the bytes. This is because all the bytes are transmitted right after each other without any delay.
image
I inserted a delay in the emsuart_tx_buffer function:

void ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
for (uint8_t i = 0; i < len; i++) {
USF(EMSUART_UART) = buf[i];
delayMicroseconds(EMS_TX_BRK_WAIT);
}
emsuart_tx_brk();
}

Now all the bytes from the transmits are echoed back
image
Now my transmits are working :-)
Sadly I only got still some "Corrupt telegrams" in the logging but that's for later, it's getting late now.

Calling scheduled data refresh from EMS devices...
Requesting type RC30StatusMessage(0x41) from dest 0x10
Requesting type RC30Set(0xA7) from dest 0x10
Requesting type RCTime(0x06) from dest 0x10
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:06:06.664) Sending read of type 0x41 to 0x10: telegram: 0B 90 41 00 20 (CRC=69), #data=1
(00:06:06.822) Thermostat -> me, type 0x41 telegram: 10 0B 41 00 80 1E 00 C2 31 00 00 00 00 05 01 00 C2 00 (CRC=68), #data=14
(00:06:07.082) Corrupt telegram: telegram: 0B 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=14
(00:06:07.339) Sending read of type 0xA7 to 0x10: telegram: 0B 90 A7 00 20 (CRC=DA), #data=1
(00:06:07.354) Corrupt telegram: telegram: 0B 90 A7 00 (CRC=DA)
(00:06:07.485) Thermostat -> me, type 0xA7 telegram: 10 0B A7 00 01 00 FF F6 01 06 00 01 0D 04 00 FF FF 01 02 02 02 00 F9 05 24 05 24 02 0E 00 FF (CRC=F6), #data=27
(00:06:07.964) Sending read of type 0x06 to 0x10: telegram: 0B 90 06 00 20 (CRC=6C), #data=1
(00:06:07.979) Corrupt telegram: telegram: 0B 90 06 00 (CRC=6C)
(00:06:08.070) Thermostat -> me, type 0x06 telegram: 10 0B 06 00 13 03 15 1A 26 2C 01 00 00 00 00 00 00 (CRC=C0), #data=13
(00:06:08.489) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 20 (CRC=D4), #data=1
(00:06:08.550) Boiler -> me, type 0x18 telegram: 08 0B 18 00 07 02 29 00 00 00 00 00 60 01 D6 02 0B 01 4C 00 00 0E 30 48 00 CB 00 00 00 (CRC=70), #data=25
(00:06:09.018) Sending read of type 0x19 to 0x08: telegram: 0B 88 19 00 20 (CRC=D0), #data=1
(00:06:09.070) Boiler -> me, type 0x19 telegram: 08 0B 19 00 80 00 02 29 80 00 00 00 00 00 03 7A A5 12 09 97 00 00 00 0E 7E 59 00 C6 A4 (CRC=2C), #data=25
(00:06:09.463) Sending read of type 0x33 to 0x08: telegram: 0B 88 33 00 20 (CRC=78), #data=1
(00:06:09.504) Boiler -> me, type 0x33 telegram: 08 0B 33 00 08 FF 3C F6 00 19 FF 02 46 00 FF (CRC=21), #data=11
Publishing boiler data via MQTT
(00:06:10.018) Sending read of type 0x16 to 0x08: telegram: 0B 88 16 00 20 (CRC=EC), #data=1
(00:06:10.033) Corrupt telegram: telegram: 0B 88 16 00 (CRC=EC)
(00:06:10.055) Boiler -> me, type 0x16 telegram: 08 0B 16 00 FF 5A 64 00 06 FA 0A 01 0D 64 37 02 (CRC=94), #data=12
(00:06:10.350) Boiler -> all, type 0x18 telegram: 08 00 18 00 07 02 29 00 00 00 00 00 60 01 D6 02 0B 01 4C 00 00 0E 30 48 00 CB 00 00 00 (CRC=C3), #data=25
(00:06:10.570) Boiler -> all, type 0x19 telegram: 08 00 19 00 80 00 02 29 80 00 00 00 00 00 03 7A A5 12 09 97 00 00 00 0E 7E 59 00 C6 A4 (CRC=9F), #data=25
(00:06:10.811) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D7 02 0B 21 00 00 02 00 03 8B 3E 02 B4 01 00 (CRC=3F), #data=17
(00:06:11.063) Sending read of type 0x14 to 0x08: telegram: 0B 88 14 00 20 (CRC=E4), #data=1
(00:06:11.095) Boiler -> me, type 0x14 telegram: 08 0B 14 00 66 C4 C8 (CRC=CA), #data=3
(00:06:11.355) Corrupt telegram: telegram: 0B 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6), #data=14
(00:06:11.619) Boiler -> all, type 0x18 telegram: 08 00 18 00 07 02 29 00 00 00 00 00 60 01 D7 02 0B 01 4C 00 00 0E 30 48 00 CB 00 00 00 (CRC=D5), #data=25
(00:06:12.406) Boiler -> all, type 0x07 telegram: 08 00 07 00 03 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=DA), #data=13
(00:06:20.391) Boiler -> all, type 0x18 telegram: 08 00 18 00 07 02 29 00 00 00 00 00 60 01 D6 02 0B 01 4C 00 00 0E 30 48 00 CB 00 00 00 (CRC=C3), #data=25
(00:06:20.637) Boiler -> all, type 0x34 telegram: 08 00 34 00 3E 01 D6 02 0B 21 00 00 02 00 03 8B 3E 02 B4 01 00 (CRC=29), #data=17
(00:06:21.319) Thermostat -> all, type 0x06 telegram: 10 00 06 00 13 03 15 1A 26 39 01 00 00 00 00 00 00 (CRC=B7), #data=13

That's great progress @kwertie01 ! What was the value of EMS_TX_BRK_WAIT? I'll run some tests here and see if it makes a difference. I awesome you're using the latest build from master or dev?

The EMS_TX_BRK_WAIT was already defined in your code (emsuart.h)

define EMS_TX_BRK_WAIT 2070

I left it the same as I thought that I probably need at least a delay of one byte + one start and one stop bit = 10 bits and your value is a delay of 11 bits so that was my first try.
I will do some more readings with the analyzer to identify the correct timing that the boiler and thermostat uses.
I used your dev version already for a couple of days and now I updated to the master 1.6.0 version. I needed the newer version anyway because I also suffer from the Wifi connect problems. I noticed that the Wifi connect problems are really worse when the SSID is hidden. I will dive into this problem later and probably using another issue thread for this.

Interesting. I've updated to 1.6.0, added the delay in emsuart_tx_buffer and removed the check for the MSB in _ems_readTelegram but still get no response from the boiler. However, I do now see corrupt telegrams. An excerpt from the log:

Calling scheduled data refresh from EMS devices...
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:11:08.217) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:08.588) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 85 20 00 01 02 20 C0 01 0F 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=13), #data=25
(00:11:08.829) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0F 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=19), #data=17
(00:11:13.744) Sending read of type 0x33 to 0x08: telegram: 6B 88 33 00 20 (CRC=2E), #data=1
(00:11:18.207) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:18.513) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:11:18.734) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 83 20 00 01 02 20 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 00 00 (CRC=F5), #data=25
(00:11:18.975) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:11:19.236) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 01 64 00 0D 6E 09 08 E6 00 00 00 07 53 98 00 0C AB 80 00 (CRC=BE), #data=27
(00:11:21.417) Sending read of type 0x16 to 0x08: telegram: 6B 88 16 00 20 (CRC=BA), #data=1
(00:11:21.433) Corrupt telegram: telegram: 6B 88 16 00 (CRC=BA)
(00:11:21.825) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 85 20 00 01 02 20 C0 01 0F 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=0F), #data=25
(00:11:25.072) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 85 20 00 01 02 24 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=EB), #data=25
(00:11:26.071) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 85 20 00 01 02 2D C0 01 0F 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=B0), #data=25
(00:11:27.070) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 83 20 2D 09 02 2D C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=A2), #data=25
(00:11:28.197) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:28.568) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 83 20 2D 09 02 2D C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=A2), #data=25
(00:11:28.808) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:11:29.567) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 83 20 2D 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=5F), #data=25
(00:11:29.909) Sending read of type 0x14 to 0x08: telegram: 6B 88 14 00 20 (CRC=B2), #data=1
(00:11:29.926) Corrupt telegram: telegram: 6B 88 14 00 (CRC=B2)
(00:11:38.187) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:38.502) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 89 20 2A 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=97), #data=25
(00:11:38.742) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:11:43.395) Sending read of type 0x18 to 0x08: telegram: 6B 88 18 00 20 (CRC=82), #data=1
(00:11:44.302) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 9B 20 26 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=0D), #data=25
(00:11:48.177) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:48.492) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 AA 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=FE), #data=25
(00:11:48.732) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:11:51.795) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 B8 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=1C), #data=25
(00:11:52.043) Sending read of type 0x19 to 0x08: telegram: 6B 88 19 00 20 (CRC=86), #data=1
(00:11:55.291) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 C7 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=5F), #data=25
(00:11:58.167) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:11:58.538) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 D2 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=92), #data=25
(00:11:58.778) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:11:59.537) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 D6 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=C5), #data=25
(00:11:59.785) Sending read of type 0x33 to 0x08: telegram: 6B 88 33 00 20 (CRC=2E), #data=1
(00:12:04.282) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 E5 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=72), #data=25
(00:12:06.528) Sending read of type 0x16 to 0x08: telegram: 6B 88 16 00 20 (CRC=BA), #data=1
Publishing boiler data via MQTT
Calling scheduled data refresh from EMS devices...
Requesting type UBAMonitorFast(0x18) from dest 0x08
Requesting type UBAMonitorSlow(0x19) from dest 0x08
Requesting type UBAParameterWW(0x33) from dest 0x08
Requesting type UBAParametersMessage(0x16) from dest 0x08
Requesting type UBATotalUptimeMessage(0x14) from dest 0x08
(00:12:08.156) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:12:08.471) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 EE 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=A4), #data=25
(00:12:08.711) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 80 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=0F), #data=17
(00:12:11.525) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 01 F4 20 24 09 02 25 C0 01 0E 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=E8), #data=25
(00:12:12.241) Sending read of type 0x14 to 0x08: telegram: 6B 88 14 00 20 (CRC=B2), #data=1
(00:12:18.146) Boiler -> 0x13, type 0x05 telegram: 88 13 05 22 00 (CRC=80), #data=1
(00:12:18.449) Boiler -> all, type 0x07 telegram: 88 00 07 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=E6), #data=15
(00:12:18.673) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 02 00 20 24 09 02 25 C0 01 0D 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=AD), #data=25
(00:12:18.914) Boiler -> all, type 0x34 telegram: 88 00 34 00 33 01 0E 80 00 A0 00 00 01 00 01 B5 4E 00 00 C3 00 (CRC=57), #data=17
(00:12:19.175) Boiler -> all, type 0x19 telegram: 88 00 19 00 80 00 80 00 80 00 FF FF 00 64 00 0D 6F 09 08 E7 00 00 00 07 53 99 00 0C AC 80 00 (CRC=25), #data=27
(00:12:20.515) Boiler -> all, type 0x18 telegram: 88 00 18 00 36 02 03 20 24 09 02 25 C0 01 0D 80 00 80 00 FF FF FF 00 00 00 00 00 02 18 (CRC=D5), #data=25
(00:12:21.981) Sending read of type 0x18 to 0x08: telegram: 6B 88 18 00 20 (CRC=82), #data=1

I need to get some time to try and get my logic analyser working on my Win10 laptop. I have an old laptop running Ubuntu that I could possibly try too.

I also tried with the added delay, now I get this:

(00:02:29.994) Sending raw telegram: 0B 88 02 00 63 (CRC=FF), #data=1
(00:02:30.034) 0x08 -> me, type 0x02 telegram: 08 0B 02 00 D0 01 04 00 00 00 00 00 00 03 (CRC=28), #data=10
Unrecognized device found. TypeID 0x08, ProductID 208, Version 01.04

Yay! Thanks @kwertie01 for doing the work I wanted to do weeks ago... :-D

wow, looks like you nailed the send problem with some of the newer boilers - great!

Could you both try if 1ms (value of 1000) works too?

I just tried with 1000 instead of EMS_TX_BRK_WAIT and it did not work. Changing it back to EMS_TX_BRK_WAIT made it work again.

thats the magic number then, just enough time for the Tx to get through. Is your Poll code still the same or did you disable the check?

I used a fresh checkout of your current code and just added the delay.
And set the EMSESP_BOILER_TYPE to EMS_ID_DEFAULT_BOILER in my_config.h because it would not autodetect it.
I'm currently using the d1_mini and D7/D8 for the bus connection.

Unfortunately adding the delay to the Tx on my setup (older non-EMS+ boiler) causes the send packages to fail most of the time. Perhaps the trick is to time the ms between each Poll from the bus master and use this as the heartbeat.

@kwertie01 which version of bbqkees' board are you using? It could be the circuit has slightly changed due to some component swaps and the resistors used to level the bus take longer.

I'm using v0.9 of the 'bbqkees' board and bought it including the Wemos.
image
I haven't focused yet on the level converter board (the electronics) but first on the software in the Wemos because I also did a test using an Arduino Mega with the Create EMSBusSimpleRegisterReadRequest.ino code and that worked fine with the 'bbqkees' board.

By the Way: The delay I added is also present in the EMSBusSimpleRegisterReadRequest.ino code from 'bbqkees'. See the line with delay(3); below in he code.

// Send a data frame to the bus in EMS format

void sendBuffer(char * xmitBuffer, int len){
  char j;
  for(j=0;j<len-1;j++){                                   
    nefitSerial1.write(xmitBuffer[j]);
    delay(3);
  }
  nefitSerial1.writeEOF();
  delay(2);
  nefitSerial1.flush();
}

I didn't spend time looking at the code for a while. First I want to understand the EMS protocol better. I'm playing around with my logic Analyzer making recordings of the EMS bus using Sigrok PulseView. To display the EMS information better I'm working on a EMS Protocol Decoder for Sigrok. It will take some time because It's the first time for me that I programming in Python.

in the latest dev i capture the poll time. would be interesting to see if the new UBA masters have a faster acknowledge time.

implemented set tx_delay to turn on/off the delay in the Tx transmission so firmware works for everyone. It's in the 1.7.0 dev branch. If someone can verify it works then I'll push to Master, thanks

I tried to flash the dev branch but it seemed that flashing was not successfull. I could connect via telnet but did not receive any information; commands were sent but did not receive an answer. After checking out master and flashing again it is working again. I'll try again later today, though...
I tried again just now, after updating the platformio libraries. It's working now when setting the tx_delay to on :-)

great! thanks @darookee for checking

Sorry for the late reaction but I was outside the country for a while.
I flashed the dev version 1.7.0b5 into the Wemos and tested it last night. With the set tx_delay to on I see that transmitting is working.
Still I see some Corrupt telegrams and Write command failed from host randomly in the logging. I will look into this but I don't think this should hold back the release of 1.7.0 from dev to master.
I looked also at the poll time. If I refresh the information by typing info several times, I see that the poll time is fluctuating between 5 ms and 30ms.

thanks @kwertie01 . I noticed the poll jumps between 3 and 20 too on my system. I'll think about how best to approach that.

closing this issue

@darookee @kwertie01 would you guys mind testing the latest dev build. It has some new Tx logic, so please test reading and writing in tx_mode 2. thanks

I just tried these and they all did something:

*  boiler wwtemp <degrees>                      set boiler warm water temperature
*  boiler flowtemp <degrees>                    set boiler flow temperature
*  boiler comfort <hot | eco | intelligent>     set boiler warm water comfort setting

boiler tapwater <on|off> did not change anything but maybe the boiler does not support it. Here is the log:

Setting boiler warm tap water on
(00:06:59.122) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF) #data=11
<--- UBAMonitorFast(0x18)
(00:06:59.333) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 01 2C 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=21) #data=21
(00:06:59.581) Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 71 02 71 A1 00 01 03 00 00 AA 9E 00 1E 20 00 80 00 (CRC=02) #data=19
<--- UBAMonitorWWMessage(0x34)
(00:07:00.889) Boiler -> all, type 0x18 telegram: 08 00 18 00 25 02 59 64 00 01 01 20 40 80 00 02 71 01 FA 00 00 0F 30 59 00 CC 00 00 00 00 00 (CRC=6D) #data=27
<--- UBAMonitorFast(0x18)
(00:07:01.097) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF) #data=11
<--- UBAMonitorFast(0x18)
(00:07:01.932) Sending write of type 0x1D to 0x08: telegram: 0B 08 1D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=DE)
(00:07:02.049) Boiler -> all, type 0x07 telegram: 08 00 07 00 0B 01 00 00 00 00 00 00 00 00 00 00 00 (CRC=F6) #data=13
(00:07:02.307) Sending validate of type 0x1D to 0x08: telegram: 0B 88 1D 00 01 (CRC=E1)
Write to 0x08 was successful
Requesting type (0x1D) from dest 0x08
(00:07:02.582) Sending read of type 0x1D to 0x08: telegram: 0B 88 1D 00 20 (CRC=C0)
(00:07:02.639) Boiler -> me, type 0x1D telegram: 08 0B 1D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (CRC=C6) #data=27

@darookee I wrote my findings to issue #103
And just to let you know: boiler tapwater on/off is also not working for me. I can turn off the 3-way valve but not enable it. (Reset from Testmode type 0x1D is not working for me.) I try to look into this later and maybe make a separate issue and not to mix up with this topic.

thanks @darookee for checking. Please log a new issue for the 3-way valve. I'll also check the code and try it at home next week when I'm back from travels.

@darookee I found the bug with the tap water. doing a quick fix now

I tried the latest dev branch, tapwater still says 'off'. But I'm not even sure what this should show for my boiler. Which information is beeing read to display this? I have 'Warm water activated' 'on' and I'm not sure my boiler can distinguish between tapwater and warm water...?

From the boiler, I fetch both the Hot tap water: on/off and Central heating on/off. On my boiler this is shown as a tap icon or a radiator icon for example. Note this is different to the tapwater logic which basically switches off the feeding hot water into the tap water which I use to send blasts of cold water to a running shower as a sort of alarm.

What are you trying to do and what exactly is not working?

Hi! Sorry for the delay and the confusion.
I didn't know what 'Hot Tap Water' and 'Central Heating' were refering to, as they are both shown as 'off', but I certainly have hot water in the house ;-) Since I didn't know what it was I thought it is something my boiler does not do. 'Warm Water activated' is shown as 'on' after all.
But after your explanation it seems that the reading is not correct. It should be on, I have these icons, too, and they show 'on' and 'eco':

IMG_20190614_203203

Another thing that is not showing correctly is 'Warm Water current tap water flow', and this also seems to be the reason 'Hot tap water' is off, as this seems to use that value to determine it's state. If it helps, my 0x34 message looks like this:
Boiler -> all, type 0x34 telegram: 08 00 34 00 3C 02 6A 02 6A A1 00 01 03 00 00 B3 69 00 1F 81 00 80 00 (CRC=A8) #data=19

@darookee the logic used for "tap water on/off" is wwCurFlow !=0 and burnGas = on. The wwCurFlow comes from 0x34 at byte 9 which has a value 0x00, hence its always off. The code is in ems.cpp in the function _checkActive()

The logic for heating on/off is similar and checks the flow temperature from telegram 0x18 is higher than a value of 70.

So, can you run the hot tap and do a few scans on 0x34 and 0x18 telegrams via a log v and boiler read 34 and boiler read 18. Perhaps your boiler works differently.

I finally got the time to try it.

Water off:

(02:46:52.134) Sending read of type 0x34 to 0x08: telegram: 0B 88 34 00 20 (CRC=64) #data=2
(02:46:52.183) Boiler -> me, type 0x34 telegram: 08 0B 34 00 3C 02 0F 02 0F 81 00 01 03 00 00 B7 1B 00 20 0F 00 80 00 (CRC=BE) #data=19
(02:46:52.434) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 20 (CRC=D4) #data=2
(02:46:52.491) Boiler -> me, type 0x18 telegram: 08 0B 18 00 05 02 69 00 00 00 00 00 40 80 00 02 0F 01 7A 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=C6) #data=27

Water just turned on:

(02:47:35.409) Sending read of type 0x34 to 0x08: telegram: 0B 88 34 00 20 (CRC=64) #data=2
(02:47:35.458) Boiler -> me, type 0x34 telegram: 08 0B 34 00 3C 02 0E 02 0E 81 00 05 03 00 00 B7 1B 00 20 0F 00 80 00 (CRC=FB) #data=19
(02:47:35.709) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 20 (CRC=D4) #data=2
(02:47:35.766) Boiler -> me, type 0x18 telegram: 08 0B 18 00 05 02 68 00 00 00 00 80 40 80 00 02 0E 01 79 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=40) #data=27

Water on for about 1 Minute:

(02:47:55.084) Sending read of type 0x34 to 0x08: telegram: 0B 88 34 00 20 (CRC=64) #data=2
(02:47:55.133) Boiler -> me, type 0x34 telegram: 08 0B 34 00 3C 02 0D 02 0D 81 00 05 03 00 00 B7 1B 00 20 0F 00 80 00 (CRC=29) #data=19
(02:47:55.434) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 20 (CRC=D4) #data=2
(02:47:55.491) Boiler -> me, type 0x18 telegram: 08 0B 18 00 05 02 68 00 00 00 00 80 40 80 00 02 0D 01 79 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=7A) #data=27
<--- UBAMonitorFast(0x18)
(02:47:55.566) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 02 68 00 00 00 00 80 40 80 00 02 0D 01 79 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=84) #data=27
<--- UBAMonitorFast(0x18)
(02:47:55.849) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF) #data=11

Water just turned off again:

(02:48:25.109) Sending read of type 0x34 to 0x08: telegram: 0B 88 34 00 20 (CRC=64) #data=2
(02:48:25.158) Boiler -> me, type 0x34 telegram: 08 0B 34 00 3C 02 09 02 09 81 00 05 03 00 00 B7 1B 00 20 0F 00 80 00 (CRC=08) #data=19
(02:48:25.459) Sending read of type 0x18 to 0x08: telegram: 0B 88 18 00 20 (CRC=D4) #data=2
(02:48:25.516) Boiler -> me, type 0x18 telegram: 08 0B 18 00 05 02 67 00 00 00 00 80 40 80 00 02 09 01 78 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=9D) #data=27
<--- UBAMonitorFast(0x18)
(02:48:25.591) Boiler -> all, type 0x18 telegram: 08 00 18 00 05 02 67 00 00 00 00 80 40 80 00 02 09 01 78 00 00 0E 30 48 00 CB 00 00 00 00 00 (CRC=63) #data=27
<--- UBAMonitorFast(0x18)
(02:48:25.874) Boiler -> all, type 0x18 telegram: 08 00 18 1B 00 00 00 00 00 00 00 00 00 00 00 (CRC=BF) #data=11

I left the two 0x18 from the scheduled read in, but just in the last two entries, because I didn't see them in the first ones :-|

I hope this helps?

Thanks, it helps. I've attached my diagnosis. Looks like the selected flow temp and current water flow are not in the positions they should be. It would be good to compare your Buderus Logamax plus GB192-25 against other Logamax plus boilers and compare.

issue 23.txt

we'll open a new issue for this. The original bug about random values from the boiler 7 months ago has been resolved :-)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

NFis picture NFis  Â·  6Comments

mtvw picture mtvw  Â·  13Comments

Chuckame picture Chuckame  Â·  11Comments

Oderik picture Oderik  Â·  26Comments

SpaceTeddy picture SpaceTeddy  Â·  18Comments