Repository navigation
fix(drivers): bundle Pixii PV sunset and recovery fixes - #1654
Merged
Merged
Conversation
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
7 tasks done
frahlg
marked this pull request as ready for review
October 16, 2026 04:22
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…d-033 Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and result
Fresh Pixii MQTT messages with a negative PV phase sum became positive PV power. Core rejected them, so solar could become stale and disappear after sunset. Bundle
pixii_pv0.3.3 from srcfl/device-drivers#181, which reports zero generation for a valid negative sum and leaves missing data missing.Move the pin from
afc9739dd19920246cadaa5135baa85485840528to the merged commit76ddd5846f18cb1a0d53d85508904d4e953421b2. Of the 40 bundled drivers, only two change:pixii_pv0.3.2 → 0.3.3: the sunset fix, with phase diagnostics and freshness preserved.pixii2.1.8 → 2.1.9 from fix(pixii): recover after the device was unreachable (2.1.9) device-drivers#180: recover after an unreachable stretch without retiring every register. Retry absent registers after five minutes.A patch changeset includes both fixes in the next beta's release notes.
Scope and safety
Add a test through Core's Lua host and telemetry store for day, sunset, repeated night messages, mixed phase signs, missing or invalid power, idle polls, grid-only messages and morning recovery.
The existing Pixii recovery test required one Core reload after three failed polls. The updated driver recovers within its own VM, so the test now requires zero reloads. It also checks that failed polls leave the battery timestamp unchanged and recovery advances it. The separate host tests still cover reloading old drivers that retire every register.
Open #1537 and #1449 also touch the pin. This PR uses the current master driver list. When those PRs land, their pins must retain this commit or a later descendant. Their driver changes are outside this pin range.
No hardware run in this change. The tests use synthetic MQTT and Modbus data through the real Core host. Beta testing at the affected site still needs to confirm zero PV after sunset, production the next morning and recovery after an outage.
Verification
scripts/sync-bundled-drivers.sh— fetched all 40 drivers from the merged commit.make driver-versions-across-pin— all 40 bundled driver versions verified.CGO_ENABLED=0 go -C go test -tags=netgo,osusergo ./internal/drivers ./internal/telemetry -run 'Pixii|TestGiveUp|TestStoreRejectsInvalidReadings|TestBundledDriversMeetStartupContract' -count=1— passed.make verify— Go tests, migration and release checks, native worker checks, import boundaries, vet and build passed, including after the master update.The paired driver PR passed all five GitHub checks and the full driver suite: 4931 passed, 923 skipped.
The first Core CI run failed in the unchanged
TestASupportGrantEndsWhenItsTicketCloses, which assumes the last flushed audit row is the successful staff call.flushFoldsiterates a Go map, so row order varies. The test failed 9 of 40 local repetitions; a temporary order-independent assertion passed all 40. Both the test and audit code match the base commit byte for byte. After updating the branch with current master, all checks passed on2a415229f3c0f602db5941a52d86493d1f3bfdd7; no support code or test was changed in this PR. Initial CI failure.Checklist