@diveflo/matterbridge-mova 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.js ADDED
@@ -0,0 +1,180 @@
1
+ export var MovaState;
2
+ (function (MovaState) {
3
+ MovaState[MovaState["Unknown"] = -1] = "Unknown";
4
+ MovaState[MovaState["Idle"] = 0] = "Idle";
5
+ MovaState[MovaState["Paused"] = 1] = "Paused";
6
+ MovaState[MovaState["Cleaning"] = 2] = "Cleaning";
7
+ MovaState[MovaState["GoCharging"] = 3] = "GoCharging";
8
+ MovaState[MovaState["Error"] = 4] = "Error";
9
+ MovaState[MovaState["Mopping"] = 5] = "Mopping";
10
+ MovaState[MovaState["Charging"] = 6] = "Charging";
11
+ MovaState[MovaState["Drying"] = 7] = "Drying";
12
+ MovaState[MovaState["Dormant"] = 8] = "Dormant";
13
+ MovaState[MovaState["Washing"] = 9] = "Washing";
14
+ MovaState[MovaState["Returning"] = 10] = "Returning";
15
+ MovaState[MovaState["Defecating"] = 11] = "Defecating";
16
+ MovaState[MovaState["Building"] = 12] = "Building";
17
+ MovaState[MovaState["ManualCleaning"] = 13] = "ManualCleaning";
18
+ MovaState[MovaState["Sleeping"] = 14] = "Sleeping";
19
+ MovaState[MovaState["WaitingForTask"] = 15] = "WaitingForTask";
20
+ MovaState[MovaState["StationPaused"] = 16] = "StationPaused";
21
+ MovaState[MovaState["ManualPaused"] = 17] = "ManualPaused";
22
+ MovaState[MovaState["ZonedPaused"] = 18] = "ZonedPaused";
23
+ MovaState[MovaState["ZonedCleaning"] = 19] = "ZonedCleaning";
24
+ MovaState[MovaState["SpotCleaning"] = 20] = "SpotCleaning";
25
+ MovaState[MovaState["FastMapping"] = 21] = "FastMapping";
26
+ MovaState[MovaState["CruiseWaiting"] = 22] = "CruiseWaiting";
27
+ MovaState[MovaState["CruiseRunning"] = 23] = "CruiseRunning";
28
+ MovaState[MovaState["SecondCleaning"] = 24] = "SecondCleaning";
29
+ MovaState[MovaState["HumanFollowing"] = 25] = "HumanFollowing";
30
+ MovaState[MovaState["SpotCleaningPaused"] = 26] = "SpotCleaningPaused";
31
+ MovaState[MovaState["ReturningAutoEmpty"] = 27] = "ReturningAutoEmpty";
32
+ MovaState[MovaState["CleaningAutoEmpty"] = 28] = "CleaningAutoEmpty";
33
+ MovaState[MovaState["StationCleaning"] = 29] = "StationCleaning";
34
+ MovaState[MovaState["ReturningToDrain"] = 30] = "ReturningToDrain";
35
+ MovaState[MovaState["Draining"] = 31] = "Draining";
36
+ MovaState[MovaState["AutoWaterDraining"] = 32] = "AutoWaterDraining";
37
+ MovaState[MovaState["Emptying"] = 33] = "Emptying";
38
+ MovaState[MovaState["DustBagDrying"] = 34] = "DustBagDrying";
39
+ MovaState[MovaState["DustBagDryingPaused"] = 35] = "DustBagDryingPaused";
40
+ MovaState[MovaState["HeadingToExtraCleaning"] = 36] = "HeadingToExtraCleaning";
41
+ MovaState[MovaState["ExtraCleaning"] = 37] = "ExtraCleaning";
42
+ MovaState[MovaState["FindingPetPaused"] = 95] = "FindingPetPaused";
43
+ MovaState[MovaState["FindingPet"] = 96] = "FindingPet";
44
+ MovaState[MovaState["Shortcut"] = 97] = "Shortcut";
45
+ MovaState[MovaState["Monitoring"] = 98] = "Monitoring";
46
+ MovaState[MovaState["MonitoringPaused"] = 99] = "MonitoringPaused";
47
+ MovaState[MovaState["InitialDeepCleaning"] = 101] = "InitialDeepCleaning";
48
+ MovaState[MovaState["InitialDeepCleaningPaused"] = 102] = "InitialDeepCleaningPaused";
49
+ MovaState[MovaState["Sanitizing"] = 103] = "Sanitizing";
50
+ MovaState[MovaState["SanitizingWithDry"] = 104] = "SanitizingWithDry";
51
+ })(MovaState || (MovaState = {}));
52
+ export var MovaStatus;
53
+ (function (MovaStatus) {
54
+ MovaStatus[MovaStatus["Unknown"] = -1] = "Unknown";
55
+ MovaStatus[MovaStatus["Idle"] = 0] = "Idle";
56
+ MovaStatus[MovaStatus["Paused"] = 1] = "Paused";
57
+ MovaStatus[MovaStatus["Cleaning"] = 2] = "Cleaning";
58
+ MovaStatus[MovaStatus["BackHome"] = 3] = "BackHome";
59
+ MovaStatus[MovaStatus["PartCleaning"] = 4] = "PartCleaning";
60
+ MovaStatus[MovaStatus["FollowWall"] = 5] = "FollowWall";
61
+ MovaStatus[MovaStatus["Charging"] = 6] = "Charging";
62
+ MovaStatus[MovaStatus["OTA"] = 7] = "OTA";
63
+ MovaStatus[MovaStatus["FCT"] = 8] = "FCT";
64
+ MovaStatus[MovaStatus["WifiSet"] = 9] = "WifiSet";
65
+ MovaStatus[MovaStatus["PowerOff"] = 10] = "PowerOff";
66
+ MovaStatus[MovaStatus["Factory"] = 11] = "Factory";
67
+ MovaStatus[MovaStatus["Error"] = 12] = "Error";
68
+ MovaStatus[MovaStatus["RemoteControl"] = 13] = "RemoteControl";
69
+ MovaStatus[MovaStatus["Sleeping"] = 14] = "Sleeping";
70
+ MovaStatus[MovaStatus["SelfRepair"] = 15] = "SelfRepair";
71
+ MovaStatus[MovaStatus["FactoryTest"] = 16] = "FactoryTest";
72
+ MovaStatus[MovaStatus["Standby"] = 17] = "Standby";
73
+ MovaStatus[MovaStatus["SegmentCleaning"] = 18] = "SegmentCleaning";
74
+ MovaStatus[MovaStatus["ZoneCleaning"] = 19] = "ZoneCleaning";
75
+ MovaStatus[MovaStatus["SpotCleaning"] = 20] = "SpotCleaning";
76
+ MovaStatus[MovaStatus["FastMapping"] = 21] = "FastMapping";
77
+ MovaStatus[MovaStatus["CruisingPath"] = 22] = "CruisingPath";
78
+ MovaStatus[MovaStatus["CruisingPoint"] = 23] = "CruisingPoint";
79
+ MovaStatus[MovaStatus["SummonClean"] = 24] = "SummonClean";
80
+ MovaStatus[MovaStatus["Shortcut"] = 25] = "Shortcut";
81
+ MovaStatus[MovaStatus["PersonFollow"] = 26] = "PersonFollow";
82
+ MovaStatus[MovaStatus["WaterCheck"] = 27] = "WaterCheck";
83
+ MovaStatus[MovaStatus["Sweeping"] = 101] = "Sweeping";
84
+ MovaStatus[MovaStatus["Mopping"] = 102] = "Mopping";
85
+ MovaStatus[MovaStatus["SweepingAndMopping"] = 103] = "SweepingAndMopping";
86
+ MovaStatus[MovaStatus["Drying"] = 104] = "Drying";
87
+ MovaStatus[MovaStatus["Washing"] = 105] = "Washing";
88
+ MovaStatus[MovaStatus["ReturningWashing"] = 106] = "ReturningWashing";
89
+ MovaStatus[MovaStatus["Building"] = 107] = "Building";
90
+ MovaStatus[MovaStatus["ChargingComplete"] = 108] = "ChargingComplete";
91
+ MovaStatus[MovaStatus["Upgrading"] = 109] = "Upgrading";
92
+ MovaStatus[MovaStatus["CleanSummarizing"] = 110] = "CleanSummarizing";
93
+ MovaStatus[MovaStatus["StationReset"] = 111] = "StationReset";
94
+ MovaStatus[MovaStatus["ReturningDrain"] = 112] = "ReturningDrain";
95
+ MovaStatus[MovaStatus["SelfRepairing"] = 113] = "SelfRepairing";
96
+ MovaStatus[MovaStatus["SelfWashing"] = 114] = "SelfWashing";
97
+ MovaStatus[MovaStatus["BackWashing"] = 115] = "BackWashing";
98
+ MovaStatus[MovaStatus["SelfRefresh"] = 116] = "SelfRefresh";
99
+ MovaStatus[MovaStatus["SelfDrying"] = 117] = "SelfDrying";
100
+ MovaStatus[MovaStatus["WaterCheckStart"] = 118] = "WaterCheckStart";
101
+ MovaStatus[MovaStatus["WaterDraining"] = 119] = "WaterDraining";
102
+ MovaStatus[MovaStatus["DryingStart"] = 120] = "DryingStart";
103
+ MovaStatus[MovaStatus["AutoEmptying"] = 121] = "AutoEmptying";
104
+ MovaStatus[MovaStatus["FillingWater"] = 122] = "FillingWater";
105
+ })(MovaStatus || (MovaStatus = {}));
106
+ export var MovaFanSpeed;
107
+ (function (MovaFanSpeed) {
108
+ MovaFanSpeed[MovaFanSpeed["Quiet"] = 0] = "Quiet";
109
+ MovaFanSpeed[MovaFanSpeed["Standard"] = 1] = "Standard";
110
+ MovaFanSpeed[MovaFanSpeed["Strong"] = 2] = "Strong";
111
+ MovaFanSpeed[MovaFanSpeed["Turbo"] = 3] = "Turbo";
112
+ })(MovaFanSpeed || (MovaFanSpeed = {}));
113
+ export var MovaWaterFlow;
114
+ (function (MovaWaterFlow) {
115
+ MovaWaterFlow[MovaWaterFlow["Low"] = 1] = "Low";
116
+ MovaWaterFlow[MovaWaterFlow["Medium"] = 2] = "Medium";
117
+ MovaWaterFlow[MovaWaterFlow["High"] = 3] = "High";
118
+ })(MovaWaterFlow || (MovaWaterFlow = {}));
119
+ export var MovaCleaningMode;
120
+ (function (MovaCleaningMode) {
121
+ MovaCleaningMode[MovaCleaningMode["Sweeping"] = 0] = "Sweeping";
122
+ MovaCleaningMode[MovaCleaningMode["Mopping"] = 1] = "Mopping";
123
+ MovaCleaningMode[MovaCleaningMode["SweepingAndMopping"] = 2] = "SweepingAndMopping";
124
+ MovaCleaningMode[MovaCleaningMode["MoppingAfterSweeping"] = 3] = "MoppingAfterSweeping";
125
+ })(MovaCleaningMode || (MovaCleaningMode = {}));
126
+ export var MovaErrorCode;
127
+ (function (MovaErrorCode) {
128
+ MovaErrorCode[MovaErrorCode["None"] = 0] = "None";
129
+ MovaErrorCode[MovaErrorCode["Drop"] = 1] = "Drop";
130
+ MovaErrorCode[MovaErrorCode["Cliff"] = 2] = "Cliff";
131
+ MovaErrorCode[MovaErrorCode["Bumper"] = 3] = "Bumper";
132
+ MovaErrorCode[MovaErrorCode["Gesture"] = 4] = "Gesture";
133
+ MovaErrorCode[MovaErrorCode["BumperRepeat"] = 5] = "BumperRepeat";
134
+ MovaErrorCode[MovaErrorCode["DropRepeat"] = 6] = "DropRepeat";
135
+ MovaErrorCode[MovaErrorCode["OpticalFlow"] = 7] = "OpticalFlow";
136
+ MovaErrorCode[MovaErrorCode["NoBox"] = 8] = "NoBox";
137
+ MovaErrorCode[MovaErrorCode["NoTankBox"] = 9] = "NoTankBox";
138
+ MovaErrorCode[MovaErrorCode["WaterBoxEmpty"] = 10] = "WaterBoxEmpty";
139
+ MovaErrorCode[MovaErrorCode["BoxFull"] = 11] = "BoxFull";
140
+ MovaErrorCode[MovaErrorCode["Brush"] = 12] = "Brush";
141
+ MovaErrorCode[MovaErrorCode["SideBrush"] = 13] = "SideBrush";
142
+ MovaErrorCode[MovaErrorCode["Fan"] = 14] = "Fan";
143
+ MovaErrorCode[MovaErrorCode["LeftWheelMotor"] = 15] = "LeftWheelMotor";
144
+ MovaErrorCode[MovaErrorCode["RightWheelMotor"] = 16] = "RightWheelMotor";
145
+ MovaErrorCode[MovaErrorCode["TurnSuffocate"] = 17] = "TurnSuffocate";
146
+ MovaErrorCode[MovaErrorCode["ForwardSuffocate"] = 18] = "ForwardSuffocate";
147
+ MovaErrorCode[MovaErrorCode["ChargerGet"] = 19] = "ChargerGet";
148
+ MovaErrorCode[MovaErrorCode["BatteryLow"] = 20] = "BatteryLow";
149
+ MovaErrorCode[MovaErrorCode["ChargeFault"] = 21] = "ChargeFault";
150
+ MovaErrorCode[MovaErrorCode["BatteryPercentage"] = 22] = "BatteryPercentage";
151
+ MovaErrorCode[MovaErrorCode["Heart"] = 23] = "Heart";
152
+ MovaErrorCode[MovaErrorCode["CameraOcclusion"] = 24] = "CameraOcclusion";
153
+ MovaErrorCode[MovaErrorCode["CameraFault"] = 25] = "CameraFault";
154
+ MovaErrorCode[MovaErrorCode["EventBattery"] = 26] = "EventBattery";
155
+ MovaErrorCode[MovaErrorCode["ForwardLooking"] = 27] = "ForwardLooking";
156
+ MovaErrorCode[MovaErrorCode["Gyroscope"] = 28] = "Gyroscope";
157
+ MovaErrorCode[MovaErrorCode["WheelJammed"] = 29] = "WheelJammed";
158
+ MovaErrorCode[MovaErrorCode["DirtyTankFull"] = 30] = "DirtyTankFull";
159
+ MovaErrorCode[MovaErrorCode["DirtyTankMissing"] = 31] = "DirtyTankMissing";
160
+ MovaErrorCode[MovaErrorCode["WaterTankLidOpen"] = 32] = "WaterTankLidOpen";
161
+ MovaErrorCode[MovaErrorCode["MopPadMissing"] = 33] = "MopPadMissing";
162
+ MovaErrorCode[MovaErrorCode["FilterBlocked"] = 34] = "FilterBlocked";
163
+ MovaErrorCode[MovaErrorCode["StationDisconnected"] = 35] = "StationDisconnected";
164
+ MovaErrorCode[MovaErrorCode["NavigationBlocked"] = 36] = "NavigationBlocked";
165
+ MovaErrorCode[MovaErrorCode["CannotReachArea"] = 37] = "CannotReachArea";
166
+ MovaErrorCode[MovaErrorCode["DustBagFull"] = 38] = "DustBagFull";
167
+ MovaErrorCode[MovaErrorCode["DustBagMissing"] = 39] = "DustBagMissing";
168
+ MovaErrorCode[MovaErrorCode["WaterPump"] = 40] = "WaterPump";
169
+ MovaErrorCode[MovaErrorCode["CleanTankMissing"] = 41] = "CleanTankMissing";
170
+ MovaErrorCode[MovaErrorCode["LidarBlocked"] = 42] = "LidarBlocked";
171
+ MovaErrorCode[MovaErrorCode["RouteBlocked"] = 100] = "RouteBlocked";
172
+ MovaErrorCode[MovaErrorCode["MainBrushJammed"] = 101] = "MainBrushJammed";
173
+ MovaErrorCode[MovaErrorCode["SideBrushJammed"] = 102] = "SideBrushJammed";
174
+ MovaErrorCode[MovaErrorCode["FilterClogged"] = 103] = "FilterClogged";
175
+ MovaErrorCode[MovaErrorCode["DustBinNotInstalled"] = 104] = "DustBinNotInstalled";
176
+ MovaErrorCode[MovaErrorCode["StationWaterEmpty"] = 105] = "StationWaterEmpty";
177
+ MovaErrorCode[MovaErrorCode["StationWaterDirty"] = 106] = "StationWaterDirty";
178
+ MovaErrorCode[MovaErrorCode["StationDustFull"] = 107] = "StationDustFull";
179
+ MovaErrorCode[MovaErrorCode["ReturnFailed"] = 1000] = "ReturnFailed";
180
+ })(MovaErrorCode || (MovaErrorCode = {}));
@@ -0,0 +1,45 @@
1
+ {
2
+ "title": "Mova Vacuum Plugin",
3
+ "description": "Matterbridge plugin for Mova vacuum cleaners with Matter 1.4 support",
4
+ "type": "object",
5
+ "required": ["username", "password", "country"],
6
+ "properties": {
7
+ "username": {
8
+ "description": "Mova account email or phone number",
9
+ "type": "string"
10
+ },
11
+ "password": {
12
+ "description": "Mova account password",
13
+ "type": "string"
14
+ },
15
+ "country": {
16
+ "description": "Cloud region for Mova API",
17
+ "type": "string",
18
+ "enum": ["eu", "cn", "us", "sg", "ru"],
19
+ "default": "eu"
20
+ },
21
+ "refreshInterval": {
22
+ "description": "Status polling interval in seconds (minimum 30)",
23
+ "type": "number",
24
+ "default": 120,
25
+ "minimum": 30
26
+ },
27
+ "suctionLevel": {
28
+ "description": "Suction level used when starting cleaning from Matter",
29
+ "type": "string",
30
+ "enum": ["quiet", "standard", "strong", "turbo"],
31
+ "default": "standard"
32
+ },
33
+ "vacuumAndMopMode": {
34
+ "description": "What Apple Home's Vacuum & Mop mode should start on MOVA",
35
+ "type": "string",
36
+ "enum": ["vac-mop", "vac-then-mop"],
37
+ "default": "vac-mop"
38
+ },
39
+ "unregisterOnShutdown": {
40
+ "description": "Unregister devices when plugin shuts down (development only)",
41
+ "type": "boolean",
42
+ "default": false
43
+ }
44
+ }
45
+ }
package/package.json ADDED
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "@diveflo/matterbridge-mova",
3
+ "version": "0.1.18",
4
+ "description": "Matterbridge plugin for MOVA robot vacuum cleaners with Matter 1.4 RVC support",
5
+ "keywords": [
6
+ "matterbridge",
7
+ "plugin",
8
+ "mova",
9
+ "vacuum",
10
+ "robot",
11
+ "matter.js",
12
+ "matter",
13
+ "matter-1.4",
14
+ "rvc",
15
+ "matterprotocol",
16
+ "iot",
17
+ "smarthome",
18
+ "homekit",
19
+ "google-home",
20
+ "alexa",
21
+ "homeassistant"
22
+ ],
23
+ "homepage": "https://github.com/diveflo/matterbridge-mova#readme",
24
+ "bugs": {
25
+ "url": "https://github.com/diveflo/matterbridge-mova/issues"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+ssh://git@github.com/diveflo/matterbridge-mova.git"
30
+ },
31
+ "license": "Apache-2.0",
32
+ "author": "Flo",
33
+ "type": "module",
34
+ "main": "dist/module.js",
35
+ "types": "dist/module.d.ts",
36
+ "files": [
37
+ "dist",
38
+ "matterbridge-mova.schema.json",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "scripts": {
43
+ "start": "matterbridge",
44
+ "build": "tsc",
45
+ "buildProduction": "tsc --project tsconfig.production.json",
46
+ "clean": "shx rm -rf tsconfig.tsbuildinfo dist coverage",
47
+ "cleanBuild": "npm run clean && npm run build",
48
+ "cleanBuildProduction": "npm run clean && npm run buildProduction",
49
+ "watch": "tsc --watch",
50
+ "test": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --maxWorkers=100%",
51
+ "lint": "eslint --max-warnings=0 .",
52
+ "lint:fix": "eslint --fix --max-warnings=0 .",
53
+ "format": "prettier --write .",
54
+ "format:check": "prettier --check .",
55
+ "prepublishOnly": "npm run lint && npm run buildProduction",
56
+ "prepack": "npm run buildProduction",
57
+ "dev:link": "npm link matterbridge",
58
+ "matterbridge:add": "matterbridge -add .",
59
+ "matterbridge:remove": "matterbridge -remove .",
60
+ "matterbridge:enable": "matterbridge -enable .",
61
+ "matterbridge:disable": "matterbridge -disable .",
62
+ "matterbridge:list": "matterbridge -list"
63
+ },
64
+ "dependencies": {
65
+ "mqtt": "^5.14.1"
66
+ },
67
+ "devDependencies": {
68
+ "@eslint/js": "9.39.2",
69
+ "@jest/globals": "30.2.0",
70
+ "@types/jest": "30.0.0",
71
+ "@types/node": "25.2.0",
72
+ "@vitest/coverage-v8": "4.0.18",
73
+ "@vitest/eslint-plugin": "1.6.6",
74
+ "eslint": "9.39.2",
75
+ "eslint-config-prettier": "10.1.8",
76
+ "eslint-plugin-import": "2.32.0",
77
+ "eslint-plugin-jest": "29.12.1",
78
+ "eslint-plugin-jsdoc": "^62.5.0",
79
+ "eslint-plugin-n": "17.23.2",
80
+ "eslint-plugin-prettier": "5.5.5",
81
+ "eslint-plugin-promise": "7.2.1",
82
+ "jest": "30.2.0",
83
+ "npm-check-updates": "19.3.2",
84
+ "prettier": "3.8.1",
85
+ "shx": "0.4.0",
86
+ "ts-jest": "29.4.6",
87
+ "typescript": "5.9.3",
88
+ "typescript-eslint": "^8.54.0",
89
+ "vitest": "4.0.18"
90
+ },
91
+ "engines": {
92
+ "node": ">=20.19.0 <21.0.0 || >=22.13.0 <23.0.0 || >=24.0.0 <25.0.0 || >=26.0.0 <27.0.0"
93
+ },
94
+ "publishConfig": {
95
+ "access": "public"
96
+ }
97
+ }