matterbridge-dyson-robot 1.2.0 → 1.3.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 +12 -1
- package/README.md +12 -9
- package/dist/config-types.d.ts +3 -1
- package/dist/config-types.d.ts.map +1 -1
- package/dist/dyson-360-msg-types.d.ts +2 -2
- package/dist/dyson-360-msg-types.d.ts.map +1 -1
- package/dist/dyson-360-types.d.ts +9 -0
- package/dist/dyson-360-types.d.ts.map +1 -1
- package/dist/dyson-cloud-api-ua.d.ts +3 -1
- package/dist/dyson-cloud-api-ua.d.ts.map +1 -1
- package/dist/dyson-cloud-api-ua.js +45 -3
- package/dist/dyson-cloud-api-ua.js.map +1 -1
- package/dist/dyson-device-360-base.d.ts.map +1 -1
- package/dist/dyson-device-360-base.js +3 -0
- package/dist/dyson-device-360-base.js.map +1 -1
- package/dist/dyson-device-360-map.d.ts +20 -0
- package/dist/dyson-device-360-map.d.ts.map +1 -0
- package/dist/dyson-device-360-map.js +129 -0
- package/dist/dyson-device-360-map.js.map +1 -0
- package/dist/dyson-map-bitmap.d.ts +59 -0
- package/dist/dyson-map-bitmap.d.ts.map +1 -0
- package/dist/dyson-map-bitmap.js +232 -0
- package/dist/dyson-map-bitmap.js.map +1 -0
- package/dist/dyson-map-coordinate.d.ts +29 -0
- package/dist/dyson-map-coordinate.d.ts.map +1 -0
- package/dist/dyson-map-coordinate.js +113 -0
- package/dist/dyson-map-coordinate.js.map +1 -0
- package/dist/dyson-map-grid.d.ts +20 -0
- package/dist/dyson-map-grid.d.ts.map +1 -0
- package/dist/dyson-map-grid.js +51 -0
- package/dist/dyson-map-grid.js.map +1 -0
- package/dist/dyson-map-text.d.ts +17 -0
- package/dist/dyson-map-text.d.ts.map +1 -0
- package/dist/dyson-map-text.js +137 -0
- package/dist/dyson-map-text.js.map +1 -0
- package/dist/dyson-mqtt.d.ts.map +1 -1
- package/dist/dyson-mqtt.js +23 -17
- package/dist/dyson-mqtt.js.map +1 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/dist/ti/config-types-ti.d.ts +1 -0
- package/dist/ti/config-types-ti.d.ts.map +1 -1
- package/dist/ti/config-types-ti.js +4 -1
- package/dist/ti/config-types-ti.js.map +1 -1
- package/dist/ti/config-types.d.ts +4 -1
- package/dist/ti/config-types.d.ts.map +1 -1
- package/dist/ti/config-types.js +1 -1
- package/dist/ti/config-types.js.map +1 -1
- package/dist/ti/dyson-360-msg-types-ti.js +2 -2
- package/dist/ti/dyson-360-msg-types-ti.js.map +1 -1
- package/dist/ti/dyson-360-msg-types.js +1 -1
- package/dist/ti/dyson-360-types-ti.d.ts +3 -0
- package/dist/ti/dyson-360-types-ti.d.ts.map +1 -1
- package/dist/ti/dyson-360-types-ti.js +12 -0
- package/dist/ti/dyson-360-types-ti.js.map +1 -1
- package/dist/ti/dyson-360-types.d.ts +10 -1
- package/dist/ti/dyson-360-types.d.ts.map +1 -1
- package/dist/ti/dyson-360-types.js +1 -1
- package/dist/ti/dyson-360-types.js.map +1 -1
- package/dist/ti/dyson-air-msg-types.js +1 -1
- package/dist/ti/dyson-air-sensor-types.js +1 -1
- package/dist/ti/dyson-air-state-types.js +1 -1
- package/dist/ti/dyson-air-types.js +1 -1
- package/dist/ti/dyson-cloud-types.js +1 -1
- package/dist/ti/dyson-types.js +1 -1
- package/matterbridge-dyson-robot.schema.json +20 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v1.3.0] - 2025-09-05
|
|
8
|
+
### Added
|
|
9
|
+
* Robot vacuum cleaned area maps are displayed in the log at the end of each clean. This is controlled by the new `logMapStyle` configuration option.
|
|
10
|
+
|
|
11
|
+
## [v1.2.1] - 2025-08-30
|
|
12
|
+
### Added
|
|
13
|
+
* MyDyson account API requests are now retried to cope with transient internal server errors.
|
|
14
|
+
* `Log MQTT Payloads as JSON` debug option captures full MQTT payloads in JSON format without truncation or duplicate suppression.
|
|
15
|
+
|
|
7
16
|
## [v1.2.0] - 2025-08-26
|
|
8
17
|
### Added
|
|
9
18
|
* Improved test coverage using MQTT payload logs to mock devices.
|
|
@@ -143,7 +152,9 @@ All notable changes to this project will be documented in this file.
|
|
|
143
152
|
|
|
144
153
|
Copyright © 2025 Alexander Thoukydides
|
|
145
154
|
|
|
146
|
-
[Unreleased]: https://github.com/thoukydides/matterbridge-dyson-robot/compare/v1.
|
|
155
|
+
[Unreleased]: https://github.com/thoukydides/matterbridge-dyson-robot/compare/v1.3.0...HEAD
|
|
156
|
+
[v1.3.0]: https://github.com/thoukydides/homebridge-homeconnect/compare/v1.2.1...v1.3.0
|
|
157
|
+
[v1.2.1]: https://github.com/thoukydides/homebridge-homeconnect/compare/v1.2.0...v1.2.1
|
|
147
158
|
[v1.2.0]: https://github.com/thoukydides/homebridge-homeconnect/compare/v1.1.4...v1.2.0
|
|
148
159
|
[v1.1.4]: https://github.com/thoukydides/homebridge-homeconnect/compare/v1.1.3...v1.1.4
|
|
149
160
|
[v1.1.3]: https://github.com/thoukydides/homebridge-homeconnect/compare/v1.1.2...v1.1.3
|
package/README.md
CHANGED
|
@@ -92,6 +92,7 @@ You can include additional settings in `matterbridge-dyson-robot.config.json` to
|
|
|
92
92
|
| `provisioningMethod` | `"Remote Account"` | Selects how the plugin is configured and how it connects to the Dyson devices. See [Alternative Provisioning Methods](#provisioning-methods) (below) for details of each option.
|
|
93
93
|
| `devices` | `[]` | Local network and MQTT configuration for each Dyson device when not using the `Remote Account` provisioning method. See below for details.
|
|
94
94
|
| `enableServerRvc` | `true` | When set to `false` all devices are exposed via a single Matter bridge. Setting it to `true` exposes any robot vacuum devices as standalone Matter nodes using Matterbridge's `server` mode, with the Matter bridge only used for any air treatment devices. This improves compatibility with Matter controllers such as the Apple Home app, but requires each robot vacuum to be paired individually.
|
|
95
|
+
| `logMapStyle` | `"Matterbridge"` | Select how robot vacuum maps are rendered in the log at the end of cleans. When set to `"Matterbridge"` the map is restricted to glyphs that render correctly in the Matterbridge frontend. Change to `Monospaced` for more detailed and clearer maps if the log will be viewed using a monospaced font. Set to `"Off"` to disable logging of maps.
|
|
95
96
|
| `wildcardTopic` | `true` | When set to `false` the plugin only subscribes to the essential status MQTT topic(s) appropriate for each device. Setting it to `true` additionally subscribes to the command topic (for AWS IoT connections) or to the `#` wildcard topic (for local network connections), receiving additional messages published by the devices or echoed by the MQTT brokers. This is useful for discovering new topics, seeing the commands issued by the MyDyson app (only some commands to robot vacuums), and verifying correct `root_topic` and `username` settings.
|
|
96
97
|
| `blackList` | `[]` | If the list is not empty, then any robot vacuum and air treatment devices with matching serial numbers will not be exposed as Matter devices.
|
|
97
98
|
| `whiteList` | `[]` | If the list is not empty, then only robot vacuum and air treatment devices with matching serial numbers (and not on the `blacklist`) will be exposed as Matter devices.
|
|
@@ -112,15 +113,17 @@ The black and white lists control which robot vacuum and air treatment devices a
|
|
|
112
113
|
|
|
113
114
|
The supported `debugFeatures` are:
|
|
114
115
|
|
|
115
|
-
| Debug Feature
|
|
116
|
-
|
|
|
117
|
-
| `Log Endpoint Debug`
|
|
118
|
-
| `Log API Headers`
|
|
119
|
-
| `Log API Bodies`
|
|
120
|
-
| `Log MQTT Client`
|
|
121
|
-
| `Log MQTT Payloads`
|
|
122
|
-
| `Log
|
|
123
|
-
|
|
116
|
+
| Debug Feature | Description
|
|
117
|
+
| --------------------------- | ---
|
|
118
|
+
| `Log Endpoint Debug` | Sets the `debug` flag to the Matterbridge/Matter.js endpoint implementation.
|
|
119
|
+
| `Log API Headers` | Logs HTTP headers for MyDyson API requests. Rarely useful. (Requires *Debug* level logging.)
|
|
120
|
+
| `Log API Bodies` | Logs message bodies for MyDyson API requests. Useful for diagnosing interoperability issues. (Requires *Debug* level logging.)
|
|
121
|
+
| `Log MQTT Client` | Enables (extremely) verbose debug logging from the low-level MQTT client. Rarely useful, unless the plugin is unable to establish or maintain a connection to the Dyson device. (Requires *Debug* level logging.)
|
|
122
|
+
| `Log MQTT Payloads` | Logs every MQTT payload that is sent or received. Useful for diagnosing interoperability issues or identifying how to control new features. (Requires *Debug* level logging.)
|
|
123
|
+
| `Log MQTT Payloads as JSON` | Similar to `Log MQTT Payloads` except that payloads are logged in raw JSON format, without any truncation or special formatting. (Requires *Debug* level logging.)
|
|
124
|
+
Logs every MQTT payload that is sent or received. Useful for diagnosing interoperability issues or identifying how to control new features. (Requires *Debug* level logging.)
|
|
125
|
+
| `Log Serial Numbers` | By default product serial numbers (a.k.a. MQTT usernames) and passwords are automatically redacted in the log. This setting logs serial numbers verbatim.
|
|
126
|
+
| `Log Debug as Info` | Redirect *Debug* level logging to *Info* level. This makes it visible in the Matterbridge frontend.
|
|
124
127
|
|
|
125
128
|
</details>
|
|
126
129
|
<a name="provisioning-methods"></a>
|
package/dist/config-types.d.ts
CHANGED
|
@@ -39,7 +39,8 @@ export interface DeviceConfigMock {
|
|
|
39
39
|
rootTopic: string;
|
|
40
40
|
}
|
|
41
41
|
export type EntityName = 'Air Purifier' | 'Air Quality Sensor' | 'Composed Air Purifier' | 'Humidity Sensor' | 'Temperature Sensor' | 'Thermostat';
|
|
42
|
-
export type
|
|
42
|
+
export type LogMapStyle = 'Off' | 'Monospaced' | 'Matterbridge';
|
|
43
|
+
export type DebugFeatures = 'Log Endpoint Debug' | 'Log API Headers' | 'Log API Bodies' | 'Log MQTT Client' | 'Log MQTT Payloads' | 'Log MQTT Payloads as JSON' | 'Log Serial Numbers' | 'Log Debug as Info';
|
|
43
44
|
export interface ConfigBase {
|
|
44
45
|
name: string;
|
|
45
46
|
type: string;
|
|
@@ -54,6 +55,7 @@ export interface ConfigBase {
|
|
|
54
55
|
provisioningMethod: ProvisioningMethod;
|
|
55
56
|
enableServerRvc: boolean;
|
|
56
57
|
wildcardTopic: boolean;
|
|
58
|
+
logMapStyle: LogMapStyle;
|
|
57
59
|
debug: boolean;
|
|
58
60
|
debugFeatures: DebugFeatures[];
|
|
59
61
|
unregisterOnShutdown: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../src/config-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../src/config-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,8 +66,8 @@ export interface Dyson360MsgMapData extends DysonMsg {
|
|
|
66
66
|
cleanId: string;
|
|
67
67
|
data: {
|
|
68
68
|
content: string;
|
|
69
|
-
contentType:
|
|
70
|
-
contentEncoding:
|
|
69
|
+
contentType: 'application/json';
|
|
70
|
+
contentEncoding: 'gzip';
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
export interface Dyson360MsgMapGlobal extends DysonMsg {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-360-msg-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-msg-types.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI7D,MAAM,WAAW,4BAA6B,SAAQ,QAAQ;IAC1D,GAAG,EAAqB,oBAAoB,CAAC;IAC7C,YAAY,EAAY,MAAM,CAAC;IAC/B,cAAc,EAAU,MAAM,CAAC;CAClC;AAID,MAAM,WAAW,2BAA4B,SAAQ,QAAQ;IACzD,GAAG,EAAqB,mBAAmB,CAAC;IAC5C,MAAM,EAAkB,MAAM,CAAC;IAC/B,KAAK,EAAmB,MAAM,CAAC;IAC/B,OAAO,EAAiB,MAAM,CAAC;IAC/B,SAAS,EAAe,MAAM,CAAC;IAC/B,EAAE,EAAsB,MAAM,CAAC;CAClC;AAKD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAC9C,GAAG,EAAqB,OAAO,CAAC;IAChC,QAAQ,EAAgB,MAAM,CAAC;IAC/B,MAAM,EAAkB,MAAM,CAAC;IAC/B,OAAO,EAAiB,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IAChD,GAAG,EAAqB,SAAS,CAAC;IAClC,MAAM,EAAkB,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACjD,GAAG,EAAqB,WAAW,CAAC;CAEvC;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IAC/C,GAAG,EAAqB,SAAS,CAAC;IAClC,KAAK,CAAC,EAAkB,aAAa,CAAC;CACzC;AAED,MAAM,WAAW,uBAAwB,SAAQ,QAAQ;IACrD,GAAG,EAAqB,eAAe,CAAC;IACxC,kBAAkB,EAAM,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAU,MAAM,CAAC;IAC/B,OAAO,EAAiB,MAAM,CAAC;IAC/B,sBAAsB,EAAE,iBAAiB,CAAC;IAC1C,sBAAsB,EAAE,iBAAiB,CAAC;IAC1C,mBAAmB,CAAC,EAAI,oBAAoB,CAAC;IAC7C,mBAAmB,CAAC,EAAI,oBAAoB,CAAC;IAC7C,MAAM,CAAC,EAAiB,cAAc,CAAC;IACvC,aAAa,EAAW,oBAAoB,CAAC;IAC7C,cAAc,EAAU,gBAAgB,CAAC;IACzC,KAAK,EAAmB,aAAa,CAAC;CACzC;AAED,MAAM,WAAW,sBAAuB,SAAQ,QAAQ;IACpD,GAAG,EAAqB,cAAc,CAAC;IACvC,kBAAkB,CAAC,EAAK,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAU,MAAM,CAAC;IAC/B,OAAO,EAAiB,MAAM,CAAC;IAC/B,sBAAsB,EAAE,iBAAiB,CAAC;IAC1C,sBAAsB,EAAE,iBAAiB,CAAC;IAC1C,mBAAmB,CAAC,EAAI,oBAAoB,CAAC;IAC7C,mBAAmB,CAAC,EAAI,oBAAoB,CAAC;IAC7C,MAAM,CAAC,EAAiB,cAAc,CAAC;IACvC,aAAa,EAAW,oBAAoB,CAAC;IAC7C,cAAc,EAAU,gBAAgB,CAAC;IACzC,QAAQ,EAAgB,aAAa,CAAC;IACtC,QAAQ,EAAgB,aAAa,CAAC;IACtC,UAAU,CAAC,EAAa,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IAChD,GAAG,EAAqB,UAAU,CAAC;IACnC,MAAM,EAAkB,MAAM,CAAC;IAC/B,OAAO,EAAiB,MAAM,CAAC;IAC/B,IAAI,EAAE;QACF,OAAO,EAAa,MAAM,CAAC;QAC3B,WAAW,EAAS,
|
|
1
|
+
{"version":3,"file":"dyson-360-msg-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-msg-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,4 +74,13 @@ export declare enum Dyson360CleaningMode {
|
|
|
74
74
|
ZoneConfigured = "zoneConfigured"
|
|
75
75
|
}
|
|
76
76
|
export type Dyson360Position = [number, number];
|
|
77
|
+
export type Dyson360MapBitmap = number[][];
|
|
78
|
+
export type Dyson360MapPath = [number, number, number];
|
|
79
|
+
export interface Dyson360MapData {
|
|
80
|
+
cleaned: Dyson360MapBitmap;
|
|
81
|
+
observed: Dyson360MapBitmap;
|
|
82
|
+
occupied: Dyson360MapBitmap;
|
|
83
|
+
unnavigable: Dyson360MapBitmap;
|
|
84
|
+
path: Dyson360MapPath[];
|
|
85
|
+
}
|
|
77
86
|
//# sourceMappingURL=dyson-360-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-360-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-types.ts"],"names":[],"mappings":"AAIA,oBAAY,aAAa;IACrB,UAAU,gBAAqC;IAC/C,iBAAiB,wBAAsC;IACvD,oBAAoB,2BAAsC;IAC1D,aAAa,mBAAqC;IAClD,gBAAgB,uBAAsC;IACtD,SAAS,eAAqC;IAC9C,WAAW,kBAAsC;IACjD,kBAAkB,0BAAuC;IACzD,mBAAmB,2BAAuC;IAC1D,kBAAkB,0BAAuC;IACzD,iBAAiB,yBAAuC;IACxD,sBAAsB,6BAAsC;IAC5D,oBAAoB,2BAAsC;IAC1D,kBAAkB,yBAAsC;IACxD,gBAAgB,uBAAsC;IACtD,iBAAiB,wBAAsC;IACvD,oBAAoB,2BAAsC;IAC1D,iBAAiB,wBAAsC;IACvD,kBAAkB,yBAAsC;IACxD,oBAAoB,4BAAuC;IAC3D,eAAe,sBAAsC;IACrD,gBAAgB,uBAAsC;IACtD,mBAAmB,0BAAsC;IACzD,eAAe,qBAAqC;IACpD,gBAAgB,sBAAqC;IACrD,mBAAmB,yBAAqC;IACxD,cAAc,oBAAqC;IACnD,eAAe,qBAAqC;IACpD,eAAe,qBAAqC;IACpD,gBAAgB,sBAAqC;IACrD,kBAAkB,yBAAsC;IACxD,aAAa,mBAAqC;IAClD,cAAc,oBAAqC;CACtD;AAGD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAA0B,KAAK,CAAC;CACzC,GAAG;IACA,MAAM,EAA0B,IAAI,CAAC;IACrC,WAAW,EAAqB,MAAM,CAAC;CAC1C,CAAA;AACD,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAyB,mBAAmB,CAAC;IACpD,OAAO,EAAyB,mBAAmB,CAAC;IACpD,sBAAsB,EAAU,mBAAmB,CAAC;IACpD,cAAc,EAAkB,mBAAmB,CAAC;IACpD,IAAI,EAA4B,mBAAmB,CAAC;IACpD,MAAM,EAA0B,mBAAmB,CAAC;CACvD;AAGD,oBAAY,oBAAoB;IAC5B,KAAK,cAAwC;IAC7C,GAAG,cAA0C;CAChD;AACD,oBAAY,wBAAwB;IAChC,KAAK,MAAgC;IACrC,IAAI,MAAiC;IACrC,GAAG,MAAkC;CACxC;AACD,oBAAY,uBAAuB;IAC/B,IAAI,MAAiC;IACrC,KAAK,MAAgC;IACrC,KAAK,MAAgC;IACrC,KAAK,MAAgC;CACxC;AACD,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,CAAC;AAG5B,oBAAY,oBAAoB;IAC5B,OAAO,KAA6B;IACpC,SAAS,cAAoC;IAC7C,MAAM,WAAoC;IAC1C,SAAS,cAAoC;CAChD;AAGD,oBAAY,oBAAoB;IAC5B,MAAM,WAAoC;IAC1C,cAAc,mBAAoC;CACrD;AAGD,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"dyson-360-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-types.ts"],"names":[],"mappings":"AAIA,oBAAY,aAAa;IACrB,UAAU,gBAAqC;IAC/C,iBAAiB,wBAAsC;IACvD,oBAAoB,2BAAsC;IAC1D,aAAa,mBAAqC;IAClD,gBAAgB,uBAAsC;IACtD,SAAS,eAAqC;IAC9C,WAAW,kBAAsC;IACjD,kBAAkB,0BAAuC;IACzD,mBAAmB,2BAAuC;IAC1D,kBAAkB,0BAAuC;IACzD,iBAAiB,yBAAuC;IACxD,sBAAsB,6BAAsC;IAC5D,oBAAoB,2BAAsC;IAC1D,kBAAkB,yBAAsC;IACxD,gBAAgB,uBAAsC;IACtD,iBAAiB,wBAAsC;IACvD,oBAAoB,2BAAsC;IAC1D,iBAAiB,wBAAsC;IACvD,kBAAkB,yBAAsC;IACxD,oBAAoB,4BAAuC;IAC3D,eAAe,sBAAsC;IACrD,gBAAgB,uBAAsC;IACtD,mBAAmB,0BAAsC;IACzD,eAAe,qBAAqC;IACpD,gBAAgB,sBAAqC;IACrD,mBAAmB,yBAAqC;IACxD,cAAc,oBAAqC;IACnD,eAAe,qBAAqC;IACpD,eAAe,qBAAqC;IACpD,gBAAgB,sBAAqC;IACrD,kBAAkB,yBAAsC;IACxD,aAAa,mBAAqC;IAClD,cAAc,oBAAqC;CACtD;AAGD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAA0B,KAAK,CAAC;CACzC,GAAG;IACA,MAAM,EAA0B,IAAI,CAAC;IACrC,WAAW,EAAqB,MAAM,CAAC;CAC1C,CAAA;AACD,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAyB,mBAAmB,CAAC;IACpD,OAAO,EAAyB,mBAAmB,CAAC;IACpD,sBAAsB,EAAU,mBAAmB,CAAC;IACpD,cAAc,EAAkB,mBAAmB,CAAC;IACpD,IAAI,EAA4B,mBAAmB,CAAC;IACpD,MAAM,EAA0B,mBAAmB,CAAC;CACvD;AAGD,oBAAY,oBAAoB;IAC5B,KAAK,cAAwC;IAC7C,GAAG,cAA0C;CAChD;AACD,oBAAY,wBAAwB;IAChC,KAAK,MAAgC;IACrC,IAAI,MAAiC;IACrC,GAAG,MAAkC;CACxC;AACD,oBAAY,uBAAuB;IAC/B,IAAI,MAAiC;IACrC,KAAK,MAAgC;IACrC,KAAK,MAAgC;IACrC,KAAK,MAAgC;CACxC;AACD,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,CAAC;AAG5B,oBAAY,oBAAoB;IAC5B,OAAO,KAA6B;IACpC,SAAS,cAAoC;IAC7C,MAAM,WAAoC;IAC1C,SAAS,cAAoC;CAChD;AAGD,oBAAY,oBAAoB;IAC5B,MAAM,WAAoC;IAC1C,cAAc,mBAAoC;CACrD;AAGD,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAGhD,MAAM,MAAM,iBAAiB,GAAG,MAAM,EAAE,EAAE,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvD,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAyB,iBAAiB,CAAC;IAClD,QAAQ,EAAwB,iBAAiB,CAAC;IAClD,QAAQ,EAAwB,iBAAiB,CAAC;IAClD,WAAW,EAAqB,iBAAiB,CAAC;IAClD,IAAI,EAA4B,eAAe,EAAE,CAAC;CACrD"}
|
|
@@ -17,7 +17,9 @@ export declare class DysonCloudAPIUserAgent {
|
|
|
17
17
|
constructor(log: AnsiLogger, config: Config, china: boolean);
|
|
18
18
|
setBearerToken(token: string): void;
|
|
19
19
|
request<Type>(checker: CheckerT<Type>, method: Method, path: string, body?: object): Promise<Type>;
|
|
20
|
-
|
|
20
|
+
requestWithRetries(request: Request): Promise<string>;
|
|
21
|
+
canRetry(err: unknown): boolean;
|
|
22
|
+
requestCore(logPrefix: string, request: Request): Promise<string>;
|
|
21
23
|
logHeaders(name: string, headers: Headers): void;
|
|
22
24
|
logBody(name: string, body: unknown): void;
|
|
23
25
|
logCheckerValidation(level: LogLevel, request: Request, body: unknown, errors?: IErrorDetail[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-cloud-api-ua.d.ts","sourceRoot":"","sources":["../src/dyson-cloud-api-ua.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dyson-cloud-api-ua.d.ts","sourceRoot":"","sources":["../src/dyson-cloud-api-ua.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAS9D,MAAM,MAAM,MAAM,GAAQ,UAAU,CAAC,UAAU,CAAC;AAChD,MAAM,MAAM,OAAO,GAAO,mBAAmB,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAO,UAAU,CAAC,eAAe,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAM,UAAU,CAAC,YAAY,CAAC;AAkBlD,qBAAa,sBAAsB;IAiB3B,QAAQ,CAAC,GAAG,EAAQ,UAAU;IAC9B,QAAQ,CAAC,MAAM,EAAK,MAAM;IAC1B,QAAQ,CAAC,KAAK,EAAM,OAAO;IAhB/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAIvB;IAGF,YAAY,SAAK;gBAIJ,GAAG,EAAQ,UAAU,EACrB,MAAM,EAAK,MAAM,EACjB,KAAK,EAAM,OAAO;IAe/B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmClG,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B3D,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAgBzB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCvE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAehD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAY1C,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI;CASxG"}
|
|
@@ -7,6 +7,7 @@ import { inspect } from 'util';
|
|
|
7
7
|
import { STATUS_CODES } from 'http';
|
|
8
8
|
import { PLUGIN_NAME, PLUGIN_VERSION } from './settings.js';
|
|
9
9
|
import { DysonCloudStatusCodeError } from './dyson-cloud-error.js';
|
|
10
|
+
import { setTimeout } from 'node:timers/promises';
|
|
10
11
|
// Base URL for the Dyson cloud API
|
|
11
12
|
const DYSON_API_URL_GLOBAL = 'https://appapi.cp.dyson.com';
|
|
12
13
|
const DYSON_API_URL_CHINA = 'https://appapi.cp.dyson.cn';
|
|
@@ -14,6 +15,10 @@ const DYSON_API_URL_CHINA = 'https://appapi.cp.dyson.cn';
|
|
|
14
15
|
const USER_AGENT = `${PLUGIN_NAME}/${PLUGIN_VERSION}`;
|
|
15
16
|
// Timeout for all requests
|
|
16
17
|
const TIMEOUT = 10 * MS; // 10 seconds
|
|
18
|
+
// Delays between retries
|
|
19
|
+
const RETRY_DELAY_MIN = 1 * MS; // 1 second
|
|
20
|
+
const RETRY_DELAY_MAX = 5 * 60 * MS; // 5 minutes
|
|
21
|
+
const RETRY_DELAY_FACTOR = 2;
|
|
17
22
|
// Dyson cloud API user agent
|
|
18
23
|
export class DysonCloudAPIUserAgent {
|
|
19
24
|
log;
|
|
@@ -54,7 +59,7 @@ export class DysonCloudAPIUserAgent {
|
|
|
54
59
|
const request = { method, path, headers };
|
|
55
60
|
if (body)
|
|
56
61
|
request.body = JSON.stringify(body);
|
|
57
|
-
const text = await this.
|
|
62
|
+
const text = await this.requestWithRetries(request);
|
|
58
63
|
// Parse the response as JSON
|
|
59
64
|
let json;
|
|
60
65
|
try {
|
|
@@ -80,9 +85,46 @@ export class DysonCloudAPIUserAgent {
|
|
|
80
85
|
// Return the result
|
|
81
86
|
return json;
|
|
82
87
|
}
|
|
88
|
+
// Perform the request, retrying if required, returning the response body
|
|
89
|
+
async requestWithRetries(request) {
|
|
90
|
+
// Request counters
|
|
91
|
+
let requestCount;
|
|
92
|
+
let retryCount = 0;
|
|
93
|
+
let retryDelay = RETRY_DELAY_MIN;
|
|
94
|
+
for (;;) {
|
|
95
|
+
try {
|
|
96
|
+
// Attempt the request
|
|
97
|
+
requestCount ??= ++this.requestCount;
|
|
98
|
+
const counter = `${requestCount}` + (retryCount ? `.${retryCount}` : '');
|
|
99
|
+
return await this.requestCore(`Dyson cloud API #${counter}:`, request);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
// Request failed, so check whether it can be retried
|
|
103
|
+
if (!this.canRetry(err))
|
|
104
|
+
throw err;
|
|
105
|
+
++retryCount;
|
|
106
|
+
// Delay before trying again
|
|
107
|
+
await setTimeout(retryDelay);
|
|
108
|
+
retryDelay = Math.min(retryDelay * RETRY_DELAY_FACTOR, RETRY_DELAY_MAX);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Decide whether a request can be retried following an error
|
|
113
|
+
canRetry(err) {
|
|
114
|
+
// Do not retry the request unless the failure was an API error
|
|
115
|
+
if (!(err instanceof DysonCloudStatusCodeError))
|
|
116
|
+
return false;
|
|
117
|
+
// Some status codes never retried
|
|
118
|
+
const noRetryStatusCodes = [401, 404, 429];
|
|
119
|
+
if (noRetryStatusCodes.includes(err.statusCode)) {
|
|
120
|
+
this.log.warn(`Request will not be retried (status code ${err.statusCode})`);
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// The request can be retried
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
83
126
|
// Perform the request and return the response body
|
|
84
|
-
async requestCore(request) {
|
|
85
|
-
const logPrefix = `Dyson cloud API #${this.requestCount++}:`;
|
|
127
|
+
async requestCore(logPrefix, request) {
|
|
86
128
|
const startTime = Date.now();
|
|
87
129
|
let status = 'OK';
|
|
88
130
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-cloud-api-ua.js","sourceRoot":"","sources":["../src/dyson-cloud-api-ua.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC;AAIzC,OAAO,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dyson-cloud-api-ua.js","sourceRoot":"","sources":["../src/dyson-cloud-api-ua.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-device-360-base.d.ts","sourceRoot":"","sources":["../src/dyson-device-360-base.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACH,WAAW,EAEX,oBAAoB,EACpB,4BAA4B,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAiB,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACH,oBAAoB,EAEvB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"dyson-device-360-base.d.ts","sourceRoot":"","sources":["../src/dyson-device-360-base.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACH,WAAW,EAEX,oBAAoB,EACpB,4BAA4B,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAiB,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACH,oBAAoB,EAEvB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA2DlD,MAAM,MAAM,YAAY,GAAG,CAAC,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAQ9E,8BAAsB,kBAAmB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAGtE,MAAM,CAAC,QAAQ,CAAC,eAAe,sBAAgB;IAC/C,YAAY,EAAI,MAAM,IAAI,CAAC;IAG3B,QAAQ,CAAC,EAAO,WAAW,CAAC;gBAGhB,GAAG,IAAI,EAAE,4BAA4B,CAAC,YAAY,CAAC;IAY/D,YAAY,IAAI,WAAW;IAqClB,WAAW,IAAI,sBAAsB,EAAE;IAKvC,YAAY,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAKrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,QAAQ,CAAC,oBAAoB,IAAI,MAAM;IACvC,QAAQ,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,iBAAiB;IACnE,QAAQ,CAAC,gBAAgB,IAAI,YAAY,EAAE;IAG3C,oBAAoB,CAAC,SAAS,EAAE,eAAe,GAAG,iBAAiB;IAOnE,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe;IAQ7D,uBAAuB,CAAC,MAAM,EAAE,eAAe,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzF,gBAAgB,CACZ,MAAM,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAC3C,MAAM,EAAE,oBAAoB,GAC7B,oBAAoB;IAmBvB,mBAAmB,CACf,MAAM,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAC3C,MAAM,EAAE,oBAAoB,GAC7B,4BAA4B;CAiBlC"}
|
|
@@ -46,6 +46,7 @@ import { Dyson360State } from './dyson-360-types.js';
|
|
|
46
46
|
import { mapDyson360Faults } from './dyson-device-360-faults.js';
|
|
47
47
|
import { assert } from 'console';
|
|
48
48
|
import { attachDevice360CommandHandlers } from './dyson-device-360-commands.js';
|
|
49
|
+
import { DysonDevice360Map } from './dyson-device-360-map.js';
|
|
49
50
|
const STATE_MAP = {
|
|
50
51
|
// RunMode OperationalState isDocked
|
|
51
52
|
[Dyson360State.MachineOff]: ['Idle', 'Error', false],
|
|
@@ -116,6 +117,8 @@ let DysonDevice360Base = (() => {
|
|
|
116
117
|
super(...args);
|
|
117
118
|
// Prepare a listener for MQTT updates
|
|
118
119
|
this.mqttListener = tryListener(this.mqtt, () => this.updateClusterAttributes(this.mqtt.status));
|
|
120
|
+
// Start processing map-related MQTT messages
|
|
121
|
+
void new DysonDevice360Map(this.log, this.config, this.mqtt);
|
|
119
122
|
}
|
|
120
123
|
// Create the endpoint for this device
|
|
121
124
|
makeEndpoint() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dyson-device-360-base.js","sourceRoot":"","sources":["../src/dyson-device-360-base.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzC,OAAO,EACH,WAAW,EAGd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EACH,WAAW,EAId,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAmB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAqB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAEH,iBAAiB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"dyson-device-360-base.js","sourceRoot":"","sources":["../src/dyson-device-360-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AnsiLogger, LogLevel } from 'matterbridge/logger';
|
|
2
|
+
import { Config } from './config-types.js';
|
|
3
|
+
import { DysonMqtt360 } from './dyson-mqtt-360.js';
|
|
4
|
+
import { Dyson360MapData } from './dyson-360-types.js';
|
|
5
|
+
import { Dyson360MsgMapData, Dyson360MsgMapGlobal, Dyson360MsgMapGrid, Dyson360MsgStateChange } from './dyson-360-msg-types.js';
|
|
6
|
+
import { IErrorDetail } from 'ts-interface-checker';
|
|
7
|
+
import { DysonMapGrid } from './dyson-map-grid.js';
|
|
8
|
+
export declare class DysonDevice360Map {
|
|
9
|
+
readonly log: AnsiLogger;
|
|
10
|
+
readonly config: Config;
|
|
11
|
+
readonly mqtt: DysonMqtt360;
|
|
12
|
+
cleanId?: string;
|
|
13
|
+
readonly grids: Map<string, DysonMapGrid>;
|
|
14
|
+
constructor(log: AnsiLogger, config: Config, mqtt: DysonMqtt360);
|
|
15
|
+
updateMap(msg: Dyson360MsgMapGlobal | Dyson360MsgMapGrid | Dyson360MsgMapData): void;
|
|
16
|
+
finishMap(msg?: Dyson360MsgStateChange): void;
|
|
17
|
+
decodeMapData(content: string): Dyson360MapData;
|
|
18
|
+
logCheckerValidation(level: LogLevel, content: unknown, errors?: IErrorDetail[]): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=dyson-device-360-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dyson-device-360-map.d.ts","sourceRoot":"","sources":["../src/dyson-device-360-map.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACzB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASnD,qBAAa,iBAAiB;IAQtB,QAAQ,CAAC,GAAG,EAAQ,UAAU;IAC9B,QAAQ,CAAC,MAAM,EAAK,MAAM;IAC1B,QAAQ,CAAC,IAAI,EAAO,YAAY;IAPpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,KAAK,4BAAmC;gBAIpC,GAAG,EAAQ,UAAU,EACrB,MAAM,EAAK,MAAM,EACjB,IAAI,EAAO,YAAY;IAkBpC,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,IAAI;IAiCpF,SAAS,CAAC,GAAG,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAsB7C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IA8B/C,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI;CASzF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Matterbridge plugin for Dyson robot vacuum and air treatment devices
|
|
2
|
+
// Copyright © 2025 Alexander Thoukydides
|
|
3
|
+
import { formatSeconds, getValidationTree, tryListener } from './utils.js';
|
|
4
|
+
import { checkers } from './ti/dyson-360-types.js';
|
|
5
|
+
import { inflateSync } from 'node:zlib';
|
|
6
|
+
import { INSPECT_VERBOSE } from './logger-options.js';
|
|
7
|
+
import { inspect } from 'node:util';
|
|
8
|
+
import { DysonMapGrid } from './dyson-map-grid.js';
|
|
9
|
+
import { DysonMapCoordinate } from './dyson-map-coordinate.js';
|
|
10
|
+
import { DYSON_MAP_CONFIG_MATTERBRIDGE, DYSON_MAP_CONFIG_MONOSPACED, dysonMapText } from './dyson-map-text.js';
|
|
11
|
+
// Map rendering for a Dyson robot vacuum device
|
|
12
|
+
export class DysonDevice360Map {
|
|
13
|
+
log;
|
|
14
|
+
config;
|
|
15
|
+
mqtt;
|
|
16
|
+
// Current clean, if any
|
|
17
|
+
cleanId;
|
|
18
|
+
grids = new Map();
|
|
19
|
+
// Construct a new Dyson map renderer
|
|
20
|
+
constructor(log, config, mqtt) {
|
|
21
|
+
this.log = log;
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.mqtt = mqtt;
|
|
24
|
+
// Listen to map-related MQTT messages
|
|
25
|
+
mqtt.on('message', tryListener(this.mqtt, msg => {
|
|
26
|
+
switch (msg.msg) {
|
|
27
|
+
case 'MAP-GLOBAL':
|
|
28
|
+
case 'MAP-GRID':
|
|
29
|
+
case 'MAP-DATA':
|
|
30
|
+
this.updateMap(msg);
|
|
31
|
+
break;
|
|
32
|
+
case 'STATE-CHANGE':
|
|
33
|
+
if (msg.endOfClean)
|
|
34
|
+
this.finishMap(msg);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
// Update a single map tile from a received MQTT message
|
|
40
|
+
updateMap(msg) {
|
|
41
|
+
// Start a new map if the clean identifier has changed
|
|
42
|
+
if (msg.cleanId !== this.cleanId) {
|
|
43
|
+
if (this.cleanId !== undefined) {
|
|
44
|
+
this.log.warn(`Discarding map for cleanId ${this.cleanId}`);
|
|
45
|
+
this.finishMap();
|
|
46
|
+
}
|
|
47
|
+
this.log.debug(`Starting new map for cleanId ${msg.cleanId}`);
|
|
48
|
+
this.cleanId = msg.cleanId;
|
|
49
|
+
}
|
|
50
|
+
// Select or create the tile for this update
|
|
51
|
+
const grid = this.grids.get(msg.gridID) ?? new DysonMapGrid();
|
|
52
|
+
this.grids.set(msg.gridID, grid);
|
|
53
|
+
// Update the tile using the details from the received MQTT message
|
|
54
|
+
switch (msg.msg) {
|
|
55
|
+
case 'MAP-GLOBAL':
|
|
56
|
+
grid.setGlobalPosition(new DysonMapCoordinate(msg));
|
|
57
|
+
grid.setRotation(msg.angle);
|
|
58
|
+
break;
|
|
59
|
+
case 'MAP-GRID':
|
|
60
|
+
grid.setResolution(msg.resolution);
|
|
61
|
+
grid.setSize(new DysonMapCoordinate([msg.width, msg.height]));
|
|
62
|
+
grid.setOrigin(new DysonMapCoordinate(msg.anchor));
|
|
63
|
+
break;
|
|
64
|
+
case 'MAP-DATA':
|
|
65
|
+
grid.setData(this.decodeMapData(msg.data.content));
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Render the final map when the clean finishes
|
|
70
|
+
finishMap(msg) {
|
|
71
|
+
if (this.cleanId === undefined)
|
|
72
|
+
return;
|
|
73
|
+
// Convert the map to a textual representation for logging
|
|
74
|
+
const { logMapStyle } = this.config;
|
|
75
|
+
if (logMapStyle !== 'Off') {
|
|
76
|
+
const style = logMapStyle === 'Matterbridge'
|
|
77
|
+
? DYSON_MAP_CONFIG_MATTERBRIDGE : DYSON_MAP_CONFIG_MONOSPACED;
|
|
78
|
+
const robotCoord = new DysonMapCoordinate(this.mqtt.status.globalPosition);
|
|
79
|
+
const mapText = dysonMapText([...this.grids.values()], robotCoord, style);
|
|
80
|
+
this.log.info(msg?.cleanDuration
|
|
81
|
+
? `Cleaned for ${formatSeconds(msg.cleanDuration)}:`
|
|
82
|
+
: `Unexpected end of clean ${this.cleanId}:`);
|
|
83
|
+
for (const line of mapText)
|
|
84
|
+
this.log.info(line);
|
|
85
|
+
}
|
|
86
|
+
// Discard the map data
|
|
87
|
+
this.cleanId = undefined;
|
|
88
|
+
this.grids.clear();
|
|
89
|
+
}
|
|
90
|
+
// Decode and check the MAP-DATA content field
|
|
91
|
+
decodeMapData(content) {
|
|
92
|
+
let json;
|
|
93
|
+
try {
|
|
94
|
+
const deflated = Buffer.from(content, 'base64');
|
|
95
|
+
// (Note: zlib deflate compressed, despite 'gzipped' label)
|
|
96
|
+
const text = inflateSync(deflated).toString();
|
|
97
|
+
json = JSON.parse(text);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
101
|
+
throw new Error(`Failed to decode and parse Dyson map data as JSON: ${message}`);
|
|
102
|
+
}
|
|
103
|
+
// Check that the map data has the expected fields
|
|
104
|
+
const checker = checkers.Dyson360MapData;
|
|
105
|
+
const validation = checker.validate(json);
|
|
106
|
+
if (validation) {
|
|
107
|
+
this.logCheckerValidation("error" /* LogLevel.ERROR */, json, validation);
|
|
108
|
+
throw new Error('Unexpected structure of Dyson map data');
|
|
109
|
+
}
|
|
110
|
+
const strictValidation = checker.strictValidate(json);
|
|
111
|
+
if (strictValidation) {
|
|
112
|
+
this.logCheckerValidation("warn" /* LogLevel.WARN */, json, strictValidation);
|
|
113
|
+
// (Continue processing map data that includes unexpected properties)
|
|
114
|
+
}
|
|
115
|
+
// Return the result
|
|
116
|
+
return json;
|
|
117
|
+
}
|
|
118
|
+
// Log checker validation errors
|
|
119
|
+
logCheckerValidation(level, content, errors) {
|
|
120
|
+
this.log.log(level, 'MAP-DATA content:');
|
|
121
|
+
if (errors) {
|
|
122
|
+
const validationLines = getValidationTree(errors);
|
|
123
|
+
validationLines.forEach(line => { this.log.log(level, line); });
|
|
124
|
+
}
|
|
125
|
+
const contentLines = inspect(content, INSPECT_VERBOSE).split('\n');
|
|
126
|
+
contentLines.forEach(line => { this.log.info(` ${line}`); });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=dyson-device-360-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dyson-device-360-map.js","sourceRoot":"","sources":["../src/dyson-device-360-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { DysonMapCoordinate } from './dyson-map-coordinate.js';
|
|
2
|
+
export type DysonMapPixel<Layer extends string> = Partial<Record<Layer, number>>;
|
|
3
|
+
export declare abstract class DysonMapBitmapBase<Layer extends string> {
|
|
4
|
+
abstract get size(): DysonMapCoordinate;
|
|
5
|
+
abstract get origin(): DysonMapCoordinate;
|
|
6
|
+
abstract getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
7
|
+
}
|
|
8
|
+
export declare class DysonMapBitmap<Layer extends string> extends DysonMapBitmapBase<Layer> {
|
|
9
|
+
layers: Map<Layer, number[][]>;
|
|
10
|
+
size: DysonMapCoordinate;
|
|
11
|
+
origin: DysonMapCoordinate;
|
|
12
|
+
setLayer(layer: Layer, data: number[][]): void;
|
|
13
|
+
getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
14
|
+
}
|
|
15
|
+
export declare class DysonMapBitmapRotated<Layer extends string> extends DysonMapBitmapBase<Layer> {
|
|
16
|
+
readonly bitmap: DysonMapBitmapBase<Layer>;
|
|
17
|
+
readonly degrees: number;
|
|
18
|
+
constructor(bitmap: DysonMapBitmapBase<Layer>, degrees: number);
|
|
19
|
+
get size(): DysonMapCoordinate;
|
|
20
|
+
get origin(): DysonMapCoordinate;
|
|
21
|
+
getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
22
|
+
rotateCoordinate(degrees: number, coord: DysonMapCoordinate): DysonMapCoordinate;
|
|
23
|
+
}
|
|
24
|
+
export declare class DysonMapBitmapResampled<Layer extends string> extends DysonMapBitmapBase<Layer> {
|
|
25
|
+
readonly bitmap: DysonMapBitmapBase<Layer>;
|
|
26
|
+
readonly scaleX: number;
|
|
27
|
+
readonly scaleY: number;
|
|
28
|
+
constructor(bitmap: DysonMapBitmapBase<Layer>, scaleX: number, // (0 < scale < 1 for smaller)
|
|
29
|
+
scaleY?: number);
|
|
30
|
+
get size(): DysonMapCoordinate;
|
|
31
|
+
get origin(): DysonMapCoordinate;
|
|
32
|
+
getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
33
|
+
}
|
|
34
|
+
export declare class DysonMapBitmapCropped<Layer extends string> extends DysonMapBitmapBase<Layer> {
|
|
35
|
+
readonly bitmap: DysonMapBitmapBase<Layer>;
|
|
36
|
+
readonly min: DysonMapCoordinate;
|
|
37
|
+
readonly max: DysonMapCoordinate;
|
|
38
|
+
constructor(bitmap: DysonMapBitmapBase<Layer>, min: DysonMapCoordinate, // (inclusive)
|
|
39
|
+
max: DysonMapCoordinate);
|
|
40
|
+
get size(): DysonMapCoordinate;
|
|
41
|
+
get origin(): DysonMapCoordinate;
|
|
42
|
+
getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
43
|
+
}
|
|
44
|
+
interface DysonMapBitmapWithCoord<Layer extends string> {
|
|
45
|
+
bitmap: DysonMapBitmapBase<Layer>;
|
|
46
|
+
boundingBox: [DysonMapCoordinate, DysonMapCoordinate];
|
|
47
|
+
}
|
|
48
|
+
export declare class DysonMapBitmapComposite<Layer extends string> extends DysonMapBitmapBase<Layer> {
|
|
49
|
+
readonly bitmaps: DysonMapBitmapWithCoord<Layer>[];
|
|
50
|
+
boundingBox?: [DysonMapCoordinate, DysonMapCoordinate];
|
|
51
|
+
addBitmap(bitmap: DysonMapBitmapBase<Layer>, origin: DysonMapCoordinate): void;
|
|
52
|
+
get size(): DysonMapCoordinate;
|
|
53
|
+
get origin(): DysonMapCoordinate;
|
|
54
|
+
getPixel(coord: DysonMapCoordinate): DysonMapPixel<Layer>;
|
|
55
|
+
}
|
|
56
|
+
export declare function DysonMapMergePixels<Layer extends string>(pixels: DysonMapPixel<Layer>[]): DysonMapPixel<Layer>;
|
|
57
|
+
export declare function DysonMapBitmapBoundingBox<Layer extends string>(bitmap: DysonMapBitmapBase<Layer>, predicate: (pixel: DysonMapPixel<Layer>) => boolean): [DysonMapCoordinate, DysonMapCoordinate] | undefined;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=dyson-map-bitmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dyson-map-bitmap.d.ts","sourceRoot":"","sources":["../src/dyson-map-bitmap.ts"],"names":[],"mappings":"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"}
|