@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.
- package/dist/cjs/packages/eebus/eebus-hvac-client.cjs +2 -0
- package/dist/cjs/packages/eebus/eebus-hvac-client.d.cts +61 -0
- package/dist/cjs/packages/eebus/eebus-setpoint-client.cjs +2 -0
- package/dist/cjs/packages/eebus/eebus-setpoint-client.d.cts +59 -0
- package/dist/cjs/packages/eebus/eebus-use-case-registry.d.cts +16 -0
- package/dist/cjs/packages/eebus/energy-app-eebus.d.cts +3 -1
- package/dist/cjs/types/enyo-data-bus-value.d.cts +12 -0
- package/dist/cjs/types/enyo-eebus-use-cases.d.cts +54 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/cjs/version.d.cts +1 -1
- package/dist/packages/eebus/eebus-hvac-client.d.ts +61 -0
- package/dist/packages/eebus/eebus-hvac-client.js +1 -0
- package/dist/packages/eebus/eebus-setpoint-client.d.ts +59 -0
- package/dist/packages/eebus/eebus-setpoint-client.js +1 -0
- package/dist/packages/eebus/eebus-use-case-registry.d.ts +16 -0
- package/dist/packages/eebus/energy-app-eebus.d.ts +3 -1
- package/dist/types/enyo-data-bus-value.d.ts +12 -0
- package/dist/types/enyo-eebus-use-cases.d.ts +54 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -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,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
|
+
}
|
package/dist/cjs/version.cjs
CHANGED
|
@@ -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.
|
|
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
|
package/dist/cjs/version.d.cts
CHANGED
|
@@ -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
package/dist/version.js
CHANGED