@enyo-energy/energy-app-sdk 0.0.56 → 0.0.58

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.
Files changed (50) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/energy-app-package-definition.d.cts +14 -2
  3. package/dist/cjs/energy-app-permission.type.cjs +2 -0
  4. package/dist/cjs/energy-app-permission.type.d.cts +4 -2
  5. package/dist/cjs/enyo-energy-app-sdk.d.cts +6 -0
  6. package/dist/cjs/implementations/appliances/identifier-strategies.cjs +83 -1
  7. package/dist/cjs/implementations/appliances/identifier-strategies.d.cts +51 -0
  8. package/dist/cjs/index.cjs +20 -0
  9. package/dist/cjs/index.d.cts +18 -0
  10. package/dist/cjs/packages/energy-app-energy-manager.cjs +2 -0
  11. package/dist/cjs/packages/energy-app-energy-manager.d.cts +24 -0
  12. package/dist/cjs/packages/energy-app-modbus.d.cts +2 -2
  13. package/dist/cjs/packages/energy-app-timeseries.cjs +2 -0
  14. package/dist/cjs/packages/energy-app-timeseries.d.cts +124 -0
  15. package/dist/cjs/types/enyo-charger-appliance.cjs +1 -0
  16. package/dist/cjs/types/enyo-charger-appliance.d.cts +1 -0
  17. package/dist/cjs/types/enyo-data-bus-value.cjs +4 -0
  18. package/dist/cjs/types/enyo-data-bus-value.d.cts +99 -1
  19. package/dist/cjs/types/enyo-energy-manager.cjs +27 -0
  20. package/dist/cjs/types/enyo-energy-manager.d.cts +72 -0
  21. package/dist/cjs/types/enyo-onboarding.d.cts +1 -0
  22. package/dist/cjs/types/enyo-timeseries.cjs +2 -0
  23. package/dist/cjs/types/enyo-timeseries.d.cts +211 -0
  24. package/dist/cjs/version.cjs +1 -1
  25. package/dist/cjs/version.d.cts +1 -1
  26. package/dist/energy-app-package-definition.d.ts +14 -2
  27. package/dist/energy-app-permission.type.d.ts +4 -2
  28. package/dist/energy-app-permission.type.js +2 -0
  29. package/dist/enyo-energy-app-sdk.d.ts +6 -0
  30. package/dist/implementations/appliances/identifier-strategies.d.ts +51 -0
  31. package/dist/implementations/appliances/identifier-strategies.js +80 -0
  32. package/dist/index.d.ts +18 -0
  33. package/dist/index.js +20 -0
  34. package/dist/packages/energy-app-energy-manager.d.ts +24 -0
  35. package/dist/packages/energy-app-energy-manager.js +1 -0
  36. package/dist/packages/energy-app-modbus.d.ts +2 -2
  37. package/dist/packages/energy-app-timeseries.d.ts +124 -0
  38. package/dist/packages/energy-app-timeseries.js +1 -0
  39. package/dist/types/enyo-charger-appliance.d.ts +1 -0
  40. package/dist/types/enyo-charger-appliance.js +1 -0
  41. package/dist/types/enyo-data-bus-value.d.ts +99 -1
  42. package/dist/types/enyo-data-bus-value.js +4 -0
  43. package/dist/types/enyo-energy-manager.d.ts +72 -0
  44. package/dist/types/enyo-energy-manager.js +24 -0
  45. package/dist/types/enyo-onboarding.d.ts +1 -0
  46. package/dist/types/enyo-timeseries.d.ts +211 -0
  47. package/dist/types/enyo-timeseries.js +1 -0
  48. package/dist/version.d.ts +1 -1
  49. package/dist/version.js +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -123,6 +123,8 @@ import {
123
123
  const packageDef = defineEnergyAppPackage({
124
124
  version: '1',
125
125
  packageName: 'solar-optimizer',
126
+ // Optional: Internal documentation for developers (not shown to users)
127
+ internalDescription: 'This app optimizes solar energy production using weather forecasts and AI predictions.',
126
128
  logo: './assets/logo.png',
127
129
  categories: [
128
130
  EnergyAppPackageCategory.Inverter,
@@ -142,12 +144,15 @@ const packageDef = defineEnergyAppPackage({
142
144
  description: 'Erweiterte Solarenergie-Optimierung mit KI-gesteuerten Vorhersagen und Echtzeitanpassungen.'
143
145
  }
144
146
  ],
147
+ // Permissions can be objects with internal comments (recommended for documentation)
145
148
  permissions: [
146
- EnergyAppPermissionTypeEnum.Modbus,
147
- EnergyAppPermissionTypeEnum.SendDataBusValues,
148
- EnergyAppPermissionTypeEnum.SubscribeDataBus,
149
- EnergyAppPermissionTypeEnum.Storage
149
+ { permission: EnergyAppPermissionTypeEnum.Modbus, internalComment: 'Required to read inverter registers via Modbus TCP' },
150
+ { permission: EnergyAppPermissionTypeEnum.SendDataBusValues, internalComment: 'Used to publish inverter power values to the data bus' },
151
+ { permission: EnergyAppPermissionTypeEnum.SubscribeDataBus, internalComment: 'Listens for battery state updates' },
152
+ { permission: EnergyAppPermissionTypeEnum.Storage, internalComment: 'Stores configuration and historical optimization data' }
150
153
  ],
154
+ // Note: Simple permission types are also supported for backwards compatibility:
155
+ // permissions: [EnergyAppPermissionTypeEnum.Modbus, EnergyAppPermissionTypeEnum.Storage]
151
156
  options: {
152
157
  restrictedInternetAccess: {
153
158
  origins: ['api.weather.com', 'solar-forecasting.com']
@@ -89,6 +89,16 @@ export interface EnergyAppPackageStoreEntry {
89
89
  /** Detailed description of the package functionality */
90
90
  description: string;
91
91
  }
92
+ /**
93
+ * Defines a permission entry for an Energy App package.
94
+ * Contains the permission type and an internal comment explaining its usage.
95
+ */
96
+ export interface EnergyAppPackagePermission {
97
+ /** The permission type required by the package */
98
+ permission: EnergyAppPermissionType;
99
+ /** Internal documentation describing what this permission is used for */
100
+ internalComment: string;
101
+ }
92
102
  /**
93
103
  * Complete definition for a enyo Energy App package.
94
104
  * This interface defines all the metadata, permissions, and configuration
@@ -99,14 +109,16 @@ export interface EnergyAppPackageDefinition {
99
109
  version: '1';
100
110
  /** Unique identifier for the package */
101
111
  packageName: string;
112
+ /** Internal documentation describing the concept and purpose of this energy app (optional) */
113
+ internalDescription?: string;
102
114
  /** Optional path to the logo */
103
115
  logo?: string;
104
116
  /** Categories that this package belongs to */
105
117
  categories: EnergyAppPackageCategory[];
106
118
  /** Localized store information for different languages */
107
119
  storeEntry: EnergyAppPackageStoreEntry[];
108
- /** Required permissions for this package to function */
109
- permissions: EnergyAppPermissionType[];
120
+ /** Required permissions for this package to function. Can be simple permission types or objects with internal comments */
121
+ permissions: (EnergyAppPermissionType | EnergyAppPackagePermission)[];
110
122
  /** Optional configuration settings */
111
123
  options?: EnergyAppPackageOptions;
112
124
  /** The version of the enyo SDK used to build this package (automatically injected) */
@@ -21,4 +21,6 @@ var EnergyAppPermissionTypeEnum;
21
21
  EnergyAppPermissionTypeEnum["SecretManager"] = "SecretManager";
22
22
  EnergyAppPermissionTypeEnum["LocationZipCode"] = "LocationZipCode";
23
23
  EnergyAppPermissionTypeEnum["LocationCoordinates"] = "LocationCoordinates";
24
+ EnergyAppPermissionTypeEnum["Timeseries"] = "Timeseries";
25
+ EnergyAppPermissionTypeEnum["EnergyManagerInfo"] = "EnergyManagerInfo";
24
26
  })(EnergyAppPermissionTypeEnum || (exports.EnergyAppPermissionTypeEnum = EnergyAppPermissionTypeEnum = {}));
@@ -1,4 +1,4 @@
1
- export type EnergyAppPermissionType = 'RestrictedInternetAccess' | 'NetworkDeviceDiscovery' | 'NetworkDeviceSearch' | 'NetworkDeviceAccess' | 'Modbus' | 'Storage' | 'Appliance' | 'AllAppliances' | 'SendDataBusValues' | 'SubscribeDataBus' | 'SendDataBusCommands' | 'OcppServer' | 'ChargingCard' | 'Vehicle' | 'Charge' | 'SecretManager' | 'LocationZipCode' | 'LocationCoordinates';
1
+ export type EnergyAppPermissionType = 'RestrictedInternetAccess' | 'NetworkDeviceDiscovery' | 'NetworkDeviceSearch' | 'NetworkDeviceAccess' | 'Modbus' | 'Storage' | 'Appliance' | 'AllAppliances' | 'SendDataBusValues' | 'SubscribeDataBus' | 'SendDataBusCommands' | 'OcppServer' | 'ChargingCard' | 'Vehicle' | 'Charge' | 'SecretManager' | 'LocationZipCode' | 'LocationCoordinates' | 'Timeseries' | 'EnergyManagerInfo';
2
2
  export declare enum EnergyAppPermissionTypeEnum {
3
3
  RestrictedInternetAccess = "RestrictedInternetAccess",
4
4
  NetworkDeviceDiscovery = "NetworkDeviceDiscovery",
@@ -17,5 +17,7 @@ export declare enum EnergyAppPermissionTypeEnum {
17
17
  Charge = "Charge",
18
18
  SecretManager = "SecretManager",
19
19
  LocationZipCode = "LocationZipCode",
20
- LocationCoordinates = "LocationCoordinates"
20
+ LocationCoordinates = "LocationCoordinates",
21
+ Timeseries = "Timeseries",
22
+ EnergyManagerInfo = "EnergyManagerInfo"
21
23
  }
@@ -15,7 +15,9 @@ import { EnergyAppNotification } from "./packages/energy-app-notification.cjs";
15
15
  import { EnergyAppSecretManager } from "./packages/energy-app-secret-manager.cjs";
16
16
  import { EnergyAppLocation } from "./packages/energy-app-location.cjs";
17
17
  import { EnergyAppOnboarding } from "./packages/energy-app-onboarding.cjs";
18
+ import { EnergyAppTimeseries } from "./packages/energy-app-timeseries.cjs";
18
19
  import { EnyoPackageChannel } from "./enyo-package-channel.cjs";
20
+ import { EnergyAppEnergyManager } from "./packages/energy-app-energy-manager.cjs";
19
21
  export declare enum EnergyAppStateEnum {
20
22
  Launching = "launching",
21
23
  Running = "running",
@@ -74,4 +76,8 @@ export interface EnyoEnergyAppSdk {
74
76
  useLocation: () => EnergyAppLocation;
75
77
  /** Get the Onboarding API */
76
78
  useOnboarding: () => EnergyAppOnboarding;
79
+ /** Get the Timeseries API for querying historical energy data */
80
+ useTimeseries: () => EnergyAppTimeseries;
81
+ /** Get the Energy Manager API for retrieving energy manager info and capabilities */
82
+ useEnergyManager: () => EnergyAppEnergyManager;
77
83
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdentifierStrategyFactory = exports.FallbackIdentifierStrategy = exports.CompositeIdentifierStrategy = exports.CustomMetadataStrategy = exports.ChargePointIdStrategy = exports.HostnameStrategy = exports.TypeStrategy = exports.SerialNumberStrategy = void 0;
3
+ exports.IdentifierStrategyFactory = exports.AndIdentifierStrategy = exports.OrIdentifierStrategy = exports.FallbackIdentifierStrategy = exports.CompositeIdentifierStrategy = exports.CustomMetadataStrategy = exports.ChargePointIdStrategy = exports.HostnameStrategy = exports.TypeStrategy = exports.SerialNumberStrategy = void 0;
4
4
  /**
5
5
  * Strategy that uses the appliance's serial number as the identifier.
6
6
  * Useful when appliances can move between network devices.
@@ -150,6 +150,73 @@ class FallbackIdentifierStrategy {
150
150
  }
151
151
  }
152
152
  exports.FallbackIdentifierStrategy = FallbackIdentifierStrategy;
153
+ /**
154
+ * Strategy that tries multiple strategies and returns the first available identifier.
155
+ * This is an OR operation - any strategy succeeding is sufficient.
156
+ */
157
+ class OrIdentifierStrategy {
158
+ strategies;
159
+ name;
160
+ /**
161
+ * Creates a strategy that tries multiple strategies in order.
162
+ * @param strategies The strategies to try (OR logic)
163
+ */
164
+ constructor(strategies) {
165
+ this.strategies = strategies;
166
+ this.name = `or(${strategies.map(s => s.name).join('|')})`;
167
+ }
168
+ /**
169
+ * Tries strategies in order and returns the first available identifier.
170
+ * @param appliance The appliance to extract identifiers from
171
+ * @returns The first available identifier or undefined if none match
172
+ */
173
+ extract(appliance) {
174
+ for (const strategy of this.strategies) {
175
+ const value = strategy.extract(appliance);
176
+ if (value) {
177
+ return value;
178
+ }
179
+ }
180
+ return undefined;
181
+ }
182
+ }
183
+ exports.OrIdentifierStrategy = OrIdentifierStrategy;
184
+ /**
185
+ * Strategy that combines multiple strategies into a single composite identifier.
186
+ * This is an AND operation - all strategies must return a value.
187
+ */
188
+ class AndIdentifierStrategy {
189
+ strategies;
190
+ separator;
191
+ name;
192
+ /**
193
+ * Creates a strategy that requires all sub-strategies to match.
194
+ * @param strategies The strategies to combine (AND logic)
195
+ * @param separator The separator to use between identifier parts
196
+ */
197
+ constructor(strategies, separator = ':') {
198
+ this.strategies = strategies;
199
+ this.separator = separator;
200
+ this.name = `and(${strategies.map(s => s.name).join('&')})`;
201
+ }
202
+ /**
203
+ * Extracts and combines identifiers from all strategies.
204
+ * @param appliance The appliance to extract identifiers from
205
+ * @returns The combined identifier or undefined if any part is missing
206
+ */
207
+ extract(appliance) {
208
+ const parts = [];
209
+ for (const strategy of this.strategies) {
210
+ const value = strategy.extract(appliance);
211
+ if (!value) {
212
+ return undefined; // All parts must be present (AND logic)
213
+ }
214
+ parts.push(value);
215
+ }
216
+ return parts.join(this.separator);
217
+ }
218
+ }
219
+ exports.AndIdentifierStrategy = AndIdentifierStrategy;
153
220
  /**
154
221
  * Factory class for creating common identifier strategies.
155
222
  */
@@ -194,5 +261,20 @@ class IdentifierStrategyFactory {
194
261
  static fallback(strategies) {
195
262
  return new FallbackIdentifierStrategy(strategies);
196
263
  }
264
+ /**
265
+ * Creates an OR strategy that returns the first available identifier.
266
+ * @param strategies The strategies to try
267
+ */
268
+ static or(strategies) {
269
+ return new OrIdentifierStrategy(strategies);
270
+ }
271
+ /**
272
+ * Creates an AND strategy that combines all identifiers.
273
+ * @param strategies The strategies to combine
274
+ * @param separator The separator between parts
275
+ */
276
+ static and(strategies, separator) {
277
+ return new AndIdentifierStrategy(strategies, separator);
278
+ }
197
279
  }
198
280
  exports.IdentifierStrategyFactory = IdentifierStrategyFactory;
@@ -119,6 +119,46 @@ export declare class FallbackIdentifierStrategy implements IdentifierStrategy {
119
119
  */
120
120
  extract(appliance: EnyoAppliance | ApplianceConfig): string | undefined;
121
121
  }
122
+ /**
123
+ * Strategy that tries multiple strategies and returns the first available identifier.
124
+ * This is an OR operation - any strategy succeeding is sufficient.
125
+ */
126
+ export declare class OrIdentifierStrategy implements IdentifierStrategy {
127
+ private strategies;
128
+ name: string;
129
+ /**
130
+ * Creates a strategy that tries multiple strategies in order.
131
+ * @param strategies The strategies to try (OR logic)
132
+ */
133
+ constructor(strategies: IdentifierStrategy[]);
134
+ /**
135
+ * Tries strategies in order and returns the first available identifier.
136
+ * @param appliance The appliance to extract identifiers from
137
+ * @returns The first available identifier or undefined if none match
138
+ */
139
+ extract(appliance: EnyoAppliance | ApplianceConfig): string | undefined;
140
+ }
141
+ /**
142
+ * Strategy that combines multiple strategies into a single composite identifier.
143
+ * This is an AND operation - all strategies must return a value.
144
+ */
145
+ export declare class AndIdentifierStrategy implements IdentifierStrategy {
146
+ private strategies;
147
+ private separator;
148
+ name: string;
149
+ /**
150
+ * Creates a strategy that requires all sub-strategies to match.
151
+ * @param strategies The strategies to combine (AND logic)
152
+ * @param separator The separator to use between identifier parts
153
+ */
154
+ constructor(strategies: IdentifierStrategy[], separator?: string);
155
+ /**
156
+ * Extracts and combines identifiers from all strategies.
157
+ * @param appliance The appliance to extract identifiers from
158
+ * @returns The combined identifier or undefined if any part is missing
159
+ */
160
+ extract(appliance: EnyoAppliance | ApplianceConfig): string | undefined;
161
+ }
122
162
  /**
123
163
  * Factory class for creating common identifier strategies.
124
164
  */
@@ -149,4 +189,15 @@ export declare class IdentifierStrategyFactory {
149
189
  * @param strategies The strategies to try
150
190
  */
151
191
  static fallback(strategies: IdentifierStrategy[]): FallbackIdentifierStrategy;
192
+ /**
193
+ * Creates an OR strategy that returns the first available identifier.
194
+ * @param strategies The strategies to try
195
+ */
196
+ static or(strategies: IdentifierStrategy[]): OrIdentifierStrategy;
197
+ /**
198
+ * Creates an AND strategy that combines all identifiers.
199
+ * @param strategies The strategies to combine
200
+ * @param separator The separator between parts
201
+ */
202
+ static and(strategies: IdentifierStrategy[], separator?: string): AndIdentifierStrategy;
152
203
  }
@@ -31,6 +31,9 @@ __exportStar(require("./types/enyo-location.cjs"), exports);
31
31
  __exportStar(require("./implementations/appliances/appliance-manager.cjs"), exports);
32
32
  __exportStar(require("./implementations/appliances/identifier-strategies.cjs"), exports);
33
33
  __exportStar(require("./enyo-package-channel.cjs"), exports);
34
+ __exportStar(require("./types/enyo-timeseries.cjs"), exports);
35
+ __exportStar(require("./types/enyo-energy-manager.cjs"), exports);
36
+ __exportStar(require("./packages/energy-app-energy-manager.cjs"), exports);
34
37
  class EnergyApp {
35
38
  energyAppSdk;
36
39
  constructor() {
@@ -127,6 +130,23 @@ class EnergyApp {
127
130
  useLocation() {
128
131
  return this.energyAppSdk.useLocation();
129
132
  }
133
+ /**
134
+ * Gets the Timeseries API for querying historical energy data.
135
+ * Provides methods to retrieve aggregated timeseries data with 15-minute bucket granularity
136
+ * for various energy metrics including PV production, battery state, meter values, and grid power.
137
+ * @returns The Timeseries API instance
138
+ */
139
+ useTimeseries() {
140
+ return this.energyAppSdk.useTimeseries();
141
+ }
142
+ /**
143
+ * Gets the Energy Manager API for retrieving information about the active energy manager.
144
+ * Provides methods to check the current energy manager and its supported features.
145
+ * @returns The Energy Manager API instance
146
+ */
147
+ useEnergyManager() {
148
+ return this.energyAppSdk.useEnergyManager();
149
+ }
130
150
  /**
131
151
  * Gets the current SDK version.
132
152
  * @returns The semantic version string of the SDK
@@ -16,7 +16,9 @@ import { EnergyAppNotification } from "./packages/energy-app-notification.cjs";
16
16
  import { EnergyAppSecretManager } from "./packages/energy-app-secret-manager.cjs";
17
17
  import { EnergyAppLocation } from "./packages/energy-app-location.cjs";
18
18
  import { EnergyAppOnboarding } from "./packages/energy-app-onboarding.cjs";
19
+ import { EnergyAppTimeseries } from "./packages/energy-app-timeseries.cjs";
19
20
  import { EnyoPackageChannel } from "./enyo-package-channel.cjs";
21
+ import { EnergyAppEnergyManager } from "./packages/energy-app-energy-manager.cjs";
20
22
  export * from './energy-app-package-definition.cjs';
21
23
  export * from './version.cjs';
22
24
  export * from './implementations/ocpp/ocpp16.cjs';
@@ -32,6 +34,9 @@ export * from './types/enyo-location.cjs';
32
34
  export * from './implementations/appliances/appliance-manager.cjs';
33
35
  export * from './implementations/appliances/identifier-strategies.cjs';
34
36
  export * from './enyo-package-channel.cjs';
37
+ export * from './types/enyo-timeseries.cjs';
38
+ export * from './types/enyo-energy-manager.cjs';
39
+ export * from './packages/energy-app-energy-manager.cjs';
35
40
  export declare class EnergyApp implements EnyoEnergyAppSdk {
36
41
  private readonly energyAppSdk;
37
42
  constructor();
@@ -67,6 +72,19 @@ export declare class EnergyApp implements EnyoEnergyAppSdk {
67
72
  * @returns The Location API instance
68
73
  */
69
74
  useLocation(): EnergyAppLocation;
75
+ /**
76
+ * Gets the Timeseries API for querying historical energy data.
77
+ * Provides methods to retrieve aggregated timeseries data with 15-minute bucket granularity
78
+ * for various energy metrics including PV production, battery state, meter values, and grid power.
79
+ * @returns The Timeseries API instance
80
+ */
81
+ useTimeseries(): EnergyAppTimeseries;
82
+ /**
83
+ * Gets the Energy Manager API for retrieving information about the active energy manager.
84
+ * Provides methods to check the current energy manager and its supported features.
85
+ * @returns The Energy Manager API instance
86
+ */
87
+ useEnergyManager(): EnergyAppEnergyManager;
70
88
  /**
71
89
  * Gets the current SDK version.
72
90
  * @returns The semantic version string of the SDK
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ import { EnergyManagerInfo } from "../types/enyo-energy-manager.cjs";
2
+ /**
3
+ * Interface for retrieving energy manager information and capabilities.
4
+ * The energy manager is responsible for optimizing energy usage across appliances.
5
+ */
6
+ export interface EnergyAppEnergyManager {
7
+ /**
8
+ * Gets information about the currently active energy manager.
9
+ * Returns null if no energy manager is configured.
10
+ *
11
+ * @returns Promise resolving to energy manager info or null if no energy manager is configured
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const energyManager = energyApp.useEnergyManager();
16
+ * const info = await energyManager.getEnergyManagerInfo();
17
+ * if (info) {
18
+ * console.log(`Energy Manager: ${info.name}`);
19
+ * console.log(`Features: ${info.features.join(', ')}`);
20
+ * }
21
+ * ```
22
+ */
23
+ getEnergyManagerInfo(): Promise<EnergyManagerInfo | null>;
24
+ }
@@ -2,8 +2,8 @@
2
2
  * Configuration options for establishing a Modbus connection.
3
3
  */
4
4
  export interface ModbusOptions {
5
- /** Hostname or IP address of the Modbus server */
6
- host: string;
5
+ /** Hostname or IP address of the Modbus server. If set as an array, we use the other hosts as fallbacks */
6
+ host: string | string[];
7
7
  /** Port number for the Modbus connection (default: 502) */
8
8
  port?: number;
9
9
  /** Connection timeout in milliseconds */
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,124 @@
1
+ import { DataBusMessageQueryRequest, DataBusMessageQueryResponse, PvProductionTimeseriesRequest, PvProductionTimeseriesResponse, BatterySocTimeseriesRequest, BatterySocTimeseriesResponse, BatteryPowerTimeseriesRequest, BatteryPowerTimeseriesResponse, MeterValuesTimeseriesRequest, MeterValuesTimeseriesResponse, GridPowerTimeseriesRequest, GridPowerTimeseriesResponse } from "../types/enyo-timeseries.cjs";
2
+ /**
3
+ * Interface for querying historical energy data with 15-minute bucket granularity.
4
+ * Provides methods to retrieve aggregated timeseries data for various energy metrics
5
+ * including PV production, battery state, meter values, and grid power.
6
+ *
7
+ * All aggregated methods return data in 15-minute buckets aligned to clock time
8
+ * (:00, :15, :30, :45). Power values (W) represent time-weighted averages within
9
+ * each bucket, while energy values (Wh) represent cumulative sums.
10
+ *
11
+ * Date ranges use inclusive start and exclusive end timestamps.
12
+ */
13
+ export interface EnergyAppTimeseries {
14
+ /**
15
+ * Queries raw data bus messages for a specific appliance.
16
+ * Supports pagination and filtering by message type.
17
+ *
18
+ * @param request - The query parameters including appliance ID, date range, and optional filters
19
+ * @returns Promise resolving to the matching messages with pagination metadata
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const response = await timeseries.queryDataBusMessages({
24
+ * applianceId: 'inverter-001',
25
+ * startDateIso: '2024-01-01T00:00:00Z',
26
+ * endDateIso: '2024-01-02T00:00:00Z',
27
+ * messageTypes: [EnyoDataBusMessageEnum.InverterValuesUpdateV1],
28
+ * limit: 100
29
+ * });
30
+ * ```
31
+ */
32
+ queryDataBusMessages(request: DataBusMessageQueryRequest): Promise<DataBusMessageQueryResponse>;
33
+ /**
34
+ * Retrieves PV production timeseries data aggregated in 15-minute buckets.
35
+ * Returns both instantaneous power (W) and cumulative energy (Wh) values.
36
+ *
37
+ * @param request - The query parameters including date range and optional appliance filter
38
+ * @returns Promise resolving to PV production entries and total production
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const response = await timeseries.getPvProductionTimeseries({
43
+ * startDateIso: '2024-01-01T00:00:00Z',
44
+ * endDateIso: '2024-01-02T00:00:00Z'
45
+ * });
46
+ * console.log(`Total production: ${response.totalPvProductionWh} Wh`);
47
+ * ```
48
+ */
49
+ getPvProductionTimeseries(request: PvProductionTimeseriesRequest): Promise<PvProductionTimeseriesResponse>;
50
+ /**
51
+ * Retrieves battery state of charge (SOC) timeseries data aggregated in 15-minute buckets.
52
+ * Returns average, minimum, and maximum SOC values for each bucket.
53
+ *
54
+ * @param request - The query parameters including date range and optional appliance filter
55
+ * @returns Promise resolving to battery SOC entries and overall average SOC
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const response = await timeseries.getBatterySocTimeseries({
60
+ * startDateIso: '2024-01-01T00:00:00Z',
61
+ * endDateIso: '2024-01-02T00:00:00Z',
62
+ * applianceIds: ['battery-001']
63
+ * });
64
+ * console.log(`Average SOC: ${response.averageSoC}%`);
65
+ * ```
66
+ */
67
+ getBatterySocTimeseries(request: BatterySocTimeseriesRequest): Promise<BatterySocTimeseriesResponse>;
68
+ /**
69
+ * Retrieves battery power timeseries data aggregated in 15-minute buckets.
70
+ * Positive values indicate discharge (consumption from battery),
71
+ * negative values indicate charge (energy into battery).
72
+ *
73
+ * @param request - The query parameters including date range and optional appliance filter
74
+ * @returns Promise resolving to battery power entries with total charge and discharge amounts
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const response = await timeseries.getBatteryPowerTimeseries({
79
+ * startDateIso: '2024-01-01T00:00:00Z',
80
+ * endDateIso: '2024-01-02T00:00:00Z'
81
+ * });
82
+ * console.log(`Total discharged: ${response.totalDischargeWh} Wh`);
83
+ * console.log(`Total charged: ${response.totalChargeWh} Wh`);
84
+ * ```
85
+ */
86
+ getBatteryPowerTimeseries(request: BatteryPowerTimeseriesRequest): Promise<BatteryPowerTimeseriesResponse>;
87
+ /**
88
+ * Retrieves meter values timeseries data aggregated in 15-minute buckets.
89
+ * Returns grid consumption and feed-in energy values.
90
+ *
91
+ * @param request - The query parameters including date range and optional appliance filter
92
+ * @returns Promise resolving to meter value entries with total consumption and feed-in
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const response = await timeseries.getMeterValuesTimeseries({
97
+ * startDateIso: '2024-01-01T00:00:00Z',
98
+ * endDateIso: '2024-01-02T00:00:00Z'
99
+ * });
100
+ * console.log(`Grid consumption: ${response.totalGridConsumptionWh} Wh`);
101
+ * console.log(`Grid feed-in: ${response.totalGridFeedInWh} Wh`);
102
+ * ```
103
+ */
104
+ getMeterValuesTimeseries(request: MeterValuesTimeseriesRequest): Promise<MeterValuesTimeseriesResponse>;
105
+ /**
106
+ * Retrieves grid power timeseries data aggregated in 15-minute buckets.
107
+ * Positive values indicate import (consumption from grid),
108
+ * negative values indicate export (feed-in to grid).
109
+ *
110
+ * @param request - The query parameters including date range and optional appliance filter
111
+ * @returns Promise resolving to grid power entries with total import and export amounts
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * const response = await timeseries.getGridPowerTimeseries({
116
+ * startDateIso: '2024-01-01T00:00:00Z',
117
+ * endDateIso: '2024-01-02T00:00:00Z'
118
+ * });
119
+ * console.log(`Total imported: ${response.totalImportWh} Wh`);
120
+ * console.log(`Total exported: ${response.totalExportWh} Wh`);
121
+ * ```
122
+ */
123
+ getGridPowerTimeseries(request: GridPowerTimeseriesRequest): Promise<GridPowerTimeseriesResponse>;
124
+ }
@@ -5,6 +5,7 @@ var EnyoChargerApplianceStatusEnum;
5
5
  (function (EnyoChargerApplianceStatusEnum) {
6
6
  EnyoChargerApplianceStatusEnum["Available"] = "Available";
7
7
  EnyoChargerApplianceStatusEnum["Occupied"] = "Occupied";
8
+ EnyoChargerApplianceStatusEnum["Charging"] = "Charging";
8
9
  EnyoChargerApplianceStatusEnum["Suspended"] = "Suspended";
9
10
  EnyoChargerApplianceStatusEnum["Finishing"] = "Finishing";
10
11
  EnyoChargerApplianceStatusEnum["Reserved"] = "Reserved";
@@ -1,6 +1,7 @@
1
1
  export declare enum EnyoChargerApplianceStatusEnum {
2
2
  Available = "Available",
3
3
  Occupied = "Occupied",
4
+ Charging = "Charging",
4
5
  Suspended = "Suspended",
5
6
  Finishing = "Finishing",
6
7
  Reserved = "Reserved",
@@ -101,4 +101,8 @@ var EnyoDataBusMessageEnum;
101
101
  EnyoDataBusMessageEnum["StopChargeV1"] = "StopChargeV1";
102
102
  EnyoDataBusMessageEnum["AggregatedStateUpdateV1"] = "AggregatedStateUpdateV1";
103
103
  EnyoDataBusMessageEnum["EnergyTariffUpdateV1"] = "EnergyTariffUpdateV1";
104
+ EnyoDataBusMessageEnum["ChargeFinishedV1"] = "ChargeFinishedV1";
105
+ EnyoDataBusMessageEnum["ChargerStatusChangedV1"] = "ChargerStatusChangedV1";
106
+ EnyoDataBusMessageEnum["RequestPreviewChargingScheduleV1"] = "RequestPreviewChargingScheduleV1";
107
+ EnyoDataBusMessageEnum["PreviewChargingScheduleResponseV1"] = "PreviewChargingScheduleResponseV1";
104
108
  })(EnyoDataBusMessageEnum || (exports.EnyoDataBusMessageEnum = EnyoDataBusMessageEnum = {}));