Koenkk / Koenkk/zigbee2mqtt

Schneider CCTFR6400 - button actions not exposed and setpoint not shown on display

Open
#32,915 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

problem
Dominant language
TypeScript
Stars
15.7k
Forks
2k
Avg merge
18h 55m
Merged PRs (30d)
35

Description

What happened?

I am using a Schneider Electric CCTFR6400 thermostat with Zigbee2MQTT.

The device is detected with native support. Temperature, humidity, keypad lockout and occupied_heating_setpoint are working.

However, the physical + / - / center button presses are not exposed as actions by Zigbee2MQTT.

With debug logging enabled, Zigbee2MQTT receives the button presses on cluster 65027, attribute 32:

Plus:
Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressPlusDown"}'

Minus:
Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressMinusDown"}'

Center:
Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressCenterDown"}'

I tested an external Zigbee2MQTT extension which listens to cluster 65027 / attribute 32 and converts these messages to:

UI,ButtonPressPlusDown -> button_press_plus_down
UI,ButtonPressMinusDown -> button_press_minus_down
UI,ButtonPressCenterDown -> button_press_center_down

This works correctly, which confirms that the CCTFR6400 sends the button events.

There is also a second issue with the target temperature.

Writing occupied_heating_setpoint through MQTT works and Zigbee2MQTT reports the new value correctly. I can use this value successfully for my heating control.

However, the new target temperature is not displayed on the physical CCTFR6400 screen.

Device firmware ID: bc271cf
Zigbee model: Thermostat
Manufacturer: Schneider Electric

What did you expect to happen?

I expect the physical +, - and center buttons to produce the actions already exposed/documented for the CCTFR6400:

button_press_plus_down
button_press_minus_down
button_press_center_down

I also expect a target temperature written through occupied_heating_setpoint to be shown on the physical thermostat display, so the user can see the currently selected target temperature.

How to reproduce it (minimal and precise)
  1. Pair a Schneider Electric CCTFR6400 with Zigbee2MQTT.

  2. Enable debug logging.

  3. Press the + button on the thermostat.

  4. Zigbee2MQTT receives:
    cluster '65027', data '{"32":"UI,ButtonPressPlusDown"}'

  5. Press the - button.

  6. Zigbee2MQTT receives:
    cluster '65027', data '{"32":"UI,ButtonPressMinusDown"}'

  7. The native CCTFR6400 integration does not expose these messages as action events.

For the display issue:

  1. Publish a new occupied_heating_setpoint to the CCTFR6400, for example 20.5 °C.

  2. Zigbee2MQTT reports occupied_heating_setpoint: 20.5 correctly.

  3. The physical thermostat display does not show the new target temperature.

Zigbee2MQTT version

2.13.0

Adapter firmware version

20260310

Adapter

SLZB-MR2U - CC2652P - ZStack3x0 - Ethernet

Setup

Zigbee2MQTT Home Assistant App on Home Assistant OS.
Machine: Dell OptiPlex 3090, Intel Core i5-10500T, x86-64.
Coordinator: SLZB-MR2U via Ethernet, CC2652P / ZStack3x0.

Device database.db entry

No response

Debug log

Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressPlusDown"}' from endpoint 1 with groupID 0

Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressMinusDown"}' from endpoint 1 with groupID 0

Received Zigbee message from 'Thermostat séjour', type 'attributeReport', cluster '65027', data '{"32":"UI,ButtonPressCenterDown"}' from endpoint 1 with groupID 0

Notes

The device is a Schneider Electric CCTFR6400, firmware ID bc271cf.

The thermostat was previously used with a Schneider Wiser gateway.

I have four identical CCTFR6400 thermostats, but currently only one has been migrated to Zigbee2MQTT for testing before migrating the other three.

Using a small external Zigbee2MQTT extension, I can successfully decode cluster 65027 attribute 32 and publish the + / - / center button actions.

The native device support otherwise remains active and temperature, humidity, keypad lockout and occupied_heating_setpoint continue to work.

Writing occupied_heating_setpoint changes the value reported by Zigbee2MQTT, but the new target temperature is not shown on the physical thermostat display.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the native Schneider Electric CCTFR6400 integration and the handling for cluster 65027, attribute 32, then reproduce the reported button messages with debug logging. Verify that the three button values become actions, and determine whether writing occupied_heating_setpoint can also update the physical display; done means both behaviors are supported or the display limitation is documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.