152 lines
8.4 KiB
Plaintext
152 lines
8.4 KiB
Plaintext
etm-powersync-plugins-modbus (1.15.2+etm9) trixie; urgency=medium
|
|
|
|
* sunspec: read Fronius float32 points big endian, the way the hardware
|
|
emits them. byteOrder() returned ByteOrderLittleEndian on the grounds that
|
|
"the SunSpec default is assumed"; that conflated the default of the
|
|
specification with libnymea-sunspec's own, which is the opposite. Every
|
|
float32 of the Fronius personality was therefore read with its two
|
|
registers swapped. Measured on a Symo, read only: the model 213 meter on
|
|
unit 200 serves Hz = 4248 0000, which is 50.0000 big endian and 2.3777e-41
|
|
swapped. Reproduced on the bench: a meter importing 2.7 kW reported as
|
|
exporting 107 MW, with the arbiter switching every load on, and the thing
|
|
still reporting itself connected with no Modbus error. The meter sign fix
|
|
only becomes observable once this is right. solarEdge already forces big
|
|
endian and the generic vendor keeps its user parameter; neither changes.
|
|
* sunspec: add tools/read-float-order.py, a read-only probe that decodes Hz
|
|
and PhVphA both ways so the word order can be settled by measurement
|
|
rather than assumption.
|
|
|
|
-- Patrick Schurig <patrick@etm-schurig.eu> Fri, 07 Aug 2026 07:00:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm8) trixie; urgency=medium
|
|
|
|
* sunspec: ask the connection thing directly instead of resolving it by id.
|
|
The battery presence gate went through isFroniusChild(), which looks the
|
|
parent up in myThings(). During the initial setup the parent is not
|
|
registered yet, the lookup answers false, the Fronius gate is bypassed and
|
|
the phantom storage child is created after all. Caught on the bench, not
|
|
by the unit suite, which covers the decision and not the wiring. See
|
|
sunspec/DIVERGENCES.md D-7.
|
|
|
|
-- Patrick Schurig <patrick@etm-schurig.eu> Wed, 05 Aug 2026 19:20:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm7) trixie; urgency=medium
|
|
|
|
* sunspec: correct the grid meter sign on Fronius. onMeterBlockUpdated()
|
|
negated the power of every meter model regardless of vendor, but the
|
|
Fronius Smart Meter already reports in the nymea convention, where a
|
|
negative value is feed-in. The negation is now undone for meters sitting
|
|
under a froniusConnection and only for those; generic and solarEdge keep
|
|
their previous behaviour. Established on a Primo GEN24 3.0, whose single
|
|
phase inverter gives the direction reference: the plugin reported the
|
|
inverter's own phase as importing while the two phases carrying no source
|
|
read as exporting. The arbiter concluded "insufficient surplus" and left
|
|
the water heater and the heat pump off while the site was exporting.
|
|
The energy counters were already correct and are left alone.
|
|
* sunspec: stop creating a phantom battery on Fronius. A hybrid GEN24
|
|
publishes model 124 whether or not a battery is wired to it, so a storage
|
|
child was created unconditionally and sat on batteryCritical forever. The
|
|
child is now created only when a physical quantity says a battery is
|
|
there. The state of charge is deliberately not used: 0% cannot be told
|
|
apart from a real but empty battery. See sunspec/DIVERGENCES.md D-6, the
|
|
battery-present side is still inferred.
|
|
|
|
-- Patrick Schurig <patrick@etm-schurig.eu> Wed, 05 Aug 2026 15:58:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm6) trixie; urgency=medium
|
|
|
|
* sunspec: package the vendored SunSpec plugin as nymea-plugin-sunspec-etm01.
|
|
The plugin was added to the build by the vendoring commit but never
|
|
packaged, so dh_missing found its .so in debian/tmp with nowhere to install
|
|
it and aborted the whole source package: no binary package at all came out
|
|
of this branch, not even for the four unrelated plugins.
|
|
* sunspec: add the Fronius vendor. A GEN24 answers for the inverter on one
|
|
unit ID and for its Smart Meter on another, behind the same host and port,
|
|
so one froniusConnection thing now carries two SunSpecConnection objects.
|
|
The meter connection is brought up only once the primary has finished
|
|
discovering, and the parent connected state follows the primary alone.
|
|
* sunspec: correct the storage setpoint chain - charge and discharge rates
|
|
read back from InWRte/OutWRte instead of the read-only gradients, the rate
|
|
range widened to -100..100 so forced charging can be expressed at all,
|
|
enableDischarging reconciled from StorCtl_Mod, and the revert timer armed
|
|
with every setpoint so one left behind by a stopped HEMS expires.
|
|
* debian: add libnymea-sunspec-dev to Build-Depends. Upstream does not need
|
|
it because it builds libnymea-sunspec from the same source tree; this
|
|
repository vendors only the plugin and links against the installed library.
|
|
* The new binary package conflicts with, replaces and provides
|
|
nymea-plugin-sunspec: it ships the same plugin file and the same pluginId
|
|
as the upstream package this repository already mirrors.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Sun, 02 Aug 2026 12:05:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm5) trixie; urgency=medium
|
|
|
|
* abbterra: decode the serial-number and firmware register fields as BCD, as
|
|
specified by the ABB Modbus spec §5.1 (e.g. 0x49 = week 49, 0x22 = 22 kW),
|
|
instead of as plain binary. The binary reading made deviceInfoFromValues()
|
|
reject every real charger whose BCD production-week byte exceeded 0x35
|
|
(e.g. week 46 = 0x46 = 70 > 53), failing setup with "The device does not
|
|
match the ABB Terra AC Modbus register map", and mis-decoded the 11 kW/22 kW
|
|
rated-power codes. Manual TCP add of the charger now completes.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Fri, 03 Jul 2026 13:15:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm4) trixie; urgency=medium
|
|
|
|
* abbterra: fix TCP manual setup never establishing the connection.
|
|
setupTcpThing() wired all the connection signals but never called
|
|
connectDevice(), so reachableChanged()/initializationFinished() never fired
|
|
and the setup hung until timeout ("Thing setup failed"). Now the connection
|
|
is started when the NetworkDeviceMonitor reports the device online.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Fri, 03 Jul 2026 12:55:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm3) trixie; urgency=medium
|
|
|
|
* abbterra: disable TCP auto-discovery (createMethods = "user" only) for the
|
|
Terra AC Charger (TCP) thing class. Discovery blind-scans the LAN and blows
|
|
up nymead with a SIGSEGV as soon as any Modbus device answers :502 with an
|
|
exception response — the crash is in the generated reachability handler and
|
|
cannot be fixed from the discovery code alone (two attempts failed). For the
|
|
Waveshare RS485-gateway use case discovery can't determine the slave id
|
|
anyway; the charger must be added manually (address + port + slaveId). This
|
|
unblocks adding the charger and stops the crash loop. The underlying
|
|
generated-code crash is tracked separately.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Fri, 03 Jul 2026 12:40:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm2) trixie; urgency=medium
|
|
|
|
* abbterra: fix nymead SIGSEGV during ABB Terra AC TCP discovery. On a
|
|
reachability-check exception (e.g. any Modbus device on the LAN answering
|
|
:502 with "illegal data address"), AbbTerraTcpDiscovery::cleanupConnection()
|
|
tore the connection down synchronously from inside the connection's own
|
|
QModbusReply "finished" handler, freeing the in-flight reply that the
|
|
generated code still dereferences at abbterramodbustcpconnection.cpp:2062.
|
|
The teardown is now deferred (Qt::QueuedConnection) and made idempotent.
|
|
* abbterra: restore checkReachableRegister ("serialNumber"), required by the
|
|
libnymea-modbus 1.15 connection-class generator.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Fri, 03 Jul 2026 12:00:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.2+etm1) trixie; urgency=medium
|
|
|
|
* Build 1.15,2
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Tue, 24 Jun 2026 11:00:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.0+etm5) trixie; urgency=medium
|
|
|
|
* abbterra: fix RTU setup on slow radio links — trigger initialize() on
|
|
master connectedChanged, not only on reachableChanged (which never fires
|
|
within setup timeout over 433 MHz).
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Tue, 24 Jun 2026 10:00:00 +0200
|
|
|
|
etm-powersync-plugins-modbus (1.15.0+etm4) trixie; urgency=medium
|
|
|
|
* Correction modbus registers.
|
|
|
|
-- ETM-Schurig SARL <contact@etm-schurig.eu> Fri, 13 Jun 2026 10:00:00 +0200
|
|
|