Koenkk / Koenkk/zigbee2mqtt

Namron 4566702 Edge Thermostat: energy attribute never reports spontaneously, only updates via configure()'s one-time read

Open
#32,986 0 comments 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?

On the Namron 4566702 Edge Thermostat (also affects 4566703/4512783/4512784), the energy attribute (seMetering.currentSummDelivered) never updates on its own. power/current (from haElectricalMeasurement) report live continuously, but energy only changes when Zigbee2MQTT explicitly reads it — currently only happening once, inside configure().

I added a configureReporting call for seMetering.currentSummDelivered via an external converter override (mirroring the existing call for haElectricalMeasurement's rmsCurrent/activePower), expecting it to enable periodic reporting the same way it does for power/current. It didn't: the device accepts the configureReporting command without error, but never sends an unsolicited report for this attribute, with or without that extra config applied. Removed the override afterward since it made no measurable difference, behavior is identical on the stock converter.

What did you expect to happen?

energy to periodically report on its own like power/current do, either via the existing reporting config or after adding the extra configureReporting call for the metering cluster.

How to reproduce it (minimal and precise)
  1. Pair a Namron 4566702 (or 4512783/4512784/4566703) thermostat.
  2. Watch energy in the frontend or MQTT payload.
  3. It updates once right after configure/interview, then never again — even during active heating with verified real power draw (800+ W sustained).
  4. Forcing a device/configure always returns the current, accurate accumulated value — confirmed a heating cycle producing +1.8 kWh of real consumption was correctly reflected the moment configure() re-ran, and 24 hours of automated 30-minute polling tracked smoothly against real usage. The device's internal counter is fine; it just never pushes on its own.
Zigbee2MQTT version

2.13.0-1

Adapter firmware version

20260402

Adapter

SLZB-MRW10

Setup

Zigbee2MQTT add-on on Home Assistant OS (running as a VM, x86_64)

Device database.db entry

{ "friendly_name": "Namron Edge Thermostat Bathroom", "ieee_address": "0x286847fffe118198", "model_id": "4512783", "manufacturer": "Namron AS", "software_build_id": "1.12", "type": "Router", "power_source": "Mains (single phase)", "network_address": 46614, "supported": true, "endpoints": { "1": { "clusters": { "input": ["genBasic","genIdentify","genGroups","genScenes","genOnOff","hvacThermostat","hvacUserInterfaceCfg","msRelativeHumidity","seMetering","haElectricalMeasurement","touchlink","57346"], "output": ["genIdentify","genOta","msOccupancySensing"] }, "bindings": [ {"cluster":"genOnOff","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"msRelativeHumidity","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"hvacThermostat","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"genBasic","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"genIdentify","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"seMetering","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"haElectricalMeasurement","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"genAlarms","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"msOccupancySensing","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"genTime","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"hvacUserInterfaceCfg","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}}, {"cluster":"genOta","target":{"endpoint":1,"ieee_address":"0x00124b0024c23a5c","type":"endpoint"}} ], "configured_reportings": [ {"attribute":"runningMode","cluster":"hvacThermostat","maximum_repm_report_interval":60,"reportable_change":0}, {"attribute":"onOff","cluster":"genOnOff","maximum_report_interval":65000,"minimum_report_interval":0,"reportable_change":1}, {"attribute":"keypadLockout","cluster":"hvacUserInterfaceCfg","max,"minimum_report_interval":10,"reportable_change":null}, {"attribute":"localTemp","cluster":"hvacThermostat","maximum_report_interval":300,"minimum_report_interval":10,"reportable_change":10}, {"attribute":"occupiedHeatingSetpoint","cluster":"hvacThermostat",300,"minimum_report_interval":10,"reportable_change":50}, {"attribute":"rmsCurrent","cluster":"haElectricalMeasurement","maximum_report_interval":300,"minimum_report_interval":10,"reportable_change":1}, {"attribute":"activePower","cluster":"haElectricalMeasurement","ma,"minimum_report_interval":10,"reportable_change":100}, {"attribute":"measuredValue","cluster":"msRelativeHumidity","maximum_report_interval":3600,"minimum_report_interval":10,"reportable_change":100} ] } } }

This is Zigbee2MQTT's own device object (from bridge/devices), not the literal database.db line.

Debug log

No response

Notes

Power/current reporting on haElectricalMeasurement works perfectly via its existing configureReporting call — this appears specific to the seMetering cluster on this device. Current workaround: a Home Assistant automation publishing bridge/request/device/configure every 30 minutes to force a fresh read, which reliably keeps the value current (verified over 24h).

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 at the Namron device converter's configure() path and compare the existing haElectricalMeasurement reporting setup with seMetering.currentSummDelivered. Verify whether the device emits unsolicited reports after configuration; done should either provide working periodic energy updates or document that the device requires polling.

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
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.