Description
Unless I am doing something substantially wrong, it appears that for a master/slave message ebusd (master) always expects an answer from the slave. This creates a problem while writing data to a BM-2 controller by Wolf, because for a write command (0x5023) BM-2 does not responds with any acknowledgement other than the low level bus ack.
Actual behavior
Here below a snapshot of the bus traffic and log:
-------- From raw log
2026-02-20 12:19:32.260 >318550220300b52758<0002050076>00
2026-02-20 12:19:39.454 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:39.804 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:40.242 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:40.995 >318550220300b52758<000200002c>00
2026-02-20 12:19:41.231 >318550220300b52758<000200002c>00
--------- From stdout
2026-02-20 12:19:32.260 [update notice] sent read bm SetValCorrection QQ=31: 0.5
2026-02-20 12:19:39.414 [bus error] send to 85: ERR: read timeout, retry
2026-02-20 12:19:39.804 [bus error] send to 85: ERR: read timeout, retry
2026-02-20 12:19:40.243 [bus error] send to 85: ERR: read timeout
2026-02-20 12:19:40.243 [bus error] send message part 0: ERR: read timeout
2026-02-20 12:19:40.243 [main error] write bm SetValCorrection: ERR: read timeout
2026-02-20 12:19:40.995 [update notice] sent read bm SetValCorrection QQ=31: 0.0
2026-02-20 12:19:41.231 [update notice] sent read bm SetValCorrection QQ=31: 0.0
For comparison, here the messages to implement the same change (0.5 to 0.0)
- from Wolfnet to BM-2 (through Wolf web app)
2026-02-19 22:32:27.644 <ff 85 5023 09 cc b527 0000 5d01 0000 e3 00
- from ebusd to BM-2 (through TCP socket)
2026-02-20 12:19:39.454 >31 85 5023 09 cc b527 0000 5d01 0000 f6<00
The messages are identical and the command works as expected in both cases, confirmed by the read back of the value. However, an ERR is raised when ebusd executed the write.
Expected behavior
While an option is to ignore the 'ERR: read timeout', a clean solution would be to implement a 'write w/o response' in the message description, to support this type of exchanges.
ebusd version
current source from git
ebusd arguments
--device=ens:192.168.31.113:9999 --configpath=/xxx/xxx/Projects/wolf_ebus/ebusd_conf/wolf --lograwdata --lograwdatafile=/xxx/xxx/ebuslograw.txt
Operating system
Debian 13 (Trixie) / Ubuntu 24-25 / Raspberry Pi OS 13
CPU architecture
x64
Dockerized
None
Hardware interface
Adapter Shield v5/C6/Stick via WiFi
Related integration
No response
Logs
See description above
Description
Unless I am doing something substantially wrong, it appears that for a master/slave message ebusd (master) always expects an answer from the slave. This creates a problem while writing data to a BM-2 controller by Wolf, because for a write command (0x5023) BM-2 does not responds with any acknowledgement other than the low level bus ack.
Actual behavior
Here below a snapshot of the bus traffic and log:
-------- From raw log
2026-02-20 12:19:32.260 >318550220300b52758<0002050076>00
2026-02-20 12:19:39.454 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:39.804 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:40.242 >3185502309ccb52700005d010000f6<00
2026-02-20 12:19:40.995 >318550220300b52758<000200002c>00
2026-02-20 12:19:41.231 >318550220300b52758<000200002c>00
--------- From stdout
2026-02-20 12:19:32.260 [update notice] sent read bm SetValCorrection QQ=31: 0.5
2026-02-20 12:19:39.414 [bus error] send to 85: ERR: read timeout, retry
2026-02-20 12:19:39.804 [bus error] send to 85: ERR: read timeout, retry
2026-02-20 12:19:40.243 [bus error] send to 85: ERR: read timeout
2026-02-20 12:19:40.243 [bus error] send message part 0: ERR: read timeout
2026-02-20 12:19:40.243 [main error] write bm SetValCorrection: ERR: read timeout
2026-02-20 12:19:40.995 [update notice] sent read bm SetValCorrection QQ=31: 0.0
2026-02-20 12:19:41.231 [update notice] sent read bm SetValCorrection QQ=31: 0.0
For comparison, here the messages to implement the same change (0.5 to 0.0)
2026-02-19 22:32:27.644 <ff 85 5023 09 cc b527 0000 5d01 0000 e3 00
2026-02-20 12:19:39.454 >31 85 5023 09 cc b527 0000 5d01 0000 f6<00
The messages are identical and the command works as expected in both cases, confirmed by the read back of the value. However, an ERR is raised when ebusd executed the write.
Expected behavior
While an option is to ignore the 'ERR: read timeout', a clean solution would be to implement a 'write w/o response' in the message description, to support this type of exchanges.
ebusd version
current source from git
ebusd arguments
--device=ens:192.168.31.113:9999 --configpath=/xxx/xxx/Projects/wolf_ebus/ebusd_conf/wolf --lograwdata --lograwdatafile=/xxx/xxx/ebuslograw.txt
Operating system
Debian 13 (Trixie) / Ubuntu 24-25 / Raspberry Pi OS 13
CPU architecture
x64
Dockerized
None
Hardware interface
Adapter Shield v5/C6/Stick via WiFi
Related integration
No response
Logs
See description above