@homebridge-plugins/homebridge-govee 11.27.1-beta.0 → 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 +8 -2
- package/README.md +0 -2
- package/lib/device/light.js +1 -1
- package/lib/platform.js +45 -3
- package/lib/utils/lang-en.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@homebridge-plugins/homebridge-govee` will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## v11.27.1 (
|
|
5
|
+
## v11.27.1 (2026-07-15)
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Changed
|
|
8
8
|
|
|
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
|
|
13
|
+
- fix: restore the online status update helper for thermo and leak sensors (#1317)
|
|
14
|
+
- fix: skip app device groups found in the http device list (#1317)
|
|
9
15
|
- fix: only treat fresh real-time gateway records as leak events, not periodic sync records (#1314)
|
|
10
16
|
|
|
11
17
|
## v11.27.0 (2026-07-13)
|
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:
|
package/lib/device/light.js
CHANGED
|
@@ -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
|
@@ -600,6 +600,12 @@ export default class {
|
|
|
600
600
|
return
|
|
601
601
|
}
|
|
602
602
|
|
|
603
|
+
// Skip Govee app device groups as these are not real devices (#1309)
|
|
604
|
+
if (['BaseGroup', 'SameModeGroup'].includes(httpDevice.sku)) {
|
|
605
|
+
this.log.debug('[%s] %s.', httpDevice.deviceName, platformLang.devIsGroup)
|
|
606
|
+
return
|
|
607
|
+
}
|
|
608
|
+
|
|
603
609
|
// Check it's not a matter-ignored device, if the config has been set
|
|
604
610
|
if (platformConsts.matterModels.includes(httpDevice.sku) && this.config.ignoreMatter) {
|
|
605
611
|
return
|
|
@@ -705,6 +711,14 @@ export default class {
|
|
|
705
711
|
return
|
|
706
712
|
}
|
|
707
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
|
+
|
|
708
722
|
// Initialise the device into Homebridge
|
|
709
723
|
// Since LAN does not provide a name, we will use the configured label or device id
|
|
710
724
|
this.initialiseDevice({
|
|
@@ -874,7 +888,7 @@ export default class {
|
|
|
874
888
|
this.logConnectionSummary()
|
|
875
889
|
|
|
876
890
|
// Setup successful
|
|
877
|
-
this.log('%s.
|
|
891
|
+
this.log('%s.', platformLang.complete)
|
|
878
892
|
} catch (err) {
|
|
879
893
|
// Catch any errors during setup
|
|
880
894
|
this.log.warn('***** %s [v%s]. *****', platformLang.disabling, plugin.version)
|
|
@@ -1415,7 +1429,9 @@ export default class {
|
|
|
1415
1429
|
)
|
|
1416
1430
|
|
|
1417
1431
|
// Update any changes to the accessory to the platform
|
|
1418
|
-
|
|
1432
|
+
if (!accessory.context.isExternal) {
|
|
1433
|
+
this.api.updatePlatformAccessories([accessory])
|
|
1434
|
+
}
|
|
1419
1435
|
devicesInHB.set(accessory.UUID, accessory)
|
|
1420
1436
|
} catch (err) {
|
|
1421
1437
|
// Catch any errors during device initialisation
|
|
@@ -1650,6 +1666,12 @@ export default class {
|
|
|
1650
1666
|
.setCharacteristic(this.api.hap.Characteristic.Model, device.model)
|
|
1651
1667
|
.setCharacteristic(this.api.hap.Characteristic.Identify, true)
|
|
1652
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
|
+
|
|
1653
1675
|
// Register the accessory
|
|
1654
1676
|
this.api.publishExternalAccessories(plugin.name, [accessory])
|
|
1655
1677
|
this.log('[%s] %s.', device.name, platformLang.devAdd)
|
|
@@ -1679,6 +1701,24 @@ export default class {
|
|
|
1679
1701
|
devicesInHB.set(accessory.UUID, accessory)
|
|
1680
1702
|
}
|
|
1681
1703
|
|
|
1704
|
+
updateAccessoryStatus(accessory, newStatus) {
|
|
1705
|
+
// Log the change, at a warning level if the device is reported offline
|
|
1706
|
+
if (newStatus) {
|
|
1707
|
+
accessory.log(platformLang.onlineHTTP)
|
|
1708
|
+
} else {
|
|
1709
|
+
accessory.logWarn(platformLang.offlineHTTP)
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
// Update the context item for the plugin UI
|
|
1713
|
+
accessory.context.isOnline = newStatus ? 'yes' : 'no'
|
|
1714
|
+
|
|
1715
|
+
// Update any changes to the accessory to the platform
|
|
1716
|
+
if (!accessory.context.isExternal) {
|
|
1717
|
+
this.api.updatePlatformAccessories([accessory])
|
|
1718
|
+
}
|
|
1719
|
+
devicesInHB.set(accessory.UUID, accessory)
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1682
1722
|
removeAccessory(accessory) {
|
|
1683
1723
|
// Remove an accessory from Homebridge
|
|
1684
1724
|
try {
|
|
@@ -1793,7 +1833,9 @@ export default class {
|
|
|
1793
1833
|
}
|
|
1794
1834
|
|
|
1795
1835
|
if (update) {
|
|
1796
|
-
|
|
1836
|
+
if (!accessory.context.isExternal) {
|
|
1837
|
+
this.api.updatePlatformAccessories([accessory])
|
|
1838
|
+
}
|
|
1797
1839
|
devicesInHB.set(accessory.UUID, accessory)
|
|
1798
1840
|
}
|
|
1799
1841
|
|
package/lib/utils/lang-en.js
CHANGED
|
@@ -121,6 +121,8 @@ export default {
|
|
|
121
121
|
twoFACodeInvalid: '2FA verification code was provided but login still failed - please check the code is correct and has not expired',
|
|
122
122
|
noTokenExists: 'no account token has been retrieved',
|
|
123
123
|
offlineBTConn: 'has been reported [disconnected] via BLE',
|
|
124
|
+
offlineHTTP: 'has been reported [offline]',
|
|
125
|
+
onlineHTTP: 'has been reported [online]',
|
|
124
126
|
pluginNotConf: 'Plugin has not been configured',
|
|
125
127
|
receivingUpdate: 'receiving update',
|
|
126
128
|
sendingUpdate: 'sending update',
|
|
@@ -129,6 +131,5 @@ export default {
|
|
|
129
131
|
storageWriteErr: 'could not save accessory to file as',
|
|
130
132
|
syncFail: 'sync failed as',
|
|
131
133
|
viaAL: 'via adaptive lighting',
|
|
132
|
-
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 😄',
|
|
133
134
|
unknownCommand: 'unknown command in payload received',
|
|
134
135
|
}
|
package/package.json
CHANGED