abbterra: split status block to respect 31-byte RT38B01 frame limit
The status block (12 registers × 2 words = 24 words) was read as a single Modbus request, producing a 53-byte response that overflows the RT38B01 433 MHz radio module's 31-byte frame limit. Dissolve the status block into individual registers with readSchedule:update so queuedRequests sends them one at a time (max 9 bytes per response). The deviceInfo init block (8 words → 21 bytes) is left untouched. Bump to 1.15.0+etm6. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a068d5a2cd
commit
fe7c15d0b9
@ -16,27 +16,21 @@
|
||||
{ "id": "firmwareVersionRaw", "address": 16388, "size": 2, "type": "uint32", "registerType": "holdingRegister", "description": "Firmware version", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "userSettableMaxCurrent", "address": 16390, "size": 2, "type": "uint32", "unit": "mA", "registerType": "holdingRegister", "description": "Maximum user settable charging current", "defaultValue": "32000", "access": "RO" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "status",
|
||||
"readSchedule": "update",
|
||||
"registers": [
|
||||
{ "id": "errorCode", "address": 16392, "size": 2, "type": "uint32", "registerType": "holdingRegister", "description": "Last error code", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "socketLockState", "address": 16394, "size": 2, "type": "uint32", "registerType": "holdingRegister", "description": "Socket and cable lock state", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "chargingStateRaw", "address": 16396, "size": 2, "type": "uint32", "registerType": "holdingRegister", "description": "Charging state", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "chargingCurrentLimit", "address": 16398, "size": 2, "type": "uint32", "unit": "mA", "registerType": "holdingRegister", "description": "Current charging current limit", "defaultValue": "6000", "access": "RO" },
|
||||
{ "id": "currentL1", "address": 16400, "size": 2, "type": "uint32", "unit": "mA", "registerType": "holdingRegister", "description": "Current L1", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "currentL2", "address": 16402, "size": 2, "type": "uint32", "unit": "mA", "registerType": "holdingRegister", "description": "Current L2", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "currentL3", "address": 16404, "size": 2, "type": "uint32", "unit": "mA", "registerType": "holdingRegister", "description": "Current L3", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL1", "address": 16406, "size": 2, "type": "uint32", "unit": "0.1V", "registerType": "holdingRegister", "description": "Voltage L1", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL2", "address": 16408, "size": 2, "type": "uint32", "unit": "0.1V", "registerType": "holdingRegister", "description": "Voltage L2", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL3", "address": 16410, "size": 2, "type": "uint32", "unit": "0.1V", "registerType": "holdingRegister", "description": "Voltage L3", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "activePower", "address": 16412, "size": 2, "type": "uint32", "unit": "W", "registerType": "holdingRegister", "description": "Measured active power", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "sessionEnergy", "address": 16414, "size": 2, "type": "uint32", "unit": "Wh", "registerType": "holdingRegister", "description": "Delivered energy of the current session", "defaultValue": "0", "access": "RO" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"registers": [
|
||||
{ "id": "errorCode", "address": 16392, "size": 2, "type": "uint32", "readSchedule": "update", "registerType": "holdingRegister", "description": "Last error code", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "socketLockState", "address": 16394, "size": 2, "type": "uint32", "readSchedule": "update", "registerType": "holdingRegister", "description": "Socket and cable lock state", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "chargingStateRaw", "address": 16396, "size": 2, "type": "uint32", "readSchedule": "update", "registerType": "holdingRegister", "description": "Charging state", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "chargingCurrentLimit", "address": 16398, "size": 2, "type": "uint32", "unit": "mA", "readSchedule": "update", "registerType": "holdingRegister", "description": "Current charging current limit", "defaultValue": "6000", "access": "RO" },
|
||||
{ "id": "currentL1", "address": 16400, "size": 2, "type": "uint32", "unit": "mA", "readSchedule": "update", "registerType": "holdingRegister", "description": "Current L1", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "currentL2", "address": 16402, "size": 2, "type": "uint32", "unit": "mA", "readSchedule": "update", "registerType": "holdingRegister", "description": "Current L2", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "currentL3", "address": 16404, "size": 2, "type": "uint32", "unit": "mA", "readSchedule": "update", "registerType": "holdingRegister", "description": "Current L3", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL1", "address": 16406, "size": 2, "type": "uint32", "unit": "0.1V", "readSchedule": "update", "registerType": "holdingRegister", "description": "Voltage L1", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL2", "address": 16408, "size": 2, "type": "uint32", "unit": "0.1V", "readSchedule": "update", "registerType": "holdingRegister", "description": "Voltage L2", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "voltageL3", "address": 16410, "size": 2, "type": "uint32", "unit": "0.1V", "readSchedule": "update", "registerType": "holdingRegister", "description": "Voltage L3", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "activePower", "address": 16412, "size": 2, "type": "uint32", "unit": "W", "readSchedule": "update", "registerType": "holdingRegister", "description": "Measured active power", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "sessionEnergy", "address": 16414, "size": 2, "type": "uint32", "unit": "Wh", "readSchedule": "update", "registerType": "holdingRegister", "description": "Delivered energy of the current session", "defaultValue": "0", "access": "RO" },
|
||||
{ "id": "communicationTimeoutReadback", "address": 16416, "size": 1, "type": "uint16", "unit": "s", "readSchedule": "update", "registerType": "holdingRegister", "description": "Communication timeout readback", "defaultValue": "60", "access": "RO" },
|
||||
{ "id": "chargingCurrentLimitCommand", "address": 16640, "size": 2, "type": "uint32", "unit": "mA", "readSchedule": "no", "registerType": "holdingRegister", "description": "Set charging current limit", "defaultValue": "6000", "access": "RW" },
|
||||
{ "id": "socketLockCommand", "address": 16642, "size": 1, "type": "uint16", "readSchedule": "no", "registerType": "holdingRegister", "description": "Socket lock control", "defaultValue": "0", "access": "RW" },
|
||||
|
||||
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -1,3 +1,11 @@
|
||||
etm-powersync-plugins-modbus (1.15.0+etm6) trixie; urgency=medium
|
||||
|
||||
* abbterra: split status block into individual registers (readSchedule:
|
||||
update) to stay within the 31-byte RT38B01 radio frame limit; init block
|
||||
(serialNumber/firmwareVersion/userSettableMaxCurrent) unchanged.
|
||||
|
||||
-- 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user