Repository navigation
Conversation
….1) (srcfl#202) Count a failed read or EMS write only when the device answers with a Modbus exception. A failed read also counts when another read in the same poll returned data. Transport errors, reconnect backoff and gateway or busy exceptions never count. The first poll that reads data after a poll that read nothing clears the read misses and the EMS write count. Once forced mode has landed, set_self_consumption always writes the release and never reports the default as held until the inverter takes it. FTW's random site rig (27 October 2026, master 83c2b24c) found both: 13000 dropped after an outage flipped the battery sign (207539, 207534), and the release was skipped while the inverter held its last forced command for up to 5 minutes (8 of 10 seeds). Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…(0.1.2) (srcfl#204) * test(tesla_wall_connector): idle unit must report 0 W The vitals of an idle Gen 3 (no car, contactor open, 0 V on every leg, 0.8 A and 0.6 A of sensor offset) give 184 W today: the same number a field connection test showed. Adds the idle, car-waiting and charging cases. Fails on 0.1.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> * fix(tesla_wall_connector): no charge power through an open contactor (0.1.2) With the contactor open the output legs read 0 V, the leg sum was 0, and the driver fell back to grid_v × vehicle_current_a. That multiplied the grid-side voltage by the sensor offset of an idle unit and reported about 180-290 W to a car that was not there. Charge power and charging now need a closed contactor and a car on the cable. A reply without contactor_closed falls back to the EVSE charging states. Power through a closed contactor is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> * fix(tesla_wall_connector): contactor field first, grid_v only with no leg voltage From review. An explicit contactor_closed now goes before vehicle_connected: the contactor is the physical switch, and a status flag should not cancel volts and amps measured through it. With that order, a closed contactor with every leg at 0 V would still have reached the grid_v fallback, so the fallback now runs only when the reply has no leg voltage at all. A leg that reads 0 V carries no power, as in Home Assistant's own calculation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> --------- Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Some Zap gateway firmware serves the local API in data model v2 (srcful-data-models 2.3.0): every meter field gets an "_ac" suffix and the L1/L2/L3 phase prefix is lowercased (W -> W_ac, L1_V -> l1_V_ac; Hz is unchanged). emit_meter read the v1 names unconditionally, so a Zap on v2 firmware gave FTW no meter reading at all. Add raw_field(), which tries the v1 name, then the _ac suffix, then the lowercased-prefix _ac variant -- no explicit version branch needed. Scoped to the meter DER only; pv/battery have the identical assumption against v2's _ac/_dc split and are left to srcfl#170, since this site runs read_pv/read_battery both false and I have no v2 hardware with those enabled to verify against. Fixes (partially) srcfl#170. Signed-off-by: Marcus Murwall <marcus@murwall.se>
Zap firmware 7.x calls the PV DER solar, sends power and energy on one side, _ac or _dc, and moves the ratings to /api/devices. read_pv and read_battery therefore read nothing on 7.x. The driver now reads the 1.x and the v2 names, and a value v2 sends as null stays unknown. An AC-side voltage or current is not reported as the battery's own. The inverter DER is not counted as another resource. Also removes draft comments and a pinned version from the meter schema test. Signed-off-by: David Mozart <dmozartandraws@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(saj-emanager): add read-only eManager telemetry The community register sheet does not state sign, word order, or whether phase voltage and frequency are summed. Control stays off until a named eManager proves a held zero. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: David Mozart <davmoz@users.noreply.github.com> * fix(saj-emanager): state site signs on every watt Generation stays negative. Battery charge is positive and discharge is negative; the H2 wire is the other way round, so 0x8491 is negated. Grid import stays positive. Vendor-only words are not DER fields. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: David Mozart <davmoz@users.noreply.github.com> --------- Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: David Mozart <davmoz@users.noreply.github.com>
NovaCore rejects set_make("SAJ") and does not provide emit_metric.
Device count and the phase divisor are logged once instead.
Signed-off-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: David Mozart <davmoz@users.noreply.github.com>
…1.3) (srcfl#203) * fix(growatt): skip battery telemetry when no battery is connected PV-only Growatt still answers the battery registers with 0, so Overview rendered a phantom Battery node. Only emit battery telemetry when voltage/SoC/power indicate a real battery. Fixes srcfl/ftw#1669. Signed-off-by: huangkongsheng <59566679+huangkongsheng@users.noreply.github.com> * chore(growatt): lower the invented-number baseline and regenerate for 2.1.3 The battery gate removes four invented numbers from growatt (20 to 16), so the ratchet needs its baseline lowered. index.yaml, devices.yaml and the support status are regenerated for the 2.1.3 manifest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> --------- Signed-off-by: huangkongsheng <59566679+huangkongsheng@users.noreply.github.com> Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> Co-authored-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Easee moves session energy in steps of about 1 kWh. FTW's energy record judged each step against the time since the last reading, and rejected those that landed moments later. On one home box it kept 10 of 24.3 kWh. The driver now says so with session_wh_coarse. Measured power came within 0.1 % of Easee's own total on three charges. Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…bution Signed-off-by: Segran <goran@andersson-stehag.se>
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.
This PR updates the source branch of #194 with current main and resolves its merge conflicts. It preserves the coarse session energy counter from #214 and regenerates the Easee 1.4.3 catalog metadata.
A one-phase EV can charge on any of the three phases when the active phase is unknown. Require all three usable allocations before attributing a lower pilot to load balancing. With a 15 A request, a 12 A pilot and only one reported allocation of 10 A, the driver still reports the 12 A limit and leaves the cause unset.
Validation
The head includes both the current #194 head and the current main tip in its ancestry. Please merge with a merge commit or fast-forward the #194 source branch to the head to preserve that ancestry.