Skip to content

Normalize Zigbee meter units and counter evidence

ALYT normalizes Zigbee meter readings by keeping the device’s own evidence, unit scale, and continuity separate from the displayed value. It accepts only current authenticated observation ownership, rejects stale or conflicting evidence, and marks a reading unknown when the device changes counter continuity, scale, mode, or source in a way that cannot be verified. Yesterday consumption, Average power (10 min), phase watts, gas and water volume, flow, thermal kWh, and electrical counters are all shown only when the device reports the right evidence for that family.

ALYT treats native Zigbee packets as transient evidence, not as durable state. A packet is only useful when it is current, authenticated, and tied to the right device and measurement source. Older, duplicate, replayed, untrusted, or foreign evidence does not become a fresh reading. If the device’s scale or source epoch changes, ALYT does not infer continuity across the change.

For counters, ALYT keeps the new raw observation as the new continuity baseline and shows the reading as unknown when continuity breaks. A later valid nondecreasing report under the same scale and source can establish the new reading. ALYT does not infer a hidden total, and it does not treat a reset or wrap as observed fact.

Yesterday consumption is a device-reported period kWh reading. ALYT does not calculate it from a lifetime total.

When a model declares them, Today, This month, Produced today, and Produced this month are also separate device-reported period counters. ALYT does not derive them from a lifetime counter.

A period counter can restart at the device’s own day or month boundary. That is acceptable when the device reports it directly. A decreasing lifetime counter is different: it loses continuity and becomes unknown.

Average power (10 min) is the device-reported ten-minute average. It is distinct from instantaneous watts, even when the unit label is also W.

Phase A watts, Phase B watts, and Phase C watts keep their own labels. ALYT does not invent a total by adding phases.

Thermal, electrical, gas, and water readings

Section titled “Thermal, electrical, gas, and water readings”

Thermal kWh is a separate heat-meter reading. It is not electrical consumption and is not added to electrical lifetime or produced-energy counters.

Gas consumed and Water consumed are shown in cubic metres (m³). Flow is shown in cubic metres per hour (m³/h). ALYT keeps volume separate from electrical and thermal kWh.

Signed power keeps its direction. Only measured current is shown as current measurement; if a model estimates amps from watts, that does not become measured current.

Some meter readings depend on relay state. For those devices, ALYT uses a fresh report from the same physical device. An old saved switch state cannot establish the measurement. If relay evidence is missing, the dependent reading is unknown. An independently reported signed-power reading keeps its direction and does not depend on relay inference.

Device support controls which readouts appear. A catalogue entry alone does not grant controls or readings for unsupported measurements.

Device-specific rules developers should expect

Section titled “Device-specific rules developers should expect”

BASIC-ZB1GSP keeps signed watts, but its current reading depends on canonical relay evidence. The paired relay-guarded device gates both watts and current, while its seMetering total stays separate from fc11 period counters. Firmware-conditional export fields appear only when the device actually declares them.

ELKO reports mean_power as a ten-minute average. ALYT presents it as an average value, not as instantaneous power. Its load or relay calculation does not turn that reading into measured instantaneous watts.

ZHEMI101 binds energy, BTU, or gas/water volume to fresh source-mode, unit, and format evidence. The manufacturer interface attribute is separate from the standard divisor even when both use the same numeric attribute ID. ALYT accepts the reading only when the mode and unit evidence match the reported value.

The RAW-byte meter keeps exact voltage, current, total, and phase positions. ALYT rejects truncation and duplicate evidence, and it uses the existing bounded transient decoder slots for those fields.

PJ1203A has an independent DP112 voltage reading. That voltage does not authorize any coupled phase buffers, and it does not imply a total or additional phase values.

On a counter decrease, scale change, or source-epoch change, ALYT records the newly observed raw counter as the new continuity baseline and presents that report as unknown. A later valid nondecreasing report under the same scale and source can establish the new reading.

This behavior applies to electrical counters, thermal counters, and other supported meter families that use continuity-sensitive readings. It keeps the new observation visible without pretending that continuity still holds.

PJ1203A reports Channel A and B power, current, power factor, and energy-flow direction as a coupled set. ALYT keeps that bounded assembly in the existing locked endpoint evidence, preserving the physical datapoint order and 16-bit source sequence. Duplicate frames do not refresh a set; gaps, invalid values, expired assembly, source/revision/epoch changes, and configuration changes discard incomplete evidence. The reported power occurrence is retained when a later power-factor or direction report completes the set; replay and web/phone freshness use that measurement time rather than the completion time.

Net channel power is the source-defined signed combination of the two published channels. It is labelled separately from an independently reported total or a sum of ordinary phase measurements. Channel import and export kWh retain separate continuity; a decreasing lifetime counter is unknown until a later valid baseline sample. Frequency is reported in Hz. These fields are read-only on web, iOS, and Android. Default direction and assembly behavior follows the exact original PJ converter. Trusted adapter options support late direction, signed power, direction inversion, and single-zero removal; they are not a homeowner setting or a device command.

Salus scale-dependent setup uses an actual typed multiplier/divisor reply from the same device, endpoint, and current finite commissioning job. ALYT derives the original reporting changes only from valid positive scales and fences the queued configuration against current ownership, map revision, and deadline. Invalid or mismatched replies cannot mark setup complete. Setup responses and transport acknowledgements do not confirm a physical measurement.

Schneider PowerTag A9MEM1570 and ELKO EKO01825 use the original schneider_powertag reader with GP Source ID identity and observed endpoint242/profile0xa1e0/cluster0x0021. Only authenticated current-network NCP GP reports matching an installed identity and the current proxy entry enter the existing locked state owner. The existing native radio queue verifies proxy identity, security frame counter, and local sink authority before publishing bounded manufacturer-specific attribute evidence. The source-defined rxAfterTx ACK goes through the same bounded queue and final ownership guard; it does not confirm a measurement.

The platform decodes exact typed attribute widths and per-report divisors. Active watts, apparent VA, phase and line voltages, phase amperes, Hz, percent power factor, and separate phase kWh retain their original meaning. No cached divisor is borrowed from a different report. Truncation, duplicate attributes, unavailable values, zero divisors, and stale/duplicate security counters cannot establish freshness. The bounded GP security/counter proof stays in the existing locked endpoint JSON, survives a host observation-epoch change, and is source-bound. Lifetime continuity follows the ordinary counter discontinuity rule. These meter capabilities contain no setters. No new database table/migration, native scalar slot, GP sink table, or catalogue RAM allocation is required.

Green Power reports through a commissioned proxy

Section titled “Green Power reports through a commissioned proxy”

ALYT accepts direct authenticated NCP GPDF callbacks and security-processed GP notifications forwarded by a previously commissioned Zigbee peer on the same current network. A proxy notification is that peer’s assertion; it is not re-labelled as a locally verified GPDF MIC callback. The proxy-to-hub APS link quality is not published as a measured GP-device LQI. The real NCP APS receive owner requires GP profile 0xa1e0, cluster 0x0021, both virtual endpoints 242, the peer’s current EUI64/NWK binding, and existing installed-device ownership. A declared GPP address must match that peer. Unsupported application IDs, security levels, or key types, truncated frames, unknown peers, and failed-security commissioning notifications are refused.

A forwarded meter report requires an installed GP Source ID, exact individual-key/security-level metadata, and current local sink authority in the existing NCP proxy entry, plus a security counter newer than that entry. ALYT’s existing locked endpoint GP counter rejects duplicate and reordered forwarded reports durably, including after a host observation-epoch change. The host never replaces a key or NCP counter from a forwarded report. Queued work is fenced again by both current identities, network, radio owner, removal state, and a finite deadline. The source-defined rxAfterTx response is sent to that current proxy using its temporary-master address and the current network channel; a response is not physical confirmation.

For commissioning through a proxy, acquire that Zigbee peer in ALYT on the same hub first, then use the meter’s separate Green Power Add Device window. The same finite-window, installed-key refusal, original key derivation, proxy-table readback, and durable Source ID publication rules apply. Neither an ordinary Join window nor a forwarded report may replace an installed key. An absent proxy entry after radio/network loss produces no fresh meter evidence. Use the existing explicit device removal/readback and Add Device workflow to recommission; a local proxy removal does not prove the physical meter has been reset. Catalogue and converter data stay platform-side; this path reuses existing native queues, device addresses, and NCP proxy capacity without a sink table or persistent native fields.

Last updated