@homebridge-plugins/homebridge-govee 11.35.0 → 11.35.1-beta.0
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 +6 -0
- package/lib/device/kettle.js +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@homebridge-plugins/homebridge-govee` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v11.35.1 (Pending Release)
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- fix: stop reading an h7173 startup frame as a kettle preset temperature (#1351)
|
|
10
|
+
|
|
5
11
|
## v11.35.0 (2026-08-09)
|
|
6
12
|
|
|
7
13
|
### Changed
|
package/lib/device/kettle.js
CHANGED
|
@@ -75,6 +75,13 @@ function readingToCelsius(hexParts) {
|
|
|
75
75
|
* Only these four have been seen, all with keep warm switched on. Anything else
|
|
76
76
|
* falls through to the unknown-data report, which is how these were found.
|
|
77
77
|
*/
|
|
78
|
+
// The range a kettle preset can plausibly sit in. The lowest Govee kettles go
|
|
79
|
+
// is around 40°C for delicate teas, and water stops being water at 100°C - so
|
|
80
|
+
// 90°F to 212°F covers every real preset with room to spare, while excluding
|
|
81
|
+
// the 0 and 1 the H7173 puts in that byte (#1351).
|
|
82
|
+
const KETTLE_PRESET_MIN_F = 90
|
|
83
|
+
const KETTLE_PRESET_MAX_F = 212
|
|
84
|
+
|
|
78
85
|
const HEATING_STATES = {
|
|
79
86
|
'00': { label: 'idle', heating: false },
|
|
80
87
|
'01': { label: 'heating', heating: true },
|
|
@@ -391,6 +398,27 @@ export default class extends GoveeDevice {
|
|
|
391
398
|
if (getTwoItemPosition(hexParts, 2) === '05' && getTwoItemPosition(hexParts, 3) !== '00') {
|
|
392
399
|
const slot = Number.parseInt(getTwoItemPosition(hexParts, 3), 16)
|
|
393
400
|
const tempInF = Number.parseInt(getTwoItemPosition(hexParts, 4), 16)
|
|
401
|
+
|
|
402
|
+
// ⚠️ The `aa 05 <slot> <degrees F>` reading came from ONE kettle, the
|
|
403
|
+
// H7171 in #1337. The H7173 sends the same two leading bytes with a
|
|
404
|
+
// fourth byte of 0 or 1, which is plainly not a temperature - and the
|
|
405
|
+
// plugin cheerfully announced "preset 1 is set to 0°F [-18°C]" (#1351).
|
|
406
|
+
//
|
|
407
|
+
// So the shape alone is not enough to claim a meaning. A preset a
|
|
408
|
+
// kettle could actually hold is the test; anything else is a frame this
|
|
409
|
+
// plugin cannot read yet, and reporting it as such is what gets it
|
|
410
|
+
// decoded rather than guessed at.
|
|
411
|
+
if (tempInF < KETTLE_PRESET_MIN_F || tempInF > KETTLE_PRESET_MAX_F) {
|
|
412
|
+
logUnknownData(this.accessory, {
|
|
413
|
+
kind: 'status',
|
|
414
|
+
source: 'AWS',
|
|
415
|
+
raw: hexString,
|
|
416
|
+
hex: hexParts.join(''),
|
|
417
|
+
extra: { note: 'aa 05 frame whose fourth byte is not a preset temperature' },
|
|
418
|
+
})
|
|
419
|
+
return
|
|
420
|
+
}
|
|
421
|
+
|
|
394
422
|
const line = `preset ${slot} is set to ${tempInF}°F [${Math.round(((tempInF - 32) * 5) / 9)}°C]`
|
|
395
423
|
// Worth seeing in a normal log, but only once each. The kettle sends
|
|
396
424
|
// these when it connects, and if a firmware ever repeats them on a
|
package/package.json
CHANGED