@homebridge-plugins/homebridge-govee 11.36.1-beta.1 → 11.36.1-beta.2

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
@@ -8,6 +8,7 @@ All notable changes to `@homebridge-plugins/homebridge-govee` will be documented
8
8
 
9
9
  - fix: give the H1310 and R1310 ceiling fans their own handler, with the light they were missing (#1352)
10
10
  - fix: scale the H1310 and R1310 fan speed to the six steps they have, not the H1370's twelve (#1352)
11
+ - fix: stop a fan ignoring the first speed asked of it after a restart
11
12
 
12
13
  ## v11.36.0 (2026-08-11)
13
14
 
@@ -64,7 +64,13 @@ export default class GoveeFanH1370 extends GoveeDevice {
64
64
  unit: 'unitless',
65
65
  })
66
66
  .onSet(async value => this.internalSpeedUpdate(value))
67
- this.cacheSpeed = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
67
+
68
+ // cacheSpeed holds a device speed step everywhere else, but the restored
69
+ // characteristic is a HomeKit percentage, so it has to be converted back.
70
+ // Left as a percentage it would sometimes equal a real step and silently
71
+ // swallow the first speed the owner asked for.
72
+ const restoredPercent = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
73
+ this.cacheSpeed = restoredPercent ? hkPercentToFanSpeed(restoredPercent, this.speedSteps) : 0
68
74
 
69
75
  if (this.hideLight) {
70
76
  if (this.accessory.getService(this.hapServ.Lightbulb)) {
@@ -78,7 +78,15 @@ export default class GoveeFanH7100 extends GoveeDevice {
78
78
  unit: 'unitless',
79
79
  })
80
80
  .onSet(async value => this.internalSpeedUpdate(value))
81
- this.cacheSpeed = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
81
+
82
+ // cacheSpeed holds a device speed step everywhere else, but the restored
83
+ // characteristic is a HomeKit percentage, so it has to be converted back.
84
+ // Left as a percentage it would sometimes equal a real step and silently
85
+ // swallow the first speed the owner asked for. A restored 100% stays
86
+ // ambiguous between auto and top speed - both report 100 - so it settles on
87
+ // top speed rather than guessing.
88
+ const restoredPercent = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
89
+ this.cacheSpeed = restoredPercent ? hkPercentToFanSpeed(restoredPercent, this.speedSteps) : 0
82
90
 
83
91
  // Add the set handler to the fan swing mode
84
92
  this.service
@@ -75,7 +75,15 @@ export default class extends GoveeDevice {
75
75
  unit: 'unitless', // This is actually from HAP for Bluetooth LE Specification, but fits
76
76
  })
77
77
  .onSet(async value => this.internalSpeedUpdate(value))
78
- this.cacheSpeed = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
78
+
79
+ // cacheSpeed holds a device speed step everywhere else, but the restored
80
+ // characteristic is a HomeKit percentage, so it has to be converted back.
81
+ // Left as a percentage it would sometimes equal a real step and silently
82
+ // swallow the first speed the owner asked for. A restored 100% stays
83
+ // ambiguous between auto and top speed - both report 100 - so it settles on
84
+ // top speed rather than guessing.
85
+ const restoredPercent = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
86
+ this.cacheSpeed = restoredPercent ? hkPercentToFanSpeed(restoredPercent, this.speedSteps) : 0
79
87
 
80
88
  // Add the set handler to the fan swing mode
81
89
  this.service
@@ -75,7 +75,15 @@ export default class extends GoveeDevice {
75
75
  unit: 'unitless', // This is actually from HAP for Bluetooth LE Specification, but fits
76
76
  })
77
77
  .onSet(async value => this.internalSpeedUpdate(value))
78
- this.cacheSpeed = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
78
+
79
+ // cacheSpeed holds a device speed step everywhere else, but the restored
80
+ // characteristic is a HomeKit percentage, so it has to be converted back.
81
+ // Left as a percentage it would sometimes equal a real step and silently
82
+ // swallow the first speed the owner asked for. A restored 100% stays
83
+ // ambiguous between auto and top speed - both report 100 - so it settles on
84
+ // top speed rather than guessing.
85
+ const restoredPercent = this.service.getCharacteristic(this.hapChar.RotationSpeed).value
86
+ this.cacheSpeed = restoredPercent ? hkPercentToFanSpeed(restoredPercent, this.speedSteps) : 0
79
87
 
80
88
  // Add the set handler to the fan swing mode
81
89
  this.service
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.36.1-beta.1",
5
+ "version": "11.36.1-beta.2",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",