@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 +8 -0
- package/lib/platform.js +39 -1
- package/lib/utils/lang-en.js +4 -0
- package/package.json +1 -1
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
|
|
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
|
|
package/lib/utils/lang-en.js
CHANGED
|
@@ -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