Repository navigation
Conversation
Easee records ReasonForNoCurrent when it changes. The driver dropped any reason older than the last power change while the car charged, so a load-balancing limit that began earlier vanished and Core said the charger had given no reason. Keep a load-balancing reason while the measured per-phase current stays at least 2 A below the offer, and tell Core with the vendor-neutral current_limited_by = "load_balancer". Match the reason labels to Easee's published table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
This branch has not been deployed
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
A tester on FTW v0.140.0-beta.1 (Easee Cloud, Pixii, 25 A three-phase fuse) saw "Asked for 11.0 kW, delivering 8.3 kW. The charger has not said why." The charger's load balancer had cut the car to about 12 A per phase while the battery charged 4.75 kW. FTW's requested current, the charger offer (observation 48) and the charger limit all read 16 A, so none of them showed the cut.
driver_polldrops any ReasonForNoCurrent while the charger reports charging above 100 W and the reason's timestamp is not newer than TotalPower's. Easee records an observation when its value changes. A load-balancing reason set when the limit began is older than the next power change, so the driver dropped it while the limit still held.Change
current_limited_by = "load_balancer"for codes 1–5, 10 and 25–30 while a car is connected. Core reads this vendor-neutral name, not Easee's codes. Codes 77 and 78 are the charger's own limits, which Core already reads asdevice_limit_aandmax_a; the car's codes are not the load balancer either.current_limited_byto the EV keys inspec/host-api-profile.jsonand to the control feedback section ofdocs/WRITING-A-DRIVER.md. Add Easee's enumeration page toupstream_docs.easee_cloud1.3.6 → 1.3.7.What is confirmed and what is inferred
Confirmed from Easee's docs:
Confirmed in this driver: the timestamp rule above drops any reason older than the last power change. Earlier hardware work confirmed that Easee keeps an unchanged TotalPower timestamp for minutes (#131).
Inferred, not seen: that Easee sends 25–30 while a car charges, and which code the tester's charger sent. No raw observations were captured from that site, and I have not seen a load-balanced Easee on hardware with this change. The 2 A gap is a judgement: a car may draw a little under the offer, and the per-phase current is derived from total power and one voltage.
Limits
Paired PR
srcfl/ftw#1537 moves the bundled driver pin to this branch's head and makes Core report
load_balancer_limitas limited, with words in the UI. Merge this first, then move the FTW pin to the merge commit.draft #159 also bumps
easee_cloudto 1.3.7. It changesdriver_command; this PR changesdriver_poll. Whichever lands second needs 1.3.8.Tests
drivers/tests/lua_harness/test_easee_cloud_load_balancer.luawithdrivers/tests/test_easee_cloud_load_balancer.py: the reported case (16 A offer, 8.3 kW on three phases) keeps code 29 and reports the load balancer; codes 28 and 27 too; a car at the full offer, a gap under 2 A, an old non-balancing reason and an unknown offer drop it; FTW's last write stands in for a missing readback; a car held at zero by codes 2 or 5 is reported; 52, 100 and an unplugged charger are not. The test fails onmainat its first assertion.make test-driver ID=easee_cloud: 40 passed, 15 skipped.make check: 4902 passed, 923 skipped.🤖 Generated with Claude Code