Skip to content

fix(pixii): skip optional meter energy scale factor when absent#16

Merged
frahlg merged 1 commit into
srcfl:mainfrom
tommylindgren:fix/pixii-40288-meter-energy-sf
Jul 23, 2026
Merged

fix(pixii): skip optional meter energy scale factor when absent#16
frahlg merged 1 commit into
srcfl:mainfrom
tommylindgren:fix/pixii-40288-meter-energy-sf

Conversation

@tommylindgren

Copy link
Copy Markdown
Contributor

Some PowerShaper firmware returns Illegal Data Address on register
40288. Probe once during driver_init and avoid polling it so FTW's
fresh Modbus read evidence does not fail the whole driver.

Fixes #15

Summary

Pixii catalog driver (1.1.1) and FTW v2 package target (1.2.2) now probe
meter-energy scale factor register 40288 once during driver_init and skip it
during driver_poll when absent. This prevents FTW's poll-scoped Modbus
evidence from failing the whole driver when one optional register is missing.

Driver evidence

  • Driver id: pixii
  • Device make/model: Pixii PowerShaper (two units on the same site)
  • Firmware tested:
    • Affected unit: CPU1 v2.0.17, CPU2 v2.0.20 — register 40288 returns Modbus exception 0x02
    • Working unit: CPU1 v2.0.23, CPU2 v2.0.23 — register 40288 present, value 0 (no scaling)
  • Protocol/register source: SunSpec model 213 offset 53 (meter_energy_sf, absolute 40288); Pixii Modbus mapping doc 13300
  • Hardware test performed:
    • Direct Modbus TCP probe (FC 0x03) of all 37 poll registers with FTW stopped: affected unit 36/37 OK, working unit 37/37 OK
    • Live FTW site test (v1.10.5 dev, bundled drivers/pixii.lua 1.2.0 with same init-probe workaround): pixii-1 recovered from driver_poll: 1 of 37 modbus reads failed / offline to status: ok, consecutive_errors: 0
    • make test-driver ID=pixii, make package-driver ID=pixii TARGET=ftw-core, make check — all passed locally
  • Known limits:
    • Import/export Wh on firmware without 40288 use sf=0; on tested working unit 40288 also reads 0, so behaviour matches
    • Primary site metering was from a separate DSMR driver, not Pixii; dispatch-critical meter_w and phase readings are unaffected
    • Older firmware (v2.0.17/v2.0.20) appears to omit 40288; v2.0.23 exposes it

Safety

  • The driver starts read-only, or this is a separately reviewed control change.
  • Vendor signs are converted at the driver boundary.
  • Cached telemetry becomes stale instead of being re-emitted as fresh.
  • No credentials, serial numbers, private addresses or site data are included.

Package or promotion evidence

  • Public source SHA: (fill at merge time / from PR head commit)
  • Package ID and new version: com.sourceful.driver.pixii 1.2.2
  • Target matrix: ftw-core (catalog 1.1.1 + package candidate 1.2.2)
  • Material and candidate artifact SHA-256: from make package-driver ID=pixii TARGET=ftw-core output at commit time
  • HIL evidence or required: not applicable for this read-path bugfix; existing package HIL gates unchanged
  • Control enabled: false
  • Control changes include default-mode, lease-expiry and HIL evidence. (not applicable — no control changes)

Checks

  • Commits include Signed-off-by.
  • make test-driver ID=pixii
  • make package-driver ID=pixii TARGET=ftw-core
  • make check

Some PowerShaper firmware returns Illegal Data Address on register
40288. Probe once during driver_init and avoid polling it so FTW's
fresh Modbus read evidence does not fail the whole driver.

Fixes srcfl#15

Signed-off-by: Tommy Lindgren <tommy@lindgrens.nu>
@frahlg
frahlg merged commit af0a229 into srcfl:main Jul 23, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[driver] Pixii: driver goes offline when meter energy scale factor (40288) is absent

2 participants