Gateway Firmware Changelog

Version 6.5 (PIC16F1847) / 5.8 (PIC16F88), released 12 March 2023

  • User control setpoints below 8 degrees are maintained without the need to be repeated once per minute.
  • Don't store faulty temperature sensor readings into the PS=1 data buffer.
  • OT version numbers reported by the boiler that are higher than 3.0 must not be changed to 3.0.
  • Fix: After reconnecting the thermostat, the OTGW may end up in a state where it replaces all messages with alternatives.
  • Increase resilience against boilers that start sending a second protocol during the second half of the stop bit.
PIC16F1847-only changes
  • Add a BS command to modify the room setpoint being sent to the boiler.
  • Perform CRC checking on data from an external temperature sensor.
  • A/D conversions and error reporting were triggered much too frequently.
  • Error 03 could happen in case of simultaneous activity on both interfaces.

Version 6.4 (PIC16F1847) / 5.7 (PIC16F88), released 28 December 2022

  • Derive the comfort LED from MsgID 0 Read-Data instead of Read-Ack.
  • Fix: Garbage after confirmation of LA, LB, LC, LD, LE, LF commands.
  • Fix the SR command for Write-Data messages.

Version 6.3 (PIC16F1847), released 19 November 2022

  • Add SM command for forcing summer mode
  • Add BW command for forcing DHW blocking
  • Add GPIO function to control DHW blocking
  • Use the received data value when turning MsgID16 Unknown DataID into Write Ack.
  • Abort DHW push when any other HW command is performed.
  • When the DHW push bit is cleared in the ID99 Write Ack, interpret it as a sign that the boiler doesn't support DHW push.
  • Changing gateway mode/monitor mode was not correctly stored to EEPROM.

Version 5.6 (PIC16F88), released 19 November 2022

  • Use the received data value when turning MsgID16 Unknown DataID into Write Ack.
  • Fix: Individual expiry of SC, CS, and C2 commands is not working correctly.

Version 6.2 (PIC16F1847) / 5.5 (PIC16F88), released 14 October 2022

New features
  • The C2 command now expires, just like the CS command already does.
  • The commands that expire (SC, CS, and now also C2) are decoupled, so a control setpoint doesn't stay in effect if the clock data is updated every minute.
  • User configured max central heating setpoint and hot water setpoint are preserved across restarts of the OTGW.
  • Option to force a standard thermostat: FT=S.
  • Init messages that have been marked as unknown are skipped. This allows using the UI=49 command as a work-around for buggy boilers that incorrectly report the current max CH water setpoint as the upper bound (like Viessman Vitodens).
  • When the OTGW has no valid time and day of week information, the ReadAck or WriteAck response from the slave is passed on to the thermostat.
  • MsgIDs 48 and 49 are now always requested on startup, because some boilers provide incorrect information in MsgID 6 about their support.
Bug fixes
  • Hanging serial receiver due to ESP8266 debug messages on power up.
  • When there are no alternative messages in stand-alone mode, the status message sent instead does not have the correct data bits.
  • Only report the Smart Power level when it actually changes.
  • When the OTGW changes a ReadData request from the thermostat for MsgID 56 or 57 into a WriteData request to the boiler, the data in the WriteAck response from the boiler should be returned to the thermostat in the ReadAck response.
  • While obtaining transparent slave parameters (TSP) via the PM command, the OTGW gets confused when the thermostat also reads a TSP.
PIC16F1847-only features
  • Remote request command RR=0..12 for things such as starting remote filling, if the boiler supports it.
  • Cooling commands: CE and CL.
  • Add support for Remote Override Operating Modes: MW, MH, and M2.
  • DHW push (heat the water storage tank once): HW=P.
  • TP command for individual access to transparent slave parameters (TSPs) and fault history buffer entries (FHBs). This feature also allows TSPs to be written.

Version 6.1 (PIC16F1847) / 5.4 (PIC16F88), released 31 May 2022

  • Fix restarts when no alternatives are available in stand-alone mode.
  • Don't go into fail safe mode after a WDT reset if no thermostat is connected.
  • Add Watch dog time-out (W) as a reset reason to the PR=Q command output.
  • PIC16F1847: Fix detection of thermostat connect/disconnect.
  • PIC16F1847: Fix random SE responses from AA, DA, MM, PM, and VS commands.
  • PIC16F1847: Extend debug pointer to addresses above 0xFF.

Version 6.0, released 8 March 2022

  • First firmware for PIC16F1847. The functionality is basically the same as version 5.3 for PIC16F88, except for some minor changes due to differences in the peripheral implementations in the hardware of the two PICs.

Version 5.3, released 24 February 2022

  • Reduce the subroutine nesting level, which could lead to spurious WDT resets in some unfavorable cases.

Version 5.2, released 28 December 2021

  • Handle Smart Power level changes while in monitor mode.
  • Add support for boilers that generate unsolicited Medium/High power.
  • Limit the validity of a CS command. A remotely set control setpoint expires after just over a minute. This is a safety feature to prevent runaway heating when the controlling program loses its connection, or crashes.
  • Change the default voltage reference to 1.458V (4), which translates to a line voltage that lies closer to the midway point between the high and low voltage levels defined by the Opentherm specification.
  • Change the voltage to detect a disconnected thermostat to 20.05V. The old value of 19.11V might give false positives due to component tolerances.
  • Pass on the response for MsgID 9 and MsgID 100 from the boiler (or a downstream gateway) if it is a Read-Ack or Write-Ack and the OTGW doesn't have any active override itself.

Version 5.1, released 11 February 2021

  • Bug fix: Stand-alone mode: OTGW sends Read-Data for MsgID 1 (Control Setpoint). Specs say it must be Write-Data.
  • Bug fix: Empty Read-Ack on MsgID 20 (Day & Time) resets the thermostat clock to midnight.
  • Bug fix: The outside temperature, provided to the OTGW through an OT command or by an external temperature sensor, overwrites the DHW temperature value in the PS=1 output.
  • Bug fix: Monitor mode: The 'C', 'F', 'H', 'M', and 'W' LEDs are not working.
  • Bug fix: Monitor mode: Summary data is not updated.
  • Bug fix: Incorrect response format for the C2 and H2 commands.
  • Bug fix: Command OT=9.999 is not accepted and gives wrong error response: "OT: MPC".

Version 5.0, released 18 January 2021

Potential incompatibility: The PS=1 output has changed. If using this function, the program processing the information will have to be adapted accordingly.
  • Add support for a 2nd central heating circuit using the new C2, and H2 commands.
  • New TS command to select if a connected temperature sensor is used for the outside temperature (O), or the return water temperature (R). The current setting can be verified with the PR=D command.
  • Support additional commands, like SH, SW and VS, in standalone mode.
  • Report additional values in a PS=1 report: 7 (Cooling control), 8 (Control setpoint 2), 19 (DHW flow rate), 23 (CH2 room setpoint), 31 (CH2 flow temperature), 33 (Boiler exhaust temperature), 70 (V/H master status), 71 (V/H control setpoint), 77 (Relative ventilation).
  • Use a WriteData request when sending the following IDs as alternative messages: 1 (TSet), 8 (TSetCH2), 14 (MaxRelMod), and 71 (VSet).
  • Repeat alternative messages that didn't receive a valid response.

Version 4.3, released 7 January 2021

  • Store Monitor Mode setting in EEPROM, so it survives a restart of the OTGW
  • Store DHW setting in EEPROM, so it survives a restart of the OTGW
  • Fix freeze in standalone mode when boiler generates a stray signal
  • Add a command to obtain the current state of the GPIO input pins
  • Prevent unintended heat request in case of thermostat communication problems
  • Fix spontaneous reset in monitor mode
  • Add command to obtain the reason of the last reset
  • Fix bug: Missing response from the boiler may result in wrong data being returned by the gateway on the next request.

Version 4.2, released 30 December 2014

  • Fix a bug in the presence detection of an opentherm thermostat and the state detection of an on/off thermostat.
  • When the gateway sends a message to the boiler for its own administration, a successful response should not undo any manual blacklisting of the message ID.

Version 4.1, released 29 November 2014

  • Add the FT command for those cases where the gateway is unable to auto-detect a Celcia 20 thermostat.
  • Add support for manually configured responses for MsgID 48 and 49.

Version 4.0.1, released 15 June 2014

  • Correct a rounding error in the PS report resulting in invalid floating point values.

Version 4.0, released 9 June 2014

  • Smart power support.
  • The gateway can be used with an on/off thermostat, or even without a thermostat.
  • Many workarounds for quirks of the Remeha iSense (RF) thermostat.
  • Several programmable GPIO functions.
  • New serial commands: CH, CR, CS, GA, GB, KI, MM, OH, PM, SB, SR, UI, and VS.
  • Greately relaxed the checks performed on the received opentherm signal.
  • Improved serial communications.
  • Increased immunity against weird input on the serial interface.
  • Blacklisting improvements.
  • Improved command confirmations.
  • Report the contents of messages with parity or stop-bit errors.
  • LEDs flash on powerup/reset of the gateway.

Version 3.4, released 13 January 2013

  • Setting the setpoint on a Celcia 20 thermostat was broken by firmware version 3.3.
  • The gateway should give a thermostat three chances when trying to set a remote setpoint. It only did that when initially setting the setpoint. But when changing it to another value at some later moment the gateway immediately gave up if the first try did not work.

Version 3.3, released 11 November 2012

  • Under some unfavorable circumstances the firmware program flow could exceed its stack space. This resulted in the loss of a return address which prevented the code from returning to the main program loop and subsequently the watchdog timer would kick in and put the device in its fail-safe state. This has been fixed by eliminating some subroutine levels.

Version 3.2, released 15 July 2012

  • Some boilers clear out the data bytes when returning an Unknown-DataID response. This could cause strange behavior like the thermostat clock being reset to midnight on powerup of the gateway. If the list of alternative messages was empty, the clock reset would even happen every minute.

Version 3.1, released 15 June 2012

  • Switch on the Maintenance LED when the gateway enters fail-safe mode, i.e. after a watchdog timeout has occurred.
  • Deleting alternative Data-IDs was broken since version 3.0
  • Watchdog timeouts were being obscured by the self-programming code (requires self-programming code upgrade).
  • Random serial data within 1 second after a reset would put the device into self-programming mode. Now an <STX> character is needed to do that (requires self-programming code upgrade).

Version 3.0.1, released 2 June 2012

  • The version 3.0 firmware published on the web site was built with the adjustments needed for an Intergas boiler. For all other boilers it is better not to have these modifications.

Version 3.0, released 20 May 2012

  • Switched to PIC16F88 (requires circuit board changes)
  • Added self-programming option for in-circuit firmware upgrade
  • Invalidate the received time information after about one minute, so the thermostat clock isn't continuously reset to the same time.

Version 2.1, released 05 Feb 2012

  • Fixed bug in resetting boiler counters.
  • The print summary command produced garbage when the outside temperature went below zero.

Version 2.0, released 14 May 2011

  • Due to the addition of several new features, a PIC16F628(A) is now required. The code no longer fits in a PIC16F627(A).
  • Added an option to allow non-significant transitions to happen outside the range of -10%/+15%. This turned out to be necessary for (some) Remeha Celcia20 thermostats.
  • Added an option to trigger some thermostats to send a remote room setpoint override request. This is necessary to control the setpoint on certain thermostats, like the Remeha Celcia20.
  • Introduced several new functions that can be freely assigned to the optional LEDs that may be attached to four PIC output ports.
  • Added the option to switch between gateway and monitor mode via a serial command. This can be very useful for debugging a newly built gateway.
  • Accept a deviation of +/-0.125 degrees in the setpoint reported back by the thermostat after sending a remote room setpoint override response. This turned out to be necessary for Remeha iSense thermostats.
  • Added a new serial command to dump some useful information about the gateway.
  • Added a check for parity errors in the received messages.
  • Floating point values may now be specified with several decimal digits (although only the first 2 will actually be used).
  • The gateway can now report the most interesting parameters on demand, instead of reporting individual opentherm messages.
  • The gateway did not forward the outside temperature to the thermostat if it was reported by the boiler instead of via the serial interface.
  • Timing checks were too strict. The code dit not accept the full range of -10%/+15% deviation from the perfect transition time.
  • Negative temperatures that were specified without a fractional part ended up as positive.

Version 1.3, released 26 Dec 2009

  • Fixed a problem with specifying negative outside temperatures.

Version 1.2, released 22 Nov 2009

  • First published version