Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ hears from the charger, so a steady charge stays measured. Missing power or
source time cannot confirm a command's effect. The live-status display and
polling rate stay unchanged.

## pixii 2.1.8

Preserve the sign of measured AC power from Pixii register 40083 for command
feedback. Hardware reports this value in FTW site signs already: charging is
positive and discharging is negative. Setpoint conversion, commands, heartbeat
and safety policy are unchanged. Verified against PowerShaper site telemetry
reported in #154; regression tests cover both charge and discharge signs.

## pixii 2.1.7

Read the setpoint on every poll, including outside troubleshooting mode. Emit
Expand Down
4 changes: 2 additions & 2 deletions SUPPORT_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ Catalog source is not proof that a target can install or run a driver.
| p1_hdlc | 2.0.2 | blixt-l1 | not_assessed | — | not_recorded | not_assessed |
| p1_meter | 2.0.2 | ftw-core | not_assessed | — | not_recorded | not_assessed |
| p1_meter | 2.0.2 | blixt-l1 | not_assessed | — | not_recorded | not_assessed |
| pixii | 2.1.7 | ftw-core | not_assessed | — | not_recorded | not_assessed |
| pixii | 2.1.7 | blixt-l1 | not_assessed | — | not_recorded | not_assessed |
| pixii | 2.1.8 | ftw-core | not_assessed | — | not_recorded | not_assessed |
| pixii | 2.1.8 | blixt-l1 | not_assessed | — | not_recorded | not_assessed |
| pixii_pv | 0.3.2 | ftw-core | not_assessed | — | not_recorded | not_assessed |
| pixii_pv | 0.3.2 | blixt-l1 | not_assessed | — | not_recorded | not_assessed |
| remne_p1ib | 0.1.0 | ftw-core | not_assessed | — | not_recorded | not_assessed |
Expand Down
2 changes: 1 addition & 1 deletion devices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1032,7 +1032,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "pixii"
version: "2.1.7"
version: "2.1.8"
ders: [battery, meter]
control: false
firmware_versions: ""
Expand Down
8 changes: 4 additions & 4 deletions drivers/lua/pixii.lua
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ DRIVER = {
id = "pixii",
name = "Pixii PowerShaper",
manufacturer = "Pixii",
version = "2.1.7",
version = "2.1.8",
protocols = { "modbus" },
capabilities = { "battery", "meter" },
description = "Pixii PowerShaper commercial battery storage via Modbus TCP.",
Expand Down Expand Up @@ -474,9 +474,9 @@ function driver_poll()
local battery = {
w = bat_w,
setpoint_w = setpoint_pixii_w and -setpoint_pixii_w,
-- SunSpec W is in the generator frame, like the setpoint: positive
-- means power out of the inverter. Site signs charge positive.
control_power_w = acw_regs and -ac_w,
-- The measured AC register already uses site signs on Pixii hardware:
-- charge positive, discharge negative. Do not invert it like the setpoint.
control_power_w = acw_regs and ac_w,
control_power_available = acw_regs ~= nil,
v = bat_v,
a = bat_a,
Expand Down
6 changes: 4 additions & 2 deletions drivers/tests/test_pixii_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,10 @@ def test_pixii_control_readback_without_troubleshooting():
local battery = poll(3)
assert(battery.setpoint_w == -1500, "setpoint must use site signs outside TS mode")
assert(battery.control_power_available == true)
-- SunSpec W is generator frame: -1400 W flows into the inverter, a charge.
assert(battery.control_power_w == 1400, "command feedback must use site-signed AC, not DC")
assert(battery.control_power_w == -1400, "negative measured AC must remain discharge")
host._modbus_registers.holding[40083] = 1400
battery = poll(3)
assert(battery.control_power_w == 1400, "positive measured AC must remain charge")
host._modbus_read_fail_addresses[39905] = "timeout"
host._modbus_read_fail_addresses[40083] = "timeout"
battery = poll(3)
Expand Down
6 changes: 3 additions & 3 deletions index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -498,14 +498,14 @@ drivers:
size_bytes: 19344
sha256: "29f2bd2f73c0d39d809839ca60b40c3e4281f1dda267ba2b26e66bd9ab80c27b"
- name: "pixii"
version: "2.1.7"
version: "2.1.8"
tier: core
protocol: modbus
connectivity: local
ders: [battery, meter]
control: false
size_bytes: 29105
sha256: "bd8fe1e850ce66e83e107116d7e236c499cca51f75872feb03efde58f95d6e41"
size_bytes: 29119
sha256: "5fc8e600eac7a70020e01e32c531f350f49bd076cac8a5598c2c06205b05f6b8"
- name: "pixii_pv"
version: "0.3.2"
tier: core
Expand Down
6 changes: 3 additions & 3 deletions manifests/pixii.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "pixii"
version: "2.1.7"
version: "2.1.8"
tier: core
author: "Sourceful Labs AB and community contributors"
protocol: modbus
Expand All @@ -24,9 +24,9 @@ upstream_docs:
title: "SunSpec model 802: battery charge and control states"
kind: register_map
url_stability: stable
size_bytes: 29105
size_bytes: 29119
dkb_id: "pixii"
sha256: "bd8fe1e850ce66e83e107116d7e236c499cca51f75872feb03efde58f95d6e41"
sha256: "5fc8e600eac7a70020e01e32c531f350f49bd076cac8a5598c2c06205b05f6b8"
signature: ""

bytecode_sha256: ""
Expand Down
2 changes: 1 addition & 1 deletion support-status.json
Original file line number Diff line number Diff line change
Expand Up @@ -1136,7 +1136,7 @@
},
{
"catalog_source": true,
"catalog_version": "2.1.7",
"catalog_version": "2.1.8",
"driver_id": "pixii",
"targets": {
"blixt-l1": {
Expand Down
Loading