@homebridge-plugins/homebridge-govee 11.32.2-beta.30 → 11.32.2-beta.31
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 +2 -1
- package/lib/connection/ble.js +6 -5
- package/lib/platform.js +22 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -45,7 +45,8 @@ All notable changes to `@homebridge-plugins/homebridge-govee` will be documented
|
|
|
45
45
|
- feat: add the H5161 power strip and give the H7184 kitchen composter an on and off switch
|
|
46
46
|
- feat: recognise three more sensors, which report what they send, and say plainly in the log why a sensor has no tile yet
|
|
47
47
|
- feat: add ble encryption for the H3001 solar string lights, which silently ignore unencrypted frames (#1328) (@dominick-han)
|
|
48
|
-
- fix: mention an unrecognised bluetooth broadcast once, and only
|
|
48
|
+
- fix: mention an unrecognised bluetooth broadcast once, and only for one of your own sensors, since a scan also hears your lights and the neighbours
|
|
49
|
+
- fix: say "device(s)" in the connection summary, since the count is often one
|
|
49
50
|
|
|
50
51
|
## v11.32.1 (2026-08-02)
|
|
51
52
|
|
package/lib/connection/ble.js
CHANGED
|
@@ -147,11 +147,12 @@ export default class BLEConnection {
|
|
|
147
147
|
raw,
|
|
148
148
|
})}`
|
|
149
149
|
|
|
150
|
-
//
|
|
151
|
-
//
|
|
152
|
-
// the
|
|
153
|
-
//
|
|
154
|
-
|
|
150
|
+
// Only one of this account's own sensors is worth putting in front
|
|
151
|
+
// of someone: that is the case where the plugin should be reading
|
|
152
|
+
// the broadcast and cannot. A light of theirs broadcasts just as
|
|
153
|
+
// often but is driven over aws/lan/ble, and an address that is not
|
|
154
|
+
// on the account at all may belong to a neighbour.
|
|
155
|
+
if (this.platform.hasBleSensor(address)) {
|
|
155
156
|
this.log.warn(line)
|
|
156
157
|
} else {
|
|
157
158
|
this.log.debug(line)
|
package/lib/platform.js
CHANGED
|
@@ -566,18 +566,18 @@ export default class {
|
|
|
566
566
|
|
|
567
567
|
// Real-time channels
|
|
568
568
|
if (this.awsClient) {
|
|
569
|
-
realtime.push(`AWS IoT MQTT (${awsCount}
|
|
569
|
+
realtime.push(`AWS IoT MQTT (${awsCount} device(s))`)
|
|
570
570
|
}
|
|
571
571
|
if (this.openApiClient?.mqttConnected) {
|
|
572
|
-
realtime.push(`OpenAPI MQTT (${openApiCount}
|
|
572
|
+
realtime.push(`OpenAPI MQTT (${openApiCount} device(s))`)
|
|
573
573
|
}
|
|
574
574
|
if (this.lanClient && lanCount > 0) {
|
|
575
|
-
realtime.push(`LAN UDP (${lanCount}
|
|
575
|
+
realtime.push(`LAN UDP (${lanCount} device(s))`)
|
|
576
576
|
}
|
|
577
577
|
|
|
578
578
|
// Polling intervals
|
|
579
579
|
if (this.refreshAWSInterval) {
|
|
580
|
-
polling.push(`AWS every 60s (${awsCount}
|
|
580
|
+
polling.push(`AWS every 60s (${awsCount} device(s))`)
|
|
581
581
|
}
|
|
582
582
|
if (this.refreshHTTPInterval) {
|
|
583
583
|
polling.push(`HTTP every ${this.config.httpRefreshTime}s (sensors)`)
|
|
@@ -1061,19 +1061,31 @@ export default class {
|
|
|
1061
1061
|
}
|
|
1062
1062
|
|
|
1063
1063
|
/**
|
|
1064
|
-
* Whether a bluetooth address belongs to one of this account's
|
|
1064
|
+
* Whether a bluetooth address belongs to one of this account's sensors.
|
|
1065
1065
|
*
|
|
1066
|
-
*
|
|
1067
|
-
*
|
|
1068
|
-
*
|
|
1066
|
+
* An undecodable broadcast is only worth putting in front of someone when it
|
|
1067
|
+
* came from a sensor of theirs, because a sensor is the one kind of device
|
|
1068
|
+
* whose readings arrive this way and so the one kind the plugin is failing.
|
|
1069
|
+
* The two cases this deliberately leaves quiet:
|
|
1070
|
+
*
|
|
1071
|
+
* - a light or appliance of theirs, which also broadcasts constantly but is
|
|
1072
|
+
* controlled over aws/lan/ble and has nothing to gain from being decoded
|
|
1073
|
+
* - an address that is not on this account at all, which may be a neighbour's
|
|
1074
|
+
* device and is not something the owner can act on
|
|
1069
1075
|
*/
|
|
1070
|
-
|
|
1076
|
+
hasBleSensor(address) {
|
|
1071
1077
|
if (!address) {
|
|
1072
1078
|
return false
|
|
1073
1079
|
}
|
|
1074
1080
|
const wanted = String(address).toLowerCase()
|
|
1081
|
+
// Any list named sensor* counts, so a new sensor type is covered on the day
|
|
1082
|
+
// it is added rather than needing this list updated too
|
|
1083
|
+
const sensorModels = Object.keys(platformConsts.models)
|
|
1084
|
+
.filter(key => key.startsWith('sensor'))
|
|
1085
|
+
.flatMap(key => platformConsts.models[key])
|
|
1075
1086
|
return [...devicesInHB.values()].some(
|
|
1076
|
-
accessory => String(accessory.context.bleAddress || '').toLowerCase() === wanted
|
|
1087
|
+
accessory => String(accessory.context.bleAddress || '').toLowerCase() === wanted
|
|
1088
|
+
&& sensorModels.includes(accessory.context.gvModel),
|
|
1077
1089
|
)
|
|
1078
1090
|
}
|
|
1079
1091
|
|
package/package.json
CHANGED