@homebridge-plugins/homebridge-govee 11.27.1-beta.1 → 11.27.1

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,13 +2,17 @@
2
2
 
3
3
  All notable changes to `@homebridge-plugins/homebridge-govee` will be documented in this file.
4
4
 
5
- ## v11.27.1 (Pending Release)
5
+ ## v11.27.1 (2026-07-15)
6
6
 
7
- ### Changes
7
+ ### Changed
8
8
 
9
- - fix: only treat fresh real-time gateway records as leak events, not periodic sync records (#1314)
9
+ - fix: do not treat lights controllable via the openapi as bluetooth only (#1263) (@methodicallychaotic)
10
+ - fix: do not initialise matter-ignored devices found on the lan (#1315)
11
+ - fix: never pass external accessories to the homebridge cache so saving no longer fails
12
+ - chore: remove the looking-for-maintainers message
10
13
  - fix: restore the online status update helper for thermo and leak sensors (#1317)
11
14
  - fix: skip app device groups found in the http device list (#1317)
15
+ - fix: only treat fresh real-time gateway records as leak events, not periodic sync records (#1314)
12
16
 
13
17
  ## v11.27.0 (2026-07-13)
14
18
 
package/README.md CHANGED
@@ -24,8 +24,6 @@ Homebridge plugin to integrate Govee devices into HomeKit
24
24
  - can control certain models locally via LAN control without any Govee credentials
25
25
  - may use different connection methods depending on device model and account capabilities
26
26
 
27
- > I'm looking for some lovely people to help maintain this plugin, please get in touch on GitHub or Discord if you'd like to help out 😄
28
-
29
27
  ### Prerequisites
30
28
 
31
29
  - To use this plugin, you will need to already have:
@@ -27,7 +27,7 @@ export default class {
27
27
  this.colourSafeMode = platform.config.colourSafeMode
28
28
  this.minKelvin = accessory.context?.supportedCmdsOpts?.colorTem?.range?.min || 2000
29
29
  this.maxKelvin = accessory.context?.supportedCmdsOpts?.colorTem?.range?.max || 9000
30
- this.isBLEOnly = !accessory.context.useAwsControl && !accessory.context.useLanControl
30
+ this.isBLEOnly = !accessory.context.useAwsControl && !accessory.context.useLanControl && !accessory.context.useOpenApiControl
31
31
 
32
32
  // Set up custom variables for this device type
33
33
  const deviceConf = platform.deviceConf[accessory.context.gvDeviceId] || {}
package/lib/platform.js CHANGED
@@ -711,6 +711,14 @@ export default class {
711
711
  return
712
712
  }
713
713
 
714
+ // Check it's not a matter-ignored device, if the config has been set, since a
715
+ // device skipped by the http/openapi loops for this reason still has an
716
+ // unmatched lan record, which would otherwise be added here and then removed
717
+ // again by the cleanup below on every restart (#1315)
718
+ if (this.config.ignoreMatter && platformConsts.matterModels.includes(lanDevice.sku)) {
719
+ return
720
+ }
721
+
714
722
  // Initialise the device into Homebridge
715
723
  // Since LAN does not provide a name, we will use the configured label or device id
716
724
  this.initialiseDevice({
@@ -880,7 +888,7 @@ export default class {
880
888
  this.logConnectionSummary()
881
889
 
882
890
  // Setup successful
883
- this.log('%s. %s', platformLang.complete, platformLang.welcome)
891
+ this.log('%s.', platformLang.complete)
884
892
  } catch (err) {
885
893
  // Catch any errors during setup
886
894
  this.log.warn('***** %s [v%s]. *****', platformLang.disabling, plugin.version)
@@ -1421,7 +1429,9 @@ export default class {
1421
1429
  )
1422
1430
 
1423
1431
  // Update any changes to the accessory to the platform
1424
- this.api.updatePlatformAccessories([accessory])
1432
+ if (!accessory.context.isExternal) {
1433
+ this.api.updatePlatformAccessories([accessory])
1434
+ }
1425
1435
  devicesInHB.set(accessory.UUID, accessory)
1426
1436
  } catch (err) {
1427
1437
  // Catch any errors during device initialisation
@@ -1656,6 +1666,12 @@ export default class {
1656
1666
  .setCharacteristic(this.api.hap.Characteristic.Model, device.model)
1657
1667
  .setCharacteristic(this.api.hap.Characteristic.Identify, true)
1658
1668
 
1669
+ // Mark the accessory as external so it is never passed to
1670
+ // updatePlatformAccessories, since Homebridge 2 adds any accessory passed
1671
+ // there to its cached list, and an external accessory has no associated
1672
+ // platform so every cache save then fails to serialize it
1673
+ accessory.context.isExternal = true
1674
+
1659
1675
  // Register the accessory
1660
1676
  this.api.publishExternalAccessories(plugin.name, [accessory])
1661
1677
  this.log('[%s] %s.', device.name, platformLang.devAdd)
@@ -1817,7 +1833,9 @@ export default class {
1817
1833
  }
1818
1834
 
1819
1835
  if (update) {
1820
- this.api.updatePlatformAccessories([accessory])
1836
+ if (!accessory.context.isExternal) {
1837
+ this.api.updatePlatformAccessories([accessory])
1838
+ }
1821
1839
  devicesInHB.set(accessory.UUID, accessory)
1822
1840
  }
1823
1841
 
@@ -131,6 +131,5 @@ export default {
131
131
  storageWriteErr: 'could not save accessory to file as',
132
132
  syncFail: 'sync failed as',
133
133
  viaAL: 'via adaptive lighting',
134
- welcome: 'I\'m looking for some lovely people to help maintain this plugin, please get in touch on GitHub or Discord if you\'d like to help out 😄',
135
134
  unknownCommand: 'unknown command in payload received',
136
135
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-govee",
3
3
  "alias": "Govee",
4
4
  "type": "module",
5
- "version": "11.27.1-beta.1",
5
+ "version": "11.27.1",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",