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.
Files changed (261) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +14 -0
  3. package/README.md +365 -0
  4. package/dist/async-eventemitter.d.ts +9 -0
  5. package/dist/async-eventemitter.d.ts.map +1 -0
  6. package/dist/async-eventemitter.js +35 -0
  7. package/dist/async-eventemitter.js.map +1 -0
  8. package/dist/check-configuration.d.ts +5 -0
  9. package/dist/check-configuration.d.ts.map +1 -0
  10. package/dist/check-configuration.js +35 -0
  11. package/dist/check-configuration.js.map +1 -0
  12. package/dist/check-versions.d.ts +3 -0
  13. package/dist/check-versions.d.ts.map +1 -0
  14. package/dist/check-versions.js +31 -0
  15. package/dist/check-versions.js.map +1 -0
  16. package/dist/config-types.d.ts +48 -0
  17. package/dist/config-types.d.ts.map +1 -0
  18. package/dist/config-types.js +4 -0
  19. package/dist/config-types.js.map +1 -0
  20. package/dist/decorator-changed.d.ts +16 -0
  21. package/dist/decorator-changed.d.ts.map +1 -0
  22. package/dist/decorator-changed.js +62 -0
  23. package/dist/decorator-changed.js.map +1 -0
  24. package/dist/dyson-360-msg-types.d.ts +113 -0
  25. package/dist/dyson-360-msg-types.d.ts.map +1 -0
  26. package/dist/dyson-360-msg-types.js +4 -0
  27. package/dist/dyson-360-msg-types.js.map +1 -0
  28. package/dist/dyson-360-types.d.ts +76 -0
  29. package/dist/dyson-360-types.d.ts.map +1 -0
  30. package/dist/dyson-360-types.js +72 -0
  31. package/dist/dyson-360-types.js.map +1 -0
  32. package/dist/dyson-air-msg-types.d.ts +99 -0
  33. package/dist/dyson-air-msg-types.d.ts.map +1 -0
  34. package/dist/dyson-air-msg-types.js +4 -0
  35. package/dist/dyson-air-msg-types.js.map +1 -0
  36. package/dist/dyson-air-sensor-types.d.ts +59 -0
  37. package/dist/dyson-air-sensor-types.d.ts.map +1 -0
  38. package/dist/dyson-air-sensor-types.js +4 -0
  39. package/dist/dyson-air-sensor-types.js.map +1 -0
  40. package/dist/dyson-air-state-types.d.ts +96 -0
  41. package/dist/dyson-air-state-types.d.ts.map +1 -0
  42. package/dist/dyson-air-state-types.js +4 -0
  43. package/dist/dyson-air-state-types.js.map +1 -0
  44. package/dist/dyson-air-types.d.ts +325 -0
  45. package/dist/dyson-air-types.d.ts.map +1 -0
  46. package/dist/dyson-air-types.js +382 -0
  47. package/dist/dyson-air-types.js.map +1 -0
  48. package/dist/dyson-device-360-base.d.ts +35 -0
  49. package/dist/dyson-device-360-base.d.ts.map +1 -0
  50. package/dist/dyson-device-360-base.js +233 -0
  51. package/dist/dyson-device-360-base.js.map +1 -0
  52. package/dist/dyson-device-360-commands.d.ts +7 -0
  53. package/dist/dyson-device-360-commands.d.ts.map +1 -0
  54. package/dist/dyson-device-360-commands.js +129 -0
  55. package/dist/dyson-device-360-commands.js.map +1 -0
  56. package/dist/dyson-device-360-faults-table.d.ts +20 -0
  57. package/dist/dyson-device-360-faults-table.d.ts.map +1 -0
  58. package/dist/dyson-device-360-faults-table.js +161 -0
  59. package/dist/dyson-device-360-faults-table.js.map +1 -0
  60. package/dist/dyson-device-360-faults.d.ts +10 -0
  61. package/dist/dyson-device-360-faults.d.ts.map +1 -0
  62. package/dist/dyson-device-360-faults.js +123 -0
  63. package/dist/dyson-device-360-faults.js.map +1 -0
  64. package/dist/dyson-device-360.d.ts +38 -0
  65. package/dist/dyson-device-360.d.ts.map +1 -0
  66. package/dist/dyson-device-360.js +45 -0
  67. package/dist/dyson-device-360.js.map +1 -0
  68. package/dist/dyson-device-air-base.d.ts +41 -0
  69. package/dist/dyson-device-air-base.d.ts.map +1 -0
  70. package/dist/dyson-device-air-base.js +446 -0
  71. package/dist/dyson-device-air-base.js.map +1 -0
  72. package/dist/dyson-device-air-heat.d.ts +52 -0
  73. package/dist/dyson-device-air-heat.d.ts.map +1 -0
  74. package/dist/dyson-device-air-heat.js +71 -0
  75. package/dist/dyson-device-air-heat.js.map +1 -0
  76. package/dist/dyson-device-air-quality.d.ts +7 -0
  77. package/dist/dyson-device-air-quality.d.ts.map +1 -0
  78. package/dist/dyson-device-air-quality.js +101 -0
  79. package/dist/dyson-device-air-quality.js.map +1 -0
  80. package/dist/dyson-device-air.d.ts +216 -0
  81. package/dist/dyson-device-air.d.ts.map +1 -0
  82. package/dist/dyson-device-air.js +80 -0
  83. package/dist/dyson-device-air.js.map +1 -0
  84. package/dist/dyson-device-base.d.ts +49 -0
  85. package/dist/dyson-device-base.d.ts.map +1 -0
  86. package/dist/dyson-device-base.js +46 -0
  87. package/dist/dyson-device-base.js.map +1 -0
  88. package/dist/dyson-device.d.ts +5 -0
  89. package/dist/dyson-device.d.ts.map +1 -0
  90. package/dist/dyson-device.js +43 -0
  91. package/dist/dyson-device.js.map +1 -0
  92. package/dist/dyson-mqtt-360.d.ts +16 -0
  93. package/dist/dyson-mqtt-360.d.ts.map +1 -0
  94. package/dist/dyson-mqtt-360.js +83 -0
  95. package/dist/dyson-mqtt-360.js.map +1 -0
  96. package/dist/dyson-mqtt-air.d.ts +48 -0
  97. package/dist/dyson-mqtt-air.d.ts.map +1 -0
  98. package/dist/dyson-mqtt-air.js +216 -0
  99. package/dist/dyson-mqtt-air.js.map +1 -0
  100. package/dist/dyson-mqtt-config.d.ts +6 -0
  101. package/dist/dyson-mqtt-config.d.ts.map +1 -0
  102. package/dist/dyson-mqtt-config.js +47 -0
  103. package/dist/dyson-mqtt-config.js.map +1 -0
  104. package/dist/dyson-mqtt-connect.d.ts +22 -0
  105. package/dist/dyson-mqtt-connect.d.ts.map +1 -0
  106. package/dist/dyson-mqtt-connect.js +145 -0
  107. package/dist/dyson-mqtt-connect.js.map +1 -0
  108. package/dist/dyson-mqtt-filter.d.ts +10 -0
  109. package/dist/dyson-mqtt-filter.d.ts.map +1 -0
  110. package/dist/dyson-mqtt-filter.js +25 -0
  111. package/dist/dyson-mqtt-filter.js.map +1 -0
  112. package/dist/dyson-mqtt-parse.d.ts +16 -0
  113. package/dist/dyson-mqtt-parse.d.ts.map +1 -0
  114. package/dist/dyson-mqtt-parse.js +100 -0
  115. package/dist/dyson-mqtt-parse.js.map +1 -0
  116. package/dist/dyson-mqtt-subscribe.d.ts +28 -0
  117. package/dist/dyson-mqtt-subscribe.d.ts.map +1 -0
  118. package/dist/dyson-mqtt-subscribe.js +85 -0
  119. package/dist/dyson-mqtt-subscribe.js.map +1 -0
  120. package/dist/dyson-mqtt.d.ts +51 -0
  121. package/dist/dyson-mqtt.d.ts.map +1 -0
  122. package/dist/dyson-mqtt.js +138 -0
  123. package/dist/dyson-mqtt.js.map +1 -0
  124. package/dist/dyson-types.d.ts +18 -0
  125. package/dist/dyson-types.d.ts.map +1 -0
  126. package/dist/dyson-types.js +20 -0
  127. package/dist/dyson-types.js.map +1 -0
  128. package/dist/endpoint-360-behavior.d.ts +55 -0
  129. package/dist/endpoint-360-behavior.d.ts.map +1 -0
  130. package/dist/endpoint-360-behavior.js +156 -0
  131. package/dist/endpoint-360-behavior.js.map +1 -0
  132. package/dist/endpoint-360-rvc.d.ts +14 -0
  133. package/dist/endpoint-360-rvc.d.ts.map +1 -0
  134. package/dist/endpoint-360-rvc.js +149 -0
  135. package/dist/endpoint-360-rvc.js.map +1 -0
  136. package/dist/endpoint-360.d.ts +35 -0
  137. package/dist/endpoint-360.d.ts.map +1 -0
  138. package/dist/endpoint-360.js +197 -0
  139. package/dist/endpoint-360.js.map +1 -0
  140. package/dist/endpoint-air-purifier.d.ts +24 -0
  141. package/dist/endpoint-air-purifier.d.ts.map +1 -0
  142. package/dist/endpoint-air-purifier.js +97 -0
  143. package/dist/endpoint-air-purifier.js.map +1 -0
  144. package/dist/endpoint-air-quality.d.ts +11 -0
  145. package/dist/endpoint-air-quality.d.ts.map +1 -0
  146. package/dist/endpoint-air-quality.js +104 -0
  147. package/dist/endpoint-air-quality.js.map +1 -0
  148. package/dist/endpoint-air-thermostat.d.ts +358 -0
  149. package/dist/endpoint-air-thermostat.d.ts.map +1 -0
  150. package/dist/endpoint-air-thermostat.js +67 -0
  151. package/dist/endpoint-air-thermostat.js.map +1 -0
  152. package/dist/endpoint-air.d.ts +125 -0
  153. package/dist/endpoint-air.d.ts.map +1 -0
  154. package/dist/endpoint-air.js +459 -0
  155. package/dist/endpoint-air.js.map +1 -0
  156. package/dist/endpoint-base.d.ts +36 -0
  157. package/dist/endpoint-base.d.ts.map +1 -0
  158. package/dist/endpoint-base.js +137 -0
  159. package/dist/endpoint-base.js.map +1 -0
  160. package/dist/error-360.d.ts +35 -0
  161. package/dist/error-360.d.ts.map +1 -0
  162. package/dist/error-360.js +105 -0
  163. package/dist/error-360.js.map +1 -0
  164. package/dist/index.d.ts +5 -0
  165. package/dist/index.d.ts.map +1 -0
  166. package/dist/index.js +8 -0
  167. package/dist/index.js.map +1 -0
  168. package/dist/logger-filter.d.ts +23 -0
  169. package/dist/logger-filter.d.ts.map +1 -0
  170. package/dist/logger-filter.js +104 -0
  171. package/dist/logger-filter.js.map +1 -0
  172. package/dist/logger-options.d.ts +18 -0
  173. package/dist/logger-options.d.ts.map +1 -0
  174. package/dist/logger-options.js +41 -0
  175. package/dist/logger-options.js.map +1 -0
  176. package/dist/logger-prefix.d.ts +12 -0
  177. package/dist/logger-prefix.d.ts.map +1 -0
  178. package/dist/logger-prefix.js +37 -0
  179. package/dist/logger-prefix.js.map +1 -0
  180. package/dist/periodic.d.ts +31 -0
  181. package/dist/periodic.d.ts.map +1 -0
  182. package/dist/periodic.js +102 -0
  183. package/dist/periodic.js.map +1 -0
  184. package/dist/platform.d.ts +18 -0
  185. package/dist/platform.d.ts.map +1 -0
  186. package/dist/platform.js +138 -0
  187. package/dist/platform.js.map +1 -0
  188. package/dist/settings.d.ts +9 -0
  189. package/dist/settings.d.ts.map +1 -0
  190. package/dist/settings.js +28 -0
  191. package/dist/settings.js.map +1 -0
  192. package/dist/ti/config-types-ti.d.ts +16 -0
  193. package/dist/ti/config-types-ti.d.ts.map +1 -0
  194. package/dist/ti/config-types-ti.js +65 -0
  195. package/dist/ti/config-types-ti.js.map +1 -0
  196. package/dist/ti/config-types.d.ts +37 -0
  197. package/dist/ti/config-types.d.ts.map +1 -0
  198. package/dist/ti/config-types.js +11 -0
  199. package/dist/ti/config-types.js.map +1 -0
  200. package/dist/ti/dyson-360-msg-types-ti.d.ts +22 -0
  201. package/dist/ti/dyson-360-msg-types-ti.d.ts.map +1 -0
  202. package/dist/ti/dyson-360-msg-types-ti.js +134 -0
  203. package/dist/ti/dyson-360-msg-types-ti.js.map +1 -0
  204. package/dist/ti/dyson-360-msg-types.d.ts +55 -0
  205. package/dist/ti/dyson-360-msg-types.d.ts.map +1 -0
  206. package/dist/ti/dyson-360-msg-types.js +13 -0
  207. package/dist/ti/dyson-360-msg-types.js.map +1 -0
  208. package/dist/ti/dyson-360-types-ti.d.ts +17 -0
  209. package/dist/ti/dyson-360-types-ti.d.ts.map +1 -0
  210. package/dist/ti/dyson-360-types-ti.js +94 -0
  211. package/dist/ti/dyson-360-types-ti.js.map +1 -0
  212. package/dist/ti/dyson-360-types.d.ts +40 -0
  213. package/dist/ti/dyson-360-types.d.ts.map +1 -0
  214. package/dist/ti/dyson-360-types.js +11 -0
  215. package/dist/ti/dyson-360-types.js.map +1 -0
  216. package/dist/ti/dyson-air-msg-types-ti.d.ts +19 -0
  217. package/dist/ti/dyson-air-msg-types-ti.d.ts.map +1 -0
  218. package/dist/ti/dyson-air-msg-types-ti.js +115 -0
  219. package/dist/ti/dyson-air-msg-types-ti.js.map +1 -0
  220. package/dist/ti/dyson-air-msg-types.d.ts +46 -0
  221. package/dist/ti/dyson-air-msg-types.d.ts.map +1 -0
  222. package/dist/ti/dyson-air-msg-types.js +15 -0
  223. package/dist/ti/dyson-air-msg-types.js.map +1 -0
  224. package/dist/ti/dyson-air-sensor-types-ti.d.ts +9 -0
  225. package/dist/ti/dyson-air-sensor-types-ti.d.ts.map +1 -0
  226. package/dist/ti/dyson-air-sensor-types-ti.js +68 -0
  227. package/dist/ti/dyson-air-sensor-types-ti.js.map +1 -0
  228. package/dist/ti/dyson-air-sensor-types.d.ts +16 -0
  229. package/dist/ti/dyson-air-sensor-types.d.ts.map +1 -0
  230. package/dist/ti/dyson-air-sensor-types.js +12 -0
  231. package/dist/ti/dyson-air-sensor-types.js.map +1 -0
  232. package/dist/ti/dyson-air-state-types-ti.d.ts +9 -0
  233. package/dist/ti/dyson-air-state-types-ti.d.ts.map +1 -0
  234. package/dist/ti/dyson-air-state-types-ti.js +105 -0
  235. package/dist/ti/dyson-air-state-types-ti.js.map +1 -0
  236. package/dist/ti/dyson-air-state-types.d.ts +16 -0
  237. package/dist/ti/dyson-air-state-types.d.ts.map +1 -0
  238. package/dist/ti/dyson-air-state-types.js +12 -0
  239. package/dist/ti/dyson-air-state-types.js.map +1 -0
  240. package/dist/ti/dyson-air-types-ti.d.ts +59 -0
  241. package/dist/ti/dyson-air-types-ti.d.ts.map +1 -0
  242. package/dist/ti/dyson-air-types-ti.js +385 -0
  243. package/dist/ti/dyson-air-types-ti.js.map +1 -0
  244. package/dist/ti/dyson-air-types.d.ts +166 -0
  245. package/dist/ti/dyson-air-types.d.ts.map +1 -0
  246. package/dist/ti/dyson-air-types.js +11 -0
  247. package/dist/ti/dyson-air-types.js.map +1 -0
  248. package/dist/ti/dyson-types-ti.d.ts +10 -0
  249. package/dist/ti/dyson-types-ti.d.ts.map +1 -0
  250. package/dist/ti/dyson-types-ti.js +29 -0
  251. package/dist/ti/dyson-types-ti.js.map +1 -0
  252. package/dist/ti/dyson-types.d.ts +19 -0
  253. package/dist/ti/dyson-types.d.ts.map +1 -0
  254. package/dist/ti/dyson-types.js +11 -0
  255. package/dist/ti/dyson-types.js.map +1 -0
  256. package/dist/utils.d.ts +24 -0
  257. package/dist/utils.d.ts.map +1 -0
  258. package/dist/utils.js +150 -0
  259. package/dist/utils.js.map +1 -0
  260. package/matterbridge-dyson-robot.schema.json +359 -0
  261. package/package.json +93 -0
@@ -0,0 +1,62 @@
1
+ // Matterbridge plugin for Dyson robot vacuum and air treatment devices
2
+ // Copyright © 2025 Alexander Thoukydides
3
+ import { isDeepStrictEqual } from 'util';
4
+ import { formatList } from './utils.js';
5
+ export class Changed {
6
+ log;
7
+ // The previous values
8
+ prevValues = new Map();
9
+ // Construct a new value change tracker
10
+ constructor(log) {
11
+ this.log = log;
12
+ }
13
+ // Check if the value has changed
14
+ isChanged(key, newValue) {
15
+ const oldValue = this.prevValues.get(key);
16
+ const changed = !isDeepStrictEqual(oldValue, newValue);
17
+ if (changed) {
18
+ this.log.debug(`${String(key)} changed: ${diffChanged(oldValue, newValue)}`);
19
+ this.setLast(key, newValue);
20
+ }
21
+ return changed;
22
+ }
23
+ // Set the last value
24
+ setLast(key, value) {
25
+ this.prevValues.set(key, structuredClone(value));
26
+ }
27
+ // Flush previous values, so anything new is considered a change
28
+ flush(key) {
29
+ if (key)
30
+ this.prevValues.delete(key);
31
+ else
32
+ this.prevValues.clear();
33
+ }
34
+ }
35
+ // Decorator to only invoke method if the parameter value has changed
36
+ export function ifValueChanged(originalMethod, context) {
37
+ function replacementMethod(value) {
38
+ if (this.changed.isChanged(context.name, value)) {
39
+ return originalMethod.call(this, value);
40
+ }
41
+ // Must return a Promise in async context, but also safe when R is void
42
+ return Promise.resolve();
43
+ }
44
+ return replacementMethod;
45
+ }
46
+ // Diff two values (that are not equal)
47
+ function diffChanged(oldValue, newValue) {
48
+ const isObject = (value) => typeof value === 'object' && value !== null;
49
+ const stringify = (value) => JSON.stringify(value);
50
+ // Handle non-object comparisons
51
+ if (!isObject(oldValue) || !isObject(newValue)) {
52
+ return `${stringify(oldValue)} → ${stringify(newValue)}`;
53
+ }
54
+ // Compare the individual properties of objects
55
+ const oldObj = oldValue;
56
+ const newObj = newValue;
57
+ const diffs = [...new Set([...Object.keys(oldObj), ...Object.keys(newObj)])]
58
+ .filter(key => !isDeepStrictEqual(oldObj[key], newObj[key]))
59
+ .map(key => `${key}: ${stringify(oldObj[key])} → ${stringify(newObj[key])}`);
60
+ return formatList(diffs);
61
+ }
62
+ //# sourceMappingURL=decorator-changed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-changed.js","sourceRoot":"","sources":["../src/decorator-changed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { Dyson360CleaningMode, Dyson360CleaningType, Dyson360Faults, Dyson360Position, Dyson360PowerMode, Dyson360State } from './dyson-360-types.js';
2
+ import { DysonModeReason, DysonMsg } from './dyson-types.js';
3
+ export interface Dyson360MsgDeviceCredentials extends DysonMsg {
4
+ msg: 'DEVICE-CREDENTIALS';
5
+ serialNumber: string;
6
+ apPasswordHash: string;
7
+ }
8
+ export interface Dyson360MsgConnectionStatus extends DysonMsg {
9
+ msg: 'CONNECTION-STATUS';
10
+ status: string;
11
+ phase: string;
12
+ network: string;
13
+ requestId: string;
14
+ ip: string;
15
+ }
16
+ export interface Dyson360MsgGoodbye extends DysonMsg {
17
+ msg: 'GOODBYE';
18
+ reason: 'UNKNOWN';
19
+ }
20
+ export interface Dyson360MsgCurrentState extends DysonMsg {
21
+ msg: 'CURRENT-STATE';
22
+ batteryChargeLevel: number;
23
+ cleanDuration?: number;
24
+ cleanId: string;
25
+ currentVacuumPowerMode: Dyson360PowerMode;
26
+ defaultVacuumPowerMode: Dyson360PowerMode;
27
+ currentCleaningMode?: Dyson360CleaningMode;
28
+ defaultCleaningMode?: Dyson360CleaningMode;
29
+ faults?: Dyson360Faults;
30
+ fullCleanType: Dyson360CleaningType;
31
+ globalPosition: Dyson360Position;
32
+ state: Dyson360State;
33
+ }
34
+ export interface Dyson360MsgStateChange extends DysonMsg {
35
+ msg: 'STATE-CHANGE';
36
+ batteryChargeLevel: number;
37
+ cleanDuration?: number;
38
+ cleanId: string;
39
+ currentVacuumPowerMode: Dyson360PowerMode;
40
+ defaultVacuumPowerMode: Dyson360PowerMode;
41
+ currentCleaningMode?: Dyson360CleaningMode;
42
+ defaultCleaningMode?: Dyson360CleaningMode;
43
+ faults?: Dyson360Faults;
44
+ fullCleanType: Dyson360CleaningType;
45
+ globalPosition: Dyson360Position;
46
+ newstate: Dyson360State;
47
+ oldstate: Dyson360State;
48
+ endOfClean?: boolean;
49
+ }
50
+ export interface Dyson360MsgMapData extends DysonMsg {
51
+ msg: 'MAP-DATA';
52
+ gridID: string;
53
+ cleanId: string;
54
+ data: {
55
+ content: string;
56
+ contentType: string;
57
+ contentEncoding: string;
58
+ };
59
+ }
60
+ export interface Dyson360MsgMapGlobal extends DysonMsg {
61
+ msg: 'MAP-GLOBAL';
62
+ angle: number;
63
+ cleanId: string;
64
+ gridID: string;
65
+ x: number;
66
+ y: number;
67
+ }
68
+ export interface Dyson360MsgMapGrid extends DysonMsg {
69
+ msg: 'MAP-GRID';
70
+ anchor: Dyson360Position;
71
+ cleanId: string;
72
+ gridID: string;
73
+ height: number;
74
+ resolution: number;
75
+ width: number;
76
+ }
77
+ export interface Dyson360MsgTelemetryData extends DysonMsg {
78
+ msg: 'TELEMETRY-DATA';
79
+ field1: string;
80
+ field2: string;
81
+ field3: string;
82
+ field4: string;
83
+ id: string;
84
+ }
85
+ export interface Dyson360MsgRequestCurrentState extends DysonMsg {
86
+ msg: 'REQUEST-CURRENT-STATE';
87
+ }
88
+ export interface Dyson360MsgStateSet extends DysonMsg {
89
+ msg: 'STATE-SET';
90
+ 'mode-reason': DysonModeReason;
91
+ data: {
92
+ defaultVacuumPowerMode: Dyson360PowerMode;
93
+ };
94
+ }
95
+ export interface Dyson360MsgStart extends DysonMsg {
96
+ msg: 'START';
97
+ 'mode-reason': DysonModeReason;
98
+ fullCleanType: Dyson360CleaningType;
99
+ cleaningMode?: Dyson360CleaningMode;
100
+ }
101
+ export interface Dyson360MsgPause extends DysonMsg {
102
+ msg: 'PAUSE';
103
+ 'mode-reason': DysonModeReason;
104
+ }
105
+ export interface Dyson360MsgResume extends DysonMsg {
106
+ msg: 'RESUME';
107
+ 'mode-reason': DysonModeReason;
108
+ }
109
+ export interface Dyson360MsgAbort extends DysonMsg {
110
+ msg: 'ABORT';
111
+ 'mode-reason': DysonModeReason;
112
+ }
113
+ //# sourceMappingURL=dyson-360-msg-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-360-msg-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-msg-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // Matterbridge plugin for Dyson robot vacuum and air treatment devices
2
+ // Copyright © 2025 Alexander Thoukydides
3
+ export {};
4
+ //# sourceMappingURL=dyson-360-msg-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-360-msg-types.js","sourceRoot":"","sources":["../src/dyson-360-msg-types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC"}
@@ -0,0 +1,76 @@
1
+ export declare enum Dyson360State {
2
+ FaultCallHelpline = "FAULT_CALL_HELPLINE",
3
+ FaultContactHelpline = "FAULT_CONTACT_HELPLINE",
4
+ FaultCritical = "FAULT_CRITICAL",
5
+ FaultGettingInfo = "FAULT_GETTING_INFO",
6
+ FaultLost = "FAULT_LOST",
7
+ FaultOnDock = "FAULT_ON_DOCK",
8
+ FaultOnDockCharged = "FAULT_ON_DOCK_CHARGED",
9
+ FaultOnDockCharging = "FAULT_ON_DOCK_CHARGING",
10
+ FaultReplaceOnDock = "FAULT_REPLACE_ON_DOCK",
11
+ FaultReturnToDock = "FAULT_RETURN_TO_DOCK",
12
+ FaultRunningDiagnostic = "FAULT_RUNNING_DIAGNOSTIC",
13
+ FaultUserRecoverable = "FAULT_USER_RECOVERABLE",
14
+ FullCleanAbandoned = "FULL_CLEAN_ABANDONED",
15
+ FullCleanAborted = "FULL_CLEAN_ABORTED",
16
+ FullCleanCharging = "FULL_CLEAN_CHARGING",
17
+ FullCleanDiscovering = "FULL_CLEAN_DISCOVERING",
18
+ FullCleanFinished = "FULL_CLEAN_FINISHED",
19
+ FullCleanInitiated = "FULL_CLEAN_INITIATED",
20
+ FullCleanNeedsCharge = "FULL_CLEAN_NEEDS_CHARGE",
21
+ FullCleanPaused = "FULL_CLEAN_PAUSED",
22
+ FullCleanRunning = "FULL_CLEAN_RUNNING",
23
+ FullCleanTraversing = "FULL_CLEAN_TRAVERSING",
24
+ InactiveCharged = "INACTIVE_CHARGED",
25
+ InactiveCharging = "INACTIVE_CHARGING",
26
+ InactiveDischarging = "INACTIVE_DISCHARGING",
27
+ MappingAborted = "MAPPING_ABORTED",
28
+ MappingCharging = "MAPPING_CHARGING",
29
+ MappingFinished = "MAPPING_FINISHED",
30
+ MappingInitiated = "MAPPING_INITIATED",
31
+ MappingNeedsCharge = "MAPPING_NEEDS_CHARGE",
32
+ MappingPaused = "MAPPING_PAUSED",
33
+ MappingRunning = "MAPPING_RUNNING"
34
+ }
35
+ export type Dyson360FaultStatus = {
36
+ active: false;
37
+ } | {
38
+ active: true;
39
+ description: string;
40
+ };
41
+ export interface Dyson360Faults {
42
+ AIRWAYS: Dyson360FaultStatus;
43
+ BATTERY: Dyson360FaultStatus;
44
+ BRUSH_BAR_AND_TRACTION: Dyson360FaultStatus;
45
+ CHARGE_STATION: Dyson360FaultStatus;
46
+ LOST: Dyson360FaultStatus;
47
+ OPTICS: Dyson360FaultStatus;
48
+ }
49
+ export declare enum Dyson360EyePowerMode {
50
+ Quiet = "halfPower",
51
+ Max = "fullPower"
52
+ }
53
+ export declare enum Dyson360HeuristPowerMode {
54
+ Quiet = "1",
55
+ High = "2",
56
+ Max = "3"
57
+ }
58
+ export declare enum Dyson360VisNavPowerMode {
59
+ Auto = "1",
60
+ Quick = "2",
61
+ Quiet = "3",
62
+ Boost = "4"
63
+ }
64
+ export type Dyson360PowerMode = Dyson360EyePowerMode | Dyson360HeuristPowerMode | Dyson360VisNavPowerMode;
65
+ export declare enum Dyson360CleaningType {
66
+ Unknown = "",
67
+ Immediate = "immediate",
68
+ Manual = "manual",
69
+ Scheduled = "scheduled"
70
+ }
71
+ export declare enum Dyson360CleaningMode {
72
+ Global = "global",
73
+ ZoneConfigured = "zoneConfigured"
74
+ }
75
+ export type Dyson360Position = [number, number];
76
+ //# sourceMappingURL=dyson-360-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-360-types.d.ts","sourceRoot":"","sources":["../src/dyson-360-types.ts"],"names":[],"mappings":"AAIA,oBAAY,aAAa;IACrB,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"}
@@ -0,0 +1,72 @@
1
+ // Matterbridge plugin for Dyson robot vacuum and air treatment devices
2
+ // Copyright © 2025 Alexander Thoukydides
3
+ // Dyson robot vacuum state
4
+ export var Dyson360State;
5
+ (function (Dyson360State) {
6
+ Dyson360State["FaultCallHelpline"] = "FAULT_CALL_HELPLINE";
7
+ Dyson360State["FaultContactHelpline"] = "FAULT_CONTACT_HELPLINE";
8
+ Dyson360State["FaultCritical"] = "FAULT_CRITICAL";
9
+ Dyson360State["FaultGettingInfo"] = "FAULT_GETTING_INFO";
10
+ Dyson360State["FaultLost"] = "FAULT_LOST";
11
+ Dyson360State["FaultOnDock"] = "FAULT_ON_DOCK";
12
+ Dyson360State["FaultOnDockCharged"] = "FAULT_ON_DOCK_CHARGED";
13
+ Dyson360State["FaultOnDockCharging"] = "FAULT_ON_DOCK_CHARGING";
14
+ Dyson360State["FaultReplaceOnDock"] = "FAULT_REPLACE_ON_DOCK";
15
+ Dyson360State["FaultReturnToDock"] = "FAULT_RETURN_TO_DOCK";
16
+ Dyson360State["FaultRunningDiagnostic"] = "FAULT_RUNNING_DIAGNOSTIC";
17
+ Dyson360State["FaultUserRecoverable"] = "FAULT_USER_RECOVERABLE";
18
+ Dyson360State["FullCleanAbandoned"] = "FULL_CLEAN_ABANDONED";
19
+ Dyson360State["FullCleanAborted"] = "FULL_CLEAN_ABORTED";
20
+ Dyson360State["FullCleanCharging"] = "FULL_CLEAN_CHARGING";
21
+ Dyson360State["FullCleanDiscovering"] = "FULL_CLEAN_DISCOVERING";
22
+ Dyson360State["FullCleanFinished"] = "FULL_CLEAN_FINISHED";
23
+ Dyson360State["FullCleanInitiated"] = "FULL_CLEAN_INITIATED";
24
+ Dyson360State["FullCleanNeedsCharge"] = "FULL_CLEAN_NEEDS_CHARGE";
25
+ Dyson360State["FullCleanPaused"] = "FULL_CLEAN_PAUSED";
26
+ Dyson360State["FullCleanRunning"] = "FULL_CLEAN_RUNNING";
27
+ Dyson360State["FullCleanTraversing"] = "FULL_CLEAN_TRAVERSING";
28
+ Dyson360State["InactiveCharged"] = "INACTIVE_CHARGED";
29
+ Dyson360State["InactiveCharging"] = "INACTIVE_CHARGING";
30
+ Dyson360State["InactiveDischarging"] = "INACTIVE_DISCHARGING";
31
+ Dyson360State["MappingAborted"] = "MAPPING_ABORTED";
32
+ Dyson360State["MappingCharging"] = "MAPPING_CHARGING";
33
+ Dyson360State["MappingFinished"] = "MAPPING_FINISHED";
34
+ Dyson360State["MappingInitiated"] = "MAPPING_INITIATED";
35
+ Dyson360State["MappingNeedsCharge"] = "MAPPING_NEEDS_CHARGE";
36
+ Dyson360State["MappingPaused"] = "MAPPING_PAUSED";
37
+ Dyson360State["MappingRunning"] = "MAPPING_RUNNING";
38
+ })(Dyson360State || (Dyson360State = {}));
39
+ // Dyson robot vacuum power mode
40
+ export var Dyson360EyePowerMode;
41
+ (function (Dyson360EyePowerMode) {
42
+ Dyson360EyePowerMode["Quiet"] = "halfPower";
43
+ Dyson360EyePowerMode["Max"] = "fullPower";
44
+ })(Dyson360EyePowerMode || (Dyson360EyePowerMode = {}));
45
+ export var Dyson360HeuristPowerMode;
46
+ (function (Dyson360HeuristPowerMode) {
47
+ Dyson360HeuristPowerMode["Quiet"] = "1";
48
+ Dyson360HeuristPowerMode["High"] = "2";
49
+ Dyson360HeuristPowerMode["Max"] = "3";
50
+ })(Dyson360HeuristPowerMode || (Dyson360HeuristPowerMode = {}));
51
+ export var Dyson360VisNavPowerMode;
52
+ (function (Dyson360VisNavPowerMode) {
53
+ Dyson360VisNavPowerMode["Auto"] = "1";
54
+ Dyson360VisNavPowerMode["Quick"] = "2";
55
+ Dyson360VisNavPowerMode["Quiet"] = "3";
56
+ Dyson360VisNavPowerMode["Boost"] = "4";
57
+ })(Dyson360VisNavPowerMode || (Dyson360VisNavPowerMode = {}));
58
+ // Dyson robot vacuum cleaning type
59
+ export var Dyson360CleaningType;
60
+ (function (Dyson360CleaningType) {
61
+ Dyson360CleaningType["Unknown"] = "";
62
+ Dyson360CleaningType["Immediate"] = "immediate";
63
+ Dyson360CleaningType["Manual"] = "manual";
64
+ Dyson360CleaningType["Scheduled"] = "scheduled";
65
+ })(Dyson360CleaningType || (Dyson360CleaningType = {}));
66
+ // Dyson robot vacuum cleaning mode (Heurist and Vis Nav only)
67
+ export var Dyson360CleaningMode;
68
+ (function (Dyson360CleaningMode) {
69
+ Dyson360CleaningMode["Global"] = "global";
70
+ Dyson360CleaningMode["ZoneConfigured"] = "zoneConfigured";
71
+ })(Dyson360CleaningMode || (Dyson360CleaningMode = {}));
72
+ //# sourceMappingURL=dyson-360-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-360-types.js","sourceRoot":"","sources":["../src/dyson-360-types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC;AAEzC,2BAA2B;AAC3B,MAAM,CAAN,IAAY,aAiCX;AAjCD,WAAY,aAAa;IACrB,0DAAuD,CAAA;IACvD,gEAA0D,CAAA;IAC1D,iDAAkD,CAAA;IAClD,wDAAsD,CAAA;IACtD,yCAA8C,CAAA;IAC9C,8CAAiD,CAAA;IACjD,6DAAyD,CAAA;IACzD,+DAA0D,CAAA;IAC1D,6DAAyD,CAAA;IACzD,2DAAwD,CAAA;IACxD,oEAA4D,CAAA;IAC5D,gEAA0D,CAAA;IAC1D,4DAAwD,CAAA;IACxD,wDAAsD,CAAA;IACtD,0DAAuD,CAAA;IACvD,gEAA0D,CAAA;IAC1D,0DAAuD,CAAA;IACvD,4DAAwD,CAAA;IACxD,iEAA2D,CAAA;IAC3D,sDAAqD,CAAA;IACrD,wDAAsD,CAAA;IACtD,8DAAyD,CAAA;IACzD,qDAAoD,CAAA;IACpD,uDAAqD,CAAA;IACrD,6DAAwD,CAAA;IACxD,mDAAmD,CAAA;IACnD,qDAAoD,CAAA;IACpD,qDAAoD,CAAA;IACpD,uDAAqD,CAAA;IACrD,4DAAwD,CAAA;IACxD,iDAAkD,CAAA;IAClD,mDAAmD,CAAA;AACvD,CAAC,EAjCW,aAAa,KAAb,aAAa,QAiCxB;AAkBD,gCAAgC;AAChC,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,2CAA6C,CAAA;IAC7C,yCAA6C,CAAA;AACjD,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AACD,MAAM,CAAN,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAChC,uCAAqC,CAAA;IACrC,sCAAqC,CAAA;IACrC,qCAAqC,CAAA;AACzC,CAAC,EAJW,wBAAwB,KAAxB,wBAAwB,QAInC;AACD,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IAC/B,qCAAqC,CAAA;IACrC,sCAAqC,CAAA;IACrC,sCAAqC,CAAA;IACrC,sCAAqC,CAAA;AACzC,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;AAMD,mCAAmC;AACnC,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC5B,oCAAoC,CAAA;IACpC,+CAA6C,CAAA;IAC7C,yCAA0C,CAAA;IAC1C,+CAA6C,CAAA;AACjD,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAED,8DAA8D;AAC9D,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,yCAA0C,CAAA;IAC1C,yDAAkD,CAAA;AACtD,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B"}
@@ -0,0 +1,99 @@
1
+ import { DysonAirCurrentSensorData, DysonAirEnvironmentalUsageData } from './dyson-air-sensor-types.js';
2
+ import { DysonAirProductState, DysonAirProductStateChange } from './dyson-air-state-types.js';
3
+ import { DysonAirFaultChange, DysonAirFaultStatus, DysonAirResetFilterLife, DysonAirResetHEPAFilterLife, DysonAirResetSource, DysonAirScheduler, DysonAirSleepTimer } from './dyson-air-types.js';
4
+ import { DysonModeReason, DysonMsg, DysonStateReason } from './dyson-types.js';
5
+ export interface DysonAirMsgHello extends DysonMsg {
6
+ msg: 'HELLO';
7
+ model: string;
8
+ version: string;
9
+ protocol: string;
10
+ serialNumber: string;
11
+ macAddress: string;
12
+ moduleHardware: string;
13
+ moduleBootloader: string;
14
+ moduleSoftware: string;
15
+ moduleNwp: string;
16
+ productHardware: string;
17
+ productBootloader: string;
18
+ productSoftware: string;
19
+ resetSource: DysonAirResetSource;
20
+ }
21
+ export interface DysonAirMsgGoodbye extends DysonMsg {
22
+ msg: 'GOODBYE';
23
+ reason: 'UNKNOWN';
24
+ }
25
+ export interface DysonAirMsgCurrentState extends DysonMsg {
26
+ msg: 'CURRENT-STATE';
27
+ modeReason: DysonModeReason;
28
+ stateReason: DysonStateReason;
29
+ dial?: string;
30
+ rssi?: string;
31
+ channel?: string;
32
+ productState: DysonAirProductState;
33
+ scheduler: DysonAirScheduler;
34
+ }
35
+ export interface DysonAirMsgStateChange extends DysonMsg {
36
+ msg: 'STATE-CHANGE';
37
+ modeReason: DysonModeReason;
38
+ stateReason: DysonStateReason;
39
+ productState: DysonAirProductStateChange;
40
+ scheduler: DysonAirScheduler;
41
+ }
42
+ export interface DysonAirMsgEnvironmentalCurrentSensorData extends DysonMsg {
43
+ msg: 'ENVIRONMENTAL-CURRENT-SENSOR-DATA';
44
+ data: DysonAirCurrentSensorData;
45
+ }
46
+ export interface DysonAirMsgEnvironmentalAndUsageData extends DysonMsg {
47
+ msg: 'ENVIRONMENTAL-AND-USAGE-DATA';
48
+ data: DysonAirEnvironmentalUsageData;
49
+ }
50
+ export interface DysonAirMsgCurrentFaults extends DysonMsg {
51
+ msg: 'CURRENT-FAULTS';
52
+ productErrors: {
53
+ [fault: string]: DysonAirFaultStatus;
54
+ };
55
+ productWarnings: {
56
+ [fault: string]: DysonAirFaultStatus;
57
+ };
58
+ moduleErrors: {
59
+ [fault: string]: DysonAirFaultStatus;
60
+ };
61
+ moduleWarnings: {
62
+ [fault: string]: DysonAirFaultStatus;
63
+ };
64
+ }
65
+ export interface DysonAirMsgFaultsChange extends DysonMsg {
66
+ msg: 'FAULTS-CHANGE';
67
+ productErrors: {
68
+ [fault: string]: DysonAirFaultChange;
69
+ };
70
+ productWarnings: {
71
+ [fault: string]: DysonAirFaultChange;
72
+ };
73
+ moduleErrors: {
74
+ [fault: string]: DysonAirFaultChange;
75
+ };
76
+ moduleWarnings: {
77
+ [fault: string]: DysonAirFaultChange;
78
+ };
79
+ }
80
+ export interface DysonAirMsgRequestCurrentState extends DysonMsg {
81
+ msg: 'REQUEST-CURRENT-STATE';
82
+ }
83
+ export interface DysonAirMsgRequestProductEnvironmentCurrentSensorData extends DysonMsg {
84
+ msg: 'REQUEST-PRODUCT-ENVIRONMENT-CURRENT-SENSOR-DATA';
85
+ }
86
+ export interface DysonAirMsgStateSet extends DysonMsg {
87
+ msg: 'STATE-SET';
88
+ 'mode-reason'?: DysonModeReason;
89
+ data: DysonAirProductState & {
90
+ rstf?: DysonAirResetFilterLife;
91
+ rhtf?: DysonAirResetHEPAFilterLife;
92
+ sltm?: DysonAirSleepTimer;
93
+ };
94
+ }
95
+ export interface DysonAirMsgScheduleSet extends DysonMsg {
96
+ msg: 'SCHEDULE-SET';
97
+ version: string;
98
+ }
99
+ //# sourceMappingURL=dyson-air-msg-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-air-msg-types.d.ts","sourceRoot":"","sources":["../src/dyson-air-msg-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // Matterbridge plugin for Dyson robot vacuum and air treatment devices
2
+ // Copyright © 2025 Alexander Thoukydides
3
+ export {};
4
+ //# sourceMappingURL=dyson-air-msg-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-air-msg-types.js","sourceRoot":"","sources":["../src/dyson-air-msg-types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC"}
@@ -0,0 +1,59 @@
1
+ import { DysonAirSensorValue, DysonAirSleepTimer } from './dyson-air-types.js';
2
+ export interface DysonAirCurrentSensorData {
3
+ tact?: DysonAirSensorValue;
4
+ hact?: DysonAirSensorValue;
5
+ co2r?: DysonAirSensorValue;
6
+ pact?: DysonAirSensorValue;
7
+ hcho?: DysonAirSensorValue;
8
+ hchr?: DysonAirSensorValue;
9
+ noxl?: DysonAirSensorValue;
10
+ pm25?: DysonAirSensorValue;
11
+ p25r?: DysonAirSensorValue;
12
+ pm10?: DysonAirSensorValue;
13
+ p10r?: DysonAirSensorValue;
14
+ vact?: DysonAirSensorValue;
15
+ va10?: DysonAirSensorValue;
16
+ sltm?: DysonAirSleepTimer;
17
+ }
18
+ export interface DysonAirEnvironmentalUsageData {
19
+ pal0?: DysonAirSensorValue;
20
+ pal1?: DysonAirSensorValue;
21
+ pal2?: DysonAirSensorValue;
22
+ pal3?: DysonAirSensorValue;
23
+ pal4?: DysonAirSensorValue;
24
+ pal5?: DysonAirSensorValue;
25
+ pal6?: DysonAirSensorValue;
26
+ pal7?: DysonAirSensorValue;
27
+ pal8?: DysonAirSensorValue;
28
+ pal9?: DysonAirSensorValue;
29
+ palm?: DysonAirSensorValue;
30
+ vol0?: DysonAirSensorValue;
31
+ vol1?: DysonAirSensorValue;
32
+ vol2?: DysonAirSensorValue;
33
+ vol3?: DysonAirSensorValue;
34
+ vol4?: DysonAirSensorValue;
35
+ vol5?: DysonAirSensorValue;
36
+ vol6?: DysonAirSensorValue;
37
+ vol7?: DysonAirSensorValue;
38
+ vol8?: DysonAirSensorValue;
39
+ vol9?: DysonAirSensorValue;
40
+ volm?: DysonAirSensorValue;
41
+ aql0?: DysonAirSensorValue;
42
+ aql1?: DysonAirSensorValue;
43
+ aql2?: DysonAirSensorValue;
44
+ aql3?: DysonAirSensorValue;
45
+ aql4?: DysonAirSensorValue;
46
+ aql5?: DysonAirSensorValue;
47
+ aql6?: DysonAirSensorValue;
48
+ aql7?: DysonAirSensorValue;
49
+ aql8?: DysonAirSensorValue;
50
+ aql9?: DysonAirSensorValue;
51
+ aqlm?: DysonAirSensorValue;
52
+ fafs?: DysonAirSensorValue;
53
+ faos?: DysonAirSensorValue;
54
+ fofs?: DysonAirSensorValue;
55
+ fons?: DysonAirSensorValue;
56
+ humm?: DysonAirSensorValue;
57
+ tmpm?: DysonAirSensorValue;
58
+ }
59
+ //# sourceMappingURL=dyson-air-sensor-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-air-sensor-types.d.ts","sourceRoot":"","sources":["../src/dyson-air-sensor-types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,MAAM,WAAW,yBAAyB;IAEtC,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAE5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAE5B,IAAI,CAAC,EAAG,kBAAkB,CAAC;CAC9B;AAGD,MAAM,WAAW,8BAA8B;IAE3C,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAE5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAE5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAE5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;IAC5B,IAAI,CAAC,EAAG,mBAAmB,CAAC;CAC/B"}
@@ -0,0 +1,4 @@
1
+ // Matterbridge plugin for Dyson robot vacuum and air treatment devices
2
+ // Copyright © 2025 Alexander Thoukydides
3
+ export {};
4
+ //# sourceMappingURL=dyson-air-sensor-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dyson-air-sensor-types.js","sourceRoot":"","sources":["../src/dyson-air-sensor-types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yCAAyC"}
@@ -0,0 +1,96 @@
1
+ import { DysonAirContinuousMonitoring, DysonAirErrorCode, DysonAirFanSpeed, DysonAirFanState, DysonAirFanFocus, DysonAirNightMode, DysonAirOscillation, DysonAirWarningCode, DysonAirHeatingMode, DysonAirHeatingStatus, DysonAirTiltSensor, DysonAirFanAutoPower, DysonAirQualityTarget, DysonAirTiltAngle, DysonAirWaterHardness, DysonAirAutoMode, DysonAirCarbonFilterLife, DysonAirFanDirection, DysonAirFanPower, DysonAirHumidification, DysonAirHumidificationAutoMode, DysonAirAnemometerControlProfile, DysonAirAnemometerControlTilt, DysonAirTemperatureUnits, DysonAirCarbonFilterType, DysonAirDeepCleanCycle, DysonAirHEPAFilterType, DysonAirHumidificationState, DysonAirTiltOscillation, DysonAirHumidificationProcess, DysonAirBrightness, DysonAirOscillationStatus, DysonAirTiltOscillationStatus } from './dyson-air-types.js';
2
+ export interface DysonAirProductState {
3
+ ercd?: DysonAirErrorCode;
4
+ fnsp?: DysonAirFanSpeed;
5
+ fnst?: DysonAirFanState;
6
+ nmod?: DysonAirNightMode;
7
+ rhtm?: DysonAirContinuousMonitoring;
8
+ wacd?: DysonAirWarningCode;
9
+ ffoc?: DysonAirFanFocus;
10
+ hmax?: string;
11
+ hmod?: DysonAirHeatingMode;
12
+ hsta?: DysonAirHeatingStatus;
13
+ oson?: DysonAirOscillation;
14
+ anct?: DysonAirAnemometerControlTilt;
15
+ otal?: DysonAirTiltAngle;
16
+ otau?: DysonAirTiltAngle;
17
+ oton?: DysonAirTiltOscillation;
18
+ sflt?: 'SCOH';
19
+ otcs?: DysonAirTiltOscillationStatus;
20
+ auto?: DysonAirAutoMode;
21
+ cflr?: DysonAirCarbonFilterLife;
22
+ cflt?: DysonAirCarbonFilterType;
23
+ corf?: DysonAirTemperatureUnits;
24
+ fdir?: DysonAirFanDirection;
25
+ fpwr?: DysonAirFanPower;
26
+ hflr?: string;
27
+ hflt?: DysonAirHEPAFilterType;
28
+ nmdv?: DysonAirFanSpeed;
29
+ filf?: string;
30
+ fmod?: DysonAirFanAutoPower;
31
+ qtar?: DysonAirQualityTarget;
32
+ tilt?: DysonAirTiltSensor;
33
+ oscs?: DysonAirOscillationStatus;
34
+ osal?: string;
35
+ osau?: string;
36
+ ancp?: DysonAirAnemometerControlProfile;
37
+ cdrr?: string;
38
+ clcr?: DysonAirDeepCleanCycle;
39
+ cltr?: string;
40
+ haut?: DysonAirHumidificationAutoMode;
41
+ hume?: DysonAirHumidification;
42
+ humt?: string;
43
+ msta?: DysonAirHumidificationState;
44
+ psta?: DysonAirHumidificationProcess;
45
+ rect?: string;
46
+ wath?: DysonAirWaterHardness;
47
+ bril?: DysonAirBrightness;
48
+ fqhp?: string;
49
+ }
50
+ export interface DysonAirProductStateChange {
51
+ ercd?: [DysonAirErrorCode, DysonAirErrorCode];
52
+ fnsp?: [DysonAirFanSpeed, DysonAirFanSpeed];
53
+ fnst?: [DysonAirFanState, DysonAirFanState];
54
+ nmod?: [DysonAirNightMode, DysonAirNightMode];
55
+ rhtm?: [DysonAirContinuousMonitoring, DysonAirContinuousMonitoring];
56
+ wacd?: [DysonAirWarningCode, DysonAirWarningCode];
57
+ ffoc?: [DysonAirFanFocus, DysonAirFanFocus];
58
+ hmax?: [string, string];
59
+ hmod?: [DysonAirHeatingMode, DysonAirHeatingMode];
60
+ hsta?: [DysonAirHeatingStatus, DysonAirHeatingStatus];
61
+ oson?: [DysonAirOscillation, DysonAirOscillation];
62
+ anct?: [DysonAirAnemometerControlTilt, DysonAirAnemometerControlTilt];
63
+ otal?: [DysonAirTiltAngle, DysonAirTiltAngle];
64
+ otau?: [DysonAirTiltAngle, DysonAirTiltAngle];
65
+ oton?: [DysonAirTiltOscillation, DysonAirTiltOscillation];
66
+ auto?: [DysonAirAutoMode, DysonAirAutoMode];
67
+ cflr?: [DysonAirCarbonFilterLife, DysonAirCarbonFilterLife];
68
+ cflt?: [DysonAirCarbonFilterType, DysonAirCarbonFilterType];
69
+ corf?: [DysonAirTemperatureUnits, DysonAirTemperatureUnits];
70
+ fdir?: [DysonAirFanDirection, DysonAirFanDirection];
71
+ fpwr?: [DysonAirFanPower, DysonAirFanPower];
72
+ hflr?: [string, string];
73
+ hflt?: [DysonAirHEPAFilterType, DysonAirHEPAFilterType];
74
+ nmdv?: [DysonAirFanSpeed, DysonAirFanSpeed];
75
+ filf?: [string, string];
76
+ fmod?: [DysonAirFanAutoPower, DysonAirFanAutoPower];
77
+ qtar?: [DysonAirQualityTarget, DysonAirQualityTarget];
78
+ tilt?: [DysonAirTiltSensor, DysonAirTiltSensor];
79
+ oscs?: [DysonAirOscillationStatus, DysonAirOscillationStatus];
80
+ osal?: [string, string];
81
+ osau?: [string, string];
82
+ ancp?: [DysonAirAnemometerControlProfile, DysonAirAnemometerControlProfile];
83
+ cdrr?: [string, string];
84
+ cltr?: [string, string];
85
+ haut?: [DysonAirHumidificationAutoMode, DysonAirHumidificationAutoMode];
86
+ hume?: [DysonAirHumidification, DysonAirHumidification];
87
+ humt?: [string, string];
88
+ rect?: [string, string];
89
+ wath?: [DysonAirWaterHardness, DysonAirWaterHardness];
90
+ clcr?: [DysonAirDeepCleanCycle, DysonAirDeepCleanCycle];
91
+ msta?: [DysonAirHumidificationState, DysonAirHumidificationState];
92
+ psta?: [DysonAirHumidificationProcess, DysonAirHumidificationProcess];
93
+ bril?: [DysonAirBrightness, DysonAirBrightness];
94
+ fqhp?: [string, string];
95
+ }
96
+ //# sourceMappingURL=dyson-air-state-types.d.ts.map