@enyo-energy/energy-app-sdk 1.11.0 → 1.12.0

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.
package/README.md CHANGED
@@ -3597,6 +3597,11 @@ Notes:
3597
3597
  - The same breakdown is available on category-level announcements via
3598
3598
  `context.targets` on `EnyoFlexibilityAnnouncementContext`, so the
3599
3599
  per-appliance and aggregated surfaces stay in step.
3600
+ - The V2 available-power commands carry the same breakdown in the other
3601
+ direction: `targets` on `EnyoAvailablePowerCommandData` lets the energy manager
3602
+ say what the granted envelope is meant for, using the same vocabulary, so a
3603
+ grant can be read against the announcement it answers. It is advisory — the
3604
+ command's `powerW` remains the only limit.
3600
3605
 
3601
3606
  ### Settings Management
3602
3607
 
@@ -911,6 +911,20 @@ export interface EnyoAvailablePowerCommandData {
911
911
  * Must be non-negative. The appliance must not exceed this envelope.
912
912
  */
913
913
  powerW: number;
914
+ /**
915
+ * Optional breakdown of what the granted envelope is meant for and at which
916
+ * power — the same "how much watt for what" vocabulary an appliance uses to
917
+ * announce its flexibility
918
+ * ({@link EnyoDataBusApplianceFlexibilityAnnouncementV1}), so a grant can be
919
+ * read against the announcement it answers.
920
+ *
921
+ * Advisory, and never a second limit: `powerW` alone bounds what the
922
+ * appliance may draw. The shares SHOULD NOT exceed `powerW` in sum, may be
923
+ * partial, and a given target SHOULD appear at most once. An appliance that
924
+ * does not understand a target should fall back to spending the envelope as
925
+ * it sees fit rather than refusing it.
926
+ */
927
+ targets?: EnyoFlexibilityTargetPower[];
914
928
  /** Optional reason why this command was issued */
915
929
  reason?: EnyoDataBusCommandReason;
916
930
  }
@@ -2287,7 +2301,8 @@ export interface EnyoPowerSourceShare {
2287
2301
  /**
2288
2302
  * V2 command announcing the available / maximum active-power envelope (in
2289
2303
  * Watts) a heatpump may draw, together with optional context describing what
2290
- * the power should be used for ({@link EnyoHeatpumpControlPurposeEnum}) and
2304
+ * the power should be used for ({@link EnyoHeatpumpControlPurposeEnum}), how it
2305
+ * splits across targets ({@link EnyoAvailablePowerCommandData.targets}), and
2291
2306
  * where it comes from ({@link EnyoPowerSourceShare}). Supersedes the deprecated
2292
2307
  * {@link EnyoDataBusHeatpumpAvailablePowerAnnouncementV1}.
2293
2308
  *
@@ -2304,6 +2319,14 @@ export interface EnyoDataBusSetHeatpumpAvailablePowerV2 extends EnyoDataBusMessa
2304
2319
  /**
2305
2320
  * What the heatpump should use the announced power for (e.g. DHW boost,
2306
2321
  * pre-heating). Advisory — the appliance may still apply its own logic.
2322
+ *
2323
+ * This names a single intent for the whole envelope, and covers intents
2324
+ * that are not a heat sink at all ({@link
2325
+ * EnyoHeatpumpControlPurposeEnum.PreHeating}). To instead split the
2326
+ * envelope across sinks — "1500 W for hot water, 800 W for the buffer
2327
+ * tank" — use {@link EnyoAvailablePowerCommandData.targets}. The two may
2328
+ * be sent together; they are separate vocabularies and neither is derived
2329
+ * from the other.
2307
2330
  */
2308
2331
  purpose?: EnyoHeatpumpControlPurposeEnum;
2309
2332
  /**
@@ -47,9 +47,10 @@ var EnyoFlexibilityHeatpumpTargetTypeEnum;
47
47
  EnyoFlexibilityHeatpumpTargetTypeEnum["Dhw"] = "dhw";
48
48
  })(EnyoFlexibilityHeatpumpTargetTypeEnum || (exports.EnyoFlexibilityHeatpumpTargetTypeEnum = EnyoFlexibilityHeatpumpTargetTypeEnum = {}));
49
49
  /**
50
- * What an announced share of flexibility is physically aimed at — the open
51
- * vocabulary behind the "how much watt for what" breakdown carried by
52
- * {@link EnyoFlexibilityTargetPower}.
50
+ * What a share of power is physically aimed at — the open vocabulary behind the
51
+ * "how much watt for what" breakdown carried by
52
+ * {@link EnyoFlexibilityTargetPower}, on flexibility announcements and on the
53
+ * available-power commands that answer them alike.
53
54
  *
54
55
  * The members present today all describe heat sinks, because thermal appliances
55
56
  * are the first ones to split their draw. The enum is deliberately **not**
@@ -38,9 +38,10 @@ export declare enum EnyoFlexibilityHeatpumpTargetTypeEnum {
38
38
  Dhw = "dhw"
39
39
  }
40
40
  /**
41
- * What an announced share of flexibility is physically aimed at — the open
42
- * vocabulary behind the "how much watt for what" breakdown carried by
43
- * {@link EnyoFlexibilityTargetPower}.
41
+ * What a share of power is physically aimed at — the open vocabulary behind the
42
+ * "how much watt for what" breakdown carried by
43
+ * {@link EnyoFlexibilityTargetPower}, on flexibility announcements and on the
44
+ * available-power commands that answer them alike.
44
45
  *
45
46
  * The members present today all describe heat sinks, because thermal appliances
46
47
  * are the first ones to split their draw. The enum is deliberately **not**
@@ -99,13 +100,22 @@ export declare enum EnyoFlexibilityOptimizationModeEnum {
99
100
  PriceLimit = "price-limit"
100
101
  }
101
102
  /**
102
- * How much power the announced flexibility would draw for one target — one
103
- * entry of the "how much watt for what" breakdown behind an announcement.
103
+ * How much power is meant for one target — one entry of the "how much watt for
104
+ * what" breakdown.
104
105
  *
105
- * Purely informational context: the announcement's own energy figure stays
106
- * authoritative. A breakdown may be partial its entries need not sum to the
107
- * appliance's full draw — but a given {@link target} SHOULD appear at most once
108
- * per breakdown.
106
+ * Used in both directions, with the same shape and the same vocabulary so the
107
+ * two can be read against each other:
108
+ *
109
+ * - **Appliance → manager**, on a flexibility announcement: what the announced
110
+ * flexibility would be spent on.
111
+ * - **Manager → appliance**, on an available-power command
112
+ * (`EnyoAvailablePowerCommandData.targets`): what the granted envelope is
113
+ * meant for.
114
+ *
115
+ * Informational in both cases — the carrying message's own energy or power
116
+ * figure stays authoritative, and this breakdown never acts as a second limit. A
117
+ * breakdown may be partial, and a given {@link target} SHOULD appear at most
118
+ * once per breakdown.
109
119
  *
110
120
  * @example
111
121
  * ```typescript
@@ -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 = '1.11.0';
12
+ exports.SDK_VERSION = '1.12.0';
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 = "1.11.0";
8
+ export declare const SDK_VERSION = "1.12.0";
9
9
  /**
10
10
  * Gets the current SDK version.
11
11
  * @returns The semantic version string of the SDK
@@ -911,6 +911,20 @@ export interface EnyoAvailablePowerCommandData {
911
911
  * Must be non-negative. The appliance must not exceed this envelope.
912
912
  */
913
913
  powerW: number;
914
+ /**
915
+ * Optional breakdown of what the granted envelope is meant for and at which
916
+ * power — the same "how much watt for what" vocabulary an appliance uses to
917
+ * announce its flexibility
918
+ * ({@link EnyoDataBusApplianceFlexibilityAnnouncementV1}), so a grant can be
919
+ * read against the announcement it answers.
920
+ *
921
+ * Advisory, and never a second limit: `powerW` alone bounds what the
922
+ * appliance may draw. The shares SHOULD NOT exceed `powerW` in sum, may be
923
+ * partial, and a given target SHOULD appear at most once. An appliance that
924
+ * does not understand a target should fall back to spending the envelope as
925
+ * it sees fit rather than refusing it.
926
+ */
927
+ targets?: EnyoFlexibilityTargetPower[];
914
928
  /** Optional reason why this command was issued */
915
929
  reason?: EnyoDataBusCommandReason;
916
930
  }
@@ -2287,7 +2301,8 @@ export interface EnyoPowerSourceShare {
2287
2301
  /**
2288
2302
  * V2 command announcing the available / maximum active-power envelope (in
2289
2303
  * Watts) a heatpump may draw, together with optional context describing what
2290
- * the power should be used for ({@link EnyoHeatpumpControlPurposeEnum}) and
2304
+ * the power should be used for ({@link EnyoHeatpumpControlPurposeEnum}), how it
2305
+ * splits across targets ({@link EnyoAvailablePowerCommandData.targets}), and
2291
2306
  * where it comes from ({@link EnyoPowerSourceShare}). Supersedes the deprecated
2292
2307
  * {@link EnyoDataBusHeatpumpAvailablePowerAnnouncementV1}.
2293
2308
  *
@@ -2304,6 +2319,14 @@ export interface EnyoDataBusSetHeatpumpAvailablePowerV2 extends EnyoDataBusMessa
2304
2319
  /**
2305
2320
  * What the heatpump should use the announced power for (e.g. DHW boost,
2306
2321
  * pre-heating). Advisory — the appliance may still apply its own logic.
2322
+ *
2323
+ * This names a single intent for the whole envelope, and covers intents
2324
+ * that are not a heat sink at all ({@link
2325
+ * EnyoHeatpumpControlPurposeEnum.PreHeating}). To instead split the
2326
+ * envelope across sinks — "1500 W for hot water, 800 W for the buffer
2327
+ * tank" — use {@link EnyoAvailablePowerCommandData.targets}. The two may
2328
+ * be sent together; they are separate vocabularies and neither is derived
2329
+ * from the other.
2307
2330
  */
2308
2331
  purpose?: EnyoHeatpumpControlPurposeEnum;
2309
2332
  /**
@@ -38,9 +38,10 @@ export declare enum EnyoFlexibilityHeatpumpTargetTypeEnum {
38
38
  Dhw = "dhw"
39
39
  }
40
40
  /**
41
- * What an announced share of flexibility is physically aimed at — the open
42
- * vocabulary behind the "how much watt for what" breakdown carried by
43
- * {@link EnyoFlexibilityTargetPower}.
41
+ * What a share of power is physically aimed at — the open vocabulary behind the
42
+ * "how much watt for what" breakdown carried by
43
+ * {@link EnyoFlexibilityTargetPower}, on flexibility announcements and on the
44
+ * available-power commands that answer them alike.
44
45
  *
45
46
  * The members present today all describe heat sinks, because thermal appliances
46
47
  * are the first ones to split their draw. The enum is deliberately **not**
@@ -99,13 +100,22 @@ export declare enum EnyoFlexibilityOptimizationModeEnum {
99
100
  PriceLimit = "price-limit"
100
101
  }
101
102
  /**
102
- * How much power the announced flexibility would draw for one target — one
103
- * entry of the "how much watt for what" breakdown behind an announcement.
103
+ * How much power is meant for one target — one entry of the "how much watt for
104
+ * what" breakdown.
104
105
  *
105
- * Purely informational context: the announcement's own energy figure stays
106
- * authoritative. A breakdown may be partial its entries need not sum to the
107
- * appliance's full draw — but a given {@link target} SHOULD appear at most once
108
- * per breakdown.
106
+ * Used in both directions, with the same shape and the same vocabulary so the
107
+ * two can be read against each other:
108
+ *
109
+ * - **Appliance → manager**, on a flexibility announcement: what the announced
110
+ * flexibility would be spent on.
111
+ * - **Manager → appliance**, on an available-power command
112
+ * (`EnyoAvailablePowerCommandData.targets`): what the granted envelope is
113
+ * meant for.
114
+ *
115
+ * Informational in both cases — the carrying message's own energy or power
116
+ * figure stays authoritative, and this breakdown never acts as a second limit. A
117
+ * breakdown may be partial, and a given {@link target} SHOULD appear at most
118
+ * once per breakdown.
109
119
  *
110
120
  * @example
111
121
  * ```typescript
@@ -44,9 +44,10 @@ export var EnyoFlexibilityHeatpumpTargetTypeEnum;
44
44
  EnyoFlexibilityHeatpumpTargetTypeEnum["Dhw"] = "dhw";
45
45
  })(EnyoFlexibilityHeatpumpTargetTypeEnum || (EnyoFlexibilityHeatpumpTargetTypeEnum = {}));
46
46
  /**
47
- * What an announced share of flexibility is physically aimed at — the open
48
- * vocabulary behind the "how much watt for what" breakdown carried by
49
- * {@link EnyoFlexibilityTargetPower}.
47
+ * What a share of power is physically aimed at — the open vocabulary behind the
48
+ * "how much watt for what" breakdown carried by
49
+ * {@link EnyoFlexibilityTargetPower}, on flexibility announcements and on the
50
+ * available-power commands that answer them alike.
50
51
  *
51
52
  * The members present today all describe heat sinks, because thermal appliances
52
53
  * are the first ones to split their draw. The enum is deliberately **not**
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 = "1.11.0";
8
+ export declare const SDK_VERSION = "1.12.0";
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 = '1.11.0';
8
+ export const SDK_VERSION = '1.12.0';
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/energy-app-sdk",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "enyo Energy App SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",