@enyo-energy/sunspec-sdk 0.0.26 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,19 @@ const enyo_data_bus_value_js_1 = require("@enyo-energy/energy-app-sdk/dist/types
8
8
  const enyo_source_enum_js_1 = require("@enyo-energy/energy-app-sdk/dist/types/enyo-source.enum.js");
9
9
  const enyo_meter_appliance_js_1 = require("@enyo-energy/energy-app-sdk/dist/types/enyo-meter-appliance.js");
10
10
  const enyo_battery_appliance_js_1 = require("@enyo-energy/energy-app-sdk/dist/types/enyo-battery-appliance.js");
11
+ /**
12
+ * Extract battery discharge power from MPPT data.
13
+ * Returns the discharge power in Watts (positive value), or 0 if no discharge.
14
+ */
15
+ function extractBatteryDischargePowerFromMPPT(mpptDataList) {
16
+ let dischargePowerW = 0;
17
+ for (const mppt of mpptDataList) {
18
+ if (mppt.stringId === 'StDisCha 4' && mppt.dcPower !== undefined && mppt.dcPower > 0) {
19
+ dischargePowerW += mppt.dcPower;
20
+ }
21
+ }
22
+ return dischargePowerW;
23
+ }
11
24
  /**
12
25
  * Base abstract class for all Sunspec devices
13
26
  */
@@ -112,7 +125,11 @@ class SunspecInverter extends BaseSunspecDevice {
112
125
  const mpptDataList = await this.sunspecClient.readAllMPPTData();
113
126
  const inverterSettings = await this.sunspecClient.readInverterSettings();
114
127
  const dcStrings = this.mapMPPTToStrings(mpptDataList);
128
+ // Calculate battery discharge power to subtract from AC power
129
+ const batteryDischargePowerW = extractBatteryDischargePowerFromMPPT(mpptDataList);
115
130
  if (inverterData) {
131
+ const totalAcPowerW = inverterData.acPower || 0;
132
+ const purePvPowerW = Math.max(0, totalAcPowerW - batteryDischargePowerW);
116
133
  const inverterMessage = {
117
134
  id: (0, node_crypto_1.randomUUID)(),
118
135
  message: enyo_data_bus_value_js_1.EnyoDataBusMessageEnum.InverterValuesUpdateV1,
@@ -123,7 +140,7 @@ class SunspecInverter extends BaseSunspecDevice {
123
140
  timestampIso: timestamp.toISOString(),
124
141
  resolution,
125
142
  data: {
126
- pvPowerW: inverterData.acPower || 0,
143
+ pvPowerW: purePvPowerW,
127
144
  activePowerLimitationW: inverterSettings?.WMax,
128
145
  state: this.mapOperatingState(inverterData.operatingState),
129
146
  voltageL1: inverterData.voltageAN || 0,
@@ -9,7 +9,7 @@ exports.getSdkVersion = getSdkVersion;
9
9
  /**
10
10
  * Current version of the enyo Energy App SDK.
11
11
  */
12
- exports.SDK_VERSION = '0.0.26';
12
+ exports.SDK_VERSION = '0.0.27';
13
13
  /**
14
14
  * Gets the current SDK version.
15
15
  * @returns The semantic version string of the SDK
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Current version of the enyo Energy App SDK.
7
7
  */
8
- export declare const SDK_VERSION = "0.0.26";
8
+ export declare const SDK_VERSION = "0.0.27";
9
9
  /**
10
10
  * Gets the current SDK version.
11
11
  * @returns The semantic version string of the SDK
@@ -5,6 +5,19 @@ import { EnyoBatteryStateEnum, EnyoDataBusMessageEnum, EnyoInverterStateEnum, En
5
5
  import { EnyoSourceEnum } from "@enyo-energy/energy-app-sdk/dist/types/enyo-source.enum.js";
6
6
  import { EnyoMeterApplianceAvailableFeaturesEnum } from "@enyo-energy/energy-app-sdk/dist/types/enyo-meter-appliance.js";
7
7
  import { EnyoBatteryFeature, EnyoBatteryStorageMode } from "@enyo-energy/energy-app-sdk/dist/types/enyo-battery-appliance.js";
8
+ /**
9
+ * Extract battery discharge power from MPPT data.
10
+ * Returns the discharge power in Watts (positive value), or 0 if no discharge.
11
+ */
12
+ function extractBatteryDischargePowerFromMPPT(mpptDataList) {
13
+ let dischargePowerW = 0;
14
+ for (const mppt of mpptDataList) {
15
+ if (mppt.stringId === 'StDisCha 4' && mppt.dcPower !== undefined && mppt.dcPower > 0) {
16
+ dischargePowerW += mppt.dcPower;
17
+ }
18
+ }
19
+ return dischargePowerW;
20
+ }
8
21
  /**
9
22
  * Base abstract class for all Sunspec devices
10
23
  */
@@ -108,7 +121,11 @@ export class SunspecInverter extends BaseSunspecDevice {
108
121
  const mpptDataList = await this.sunspecClient.readAllMPPTData();
109
122
  const inverterSettings = await this.sunspecClient.readInverterSettings();
110
123
  const dcStrings = this.mapMPPTToStrings(mpptDataList);
124
+ // Calculate battery discharge power to subtract from AC power
125
+ const batteryDischargePowerW = extractBatteryDischargePowerFromMPPT(mpptDataList);
111
126
  if (inverterData) {
127
+ const totalAcPowerW = inverterData.acPower || 0;
128
+ const purePvPowerW = Math.max(0, totalAcPowerW - batteryDischargePowerW);
112
129
  const inverterMessage = {
113
130
  id: randomUUID(),
114
131
  message: EnyoDataBusMessageEnum.InverterValuesUpdateV1,
@@ -119,7 +136,7 @@ export class SunspecInverter extends BaseSunspecDevice {
119
136
  timestampIso: timestamp.toISOString(),
120
137
  resolution,
121
138
  data: {
122
- pvPowerW: inverterData.acPower || 0,
139
+ pvPowerW: purePvPowerW,
123
140
  activePowerLimitationW: inverterSettings?.WMax,
124
141
  state: this.mapOperatingState(inverterData.operatingState),
125
142
  voltageL1: inverterData.voltageAN || 0,
package/dist/version.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Current version of the enyo Energy App SDK.
7
7
  */
8
- export declare const SDK_VERSION = "0.0.26";
8
+ export declare const SDK_VERSION = "0.0.27";
9
9
  /**
10
10
  * Gets the current SDK version.
11
11
  * @returns The semantic version string of the SDK
package/dist/version.js CHANGED
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Current version of the enyo Energy App SDK.
7
7
  */
8
- export const SDK_VERSION = '0.0.26';
8
+ export const SDK_VERSION = '0.0.27';
9
9
  /**
10
10
  * Gets the current SDK version.
11
11
  * @returns The semantic version string of the SDK
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enyo-energy/sunspec-sdk",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "description": "enyo Energy Sunspec SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",