@enyo-energy/energy-app-sdk 0.0.127 → 0.0.128

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.
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,61 @@
1
+ import { EebusHvacOperationMode, EebusHvacZoneState } from '../../types/enyo-eebus-use-cases.cjs';
2
+ /**
3
+ * Client for the EEBUS **Hvac** feature.
4
+ *
5
+ * The Hvac feature reports heating/cooling operation mode and per-zone state
6
+ * (current temperature, active mode). Pair with the
7
+ * {@link EebusSetpointClient} Setpoint feature to read or write target values.
8
+ * Zone ids align with `Identification.identificationListData`, so callers can
9
+ * map zone state to human-readable zone names.
10
+ *
11
+ * The client exposes both actor roles on a single interface:
12
+ * - **EMS role (outbound):** {@link getOperationMode}, {@link setOperationMode},
13
+ * {@link getZoneStates}, {@link onZoneStateChanged}
14
+ * - **CS role (inbound):** {@link provideOperationMode}, {@link provideZoneStates}
15
+ *
16
+ * Consumers that only act in one role simply never call the other half — there
17
+ * is no `asManager` / `asAppliance` split.
18
+ */
19
+ export interface EebusHvacClient {
20
+ /**
21
+ * Read the active heating/cooling operation mode from the remote node.
22
+ */
23
+ getOperationMode: () => Promise<EebusHvacOperationMode>;
24
+ /**
25
+ * Request the remote node to switch to the given operation mode. The
26
+ * remote may reject modes it does not advertise — verify support via
27
+ * `EebusIdentityService.getSupportedUseCases` before calling.
28
+ * @param mode The operation mode to select on the remote
29
+ */
30
+ setOperationMode: (mode: EebusHvacOperationMode) => Promise<void>;
31
+ /**
32
+ * Read per-zone Hvac state (current temperature, active mode) from the
33
+ * remote node.
34
+ * @returns The state of each zone reported by the remote.
35
+ */
36
+ getZoneStates: () => Promise<EebusHvacZoneState[]>;
37
+ /**
38
+ * Subscribe to per-zone Hvac state updates. The listener fires once per
39
+ * zone whenever the remote republishes its state.
40
+ * @param listener Callback invoked with the updated zone state
41
+ * @returns Listener ID that can be passed to {@link removeListener} to cancel
42
+ */
43
+ onZoneStateChanged: (listener: (state: EebusHvacZoneState) => void) => string;
44
+ /**
45
+ * Register a provider that supplies this device's current operation mode
46
+ * when a remote EMS reads it.
47
+ * @param provider Async callback returning the active operation mode
48
+ */
49
+ provideOperationMode: (provider: () => Promise<EebusHvacOperationMode>) => void;
50
+ /**
51
+ * Register a provider that supplies this device's current per-zone state
52
+ * when a remote EMS reads it.
53
+ * @param provider Async callback returning the current zone-state list
54
+ */
55
+ provideZoneStates: (provider: () => Promise<EebusHvacZoneState[]>) => void;
56
+ /**
57
+ * Remove a listener previously registered via {@link onZoneStateChanged}.
58
+ * @param listenerId The ID returned by the registration method
59
+ */
60
+ removeListener: (listenerId: string) => void;
61
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,59 @@
1
+ import { EebusSetpointValue } from '../../types/enyo-eebus-use-cases.cjs';
2
+ /**
3
+ * Client for the EEBUS **Setpoint** feature.
4
+ *
5
+ * The Setpoint feature carries the target value(s) of a controllable
6
+ * parameter on a remote node — most commonly the per-zone target temperature
7
+ * on a heat pump (paired with the {@link EebusHvacClient} Hvac feature for
8
+ * measured values). Setpoint ids align with the zone ids reported by
9
+ * `Identification.identificationListData`, so callers can map setpoints to
10
+ * human-readable zone names.
11
+ *
12
+ * The client exposes both actor roles on a single interface:
13
+ * - **EMS role (outbound):** {@link getSetpoints}, {@link setSetpoint},
14
+ * {@link onSetpointsChanged}
15
+ * - **CS role (inbound):** {@link provideSetpoints}, {@link onSetpointReceived}
16
+ *
17
+ * Consumers that only act in one role simply never call the other half — there
18
+ * is no `asManager` / `asAppliance` split.
19
+ */
20
+ export interface EebusSetpointClient {
21
+ /**
22
+ * Read the current setpoints reported by the remote node.
23
+ * @returns The full list of setpoints currently published by the remote.
24
+ */
25
+ getSetpoints: () => Promise<EebusSetpointValue[]>;
26
+ /**
27
+ * Send a setpoint to the remote node. The remote applies the value to the
28
+ * setpoint identified by {@link EebusSetpointValue.setpointId}; existing
29
+ * setpoints at other ids are left unchanged.
30
+ * @param value The setpoint to apply
31
+ */
32
+ setSetpoint: (value: EebusSetpointValue) => Promise<void>;
33
+ /**
34
+ * Subscribe to setpoint-list updates from the remote node. The listener is
35
+ * invoked with the full current list whenever the remote republishes.
36
+ * @param listener Callback invoked with the new setpoint list
37
+ * @returns Listener ID that can be passed to {@link removeListener} to cancel
38
+ */
39
+ onSetpointsChanged: (listener: (values: EebusSetpointValue[]) => void) => string;
40
+ /**
41
+ * Register a provider that supplies this device's current setpoints when a
42
+ * remote EMS reads them.
43
+ * @param provider Async callback returning the current setpoint list
44
+ */
45
+ provideSetpoints: (provider: () => Promise<EebusSetpointValue[]>) => void;
46
+ /**
47
+ * Register a handler invoked when a remote EMS writes a setpoint to this
48
+ * device. Implementations should apply the value to the local controller.
49
+ * @param handler Callback invoked with the incoming setpoint
50
+ * @returns Listener ID that can be passed to {@link removeListener} to deregister
51
+ */
52
+ onSetpointReceived: (handler: (value: EebusSetpointValue) => Promise<void>) => string;
53
+ /**
54
+ * Remove a listener previously registered via {@link onSetpointsChanged} or
55
+ * {@link onSetpointReceived}.
56
+ * @param listenerId The ID returned by the registration method
57
+ */
58
+ removeListener: (listenerId: string) => void;
59
+ }
@@ -1,8 +1,10 @@
1
+ import { EebusHvacClient } from './eebus-hvac-client.cjs';
1
2
  import { EebusLpcClient } from './eebus-lpc-client.cjs';
2
3
  import { EebusLppClient } from './eebus-lpp-client.cjs';
3
4
  import { EebusMgcpClient } from './eebus-mgcp-client.cjs';
4
5
  import { EebusMpcClient } from './eebus-mpc-client.cjs';
5
6
  import { EebusOhpcfClient } from './eebus-ohpcf-client.cjs';
7
+ import { EebusSetpointClient } from './eebus-setpoint-client.cjs';
6
8
  /**
7
9
  * Registry of typed EEBUS use-case clients, scoped per remote device (SKI).
8
10
  *
@@ -69,4 +71,18 @@ export interface EebusUseCaseRegistry {
69
71
  * @param ski Subject Key Identifier of the remote node
70
72
  */
71
73
  ohpcf: (ski: string) => EebusOhpcfClient;
74
+ /**
75
+ * Get the **Setpoint** client for a remote node. Manages target values
76
+ * for controllable parameters such as per-zone heat-pump temperature
77
+ * setpoints. Pair with {@link hvac} to read measured values.
78
+ * @param ski Subject Key Identifier of the remote node
79
+ */
80
+ setpoint: (ski: string) => EebusSetpointClient;
81
+ /**
82
+ * Get the **Hvac** client for a remote node. Observes heating/cooling
83
+ * operation mode and per-zone state on a heat-pump appliance. Pair with
84
+ * {@link setpoint} to write target values.
85
+ * @param ski Subject Key Identifier of the remote node
86
+ */
87
+ hvac: (ski: string) => EebusHvacClient;
72
88
  }
@@ -6,11 +6,13 @@ export { EebusDeviceManagement } from './eebus-device-management.cjs';
6
6
  export { EebusIdentityService } from './eebus-identity-service.cjs';
7
7
  export { EebusSpineLowLevel } from './eebus-spine-low-level.cjs';
8
8
  export { EebusUseCaseRegistry } from './eebus-use-case-registry.cjs';
9
+ export { EebusHvacClient } from './eebus-hvac-client.cjs';
9
10
  export { EebusLpcClient } from './eebus-lpc-client.cjs';
10
11
  export { EebusLppClient } from './eebus-lpp-client.cjs';
11
12
  export { EebusMgcpClient } from './eebus-mgcp-client.cjs';
12
13
  export { EebusMpcClient } from './eebus-mpc-client.cjs';
13
14
  export { EebusOhpcfClient } from './eebus-ohpcf-client.cjs';
15
+ export { EebusSetpointClient } from './eebus-setpoint-client.cjs';
14
16
  /**
15
17
  * Interface for EEbus (SHIP/SPINE) device communication in enyo packages.
16
18
  *
@@ -18,7 +20,7 @@ export { EebusOhpcfClient } from './eebus-ohpcf-client.cjs';
18
20
  *
19
21
  * - {@link devices} — SHIP-level device lifecycle: discovery, pairing, connection
20
22
  * - {@link identity} — NID: observable per-node identity, diagnosis state, use-case discovery
21
- * - {@link useCases} — typed use-case clients: LPC, LPP, MGCP, MPC, OHPCF
23
+ * - {@link useCases} — typed use-case clients: LPC, LPP, MGCP, MPC, OHPCF, Setpoint, Hvac
22
24
  * - {@link spine} — low-level SPINE escape hatch for features not yet wrapped
23
25
  *
24
26
  * Dual roles (Energy Management System vs Controllable System) are modelled at
@@ -1027,6 +1027,12 @@ export interface EnyoDataBusHeatpumpTemperaturesV1 extends EnyoDataBusMessage {
1027
1027
  domesticHotWater?: {
1028
1028
  /** Index of the domestic hot water tank */
1029
1029
  index: number;
1030
+ /**
1031
+ * Human-readable zone name (e.g. the `description` from SPINE
1032
+ * `Identification.identificationListData` for this zone index).
1033
+ * Omit when no identification is available.
1034
+ */
1035
+ name?: string;
1030
1036
  /** Target temperature in Celsius */
1031
1037
  targetTemperatureC: number;
1032
1038
  /** Current temperature in Celsius */
@@ -1038,6 +1044,12 @@ export interface EnyoDataBusHeatpumpTemperaturesV1 extends EnyoDataBusMessage {
1038
1044
  heatingCircuits?: {
1039
1045
  /** Index of the heating circuit */
1040
1046
  index: number;
1047
+ /**
1048
+ * Human-readable zone name (e.g. the `description` from SPINE
1049
+ * `Identification.identificationListData` for this zone index).
1050
+ * Omit when no identification is available.
1051
+ */
1052
+ name?: string;
1041
1053
  /** Target temperature in Celsius */
1042
1054
  targetTemperatureC: number;
1043
1055
  /** Current temperature in Celsius */
@@ -185,3 +185,57 @@ export interface EebusOhpcfFlexibility {
185
185
  /** Whether the compressor is currently running */
186
186
  isRunning: boolean;
187
187
  }
188
+ /**
189
+ * A single setpoint reported or written via the EEBUS **Setpoint** feature.
190
+ *
191
+ * Setpoints carry the target value for a controllable parameter on a remote
192
+ * node — most commonly the per-zone target temperature on a heat pump.
193
+ * The {@link setpointId} matches the corresponding zone in
194
+ * `Identification.identificationListData`, so a caller can join setpoints to
195
+ * human-readable zone names.
196
+ */
197
+ export interface EebusSetpointValue {
198
+ /**
199
+ * Setpoint list identifier. Matches the zone index used by
200
+ * `Identification.identificationListData`.
201
+ */
202
+ setpointId: number;
203
+ /** Target value (interpret using {@link unit}; e.g. °C for HVAC zones) */
204
+ value: number;
205
+ /**
206
+ * SPINE unit string for {@link value}, e.g. `'Cel'` for Celsius.
207
+ * Following the SPINE unit catalog.
208
+ */
209
+ unit: string;
210
+ /** Whether the setpoint is currently active on the remote */
211
+ isActive: boolean;
212
+ }
213
+ /**
214
+ * A heating/cooling operation mode advertised or selected via the EEBUS
215
+ * **Hvac** feature. Operation modes are vendor-defined identifiers (e.g.
216
+ * heating, cooling, auto, standby) accompanied by an optional description.
217
+ */
218
+ export interface EebusHvacOperationMode {
219
+ /** SPINE operation mode identifier */
220
+ modeId: number;
221
+ /** Human-readable mode description as advertised by the remote */
222
+ description?: string;
223
+ }
224
+ /**
225
+ * Per-zone state reported via the EEBUS **Hvac** feature.
226
+ *
227
+ * The {@link zoneId} matches the zone index used by
228
+ * `Identification.identificationListData`, so a caller can join zone state to
229
+ * human-readable zone names.
230
+ */
231
+ export interface EebusHvacZoneState {
232
+ /**
233
+ * Zone identifier. Matches the zone index used by
234
+ * `Identification.identificationListData`.
235
+ */
236
+ zoneId: number;
237
+ /** Current measured temperature in Celsius, if reported */
238
+ currentTemperatureC?: number;
239
+ /** Active operation mode for this zone, if reported */
240
+ operationMode?: EebusHvacOperationMode;
241
+ }
@@ -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.127';
12
+ exports.SDK_VERSION = '0.0.128';
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.127";
8
+ export declare const SDK_VERSION = "0.0.128";
9
9
  /**
10
10
  * Gets the current SDK version.
11
11
  * @returns The semantic version string of the SDK
@@ -0,0 +1,61 @@
1
+ import { EebusHvacOperationMode, EebusHvacZoneState } from '../../types/enyo-eebus-use-cases.js';
2
+ /**
3
+ * Client for the EEBUS **Hvac** feature.
4
+ *
5
+ * The Hvac feature reports heating/cooling operation mode and per-zone state
6
+ * (current temperature, active mode). Pair with the
7
+ * {@link EebusSetpointClient} Setpoint feature to read or write target values.
8
+ * Zone ids align with `Identification.identificationListData`, so callers can
9
+ * map zone state to human-readable zone names.
10
+ *
11
+ * The client exposes both actor roles on a single interface:
12
+ * - **EMS role (outbound):** {@link getOperationMode}, {@link setOperationMode},
13
+ * {@link getZoneStates}, {@link onZoneStateChanged}
14
+ * - **CS role (inbound):** {@link provideOperationMode}, {@link provideZoneStates}
15
+ *
16
+ * Consumers that only act in one role simply never call the other half — there
17
+ * is no `asManager` / `asAppliance` split.
18
+ */
19
+ export interface EebusHvacClient {
20
+ /**
21
+ * Read the active heating/cooling operation mode from the remote node.
22
+ */
23
+ getOperationMode: () => Promise<EebusHvacOperationMode>;
24
+ /**
25
+ * Request the remote node to switch to the given operation mode. The
26
+ * remote may reject modes it does not advertise — verify support via
27
+ * `EebusIdentityService.getSupportedUseCases` before calling.
28
+ * @param mode The operation mode to select on the remote
29
+ */
30
+ setOperationMode: (mode: EebusHvacOperationMode) => Promise<void>;
31
+ /**
32
+ * Read per-zone Hvac state (current temperature, active mode) from the
33
+ * remote node.
34
+ * @returns The state of each zone reported by the remote.
35
+ */
36
+ getZoneStates: () => Promise<EebusHvacZoneState[]>;
37
+ /**
38
+ * Subscribe to per-zone Hvac state updates. The listener fires once per
39
+ * zone whenever the remote republishes its state.
40
+ * @param listener Callback invoked with the updated zone state
41
+ * @returns Listener ID that can be passed to {@link removeListener} to cancel
42
+ */
43
+ onZoneStateChanged: (listener: (state: EebusHvacZoneState) => void) => string;
44
+ /**
45
+ * Register a provider that supplies this device's current operation mode
46
+ * when a remote EMS reads it.
47
+ * @param provider Async callback returning the active operation mode
48
+ */
49
+ provideOperationMode: (provider: () => Promise<EebusHvacOperationMode>) => void;
50
+ /**
51
+ * Register a provider that supplies this device's current per-zone state
52
+ * when a remote EMS reads it.
53
+ * @param provider Async callback returning the current zone-state list
54
+ */
55
+ provideZoneStates: (provider: () => Promise<EebusHvacZoneState[]>) => void;
56
+ /**
57
+ * Remove a listener previously registered via {@link onZoneStateChanged}.
58
+ * @param listenerId The ID returned by the registration method
59
+ */
60
+ removeListener: (listenerId: string) => void;
61
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ import { EebusSetpointValue } from '../../types/enyo-eebus-use-cases.js';
2
+ /**
3
+ * Client for the EEBUS **Setpoint** feature.
4
+ *
5
+ * The Setpoint feature carries the target value(s) of a controllable
6
+ * parameter on a remote node — most commonly the per-zone target temperature
7
+ * on a heat pump (paired with the {@link EebusHvacClient} Hvac feature for
8
+ * measured values). Setpoint ids align with the zone ids reported by
9
+ * `Identification.identificationListData`, so callers can map setpoints to
10
+ * human-readable zone names.
11
+ *
12
+ * The client exposes both actor roles on a single interface:
13
+ * - **EMS role (outbound):** {@link getSetpoints}, {@link setSetpoint},
14
+ * {@link onSetpointsChanged}
15
+ * - **CS role (inbound):** {@link provideSetpoints}, {@link onSetpointReceived}
16
+ *
17
+ * Consumers that only act in one role simply never call the other half — there
18
+ * is no `asManager` / `asAppliance` split.
19
+ */
20
+ export interface EebusSetpointClient {
21
+ /**
22
+ * Read the current setpoints reported by the remote node.
23
+ * @returns The full list of setpoints currently published by the remote.
24
+ */
25
+ getSetpoints: () => Promise<EebusSetpointValue[]>;
26
+ /**
27
+ * Send a setpoint to the remote node. The remote applies the value to the
28
+ * setpoint identified by {@link EebusSetpointValue.setpointId}; existing
29
+ * setpoints at other ids are left unchanged.
30
+ * @param value The setpoint to apply
31
+ */
32
+ setSetpoint: (value: EebusSetpointValue) => Promise<void>;
33
+ /**
34
+ * Subscribe to setpoint-list updates from the remote node. The listener is
35
+ * invoked with the full current list whenever the remote republishes.
36
+ * @param listener Callback invoked with the new setpoint list
37
+ * @returns Listener ID that can be passed to {@link removeListener} to cancel
38
+ */
39
+ onSetpointsChanged: (listener: (values: EebusSetpointValue[]) => void) => string;
40
+ /**
41
+ * Register a provider that supplies this device's current setpoints when a
42
+ * remote EMS reads them.
43
+ * @param provider Async callback returning the current setpoint list
44
+ */
45
+ provideSetpoints: (provider: () => Promise<EebusSetpointValue[]>) => void;
46
+ /**
47
+ * Register a handler invoked when a remote EMS writes a setpoint to this
48
+ * device. Implementations should apply the value to the local controller.
49
+ * @param handler Callback invoked with the incoming setpoint
50
+ * @returns Listener ID that can be passed to {@link removeListener} to deregister
51
+ */
52
+ onSetpointReceived: (handler: (value: EebusSetpointValue) => Promise<void>) => string;
53
+ /**
54
+ * Remove a listener previously registered via {@link onSetpointsChanged} or
55
+ * {@link onSetpointReceived}.
56
+ * @param listenerId The ID returned by the registration method
57
+ */
58
+ removeListener: (listenerId: string) => void;
59
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,10 @@
1
+ import { EebusHvacClient } from './eebus-hvac-client.js';
1
2
  import { EebusLpcClient } from './eebus-lpc-client.js';
2
3
  import { EebusLppClient } from './eebus-lpp-client.js';
3
4
  import { EebusMgcpClient } from './eebus-mgcp-client.js';
4
5
  import { EebusMpcClient } from './eebus-mpc-client.js';
5
6
  import { EebusOhpcfClient } from './eebus-ohpcf-client.js';
7
+ import { EebusSetpointClient } from './eebus-setpoint-client.js';
6
8
  /**
7
9
  * Registry of typed EEBUS use-case clients, scoped per remote device (SKI).
8
10
  *
@@ -69,4 +71,18 @@ export interface EebusUseCaseRegistry {
69
71
  * @param ski Subject Key Identifier of the remote node
70
72
  */
71
73
  ohpcf: (ski: string) => EebusOhpcfClient;
74
+ /**
75
+ * Get the **Setpoint** client for a remote node. Manages target values
76
+ * for controllable parameters such as per-zone heat-pump temperature
77
+ * setpoints. Pair with {@link hvac} to read measured values.
78
+ * @param ski Subject Key Identifier of the remote node
79
+ */
80
+ setpoint: (ski: string) => EebusSetpointClient;
81
+ /**
82
+ * Get the **Hvac** client for a remote node. Observes heating/cooling
83
+ * operation mode and per-zone state on a heat-pump appliance. Pair with
84
+ * {@link setpoint} to write target values.
85
+ * @param ski Subject Key Identifier of the remote node
86
+ */
87
+ hvac: (ski: string) => EebusHvacClient;
72
88
  }
@@ -6,11 +6,13 @@ export { EebusDeviceManagement } from './eebus-device-management.js';
6
6
  export { EebusIdentityService } from './eebus-identity-service.js';
7
7
  export { EebusSpineLowLevel } from './eebus-spine-low-level.js';
8
8
  export { EebusUseCaseRegistry } from './eebus-use-case-registry.js';
9
+ export { EebusHvacClient } from './eebus-hvac-client.js';
9
10
  export { EebusLpcClient } from './eebus-lpc-client.js';
10
11
  export { EebusLppClient } from './eebus-lpp-client.js';
11
12
  export { EebusMgcpClient } from './eebus-mgcp-client.js';
12
13
  export { EebusMpcClient } from './eebus-mpc-client.js';
13
14
  export { EebusOhpcfClient } from './eebus-ohpcf-client.js';
15
+ export { EebusSetpointClient } from './eebus-setpoint-client.js';
14
16
  /**
15
17
  * Interface for EEbus (SHIP/SPINE) device communication in enyo packages.
16
18
  *
@@ -18,7 +20,7 @@ export { EebusOhpcfClient } from './eebus-ohpcf-client.js';
18
20
  *
19
21
  * - {@link devices} — SHIP-level device lifecycle: discovery, pairing, connection
20
22
  * - {@link identity} — NID: observable per-node identity, diagnosis state, use-case discovery
21
- * - {@link useCases} — typed use-case clients: LPC, LPP, MGCP, MPC, OHPCF
23
+ * - {@link useCases} — typed use-case clients: LPC, LPP, MGCP, MPC, OHPCF, Setpoint, Hvac
22
24
  * - {@link spine} — low-level SPINE escape hatch for features not yet wrapped
23
25
  *
24
26
  * Dual roles (Energy Management System vs Controllable System) are modelled at
@@ -1027,6 +1027,12 @@ export interface EnyoDataBusHeatpumpTemperaturesV1 extends EnyoDataBusMessage {
1027
1027
  domesticHotWater?: {
1028
1028
  /** Index of the domestic hot water tank */
1029
1029
  index: number;
1030
+ /**
1031
+ * Human-readable zone name (e.g. the `description` from SPINE
1032
+ * `Identification.identificationListData` for this zone index).
1033
+ * Omit when no identification is available.
1034
+ */
1035
+ name?: string;
1030
1036
  /** Target temperature in Celsius */
1031
1037
  targetTemperatureC: number;
1032
1038
  /** Current temperature in Celsius */
@@ -1038,6 +1044,12 @@ export interface EnyoDataBusHeatpumpTemperaturesV1 extends EnyoDataBusMessage {
1038
1044
  heatingCircuits?: {
1039
1045
  /** Index of the heating circuit */
1040
1046
  index: number;
1047
+ /**
1048
+ * Human-readable zone name (e.g. the `description` from SPINE
1049
+ * `Identification.identificationListData` for this zone index).
1050
+ * Omit when no identification is available.
1051
+ */
1052
+ name?: string;
1041
1053
  /** Target temperature in Celsius */
1042
1054
  targetTemperatureC: number;
1043
1055
  /** Current temperature in Celsius */
@@ -185,3 +185,57 @@ export interface EebusOhpcfFlexibility {
185
185
  /** Whether the compressor is currently running */
186
186
  isRunning: boolean;
187
187
  }
188
+ /**
189
+ * A single setpoint reported or written via the EEBUS **Setpoint** feature.
190
+ *
191
+ * Setpoints carry the target value for a controllable parameter on a remote
192
+ * node — most commonly the per-zone target temperature on a heat pump.
193
+ * The {@link setpointId} matches the corresponding zone in
194
+ * `Identification.identificationListData`, so a caller can join setpoints to
195
+ * human-readable zone names.
196
+ */
197
+ export interface EebusSetpointValue {
198
+ /**
199
+ * Setpoint list identifier. Matches the zone index used by
200
+ * `Identification.identificationListData`.
201
+ */
202
+ setpointId: number;
203
+ /** Target value (interpret using {@link unit}; e.g. °C for HVAC zones) */
204
+ value: number;
205
+ /**
206
+ * SPINE unit string for {@link value}, e.g. `'Cel'` for Celsius.
207
+ * Following the SPINE unit catalog.
208
+ */
209
+ unit: string;
210
+ /** Whether the setpoint is currently active on the remote */
211
+ isActive: boolean;
212
+ }
213
+ /**
214
+ * A heating/cooling operation mode advertised or selected via the EEBUS
215
+ * **Hvac** feature. Operation modes are vendor-defined identifiers (e.g.
216
+ * heating, cooling, auto, standby) accompanied by an optional description.
217
+ */
218
+ export interface EebusHvacOperationMode {
219
+ /** SPINE operation mode identifier */
220
+ modeId: number;
221
+ /** Human-readable mode description as advertised by the remote */
222
+ description?: string;
223
+ }
224
+ /**
225
+ * Per-zone state reported via the EEBUS **Hvac** feature.
226
+ *
227
+ * The {@link zoneId} matches the zone index used by
228
+ * `Identification.identificationListData`, so a caller can join zone state to
229
+ * human-readable zone names.
230
+ */
231
+ export interface EebusHvacZoneState {
232
+ /**
233
+ * Zone identifier. Matches the zone index used by
234
+ * `Identification.identificationListData`.
235
+ */
236
+ zoneId: number;
237
+ /** Current measured temperature in Celsius, if reported */
238
+ currentTemperatureC?: number;
239
+ /** Active operation mode for this zone, if reported */
240
+ operationMode?: EebusHvacOperationMode;
241
+ }
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.127";
8
+ export declare const SDK_VERSION = "0.0.128";
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.127';
8
+ export const SDK_VERSION = '0.0.128';
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": "0.0.127",
3
+ "version": "0.0.128",
4
4
  "description": "enyo Energy App SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",