matterbridge-dyson-robot 0.1.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/CHANGELOG.md +15 -0
- package/LICENSE +14 -0
- package/README.md +365 -0
- package/dist/async-eventemitter.d.ts +9 -0
- package/dist/async-eventemitter.d.ts.map +1 -0
- package/dist/async-eventemitter.js +35 -0
- package/dist/async-eventemitter.js.map +1 -0
- package/dist/check-configuration.d.ts +5 -0
- package/dist/check-configuration.d.ts.map +1 -0
- package/dist/check-configuration.js +35 -0
- package/dist/check-configuration.js.map +1 -0
- package/dist/check-versions.d.ts +3 -0
- package/dist/check-versions.d.ts.map +1 -0
- package/dist/check-versions.js +31 -0
- package/dist/check-versions.js.map +1 -0
- package/dist/config-types.d.ts +48 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-types.js +4 -0
- package/dist/config-types.js.map +1 -0
- package/dist/decorator-changed.d.ts +16 -0
- package/dist/decorator-changed.d.ts.map +1 -0
- package/dist/decorator-changed.js +62 -0
- package/dist/decorator-changed.js.map +1 -0
- package/dist/dyson-360-msg-types.d.ts +113 -0
- package/dist/dyson-360-msg-types.d.ts.map +1 -0
- package/dist/dyson-360-msg-types.js +4 -0
- package/dist/dyson-360-msg-types.js.map +1 -0
- package/dist/dyson-360-types.d.ts +76 -0
- package/dist/dyson-360-types.d.ts.map +1 -0
- package/dist/dyson-360-types.js +72 -0
- package/dist/dyson-360-types.js.map +1 -0
- package/dist/dyson-air-msg-types.d.ts +99 -0
- package/dist/dyson-air-msg-types.d.ts.map +1 -0
- package/dist/dyson-air-msg-types.js +4 -0
- package/dist/dyson-air-msg-types.js.map +1 -0
- package/dist/dyson-air-sensor-types.d.ts +59 -0
- package/dist/dyson-air-sensor-types.d.ts.map +1 -0
- package/dist/dyson-air-sensor-types.js +4 -0
- package/dist/dyson-air-sensor-types.js.map +1 -0
- package/dist/dyson-air-state-types.d.ts +96 -0
- package/dist/dyson-air-state-types.d.ts.map +1 -0
- package/dist/dyson-air-state-types.js +4 -0
- package/dist/dyson-air-state-types.js.map +1 -0
- package/dist/dyson-air-types.d.ts +325 -0
- package/dist/dyson-air-types.d.ts.map +1 -0
- package/dist/dyson-air-types.js +382 -0
- package/dist/dyson-air-types.js.map +1 -0
- package/dist/dyson-device-360-base.d.ts +35 -0
- package/dist/dyson-device-360-base.d.ts.map +1 -0
- package/dist/dyson-device-360-base.js +233 -0
- package/dist/dyson-device-360-base.js.map +1 -0
- package/dist/dyson-device-360-commands.d.ts +7 -0
- package/dist/dyson-device-360-commands.d.ts.map +1 -0
- package/dist/dyson-device-360-commands.js +129 -0
- package/dist/dyson-device-360-commands.js.map +1 -0
- package/dist/dyson-device-360-faults-table.d.ts +20 -0
- package/dist/dyson-device-360-faults-table.d.ts.map +1 -0
- package/dist/dyson-device-360-faults-table.js +161 -0
- package/dist/dyson-device-360-faults-table.js.map +1 -0
- package/dist/dyson-device-360-faults.d.ts +10 -0
- package/dist/dyson-device-360-faults.d.ts.map +1 -0
- package/dist/dyson-device-360-faults.js +123 -0
- package/dist/dyson-device-360-faults.js.map +1 -0
- package/dist/dyson-device-360.d.ts +38 -0
- package/dist/dyson-device-360.d.ts.map +1 -0
- package/dist/dyson-device-360.js +45 -0
- package/dist/dyson-device-360.js.map +1 -0
- package/dist/dyson-device-air-base.d.ts +41 -0
- package/dist/dyson-device-air-base.d.ts.map +1 -0
- package/dist/dyson-device-air-base.js +446 -0
- package/dist/dyson-device-air-base.js.map +1 -0
- package/dist/dyson-device-air-heat.d.ts +52 -0
- package/dist/dyson-device-air-heat.d.ts.map +1 -0
- package/dist/dyson-device-air-heat.js +71 -0
- package/dist/dyson-device-air-heat.js.map +1 -0
- package/dist/dyson-device-air-quality.d.ts +7 -0
- package/dist/dyson-device-air-quality.d.ts.map +1 -0
- package/dist/dyson-device-air-quality.js +101 -0
- package/dist/dyson-device-air-quality.js.map +1 -0
- package/dist/dyson-device-air.d.ts +216 -0
- package/dist/dyson-device-air.d.ts.map +1 -0
- package/dist/dyson-device-air.js +80 -0
- package/dist/dyson-device-air.js.map +1 -0
- package/dist/dyson-device-base.d.ts +49 -0
- package/dist/dyson-device-base.d.ts.map +1 -0
- package/dist/dyson-device-base.js +46 -0
- package/dist/dyson-device-base.js.map +1 -0
- package/dist/dyson-device.d.ts +5 -0
- package/dist/dyson-device.d.ts.map +1 -0
- package/dist/dyson-device.js +43 -0
- package/dist/dyson-device.js.map +1 -0
- package/dist/dyson-mqtt-360.d.ts +16 -0
- package/dist/dyson-mqtt-360.d.ts.map +1 -0
- package/dist/dyson-mqtt-360.js +83 -0
- package/dist/dyson-mqtt-360.js.map +1 -0
- package/dist/dyson-mqtt-air.d.ts +48 -0
- package/dist/dyson-mqtt-air.d.ts.map +1 -0
- package/dist/dyson-mqtt-air.js +216 -0
- package/dist/dyson-mqtt-air.js.map +1 -0
- package/dist/dyson-mqtt-config.d.ts +6 -0
- package/dist/dyson-mqtt-config.d.ts.map +1 -0
- package/dist/dyson-mqtt-config.js +47 -0
- package/dist/dyson-mqtt-config.js.map +1 -0
- package/dist/dyson-mqtt-connect.d.ts +22 -0
- package/dist/dyson-mqtt-connect.d.ts.map +1 -0
- package/dist/dyson-mqtt-connect.js +145 -0
- package/dist/dyson-mqtt-connect.js.map +1 -0
- package/dist/dyson-mqtt-filter.d.ts +10 -0
- package/dist/dyson-mqtt-filter.d.ts.map +1 -0
- package/dist/dyson-mqtt-filter.js +25 -0
- package/dist/dyson-mqtt-filter.js.map +1 -0
- package/dist/dyson-mqtt-parse.d.ts +16 -0
- package/dist/dyson-mqtt-parse.d.ts.map +1 -0
- package/dist/dyson-mqtt-parse.js +100 -0
- package/dist/dyson-mqtt-parse.js.map +1 -0
- package/dist/dyson-mqtt-subscribe.d.ts +28 -0
- package/dist/dyson-mqtt-subscribe.d.ts.map +1 -0
- package/dist/dyson-mqtt-subscribe.js +85 -0
- package/dist/dyson-mqtt-subscribe.js.map +1 -0
- package/dist/dyson-mqtt.d.ts +51 -0
- package/dist/dyson-mqtt.d.ts.map +1 -0
- package/dist/dyson-mqtt.js +138 -0
- package/dist/dyson-mqtt.js.map +1 -0
- package/dist/dyson-types.d.ts +18 -0
- package/dist/dyson-types.d.ts.map +1 -0
- package/dist/dyson-types.js +20 -0
- package/dist/dyson-types.js.map +1 -0
- package/dist/endpoint-360-behavior.d.ts +55 -0
- package/dist/endpoint-360-behavior.d.ts.map +1 -0
- package/dist/endpoint-360-behavior.js +156 -0
- package/dist/endpoint-360-behavior.js.map +1 -0
- package/dist/endpoint-360-rvc.d.ts +14 -0
- package/dist/endpoint-360-rvc.d.ts.map +1 -0
- package/dist/endpoint-360-rvc.js +149 -0
- package/dist/endpoint-360-rvc.js.map +1 -0
- package/dist/endpoint-360.d.ts +35 -0
- package/dist/endpoint-360.d.ts.map +1 -0
- package/dist/endpoint-360.js +197 -0
- package/dist/endpoint-360.js.map +1 -0
- package/dist/endpoint-air-purifier.d.ts +24 -0
- package/dist/endpoint-air-purifier.d.ts.map +1 -0
- package/dist/endpoint-air-purifier.js +97 -0
- package/dist/endpoint-air-purifier.js.map +1 -0
- package/dist/endpoint-air-quality.d.ts +11 -0
- package/dist/endpoint-air-quality.d.ts.map +1 -0
- package/dist/endpoint-air-quality.js +104 -0
- package/dist/endpoint-air-quality.js.map +1 -0
- package/dist/endpoint-air-thermostat.d.ts +358 -0
- package/dist/endpoint-air-thermostat.d.ts.map +1 -0
- package/dist/endpoint-air-thermostat.js +67 -0
- package/dist/endpoint-air-thermostat.js.map +1 -0
- package/dist/endpoint-air.d.ts +125 -0
- package/dist/endpoint-air.d.ts.map +1 -0
- package/dist/endpoint-air.js +459 -0
- package/dist/endpoint-air.js.map +1 -0
- package/dist/endpoint-base.d.ts +36 -0
- package/dist/endpoint-base.d.ts.map +1 -0
- package/dist/endpoint-base.js +137 -0
- package/dist/endpoint-base.js.map +1 -0
- package/dist/error-360.d.ts +35 -0
- package/dist/error-360.d.ts.map +1 -0
- package/dist/error-360.js +105 -0
- package/dist/error-360.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/logger-filter.d.ts +23 -0
- package/dist/logger-filter.d.ts.map +1 -0
- package/dist/logger-filter.js +104 -0
- package/dist/logger-filter.js.map +1 -0
- package/dist/logger-options.d.ts +18 -0
- package/dist/logger-options.d.ts.map +1 -0
- package/dist/logger-options.js +41 -0
- package/dist/logger-options.js.map +1 -0
- package/dist/logger-prefix.d.ts +12 -0
- package/dist/logger-prefix.d.ts.map +1 -0
- package/dist/logger-prefix.js +37 -0
- package/dist/logger-prefix.js.map +1 -0
- package/dist/periodic.d.ts +31 -0
- package/dist/periodic.d.ts.map +1 -0
- package/dist/periodic.js +102 -0
- package/dist/periodic.js.map +1 -0
- package/dist/platform.d.ts +18 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +138 -0
- package/dist/platform.js.map +1 -0
- package/dist/settings.d.ts +9 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +28 -0
- package/dist/settings.js.map +1 -0
- package/dist/ti/config-types-ti.d.ts +16 -0
- package/dist/ti/config-types-ti.d.ts.map +1 -0
- package/dist/ti/config-types-ti.js +65 -0
- package/dist/ti/config-types-ti.js.map +1 -0
- package/dist/ti/config-types.d.ts +37 -0
- package/dist/ti/config-types.d.ts.map +1 -0
- package/dist/ti/config-types.js +11 -0
- package/dist/ti/config-types.js.map +1 -0
- package/dist/ti/dyson-360-msg-types-ti.d.ts +22 -0
- package/dist/ti/dyson-360-msg-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-360-msg-types-ti.js +134 -0
- package/dist/ti/dyson-360-msg-types-ti.js.map +1 -0
- package/dist/ti/dyson-360-msg-types.d.ts +55 -0
- package/dist/ti/dyson-360-msg-types.d.ts.map +1 -0
- package/dist/ti/dyson-360-msg-types.js +13 -0
- package/dist/ti/dyson-360-msg-types.js.map +1 -0
- package/dist/ti/dyson-360-types-ti.d.ts +17 -0
- package/dist/ti/dyson-360-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-360-types-ti.js +94 -0
- package/dist/ti/dyson-360-types-ti.js.map +1 -0
- package/dist/ti/dyson-360-types.d.ts +40 -0
- package/dist/ti/dyson-360-types.d.ts.map +1 -0
- package/dist/ti/dyson-360-types.js +11 -0
- package/dist/ti/dyson-360-types.js.map +1 -0
- package/dist/ti/dyson-air-msg-types-ti.d.ts +19 -0
- package/dist/ti/dyson-air-msg-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-air-msg-types-ti.js +115 -0
- package/dist/ti/dyson-air-msg-types-ti.js.map +1 -0
- package/dist/ti/dyson-air-msg-types.d.ts +46 -0
- package/dist/ti/dyson-air-msg-types.d.ts.map +1 -0
- package/dist/ti/dyson-air-msg-types.js +15 -0
- package/dist/ti/dyson-air-msg-types.js.map +1 -0
- package/dist/ti/dyson-air-sensor-types-ti.d.ts +9 -0
- package/dist/ti/dyson-air-sensor-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-air-sensor-types-ti.js +68 -0
- package/dist/ti/dyson-air-sensor-types-ti.js.map +1 -0
- package/dist/ti/dyson-air-sensor-types.d.ts +16 -0
- package/dist/ti/dyson-air-sensor-types.d.ts.map +1 -0
- package/dist/ti/dyson-air-sensor-types.js +12 -0
- package/dist/ti/dyson-air-sensor-types.js.map +1 -0
- package/dist/ti/dyson-air-state-types-ti.d.ts +9 -0
- package/dist/ti/dyson-air-state-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-air-state-types-ti.js +105 -0
- package/dist/ti/dyson-air-state-types-ti.js.map +1 -0
- package/dist/ti/dyson-air-state-types.d.ts +16 -0
- package/dist/ti/dyson-air-state-types.d.ts.map +1 -0
- package/dist/ti/dyson-air-state-types.js +12 -0
- package/dist/ti/dyson-air-state-types.js.map +1 -0
- package/dist/ti/dyson-air-types-ti.d.ts +59 -0
- package/dist/ti/dyson-air-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-air-types-ti.js +385 -0
- package/dist/ti/dyson-air-types-ti.js.map +1 -0
- package/dist/ti/dyson-air-types.d.ts +166 -0
- package/dist/ti/dyson-air-types.d.ts.map +1 -0
- package/dist/ti/dyson-air-types.js +11 -0
- package/dist/ti/dyson-air-types.js.map +1 -0
- package/dist/ti/dyson-types-ti.d.ts +10 -0
- package/dist/ti/dyson-types-ti.d.ts.map +1 -0
- package/dist/ti/dyson-types-ti.js +29 -0
- package/dist/ti/dyson-types-ti.js.map +1 -0
- package/dist/ti/dyson-types.d.ts +19 -0
- package/dist/ti/dyson-types.d.ts.map +1 -0
- package/dist/ti/dyson-types.js +11 -0
- package/dist/ti/dyson-types.js.map +1 -0
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +150 -0
- package/dist/utils.js.map +1 -0
- package/matterbridge-dyson-robot.schema.json +359 -0
- package/package.json +93 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Matterbridge plugin for Dyson robot vacuum and air treatment devices
|
|
2
|
+
// Copyright © 2025 Alexander Thoukydides
|
|
3
|
+
import { Thermostat } from 'matterbridge/matter/clusters';
|
|
4
|
+
import { ThermostatServer } from 'matterbridge/matter/behaviors';
|
|
5
|
+
import { MatterbridgeServer } from 'matterbridge';
|
|
6
|
+
// Prevent Matterbridge from modifying occupiedHeatingSetpoint itself
|
|
7
|
+
export class ThermostatServerAir extends ThermostatServer.with(Thermostat.Feature.Heating) {
|
|
8
|
+
// Just call the handler without implementing any additional functionality
|
|
9
|
+
setpointRaiseLower(request) {
|
|
10
|
+
const device = this.agent.get(MatterbridgeServer).state.deviceCommand;
|
|
11
|
+
device.setpointRaiseLower(request);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// Create the Thermostat cluster
|
|
15
|
+
export function createThermostatClusterServer({ behaviors }) {
|
|
16
|
+
behaviors.require(ThermostatServerAir.withFeatures(Thermostat.Feature.Heating).enable({
|
|
17
|
+
commands: {
|
|
18
|
+
setpointRaiseLower: true
|
|
19
|
+
}
|
|
20
|
+
}), {
|
|
21
|
+
// Constant attributes
|
|
22
|
+
absMinHeatSetpointLimit: 1.00 * 100, // centi-°C
|
|
23
|
+
absMaxHeatSetpointLimit: 37.00 * 100, // centi-°C
|
|
24
|
+
controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.HeatingOnly,
|
|
25
|
+
hvacSystemTypeConfiguration: {
|
|
26
|
+
heatingStage: 0,
|
|
27
|
+
heatingIsHeatPump: false,
|
|
28
|
+
heatingUsesFuel: false
|
|
29
|
+
},
|
|
30
|
+
remoteSensing: {
|
|
31
|
+
localTemperature: false
|
|
32
|
+
},
|
|
33
|
+
// Variable attributes
|
|
34
|
+
localTemperature: null,
|
|
35
|
+
piHeatingDemand: 0, // %
|
|
36
|
+
occupiedHeatingSetpoint: 21.00 * 100, // centi-°C
|
|
37
|
+
systemMode: Thermostat.SystemMode.Off,
|
|
38
|
+
thermostatRunningState: {
|
|
39
|
+
heat: false,
|
|
40
|
+
fan: false,
|
|
41
|
+
fanStage2: false,
|
|
42
|
+
fanStage3: false
|
|
43
|
+
},
|
|
44
|
+
// Unsupported attributes
|
|
45
|
+
acCapacity: undefined,
|
|
46
|
+
acCapacityFormat: undefined,
|
|
47
|
+
acCoilTemperature: undefined,
|
|
48
|
+
acCompressorType: undefined,
|
|
49
|
+
acErrorCode: undefined,
|
|
50
|
+
acLouverPosition: undefined,
|
|
51
|
+
acRefrigerantType: undefined,
|
|
52
|
+
acType: undefined,
|
|
53
|
+
emergencyHeatDelta: undefined,
|
|
54
|
+
localTemperatureCalibration: undefined,
|
|
55
|
+
maxHeatSetpointLimit: undefined,
|
|
56
|
+
minHeatSetpointLimit: undefined,
|
|
57
|
+
outdoorTemperature: undefined,
|
|
58
|
+
setpointChangeAmount: undefined,
|
|
59
|
+
setpointChangeSource: undefined,
|
|
60
|
+
setpointChangeSourceTimestamp: undefined,
|
|
61
|
+
setpointHoldExpiryTimestamp: undefined,
|
|
62
|
+
temperatureSetpointHold: undefined,
|
|
63
|
+
temperatureSetpointHoldDuration: undefined,
|
|
64
|
+
thermostatProgrammingOperationMode: undefined
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=endpoint-air-thermostat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-air-thermostat.js","sourceRoot":"","sources":["../src/endpoint-air-thermostat.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,qEAAqE;AACrE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB,CAAC,IAAI,CAC1D,UAAU,CAAC,OAAO,CAAC,OAAO,CAC7B;IACG,0EAA0E;IACjE,kBAAkB,CAAC,OAA6C;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;QACtE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACJ;AAED,gCAAgC;AAChC,MAAM,UAAU,6BAA6B,CAAC,EAAE,SAAS,EAAY;IACjE,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAC9C,UAAU,CAAC,OAAO,CAAC,OAAO,CAC7B,CAAC,MAAM,CAAC;QACL,QAAQ,EAAE;YACN,kBAAkB,EAAE,IAAI;SAC3B;KACJ,CAAC,EAAE;QACA,sBAAsB;QACtB,uBAAuB,EAAc,IAAI,GAAG,GAAG,EAAK,WAAW;QAC/D,uBAAuB,EAAa,KAAK,GAAG,GAAG,EAAK,WAAW;QAC/D,0BAA0B,EAAU,UAAU,CAAC,0BAA0B,CAAC,WAAW;QACrF,2BAA2B,EAAE;YACzB,YAAY,EAAQ,CAAC;YACrB,iBAAiB,EAAG,KAAK;YACzB,eAAe,EAAK,KAAK;SAC5B;QACD,aAAa,EAAE;YACX,gBAAgB,EAAI,KAAK;SAC5B;QACD,sBAAsB;QACtB,gBAAgB,EAAoB,IAAI;QACxC,eAAe,EAAqB,CAAC,EAAe,IAAI;QACxD,uBAAuB,EAAa,KAAK,GAAG,GAAG,EAAK,WAAW;QAC/D,UAAU,EAA0B,UAAU,CAAC,UAAU,CAAC,GAAG;QAC7D,sBAAsB,EAAE;YACpB,IAAI,EAAgB,KAAK;YACzB,GAAG,EAAiB,KAAK;YACzB,SAAS,EAAW,KAAK;YACzB,SAAS,EAAW,KAAK;SAC5B;QACD,yBAAyB;QACzB,UAAU,EAA0B,SAAS;QAC7C,gBAAgB,EAAoB,SAAS;QAC7C,iBAAiB,EAAmB,SAAS;QAC7C,gBAAgB,EAAoB,SAAS;QAC7C,WAAW,EAAyB,SAAS;QAC7C,gBAAgB,EAAoB,SAAS;QAC7C,iBAAiB,EAAmB,SAAS;QAC7C,MAAM,EAA8B,SAAS;QAC7C,kBAAkB,EAAkB,SAAS;QAC7C,2BAA2B,EAAS,SAAS;QAC7C,oBAAoB,EAAgB,SAAS;QAC7C,oBAAoB,EAAgB,SAAS;QAC7C,kBAAkB,EAAkB,SAAS;QAC7C,oBAAoB,EAAgB,SAAS;QAC7C,oBAAoB,EAAgB,SAAS;QAC7C,6BAA6B,EAAO,SAAS;QAC7C,2BAA2B,EAAS,SAAS;QAC7C,uBAAuB,EAAa,SAAS;QAC7C,+BAA+B,EAAK,SAAS;QAC7C,kCAAkC,EAAE,SAAS;KAChD,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { AtLeastOne, ClusterId, DeviceTypeDefinition, MatterbridgeEndpoint } from 'matterbridge';
|
|
2
|
+
import { AnsiLogger } from 'matterbridge/logger';
|
|
3
|
+
import { Config, EntityName } from './config-types.js';
|
|
4
|
+
import { EndpointOptionsBase } from './endpoint-base.js';
|
|
5
|
+
import { AirQuality, ConcentrationMeasurement, FanControl, ResourceMonitoring, Thermostat } from 'matterbridge/matter/clusters';
|
|
6
|
+
import { FanControlOptions, FilterMonitoringOptions } from './endpoint-air-purifier.js';
|
|
7
|
+
import { Changed } from './decorator-changed.js';
|
|
8
|
+
import { MaybePromise } from 'matterbridge/matter';
|
|
9
|
+
type AttributeValue = boolean | number | bigint | string | object | null;
|
|
10
|
+
export type EndpointOptionsAirSensors = {
|
|
11
|
+
[K in keyof UpdateAirSensors as undefined extends UpdateAirSensors[K] ? K : never]-?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export interface EndpointOptionsAir extends EndpointOptionsBase {
|
|
14
|
+
validatedNames: EntityName[];
|
|
15
|
+
fanControl: FanControlOptions;
|
|
16
|
+
hepaFilter: FilterMonitoringOptions;
|
|
17
|
+
carbonFilter?: FilterMonitoringOptions;
|
|
18
|
+
sensors: EndpointOptionsAirSensors;
|
|
19
|
+
}
|
|
20
|
+
export type HandlerAir<T> = (newValue: T, oldValue: T) => MaybePromise;
|
|
21
|
+
export type HandlerAirMap<T extends Record<string, unknown>> = {
|
|
22
|
+
[K in keyof T & string]: HandlerAir<T[K]>;
|
|
23
|
+
};
|
|
24
|
+
export interface HandlersAirFan {
|
|
25
|
+
onOff: HandlerAir<boolean>;
|
|
26
|
+
airflowDirection: HandlerAir<FanControl.AirflowDirection>;
|
|
27
|
+
fanMode: HandlerAir<FanControl.FanMode>;
|
|
28
|
+
percentSetting: HandlerAir<number>;
|
|
29
|
+
rockSetting: HandlerAir<AirFanRockSetting>;
|
|
30
|
+
speedSetting: HandlerAir<number>;
|
|
31
|
+
windSetting: HandlerAir<AirWindSetting>;
|
|
32
|
+
}
|
|
33
|
+
export interface HandlersAirThermostat {
|
|
34
|
+
occupiedHeatingSetpoint: HandlerAir<number>;
|
|
35
|
+
systemMode: HandlerAir<Thermostat.SystemMode>;
|
|
36
|
+
}
|
|
37
|
+
export interface AirFanRockSetting {
|
|
38
|
+
rockLeftRight?: boolean;
|
|
39
|
+
rockUpDown?: boolean;
|
|
40
|
+
rockRound?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface AirWindSetting {
|
|
43
|
+
sleepWind?: boolean;
|
|
44
|
+
naturalWind?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface UpdateAirFan {
|
|
47
|
+
onOff: boolean;
|
|
48
|
+
airflowDirection?: FanControl.AirflowDirection;
|
|
49
|
+
fanMode: FanControl.FanMode;
|
|
50
|
+
percentSetting: number;
|
|
51
|
+
rockSetting?: AirFanRockSetting;
|
|
52
|
+
speedSetting: number;
|
|
53
|
+
windSetting?: AirWindSetting;
|
|
54
|
+
percentCurrent: number;
|
|
55
|
+
speedCurrent: number;
|
|
56
|
+
}
|
|
57
|
+
export interface UpdateAirThermostatRunningState {
|
|
58
|
+
cool?: false;
|
|
59
|
+
coolStage2?: false;
|
|
60
|
+
heat: boolean;
|
|
61
|
+
heatStage2?: boolean;
|
|
62
|
+
fan: boolean;
|
|
63
|
+
fanStage2?: boolean;
|
|
64
|
+
fanStage3?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface UpdateAirThermostat {
|
|
67
|
+
occupiedHeatingSetpoint: number;
|
|
68
|
+
systemMode: Thermostat.SystemMode;
|
|
69
|
+
localTemperature: number | null;
|
|
70
|
+
piHeatingDemand: number;
|
|
71
|
+
thermostatRunningState: UpdateAirThermostatRunningState;
|
|
72
|
+
}
|
|
73
|
+
export interface UpdateAirFilterMonitoringSingle {
|
|
74
|
+
condition: number;
|
|
75
|
+
changeIndication: ResourceMonitoring.ChangeIndication;
|
|
76
|
+
inPlaceIndicator: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface UpdateAirFilterMonitoring {
|
|
79
|
+
hepa: UpdateAirFilterMonitoringSingle;
|
|
80
|
+
carbon?: UpdateAirFilterMonitoringSingle;
|
|
81
|
+
}
|
|
82
|
+
export interface UpdateAirSensors {
|
|
83
|
+
airQuality: AirQuality.AirQualityEnum;
|
|
84
|
+
temperature: number | null;
|
|
85
|
+
humidity: number | null;
|
|
86
|
+
voc?: ConcentrationMeasurement.LevelValue;
|
|
87
|
+
co2?: number | null;
|
|
88
|
+
nox?: ConcentrationMeasurement.LevelValue;
|
|
89
|
+
hcho?: number | null;
|
|
90
|
+
pm25?: number | null;
|
|
91
|
+
pm10?: number | null;
|
|
92
|
+
}
|
|
93
|
+
export declare class EndpointsAir {
|
|
94
|
+
readonly log: AnsiLogger;
|
|
95
|
+
readonly config: Config;
|
|
96
|
+
readonly options: EndpointOptionsAir;
|
|
97
|
+
bridged: MatterbridgeEndpoint[];
|
|
98
|
+
purifier?: MatterbridgeEndpoint;
|
|
99
|
+
thermostat?: MatterbridgeEndpoint;
|
|
100
|
+
airQuality: MatterbridgeEndpoint[];
|
|
101
|
+
temperature: MatterbridgeEndpoint[];
|
|
102
|
+
humidity: MatterbridgeEndpoint[];
|
|
103
|
+
changed: Changed;
|
|
104
|
+
lastWrite: Map<string, unknown>;
|
|
105
|
+
constructor(log: AnsiLogger, config: Config, options: EndpointOptionsAir);
|
|
106
|
+
createAirPurifierEndpoint(composed?: boolean): MatterbridgeEndpoint | undefined;
|
|
107
|
+
createHumiditySensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined;
|
|
108
|
+
createTemperatureSensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined;
|
|
109
|
+
createThermostatEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined;
|
|
110
|
+
createAirQualitySensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined;
|
|
111
|
+
createDevice(endpointName: EntityName, definition: AtLeastOne<DeviceTypeDefinition>, parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined;
|
|
112
|
+
get bridgedNodeEndpoints(): MatterbridgeEndpoint[];
|
|
113
|
+
setFanControlHandlers(handlers: HandlersAirFan): Promise<void>;
|
|
114
|
+
setThermostatHandlers(handlers: HandlersAirThermostat): Promise<void>;
|
|
115
|
+
subscribeAttributes<T extends Record<keyof T, unknown>>(endpoint: MatterbridgeEndpoint, clusterId: ClusterId, name: string, handlers: HandlerAirMap<T>, keys?: (keyof T & string)[]): Promise<void>;
|
|
116
|
+
updateFanControl(fan: UpdateAirFan): Promise<void>;
|
|
117
|
+
updateThermostat(thermostat: UpdateAirThermostat): Promise<void>;
|
|
118
|
+
updateFilterMonitoring(filters: UpdateAirFilterMonitoring): Promise<void>;
|
|
119
|
+
updateSensors(measurements: UpdateAirSensors): Promise<void>;
|
|
120
|
+
setAttribute(endpoint: MatterbridgeEndpoint | undefined, clusterId: ClusterId, attribute: string, value: AttributeValue): Promise<boolean>;
|
|
121
|
+
isAttributeChanged(endpoint: MatterbridgeEndpoint, clusterId: ClusterId, attribute: string, value: AttributeValue): boolean;
|
|
122
|
+
updateNextStatus(): void;
|
|
123
|
+
}
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=endpoint-air.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-air.d.ts","sourceRoot":"","sources":["../src/endpoint-air.ts"],"names":[],"mappings":"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"}
|