@homebridge-plugins/homebridge-meross 10.15.1 → 10.16.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 CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to `@homebridge-plugins/homebridge-meross` will be documented in this file.
4
4
 
5
+ ## v10.16.0 (2026-07-12)
6
+
7
+ ### Changed
8
+
9
+ - fix: clarify config uses meross email not username (#786)
10
+ - chore: update actions/checkout to v7
11
+ - chore: remove stray exit 1 from deprecation workflow
12
+ - chore: dependency updates
13
+ - docs: note homebridge v2 support in prerequisites (#782)
14
+ - feat: add support for the PSX340 power strip (#783)
15
+ - feat: add support for MRS200 and MST200 subdevices
16
+ - feat: add PSX340 and MRS200 to the config schema model lists
17
+
18
+ ## v10.15.2 (2026-06-03)
19
+
20
+ ### Changes
21
+
22
+ - fix(platform): do not serialize hidden accessories to the cache
23
+ - chore: dependency updates
24
+
5
25
  ## v10.15.1 (2026-05-05)
6
26
 
7
27
  ### Changed
package/README.md CHANGED
@@ -31,7 +31,7 @@ Homebridge plugin to integrate Meross devices into HomeKit
31
31
 
32
32
  - To use this plugin, you will need to already have:
33
33
  - [Node](https://nodejs.org): latest version of `v22` or `v24` - any other major version is not supported.
34
- - [Homebridge](https://homebridge.io): `v1.6` - refer to link for more information and installation instructions.
34
+ - [Homebridge](https://homebridge.io): `v1.6` or above - refer to link for more information and installation instructions.
35
35
 
36
36
  ### Setup
37
37
 
@@ -13,9 +13,9 @@
13
13
  "default": "Meross"
14
14
  },
15
15
  "username": {
16
- "title": "Meross Username",
16
+ "title": "Meross Email Address",
17
17
  "type": "string",
18
- "description": "Enter your Meross username to enable cloud devices."
18
+ "description": "Enter the email address for your Meross account to enable cloud devices."
19
19
  },
20
20
  "password": {
21
21
  "title": "Meross Password",
@@ -515,6 +515,10 @@
515
515
  "title": "MSS425EX",
516
516
  "enum": ["MSS425EX"]
517
517
  },
518
+ {
519
+ "title": "PSX340",
520
+ "enum": ["PSX340"]
521
+ },
518
522
  {
519
523
  "title": "MSS425F/SP425FW",
520
524
  "enum": ["MSS425F"]
@@ -1583,6 +1587,10 @@
1583
1587
  {
1584
1588
  "title": "MRS105",
1585
1589
  "enum": ["MRS105"]
1590
+ },
1591
+ {
1592
+ "title": "MRS200",
1593
+ "enum": ["MRS200"]
1586
1594
  }
1587
1595
  ],
1588
1596
  "condition": {
package/eslint.config.js CHANGED
@@ -35,7 +35,6 @@ export default antfu(
35
35
  'style/brace-style': ['error', '1tbs', { allowSingleLine: true }],
36
36
  'style/quote-props': ['error', 'consistent-as-needed'],
37
37
  'test/no-only-tests': 'error',
38
- 'unicorn/no-useless-spread': 'error',
39
38
  'unused-imports/no-unused-vars': ['error', { caughtErrors: 'none' }],
40
39
  },
41
40
  typescript: false,
package/lib/platform.js CHANGED
@@ -645,8 +645,7 @@ export default class {
645
645
  accessory = subAcc
646
646
  } else {
647
647
  // Update any changes to the accessory to the platform
648
- this.api.updatePlatformAccessories([subAcc])
649
- this.devicesInHB.set(subAcc.UUID, subAcc)
648
+ this.saveAccessoryUpdate(subAcc)
650
649
  }
651
650
  })
652
651
  }
@@ -742,8 +741,7 @@ export default class {
742
741
  subAcc.control = new deviceTypes.deviceGarageSub(this, subAcc, accessory)
743
742
 
744
743
  // Update any changes to the accessory to the platform
745
- this.api.updatePlatformAccessories([subAcc])
746
- this.devicesInHB.set(subAcc.UUID, subAcc)
744
+ this.saveAccessoryUpdate(subAcc)
747
745
  })
748
746
  } else {
749
747
  accessory = this.devicesInHB.get(hbUUID) || this.addAccessory(device)
@@ -830,8 +828,7 @@ export default class {
830
828
  this.applyAccessoryLogging(accessoryLight)
831
829
 
832
830
  // Update any changes to the accessory to the platform
833
- this.api.updatePlatformAccessories([accessoryLight])
834
- this.devicesInHB.set(accessoryLight.UUID, accessoryLight)
831
+ this.saveAccessoryUpdate(accessoryLight)
835
832
 
836
833
  // Set up the main accessory for the baby monitor
837
834
  accessory.control = new deviceTypes.deviceBaby(this, accessory, accessoryLight)
@@ -951,6 +948,7 @@ export default class {
951
948
  subAcc.control = new deviceTypes.deviceHubLeak(this, subAcc)
952
949
  break
953
950
  case 'MST100':
951
+ case 'MST200':
954
952
  subAcc.control = new deviceTypes.deviceHubSprinkler(this, subAcc, accessory)
955
953
  break
956
954
  case 'MTS100':
@@ -964,8 +962,7 @@ export default class {
964
962
  }
965
963
 
966
964
  // Update any changes to the accessory to the platform
967
- this.api.updatePlatformAccessories([subAcc])
968
- this.devicesInHB.set(subAcc.UUID, subAcc)
965
+ this.saveAccessoryUpdate(subAcc)
969
966
 
970
967
  // Log the subdevice id so a user can use it to ignore device if wanted
971
968
  this.log(
@@ -1020,8 +1017,7 @@ export default class {
1020
1017
  accessory.logDebug(`${platformLang.jsonInfo}: ${JSON.stringify(device)}`)
1021
1018
 
1022
1019
  // Update any changes to the accessory to the platform
1023
- this.api.updatePlatformAccessories([accessory])
1024
- this.devicesInHB.set(accessory.UUID, accessory)
1020
+ this.saveAccessoryUpdate(accessory)
1025
1021
  } catch (err) {
1026
1022
  // Catch any errors during device initialisation
1027
1023
  const eText = parseError(err, [
@@ -1126,7 +1122,9 @@ export default class {
1126
1122
  }
1127
1123
 
1128
1124
  updateAccessory(accessory) {
1129
- this.api.updatePlatformAccessories([accessory])
1125
+ if (!accessory.context.hidden) {
1126
+ this.api.updatePlatformAccessories([accessory])
1127
+ }
1130
1128
  if (accessory.context.isOnline) {
1131
1129
  this.log('[%s] %s.', accessory.displayName, platformLang.repOnline)
1132
1130
  } else {
@@ -1134,6 +1132,13 @@ export default class {
1134
1132
  }
1135
1133
  }
1136
1134
 
1135
+ saveAccessoryUpdate(accessory) {
1136
+ if (!accessory.context.hidden) {
1137
+ this.api.updatePlatformAccessories([accessory])
1138
+ }
1139
+ this.devicesInHB.set(accessory.UUID, accessory)
1140
+ }
1141
+
1137
1142
  removeAccessory(accessory) {
1138
1143
  try {
1139
1144
  // Remove an accessory from Homebridge
@@ -261,6 +261,7 @@ export default {
261
261
  MSS620S: 2,
262
262
  MOP320: 3,
263
263
  MSS630: 3,
264
+ PSX340: 4, // MSS425EX variant (#783)
264
265
  R21: 2,
265
266
  SP425EW: 4, // MSS425E
266
267
  SP425FW: 4, // MSS425F
@@ -304,13 +305,13 @@ export default {
304
305
  purifier: ['MAP100'],
305
306
  humidifier: ['MSXH0'],
306
307
  garage: ['MSG100', 'MSG150', 'MSG200'],
307
- roller: ['MRS100', 'MRS105'],
308
+ roller: ['MRS100', 'MRS105', 'MRS200'],
308
309
  baby: ['HP110A', 'HP110AHK'],
309
310
  thermostat: ['MTS200', 'MTS200B', 'MTS205', 'MTS205B', 'MTS215', 'MTS215B', 'MTS960'],
310
311
  thermostatMts300: ['MTS300'],
311
312
  sensorPresence: ['MS600'],
312
313
  hubMain: ['MSH300', 'MSH300HK', 'MSH400', 'MSH450'],
313
- hubSub: ['GS559A', 'MS100', 'MS100F', 'MS130', 'MS130H', 'MS200', 'MS400', 'MST100', 'MTS100', 'MTS100V3', 'MTS150', 'MTS150P'],
314
+ hubSub: ['GS559A', 'MS100', 'MS100F', 'MS130', 'MS130H', 'MS200', 'MS400', 'MST100', 'MST200', 'MTS100', 'MTS100V3', 'MTS150', 'MTS150P'],
314
315
  template: [],
315
316
  },
316
317
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-meross",
3
3
  "alias": "Meross",
4
4
  "type": "module",
5
- "version": "10.15.1",
5
+ "version": "10.16.0",
6
6
  "description": "Homebridge plugin to integrate Meross devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",
@@ -56,14 +56,14 @@
56
56
  "lint:fix": "npm run lint -- --fix"
57
57
  },
58
58
  "dependencies": {
59
- "@homebridge/plugin-ui-utils": "^2.2.3",
60
- "axios": "^1.16.0",
61
- "mqtt": "^5.15.1",
59
+ "@homebridge/plugin-ui-utils": "^2.2.5",
60
+ "axios": "^1.18.1",
61
+ "mqtt": "^5.15.2",
62
62
  "node-persist": "^4.0.4",
63
- "p-queue": "^9.2.0",
63
+ "p-queue": "^9.3.1",
64
64
  "p-timeout": "^7.0.1"
65
65
  },
66
66
  "devDependencies": {
67
- "@antfu/eslint-config": "^8.2.0"
67
+ "@antfu/eslint-config": "^9.1.0"
68
68
  }
69
69
  }