HS2FD-EF1-3.0 wall_mounted_table set still fails with INVALID_DATA_TYPE (re-report of #27975)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 15.7k
- Forks
- 2k
- Avg merge
- 18h 55m
- Merged PRs (30d)
- 35
Description
What happened?
This is a re-report of #27975, which appears to have been auto-closed due to inactivity (stale bot) rather than being fixed — the exact same bug is still fully reproducible on the current stable release.
Setting wall_mounted_table fails with INVALID_DATA_TYPE. Tried multiple values within the documented valid range:
{"wall_mounted_table": "-2000,2000,3000,1550"}
{"wall_mounted_table": "-2000,2000,3000,1500"}
{"wall_mounted_table": "-1900,1900,2900,1550"}
All fail the same way. installation_method was confirmed set to WallMounted before attempting the write.
Since the field's own documented range requires -2000 ≤ X1 ≤ 0, X1 is always negative or zero for any valid wall-mounted configuration. If negative-value encoding is what triggers INVALID_DATA_TYPE, wall_mounted_table cannot currently be set to any valid value at all for wall-mounted installs — the feature is effectively non-functional, not just buggy for edge cases.
Note: in the original report the cluster was logged as RadarSensorHeiman; on my setup (converters 26.76.0) it's logged as heimanClusterRadar, so the cluster/converter appears to have been renamed at some point. The failure mode and byte structure are otherwise identical, so this looks like the same underlying bug persisting through the rename.
Debug log:
[2026-07-17 21:50:39] z2m: Publish 'set' 'wall_mounted_table' to 'Heiman Fall Detector 4841' failed: 'Error: ZCL command 0x7cc6b6fffeea4841/1 heimanClusterRadar.write({"wallMountedTable":{"type":"Buffer","data":[48,248,208,7,184,11,220,5]}}, {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"reservedBits":0,"manufacturerCode":4619,"writeUndiv":false}) failed (Status 'INVALID_DATA_TYPE')'
What did you expect to happen?
Setting wall_mounted_table to a value within the documented range (e.g. -2000,2000,3000,1550) should succeed without a data type error, and the read-back value should match what was set.
How to reproduce it (minimal and precise)
- Pair a Heiman HS2FD-EF1-3.0 (Fall Detection Sensor) via Zigbee2MQTT.
- In the Z2M frontend, set installation_method to WallMounted.
- Attempt to set wall_mounted_table to any value within the documented range, e.g.:
{"wall_mounted_table": "-2000,2000,3000,1550"} - Observe the set operation fails with a ZCL INVALID_DATA_TYPE error.
Zigbee2MQTT version
2.12.1
Adapter firmware version
7.4.3 [GA]
Adapter
EmberZNet-based coordinator (Silicon Labs EFR32, stack revision 7.4.3 [GA]) - ZB-GW03 (TCP Bridge)
Setup
Plain Docker container on x86-64 Debian.
uname -a: #1 SMP PREEMPT_DYNAMIC Debian 6.12.88-1 (2026-05-15) - 6.12.88+deb13-amd64 - x64
CPU: Intel(R) N150 (x4), RAM: 15774 MB
Device database.db entry
{"id":4,"type":"Router","ieeeAddr":"0x7cc6b6fffeea4841","nwkAddr":60816,"manufId":4619,"manufName":"HEIMAN","powerSource":"Mains (single phase)","modelId":"HS2FD-EF1-3.0","epList":[1,242],"endpoints":{"1":{"profId":260,"epId":1,"devId":263,"inClusterList":[0,3,1030,2821,64651],"outClusterList":[0,3,25],"clusters":{"61441":{"attributes":{"61441":1}},"61442":{"attributes":{"61442":2}},"61446":{"attributes":{"61446":0}},"61447":{"attributes":{"61447":0}},"genBasic":{"attributes":{"modelId":"HS2FD-EF1-3.0","manufacturerName":"HEIMAN","powerSource":1,"zclVersion":3,"appVersion":17,"stackVersion":2,"hwVersion":16,"dateCode":"20240114"}},"heimanClusterRadar":{"attributes":{"cellMountedTable":"0\ufffd\ufffd\u00070\ufffd\ufffd\u0007\ufffd\n","wallMountedTable":"0\ufffd\ufffd\u0007\ufffd\u000b\ufffd\u0005","subRegionIsolationTable":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","sensitivity":1,"installationMethod":0,"enableIndicator":1,"enableSubRegionIsolation":0}},"msOccupancySensing":{"attributes":{"occupancy":3}}},"binds":[{"cluster":1030,"type":"endpoint","deviceIeeeAddress":"0x040d84fffe58431b","endpointID":1},{"cluster":64651,"type":"endpoint","deviceIeeeAddress":"0x040d84fffe58431b","endpointID":1}],"configuredReportings":[{"cluster":1030,"attrId":0,"minRepIntval":0,"maxRepIntval":3600,"repChange":0}],"meta":{}},"242":{"profId":41440,"epId":242,"devId":102,"inClusterList":[33],"outClusterList":[33],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":17,"stackVersion":2,"hwVersion":16,"dateCode":"20240114","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{"configured":"0.0.0"},"lastSeen":1784293245881}
Debug log
No response
Notes
This bug makes wall_mounted_table effectively unusable for any wall-mounted install, since the field's own valid range (-2000 ≤ X1 ≤ 0) requires X1 to always be negative or zero.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Locate the HS2FD-EF1-3.0 converter and the heimanClusterRadar wallMountedTable write path; compare the documented range and logged Buffer/ZCL command with the device's recorded attributes. Reproduce the set operation using the listed wall-mounted values, then verify that a valid value writes without INVALID_DATA_TYPE and reads back correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100