@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 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
@@ -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
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-govee",
3
3
  "alias": "Govee",
4
4
  "type": "module",
5
- "version": "11.35.0",
5
+ "version": "11.35.1-beta.0",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",