I’m currently facing issues with my Bosch TRV BTH-RA (RBSH-TRV1-ZB-EU) following a recent migration from ZHA to Zigbee2MQTT, which also included an OTA update to version 318927168.
App: 1.3 build 2 | Stack: 7.1 build 64 on named devices.
I suspect this may be a firmware issue. However, since my experience with Zigbee2MQTT is quite limited, community feedback would be greatly appreciated.
Also I’m having trouble to revert back to previous firmware which would help to track down the issue, so if there are any suggestions on this matter feel free to reach out to me.
Issue Description
The TRV occupied_heating_setpoint randomly does not return to its previous value after a window open/close cycle.
Expected Behavior
occupied_heating_setpoint should return to its previous value as soon as the window_detection switch toggles from “off” to “on”.
Actual Behavior
occupied_heating_setpoint occasionally remains at a value of 8.0.
Relevant z2m log entries (error case):
set occupied_heating_setpoint to 21.5 via HA
[2026-02-28 14:08:22] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/occupied_heating_setpoint' with data '21.5'
[2026-02-28 14:08:22] debug: z2m: Publishing 'set' 'occupied_heating_setpoint' to 'TRV BZ'
[2026-02-28 14:08:24] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":200,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":21.5,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
[2026-02-28 14:08:24] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedHeatingSetpoint":2150}' from endpoint 1 with groupID 0
[2026-02-28 14:08:24] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":200,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":21.5,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
trigger window open through ha automation
[2026-02-28 14:08:53] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/window_detection' with data 'ON'
[2026-02-28 14:08:53] debug: z2m: Publishing 'set' 'window_detection' to 'TRV BZ'
[2026-02-28 14:08:57] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":192,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":21.5,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
[2026-02-28 14:08:57] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"windowOpenMode":1}' from endpoint 1 with groupID 0
[2026-02-28 14:08:57] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":192,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":21.5,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
[2026-02-28 14:08:57] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedHeatingSetpoint":800}' from endpoint 1 with groupID 0
[2026-02-28 14:08:57] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":192,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
trigger window close through ha automation
[2026-02-28 14:09:12] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/window_detection' with data 'OFF'
[2026-02-28 14:09:12] debug: z2m: Publishing 'set' 'window_detection' to 'TRV BZ'
[2026-02-28 14:09:16] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":200,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
[2026-02-28 14:09:16] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"windowOpenMode":0}' from endpoint 1 with groupID 0
[2026-02-28 14:09:16] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":196,"local_temperature":20.5,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.51,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
Notice the missing ‘attributeReport’ for cluster ‘hvacThermostat’ containing the occupiedHeatingSetpoint value data in between
[2026-02-28 14:09:51] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/remote_temperature' with data '20.61'
[2026-02-28 14:09:51] debug: z2m: Publishing 'set' 'remote_temperature' to 'TRV BZ'
Relevant z2m log entries (error-free case):
set occupied_heating_setpoint to 21.0
[2026-02-28 14:40:04] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/occupied_heating_setpoint' with data '21.0'
[2026-02-28 14:40:04] debug: z2m: Publishing 'set' 'occupied_heating_setpoint' to 'TRV BZ'
[2026-02-28 14:40:08] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":192,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":21,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
[2026-02-28 14:40:08] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedHeatingSetpoint":2100}' from endpoint 1 with groupID 0
trigger window open through ha automation
[2026-02-28 14:40:18] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/window_detection' with data 'ON'
[2026-02-28 14:40:18] debug: z2m: Publishing 'set' 'window_detection' to 'TRV BZ'
[2026-02-28 14:40:19] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":204,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":21,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
[2026-02-28 14:40:19] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"windowOpenMode":1}' from endpoint 1 with groupID 0
[2026-02-28 14:40:19] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":208,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":21,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
[2026-02-28 14:40:19] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedHeatingSetpoint":800}' from endpoint 1 with groupID 0
[2026-02-28 14:40:19] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":204,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"ON"}'
trigger window close through ha automation
[2026-02-28 14:40:29] debug: z2m:mqtt: Received MQTT message on 'zigbee2mqtt/TRV BZ/set/window_detection' with data 'OFF'
[2026-02-28 14:40:29] debug: z2m: Publishing 'set' 'window_detection' to 'TRV BZ'
[2026-02-28 14:40:29] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":196,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
[2026-02-28 14:40:29] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"windowOpenMode":0}' from endpoint 1 with groupID 0
[2026-02-28 14:40:29] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":196,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":8,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiator thermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'
**** [2026-02-28 14:40:29] debug: z2m: Received Zigbee message from 'TRV BZ', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedHeatingSetpoint":2100}' from endpoint 1 with groupID 0 ****
[2026-02-28 14:40:29] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/TRV BZ', payload '{"automatic_valve_adapt":false,"battery":78,"battery_low":true,"boost_heating":"OFF","child_lock":"LOCK","display_brightness":70,"display_orientation":"standard_arrangement","display_switch_on_duration":10,"displayed_temperature":"set_temperature","error_state":"ok","linkquality":200,"local_temperature":20.3,"local_temperature_calibration":0,"occupied_heating_setpoint":21,"operating_mode":"manual","pi_heating_demand":0,"remote_temperature":20.4,"running_state":"idle","setpoint_change_source":"externally","system_mode":"heat","update":{"installed_version":318927168,"latest_release_notes":"New heating algorithm (like that used on the non-matter radiatorthermostat II since November 2024)","latest_source":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Bosch/TRV_GEN2_DUAL_0x13027140_PROD.fw","latest_version":318927168,"state":"idle"},"valve_adapt_process":null,"valve_adapt_status":"success","window_detection":"OFF"}'