Stand-alone operation


Several people have inquired about using the gateway without a thermostat. I personally prefer to use a thermostat for a couple of reasons:
  • The thermostat manufacturers have spent years of research to work out the heating characteristics for the most efficient and comfortable way to heat a house.
  • The thermostat provides a control interface that people are familiar with, so other members of the household are still able to adjust the setpoint.
  • It provides convenient housing for the room temperature sensor, which is needed unless you use a heating curve based solely on the outside temperature.
But due to popular demand, the possibility to use the gateway without a thermostat has been added in the 4.0 series of the firmware.

Gateway operation

When nothing is connected to the thermostat terminals of the gateway (X1), the gateway will send a fixed series of opentherm messages to the boiler. The sequence is:
  1. MsgID 0: Master and Slave Status flags
  2. MsgID 25: Boiler flow water temperature
  3. MsgID 1: Control Setpoint
  4. UserDefined
  5. MsgID 17: Relative Modulation Level
  6. MsgID 27: Outside temperature
  7. MsgID 28: Return water temperature
  8. MsgID 14: Maximum relative modulation level setting
  9. UserDefined
  10. MsgID 0: Master and Slave Status flags
  11. MsgID 25: Boiler flow water temperature
  12. MsgID 1: Control Setpoint
  13. MsgID 56: DHW Setpoint
  14. MsgID 57: Max CH water Setpoint
  15. UserDefined
  16. MsgID 18: Water pressure in CH circuit
The 'UserDefined' slots are filled from the list of alternatives. If the gateway learns (or was told via the UI command) that some of the other messages are not supported by the boiler, it will fill those slots with messages from the list of alternatives as well. If the list of alternatives is empty, it sends MsgID 0.

The data bytes the gateway puts in the messages by default will not normally cause the boiler to start heating. To actually heat the house with this configuration, the gateway has to be instructed what to send to the boiler via serial commands.

External control

An external program that is used to control the central heating system via the gateway can use the following serial commands:
This command controls the control setpoint the gateway will send to the boiler in MsgID 1. The control setpoint represents the desired temperature of the water as supplied from the boiler. If a temperature other than 0 is specified in the CS command, the gateway will also set the CHenable bit (bit 0) in the master status byte of MsgID 0. This is necessary to allow the boiler to actually heat the water.

External control of the control setpoint is switched off by specifying a temperature of 0 in the CS command. The gateway then falls back to sending its internal default control setpoint of 10 degrees. It also clears the CHenable bit in the master status byte of MsgID 0.

The maximum relative modulation level setting of the boiler can be used to throttle the heating capacity of the boiler. The MM command is available to specify the value the gateway sends to the boiler in MsgID 14. If no level has been specified via the MM command, the gateway falls back to its internal default of 100%.

AA=<number> & DA=<number>
The AA and DA commands can be used to configure which additional pieces of information will be requested from the boiler. For example, the control algorithm may want to obtain the boundaries for the control setpoint by adding MsgID 49 to the list of messages the gateway will send in the 'UserDefined' slots.

On/off thermostat

As indicated, the gateway by default will instruct the boiler not to do any heating when the thermostat terminals are left open. However, when the terminals are tied together, the gateway sends its internal maximum central heating setpoint value to the boiler and sets the CHenable bit in MsgID 0. This allows the use of a simple on/off thermostat in combination with the gateway and an opentherm boiler.

The internal maximum central heating setpoint value starts out at 90 degrees. If the boiler has specified different boundaries via MsgID 49, the provided upper boundary will be used. The MM serial command can be used to prevent the boiler from always burning at maximum capacity when the thermostat indicates a heat demand.


Making a program to control the central heating may appear simple at first glance. But simply telling the boiler to start heating when the room temperature drops below the desired temperature and shutting it off when it reaches the setpoint again won't work very satisfoctory. That method will result in large temperature swings, because a central heating system inherently has a big response delay.

So the controlling program has to account for the time and amount the temperature will continue to rise or fall after the boiler has been switched off or on. To make things worse, those figures are influenced by external factors like outside temperature, open or closed doors and windows, curtains being drawn, other heat sources, hot water use, etc.

In addition to keeping the temperature as constant as possible there's also the matter of doing it in the most energy efficient way. Modern boilers are generally most efficient at low temperatures. So, when maintaining a desired room temperature it may be wasteful to use relative short burns with a high control setpoint rather than longer burns with a lower control setpoint.

Finally there's the matter of reliability. If the controlling program crashes, or the system running the program decides to reboot and install patches after the control setpoint has been set to 80 degrees, the house may get quite warm.