v0.9.0 - Fix and Register scan improvements
Release Notes
v0.9.0
-
Fix: Universal Scanner DTC registers showing as zero on fresh TCP connection:
The DTC identification registers (holding 30000 and holding 43) frequently returned 0 in
scan output even thoughread_registeralways worked. The scanner opens a new raw TCP
connection that displaces the coordinator's session; the inverter returns 0 until it settles.
Fixed with a post-connect warmup delay and end-of-scan settled re-reads — by the time the
full range scan completes, several seconds have elapsed and the inverter's Modbus state is
stable. Also fixes garbled firmware version (holding 9-11) from the same cause. -
Fix: VPP battery charge/discharge today swapped on SPH V2.01 profiles (Issue #300):
battery_charge_todayandbattery_discharge_todayfrom VPP registers 31202 and 31206
were labelled the wrong way round onsph_3000_6000_v201andsph_7000_10000_v201.
VPP Protocol V2.01 specifies 31202 as daily charge and 31206 as daily discharge — the
integration had them reversed. The legacy storage-range registers (1052/1053 and 1056/1057)
were always correct; only the VPP-sourced entities were affected. -
Feature: Universal Scanner now includes holding register scan (0-124 and 1000-1124):
Theexport_register_dumpscanner now reads holding registers (FC03) for the legacy base
range (0-124) and storage/control range (1000-1124) in addition to the existing input
register scan. These ranges contain writable controls such asac_charge_enable(holding
1092), TOU time period slots (holding 1100-1108), charge/discharge power rates, priority
mode, and scheduling windows. Holding register rows appear in the CSV with an H-prefix
address (e.g. H1092) and a Suggested Match column populated from the active profile's
register definitions. Holding and input data are kept in separate dictionaries so values
at the same address do not overwrite each other.