@homebridge-plugins/homebridge-govee 11.27.0 → 11.27.1-beta.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,6 +2,14 @@
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)
6
+
7
+ ### Changes
8
+
9
+ - fix: only treat fresh real-time gateway records as leak events, not periodic sync records (#1314)
10
+ - fix: restore the online status update helper for thermo and leak sensors (#1317)
11
+ - fix: skip app device groups found in the http device list (#1317)
12
+
5
13
  ## v11.27.0 (2026-07-13)
6
14
 
7
15
  ### Changes
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
@@ -1679,6 +1685,24 @@ export default class {
1679
1685
  devicesInHB.set(accessory.UUID, accessory)
1680
1686
  }
1681
1687
 
1688
+ updateAccessoryStatus(accessory, newStatus) {
1689
+ // Log the change, at a warning level if the device is reported offline
1690
+ if (newStatus) {
1691
+ accessory.log(platformLang.onlineHTTP)
1692
+ } else {
1693
+ accessory.logWarn(platformLang.offlineHTTP)
1694
+ }
1695
+
1696
+ // Update the context item for the plugin UI
1697
+ accessory.context.isOnline = newStatus ? 'yes' : 'no'
1698
+
1699
+ // Update any changes to the accessory to the platform
1700
+ if (!accessory.context.isExternal) {
1701
+ this.api.updatePlatformAccessories([accessory])
1702
+ }
1703
+ devicesInHB.set(accessory.UUID, accessory)
1704
+ }
1705
+
1682
1706
  removeAccessory(accessory) {
1683
1707
  // Remove an accessory from Homebridge
1684
1708
  try {
@@ -1843,11 +1867,25 @@ export default class {
1843
1867
  return
1844
1868
  }
1845
1869
 
1846
- // 0xEE34 is a gateway subdevice status, laid out as:
1870
+ // 0xEE34 is a gateway subdevice record, laid out as:
1847
1871
  // ee 34 [subdevice number] 02 00 64 1e 14 [seq] [unix time x4] [leak flags x4] 80 00 [checksum]
1848
1872
  if (!hexString.startsWith('ee34') || hexString.length < 36) {
1849
1873
  return
1850
1874
  }
1875
+
1876
+ // The gateway also sends batches of other ee34 records, e.g. during its
1877
+ // periodic sync, whose flag bytes are not live leak states (#1314), so
1878
+ // only accept the real-time status type (0x02) with a current timestamp
1879
+ if (hexString.substring(6, 8) !== '02') {
1880
+ this.log.debug('[AWS] %s [%s].', platformLang.gwRecordType, hexString)
1881
+ return
1882
+ }
1883
+ const recordTime = Number.parseInt(hexString.substring(18, 26), 16)
1884
+ if (Math.abs(Math.round(Date.now() / 1000) - recordTime) > 600) {
1885
+ this.log.debug('[AWS] %s [%s].', platformLang.gwRecordStale, hexString)
1886
+ return
1887
+ }
1888
+
1851
1889
  const subdeviceNo = Number.parseInt(hexString.substring(4, 6), 16)
1852
1890
  const leakDetected = hexString.substring(26, 34) !== '00000000'
1853
1891
 
@@ -83,6 +83,8 @@ export default {
83
83
  disableClient: 'disabling client as',
84
84
  disabledInConfig: 'disabled in config',
85
85
  disabling: 'Disabling plugin',
86
+ gwRecordStale: 'ignoring gateway record with a stale timestamp',
87
+ gwRecordType: 'ignoring gateway record that is not a real-time status',
86
88
  hbVersionFail: 'Your version of Homebridge is too low - please update to v1.6',
87
89
  heaterSimNoSensor: 'you must configure a device ID that provides a temperature reading',
88
90
  httpRetry: 'Unable to reach Govee, retrying in 30 seconds',
@@ -119,6 +121,8 @@ export default {
119
121
  twoFACodeInvalid: '2FA verification code was provided but login still failed - please check the code is correct and has not expired',
120
122
  noTokenExists: 'no account token has been retrieved',
121
123
  offlineBTConn: 'has been reported [disconnected] via BLE',
124
+ offlineHTTP: 'has been reported [offline]',
125
+ onlineHTTP: 'has been reported [online]',
122
126
  pluginNotConf: 'Plugin has not been configured',
123
127
  receivingUpdate: 'receiving update',
124
128
  sendingUpdate: 'sending update',
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.0",
5
+ "version": "11.27.1-beta.1",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",