matterbridge-roborock-vacuum-plugin 1.0.5

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 (170) hide show
  1. package/.github/workflows/publish.yml +34 -0
  2. package/.tarignore +5 -0
  3. package/LICENSE +202 -0
  4. package/README.md +34 -0
  5. package/README_DEV.md +69 -0
  6. package/bmc-button.svg +22 -0
  7. package/dist/appliances.js +6 -0
  8. package/dist/behaviorFactory.js +18 -0
  9. package/dist/behaviors/BehaviorDeviceGeneric.js +31 -0
  10. package/dist/behaviors/roborock.vacuum/QREVO_EDGE_5V1/a187.js +94 -0
  11. package/dist/behaviors/roborock.vacuum/QREVO_EDGE_5V1/initalData.js +81 -0
  12. package/dist/behaviors/roborock.vacuum/QREVO_EDGE_5V1/runtimes.js +39 -0
  13. package/dist/behaviors/roborock.vacuum/default/default.js +58 -0
  14. package/dist/behaviors/roborock.vacuum/default/initalData.js +66 -0
  15. package/dist/clientManager.js +17 -0
  16. package/dist/extensions/AxiosStaticExtensions.js +22 -0
  17. package/dist/extensions/index.js +1 -0
  18. package/dist/helper.js +16 -0
  19. package/dist/index.js +4 -0
  20. package/dist/initialData/getBatteryStatus.js +24 -0
  21. package/dist/initialData/getOperationalStates.js +22 -0
  22. package/dist/initialData/getSupportedAreas.js +69 -0
  23. package/dist/initialData/getSupportedCleanModes.js +11 -0
  24. package/dist/initialData/getSupportedRunModes.js +18 -0
  25. package/dist/initialData/index.js +5 -0
  26. package/dist/model/CloudMessageModel.js +1 -0
  27. package/dist/model/DockingStationStatus.js +24 -0
  28. package/dist/model/RoomMap.js +18 -0
  29. package/dist/notifyMessageTypes.js +9 -0
  30. package/dist/platform.js +146 -0
  31. package/dist/platformRunner.js +249 -0
  32. package/dist/roborockCommunication/RESTAPI/roborockAuthenticateApi.js +73 -0
  33. package/dist/roborockCommunication/RESTAPI/roborockIoTApi.js +61 -0
  34. package/dist/roborockCommunication/Zenum/dockType.js +4 -0
  35. package/dist/roborockCommunication/Zenum/operationStatusCode.js +44 -0
  36. package/dist/roborockCommunication/Zenum/vacuumAndDockErrorCode.js +68 -0
  37. package/dist/roborockCommunication/Zmodel/apiResponse.js +1 -0
  38. package/dist/roborockCommunication/Zmodel/authenticateResponse.js +1 -0
  39. package/dist/roborockCommunication/Zmodel/baseURL.js +1 -0
  40. package/dist/roborockCommunication/Zmodel/device.js +1 -0
  41. package/dist/roborockCommunication/Zmodel/deviceModel.js +28 -0
  42. package/dist/roborockCommunication/Zmodel/deviceSchema.js +1 -0
  43. package/dist/roborockCommunication/Zmodel/deviceStatus.js +22 -0
  44. package/dist/roborockCommunication/Zmodel/dockInfo.js +6 -0
  45. package/dist/roborockCommunication/Zmodel/home.js +1 -0
  46. package/dist/roborockCommunication/Zmodel/homeInfo.js +1 -0
  47. package/dist/roborockCommunication/Zmodel/messageResult.js +7 -0
  48. package/dist/roborockCommunication/Zmodel/networkInfo.js +1 -0
  49. package/dist/roborockCommunication/Zmodel/product.js +1 -0
  50. package/dist/roborockCommunication/Zmodel/room.js +1 -0
  51. package/dist/roborockCommunication/Zmodel/roomInfo.js +22 -0
  52. package/dist/roborockCommunication/Zmodel/userData.js +1 -0
  53. package/dist/roborockCommunication/Zmodel/vacuumError.js +27 -0
  54. package/dist/roborockCommunication/broadcast/abstractClient.js +41 -0
  55. package/dist/roborockCommunication/broadcast/client/LocalNetworkClient.js +148 -0
  56. package/dist/roborockCommunication/broadcast/client/MQTTClient.js +101 -0
  57. package/dist/roborockCommunication/broadcast/client.js +1 -0
  58. package/dist/roborockCommunication/broadcast/clientRouter.js +79 -0
  59. package/dist/roborockCommunication/broadcast/listener/abstractConnectionListener.js +1 -0
  60. package/dist/roborockCommunication/broadcast/listener/abstractMessageHandler.js +1 -0
  61. package/dist/roborockCommunication/broadcast/listener/abstractMessageListener.js +1 -0
  62. package/dist/roborockCommunication/broadcast/listener/implementation/chainedConnectionListener.js +21 -0
  63. package/dist/roborockCommunication/broadcast/listener/implementation/chainedMessageListener.js +11 -0
  64. package/dist/roborockCommunication/broadcast/listener/implementation/simpleMessageListener.js +27 -0
  65. package/dist/roborockCommunication/broadcast/listener/implementation/syncMessageListener.js +35 -0
  66. package/dist/roborockCommunication/broadcast/listener/index.js +1 -0
  67. package/dist/roborockCommunication/broadcast/messageProcessor.js +79 -0
  68. package/dist/roborockCommunication/broadcast/model/dps.js +1 -0
  69. package/dist/roborockCommunication/broadcast/model/messageContext.js +26 -0
  70. package/dist/roborockCommunication/broadcast/model/protocol.js +19 -0
  71. package/dist/roborockCommunication/broadcast/model/requestMessage.js +33 -0
  72. package/dist/roborockCommunication/broadcast/model/responseMessage.js +14 -0
  73. package/dist/roborockCommunication/helper/chunkBuffer.js +17 -0
  74. package/dist/roborockCommunication/helper/cryptoHelper.js +27 -0
  75. package/dist/roborockCommunication/helper/messageDeserializer.js +74 -0
  76. package/dist/roborockCommunication/helper/messageSerializer.js +70 -0
  77. package/dist/roborockCommunication/helper/nameDecoder.js +66 -0
  78. package/dist/roborockCommunication/helper/sequence.js +16 -0
  79. package/dist/roborockCommunication/index.js +9 -0
  80. package/dist/roborockService.js +300 -0
  81. package/dist/rvc.js +39 -0
  82. package/dist/settings.js +1 -0
  83. package/dist/share/function.js +96 -0
  84. package/dist/share/runtimeHelper.js +29 -0
  85. package/eslint.config.js +76 -0
  86. package/matterbridge-roborock-vacuum-plugin.config.json +11 -0
  87. package/matterbridge-roborock-vacuum-plugin.schema.json +57 -0
  88. package/package.json +43 -0
  89. package/prettier.config.js +49 -0
  90. package/src/appliances.ts +15 -0
  91. package/src/behaviorFactory.ts +24 -0
  92. package/src/behaviors/BehaviorDeviceGeneric.ts +39 -0
  93. package/src/behaviors/roborock.vacuum/QREVO_EDGE_5V1/a187.ts +117 -0
  94. package/src/behaviors/roborock.vacuum/QREVO_EDGE_5V1/initalData.ts +85 -0
  95. package/src/behaviors/roborock.vacuum/QREVO_EDGE_5V1/runtimes.ts +29 -0
  96. package/src/behaviors/roborock.vacuum/default/default.ts +78 -0
  97. package/src/behaviors/roborock.vacuum/default/initalData.ts +69 -0
  98. package/src/clientManager.ts +23 -0
  99. package/src/extensions/AxiosStaticExtensions.ts +35 -0
  100. package/src/extensions/index.ts +1 -0
  101. package/src/helper.ts +22 -0
  102. package/src/index.ts +16 -0
  103. package/src/initialData/getBatteryStatus.ts +26 -0
  104. package/src/initialData/getOperationalStates.ts +24 -0
  105. package/src/initialData/getSupportedAreas.ts +95 -0
  106. package/src/initialData/getSupportedCleanModes.ts +13 -0
  107. package/src/initialData/getSupportedRunModes.ts +21 -0
  108. package/src/initialData/index.ts +5 -0
  109. package/src/model/CloudMessageModel.ts +13 -0
  110. package/src/model/DockingStationStatus.ts +37 -0
  111. package/src/model/RoomMap.ts +44 -0
  112. package/src/notifyMessageTypes.ts +8 -0
  113. package/src/platform.ts +192 -0
  114. package/src/platformRunner.ts +292 -0
  115. package/src/roborockCommunication/RESTAPI/roborockAuthenticateApi.ts +98 -0
  116. package/src/roborockCommunication/RESTAPI/roborockIoTApi.ts +70 -0
  117. package/src/roborockCommunication/Zenum/dockType.ts +3 -0
  118. package/src/roborockCommunication/Zenum/operationStatusCode.ts +43 -0
  119. package/src/roborockCommunication/Zenum/vacuumAndDockErrorCode.ts +68 -0
  120. package/src/roborockCommunication/Zmodel/apiResponse.ts +3 -0
  121. package/src/roborockCommunication/Zmodel/authenticateResponse.ts +5 -0
  122. package/src/roborockCommunication/Zmodel/baseURL.ts +5 -0
  123. package/src/roborockCommunication/Zmodel/device.ts +39 -0
  124. package/src/roborockCommunication/Zmodel/deviceModel.ts +27 -0
  125. package/src/roborockCommunication/Zmodel/deviceSchema.ts +8 -0
  126. package/src/roborockCommunication/Zmodel/deviceStatus.ts +30 -0
  127. package/src/roborockCommunication/Zmodel/dockInfo.ts +9 -0
  128. package/src/roborockCommunication/Zmodel/home.ts +13 -0
  129. package/src/roborockCommunication/Zmodel/homeInfo.ts +5 -0
  130. package/src/roborockCommunication/Zmodel/messageResult.ts +72 -0
  131. package/src/roborockCommunication/Zmodel/networkInfo.ts +7 -0
  132. package/src/roborockCommunication/Zmodel/product.ts +9 -0
  133. package/src/roborockCommunication/Zmodel/room.ts +4 -0
  134. package/src/roborockCommunication/Zmodel/roomInfo.ts +25 -0
  135. package/src/roborockCommunication/Zmodel/userData.ts +23 -0
  136. package/src/roborockCommunication/Zmodel/vacuumError.ts +35 -0
  137. package/src/roborockCommunication/broadcast/abstractClient.ts +61 -0
  138. package/src/roborockCommunication/broadcast/client/LocalNetworkClient.ts +177 -0
  139. package/src/roborockCommunication/broadcast/client/MQTTClient.ts +129 -0
  140. package/src/roborockCommunication/broadcast/client.ts +19 -0
  141. package/src/roborockCommunication/broadcast/clientRouter.ts +100 -0
  142. package/src/roborockCommunication/broadcast/listener/abstractConnectionListener.ts +5 -0
  143. package/src/roborockCommunication/broadcast/listener/abstractMessageHandler.ts +11 -0
  144. package/src/roborockCommunication/broadcast/listener/abstractMessageListener.ts +5 -0
  145. package/src/roborockCommunication/broadcast/listener/implementation/chainedConnectionListener.ts +26 -0
  146. package/src/roborockCommunication/broadcast/listener/implementation/chainedMessageListener.ts +16 -0
  147. package/src/roborockCommunication/broadcast/listener/implementation/simpleMessageListener.ts +37 -0
  148. package/src/roborockCommunication/broadcast/listener/implementation/syncMessageListener.ts +48 -0
  149. package/src/roborockCommunication/broadcast/listener/index.ts +3 -0
  150. package/src/roborockCommunication/broadcast/messageProcessor.ts +110 -0
  151. package/src/roborockCommunication/broadcast/model/dps.ts +17 -0
  152. package/src/roborockCommunication/broadcast/model/messageContext.ts +34 -0
  153. package/src/roborockCommunication/broadcast/model/protocol.ts +19 -0
  154. package/src/roborockCommunication/broadcast/model/requestMessage.ts +44 -0
  155. package/src/roborockCommunication/broadcast/model/responseMessage.ts +19 -0
  156. package/src/roborockCommunication/helper/chunkBuffer.ts +18 -0
  157. package/src/roborockCommunication/helper/cryptoHelper.ts +34 -0
  158. package/src/roborockCommunication/helper/messageDeserializer.ts +99 -0
  159. package/src/roborockCommunication/helper/messageSerializer.ts +82 -0
  160. package/src/roborockCommunication/helper/nameDecoder.ts +78 -0
  161. package/src/roborockCommunication/helper/sequence.ts +18 -0
  162. package/src/roborockCommunication/index.ts +15 -0
  163. package/src/roborockService.ts +379 -0
  164. package/src/rvc.ts +66 -0
  165. package/src/settings.ts +1 -0
  166. package/src/share/function.ts +106 -0
  167. package/src/share/runtimeHelper.ts +35 -0
  168. package/tsconfig.json +37 -0
  169. package/tsconfig.production.json +19 -0
  170. package/tslint.json +9 -0
@@ -0,0 +1,106 @@
1
+ import { OperationStatusCode } from '../roborockCommunication/Zenum/operationStatusCode.js';
2
+ import { RvcRunMode, RvcOperationalState } from 'matterbridge/matter/clusters';
3
+
4
+ export function state_to_matter_state(state: number | undefined): RvcRunMode.ModeTag | undefined {
5
+ if (state === null) {
6
+ return undefined;
7
+ }
8
+
9
+ switch (state) {
10
+ case OperationStatusCode.RemoteControl:
11
+ case OperationStatusCode.Cleaning:
12
+ case OperationStatusCode.ReturningDock:
13
+ case OperationStatusCode.ManualMode:
14
+ case OperationStatusCode.SpotCleaning:
15
+ case OperationStatusCode.Docking:
16
+ case OperationStatusCode.GoTo:
17
+ case OperationStatusCode.ZoneClean:
18
+ case OperationStatusCode.RoomClean:
19
+ case OperationStatusCode.WashingTheMop:
20
+ case OperationStatusCode.GoingToWashTheMop:
21
+ case OperationStatusCode.EmptyingDustContainer:
22
+ case OperationStatusCode.Initiating:
23
+ case OperationStatusCode.Paused:
24
+ case OperationStatusCode.AirDryingStopping:
25
+ case OperationStatusCode.CleanMopCleaning:
26
+ case OperationStatusCode.CleanMopMopping:
27
+ case OperationStatusCode.RoomMopping:
28
+ case OperationStatusCode.RoomCleanMopCleaning:
29
+ case OperationStatusCode.RoomCleanMopMopping:
30
+ case OperationStatusCode.ZoneMopping:
31
+ case OperationStatusCode.ZoneCleanMopCleaning:
32
+ case OperationStatusCode.ZoneCleanMopMopping:
33
+ case OperationStatusCode.BackToDockWashingDuster:
34
+ return RvcRunMode.ModeTag.Cleaning;
35
+
36
+ case OperationStatusCode.Mapping:
37
+ return RvcRunMode.ModeTag.Mapping;
38
+
39
+ case OperationStatusCode.Idle:
40
+ case OperationStatusCode.Sleeping:
41
+ case OperationStatusCode.Docking:
42
+ case OperationStatusCode.Charging:
43
+ case OperationStatusCode.FullyCharged:
44
+ default:
45
+ return RvcRunMode.ModeTag.Idle;
46
+ }
47
+ }
48
+
49
+ export function state_to_matter_operational_status(state: number | undefined): RvcOperationalState.OperationalState | null {
50
+ switch (state) {
51
+ case OperationStatusCode.Initiating:
52
+ case OperationStatusCode.RemoteControl:
53
+ case OperationStatusCode.Cleaning:
54
+ case OperationStatusCode.ManualMode:
55
+ case OperationStatusCode.SpotCleaning:
56
+ case OperationStatusCode.GoTo:
57
+ case OperationStatusCode.ZoneClean:
58
+ case OperationStatusCode.RoomClean:
59
+ case OperationStatusCode.Initiating:
60
+ case OperationStatusCode.InCall:
61
+ case OperationStatusCode.Mapping:
62
+ case OperationStatusCode.Patrol:
63
+ case OperationStatusCode.CleanMopCleaning:
64
+ case OperationStatusCode.CleanMopMopping:
65
+ case OperationStatusCode.RoomMopping:
66
+ case OperationStatusCode.RoomCleanMopCleaning:
67
+ case OperationStatusCode.RoomCleanMopMopping:
68
+ case OperationStatusCode.ZoneMopping:
69
+ case OperationStatusCode.ZoneCleanMopCleaning:
70
+ case OperationStatusCode.ZoneCleanMopMopping:
71
+ case OperationStatusCode.RobotStatusMopping:
72
+ case OperationStatusCode.WashingTheMop:
73
+ case OperationStatusCode.WashingTheMop2:
74
+ case OperationStatusCode.Docking:
75
+ case OperationStatusCode.GoingToWashTheMop:
76
+ case OperationStatusCode.BackToDockWashingDuster:
77
+ case OperationStatusCode.EmptyingDustContainer:
78
+ return RvcOperationalState.OperationalState.Running;
79
+
80
+ case OperationStatusCode.InError:
81
+ case OperationStatusCode.ChargingError:
82
+ case OperationStatusCode.Unknown:
83
+ case OperationStatusCode.DeviceOffline:
84
+ case OperationStatusCode.Locked:
85
+ case OperationStatusCode.AirDryingStopping:
86
+ return RvcOperationalState.OperationalState.Error;
87
+
88
+ case OperationStatusCode.Paused:
89
+ return RvcOperationalState.OperationalState.Paused;
90
+
91
+ case OperationStatusCode.ShuttingDown:
92
+ case OperationStatusCode.Locked:
93
+ return RvcOperationalState.OperationalState.Stopped;
94
+
95
+ case OperationStatusCode.ReturningDock:
96
+ return RvcOperationalState.OperationalState.SeekingCharger;
97
+
98
+ case OperationStatusCode.Idle:
99
+ case OperationStatusCode.Sleeping:
100
+ case OperationStatusCode.Updating:
101
+ case OperationStatusCode.FullyCharged:
102
+ case OperationStatusCode.Charging:
103
+ default:
104
+ return RvcOperationalState.OperationalState.Docked;
105
+ }
106
+ }
@@ -0,0 +1,35 @@
1
+ import { getCurrentCleanModeA187, getCurrentCleanModeFromFanPowerA187, getCurrentCleanModeFromWaterBoxModeA187 } from '../behaviors/roborock.vacuum/QREVO_EDGE_5V1/runtimes.js';
2
+ import { DeviceModel } from '../roborockCommunication/Zmodel/deviceModel.js';
3
+
4
+ export type CleanModeFunc1 = (fan_power: number | undefined, water_box_mode: number | undefined) => number | undefined;
5
+ export type CleanModeFunc2 = (config: number | undefined) => number | undefined;
6
+
7
+ export function getCurrentCleanModeFunc(model: string): CleanModeFunc1 {
8
+ switch (model) {
9
+ case DeviceModel.QREVO_EDGE_5V1: {
10
+ return getCurrentCleanModeA187;
11
+ }
12
+ default:
13
+ return (_, __) => undefined;
14
+ }
15
+ }
16
+
17
+ export function getCurrentCleanModeFromFanPowerFunc(model: string): CleanModeFunc2 {
18
+ switch (model) {
19
+ case DeviceModel.QREVO_EDGE_5V1: {
20
+ return getCurrentCleanModeFromFanPowerA187;
21
+ }
22
+ default:
23
+ return (_) => undefined;
24
+ }
25
+ }
26
+
27
+ export function getCurrentCleanModeFromWaterBoxModeFunc(model: string): CleanModeFunc2 {
28
+ switch (model) {
29
+ case DeviceModel.QREVO_EDGE_5V1: {
30
+ return getCurrentCleanModeFromWaterBoxModeA187;
31
+ }
32
+ default:
33
+ return (_) => undefined;
34
+ }
35
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "compilerOptions": {
3
+ "incremental": true,
4
+ "composite": true,
5
+ "target": "esnext",
6
+ "lib": [
7
+ "ESNext"
8
+ ],
9
+ "module": "nodenext",
10
+ "rootDir": "./src",
11
+ "moduleResolution": "nodenext",
12
+ "resolveJsonModule": true,
13
+ "allowJs": true,
14
+ "checkJs": true,
15
+ "declaration": true,
16
+ "declarationMap": true,
17
+ "sourceMap": true,
18
+ "outDir": "./dist",
19
+ "preserveConstEnums": true,
20
+ "allowSyntheticDefaultImports": true,
21
+ "esModuleInterop": true,
22
+ "forceConsistentCasingInFileNames": true,
23
+ "strict": true,
24
+ "noImplicitAny": true,
25
+ "alwaysStrict": true,
26
+ "noImplicitOverride": true,
27
+ "skipLibCheck": true
28
+ },
29
+ "include": [
30
+ "src/**/*.ts"
31
+ ],
32
+ "exclude": [
33
+ "**/*.spec.ts",
34
+ "**/*.test.ts",
35
+ "**/__test__/*"
36
+ ]
37
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "incremental": false,
5
+ "composite": false,
6
+ "declaration": false,
7
+ "declarationMap": false,
8
+ "sourceMap": false,
9
+ "removeComments": true
10
+ },
11
+ "include": [
12
+ "src/**/*.ts"
13
+ ],
14
+ "exclude": [
15
+ "**/*.spec.ts",
16
+ "**/*.test.ts",
17
+ "**/__test__/*"
18
+ ]
19
+ }
package/tslint.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "defaultSeverity": "error",
3
+ "extends": ["tslint:recommended"],
4
+ "jsRules": {},
5
+ "rules": {
6
+ "no-console": false
7
+ },
8
+ "rulesDirectory": []
9
+ }