I received a brand new board from NodoShop and struggled a lot before succeeding to control my Central Heating.
I believe this is a bug. I want to share it in the hope it will be fixed.
I also found a way to get around it, it could be useful for other users!

Steps to reproduce
- Be in standalone mode (remove Thermostat from header)
- Have an empty list of Alternative Data IDs
- Try to make the boiler heat your house by using CS/CH serial commands
(Note that CS command is honored only for 1min before going back to CS=0. This is written in the doc but it took me time to understand this. So, you need to regularly send CS=x messages and send one CH=1 message.)
Expected behavior
The boiler should heat the house
Actual behavior
Boiler is never heating.
Analysis
The gateway is sending contradictory Status (ID 0) messages (master status). Sometimes it says it enables the CH bit, sometimes it says it disables the CH bit.
The boiler never even activates Central Heating because before it can do that, the gateway has already sent again a CH=0 to the boiler.
09:01:56.666493 R80000100 Read-Data Status (MsgID=0): 00000001 00000000
09:01:56.861462 B40000100 Read-Ack Status (MsgID=0): 00000001 00000000
09:01:57.660599 R80190000 Read-Data Boiler water temperature (MsgID=25): 0.00
09:01:57.761334 B401932E6 Read-Ack Boiler water temperature (MsgID=25): 50.90
09:01:58.656872 R10015000 Write-Data Control setpoint (MsgID=1): 80.00
09:01:58.764957 BD0015000 Write-Ack Control setpoint (MsgID=1): 80.00
09:01:59.652308 R00000000 Read-Data Status (MsgID=0): 00000000 00000000
09:01:59.772792 BC0000000 Read-Ack Status (MsgID=0): 00000000 00000000
09:02:00.649589 R00110000 Read-Data Relative modulation level (MsgID=17): 0.00
09:02:00.774836 BC0110000 Read-Ack Relative modulation level (MsgID=17): 0.00
09:02:01.645980 R001B0000 Read-Data Outside temperature (MsgID=27): 0.00
09:02:01.779431 B601B0000 Data-Inv Outside temperature (MsgID=27): 0.00
09:02:02.644223 R801C0000 Read-Data Return water temperature (MsgID=28): 0.00
09:02:02.785102 B701C0000 Unk-DataId Return water temperature (MsgID=28): 0.00
09:02:03.812008 R900E6400 Write-Data Maximum relative modulation level (MsgID=14): 100.00
09:02:03.817862 B500E6400 Write-Ack Maximum relative modulation level (MsgID=14): 100.00
09:02:04.640376 R00000000 Read-Data Status (MsgID=0): 00000000 00000000
09:02:04.798870 BC0000000 Read-Ack Status (MsgID=0): 00000000 00000000
09:02:05.638310 R80000100 Read-Data Status (MsgID=0): 00000001 00000000
09:02:05.803047 B40000100 Read-Ack Status (MsgID=0): 00000001 00000000
09:02:06.636330 R80190000 Read-Data Boiler water temperature (MsgID=25): 0.00
09:02:06.809914 B401932CD Read-Ack Boiler water temperature (MsgID=25): 50.80
09:02:07.635943 R10015000 Write-Data Control setpoint (MsgID=1): 80.00
09:02:07.818106 BD0015000 Write-Ack Control setpoint (MsgID=1): 80.00
09:02:08.634461 R80380000 Read-Data DHW setpoint (MsgID=56): 0.00
09:02:08.823002 BC0383200 Read-Ack DHW setpoint (MsgID=56): 50.00
09:02:09.634351 R00390000 Read-Data Max CH water setpoint (MsgID=57): 0.00
09:02:09.733010 BC0395000 Read-Ack Max CH water setpoint (MsgID=57): 80.00
09:02:10.633089 R00000000 Read-Data Status (MsgID=0): 00000000 00000000
09:02:10.738061 BC0000000 Read-Ack Status (MsgID=0): 00000000 00000000
09:02:11.785176 R00120000 Read-Data CH water pressure (MsgID=18): 0.00
09:02:11.874188 B40120166 Read-Ack CH water pressure (MsgID=18): 1.40
It took time for me to understand what to do to make it work.
I noticed the messages sent in standalone mode are documented here:
https://otgw.tclcode.com/standalone.html#intro
They always occur in this order:
MsgID 0: Master and Slave Status flags
MsgID 25: Boiler flow water temperature
MsgID 1: Control Setpoint
UserDefined
MsgID 17: Relative Modulation Level
MsgID 27: Outside temperature
MsgID 28: Return water temperature
MsgID 14: Maximum relative modulation level setting
UserDefined
MsgID 0: Master and Slave Status flags
MsgID 25: Boiler flow water temperature
MsgID 1: Control Setpoint
MsgID 56: DHW Setpoint
MsgID 57: Max CH water Setpoint
UserDefined
MsgID 18: Water pressure in CH circuit
When comparing my messages log with this list, we quickly see that correct Status messages (CH=1) are the Status messages in the list, and wrong ones with the bug (CH=0) are those replacing the UserDefined slots.
UserDefined slots are filled by the alternative ID list. But if the list is empty, it send a Status (ID0) message.
The bug is: when filling up a UserDefined slot, if the alternative ID list is empty, the Status sent is an all-zero status, not reflecting the real status the gateway wants to send.
Work Around
The way to get around that is to add a minimum of 1 alternative ID, to make sure that UserDefined slots will never attempt to send the buggy Status message.