@homebridge-plugins/homebridge-govee 11.32.2-beta.23 → 11.32.2-beta.25

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
@@ -42,6 +42,8 @@ All notable changes to `@homebridge-plugins/homebridge-govee` will be documented
42
42
  - docs: note that the local network api accepts the raw command form, which is how scenes work without the cloud
43
43
  - refactor: give every device one shared starting point, so the way a failed command is reported and undone is decided in one place rather than a hundred
44
44
  - feat: recognise eleven more meat thermometers, which report what they send so their readings can be worked out, and stop the one already known printing its whole update as a warning
45
+ - feat: add the H5161 power strip and give the H7184 kitchen composter an on and off switch
46
+ - feat: recognise three more sensors, which report what they send, and say plainly in the log why a sensor has no tile yet
45
47
 
46
48
  ## v11.32.1 (2026-08-02)
47
49
 
@@ -66,7 +66,7 @@ class ApplianceBasic extends GoveeDevice {
66
66
  // The plain Fan service switches on a boolean `On`, while Fanv2 and
67
67
  // AirPurifier use `Active`. Follow whichever this service uses, so these
68
68
  // tiles behave like the hand-written handlers for the same kind of device.
69
- const usesOn = serviceName === 'Fan'
69
+ const usesOn = serviceName === 'Fan' || serviceName === 'Switch'
70
70
  this.powerChar = usesOn ? this.hapChar.On : this.hapChar.Active
71
71
  this.powerOn = usesOn ? true : 1
72
72
  this.powerOff = usesOn ? false : 0
@@ -354,6 +354,13 @@ export const deviceDiffuserBasic = makeBasicAppliance({
354
354
  currentStateOff: 0, // inactive
355
355
  })
356
356
 
357
+ // A composter is on or off. It has a mode and a light too, but neither is
358
+ // worked out, so they are left off rather than shown as controls that do nothing
359
+ export const deviceComposterBasic = makeBasicAppliance({
360
+ family: 'composter',
361
+ service: 'Switch',
362
+ })
363
+
357
364
  export const devicePurifierBasic = makeBasicAppliance({
358
365
  family: 'purifier',
359
366
  service: 'AirPurifier',
@@ -1,4 +1,5 @@
1
1
  import {
2
+ deviceComposterBasic,
2
3
  deviceDehumidifierBasic,
3
4
  deviceDiffuserBasic,
4
5
  deviceFanBasic,
@@ -55,6 +56,7 @@ export default {
55
56
  deviceDehumidifierH7152: deviceDehumidifierH7150, // same device, and this gives it proper speed feedback
56
57
  deviceDiffuserH7161,
57
58
  deviceDiffuserH7162: deviceDiffuserH7161, // identical to the H7161
59
+ deviceComposterBasic,
58
60
  deviceDehumidifierBasic,
59
61
  deviceDiffuserBasic,
60
62
  deviceFanBasic,
@@ -1,4 +1,3 @@
1
- import platformLang from '../utils/lang-en.js'
2
1
  import { logUnknownData } from '../utils/report-unknown.js'
3
2
  import GoveeDevice from './base.js'
4
3
 
@@ -12,9 +11,8 @@ import GoveeDevice from './base.js'
12
11
  export default class GoveeSensorBasic extends GoveeDevice {
13
12
  constructor(platform, accessory) {
14
13
  super(platform, accessory)
15
- // Output the customised options to the log
16
- const opts = JSON.stringify({})
17
- platform.log('[%s] %s %s.', accessory.displayName, platformLang.devInitOpts, opts)
14
+ this.logInitOptions({})
15
+ this.accessory.log('this sensor\'s readings are not understood yet, so it has no tiles - the lines below are what is needed to add them')
18
16
  }
19
17
 
20
18
  externalUpdate(params) {
@@ -40,6 +40,7 @@ const familyControls = {
40
40
  purifier: { swing: false, lock: false, light: false },
41
41
  iceMaker: { swing: false, lock: false, light: false },
42
42
  diffuser: { swing: false, lock: false, light: false },
43
+ composter: { swing: false, lock: false, light: false },
43
44
  }
44
45
 
45
46
  const emptyControls = {
@@ -623,7 +623,9 @@ export default {
623
623
  // showAs to 'valve' or 'tap' for a more fitting HomeKit tile (#1324)
624
624
  switchSingle: ['H5001', 'H5080', 'H5081', 'H5083', 'H5085', 'H5086', 'H5901', 'H7014'],
625
625
  switchDouble: ['H5082', 'H5089'],
626
- switchTriple: ['H5160'],
626
+ // The H5161 shares the H5160's goodsType, which is what decides how the
627
+ // app talks to it, so it is handled the same way
628
+ switchTriple: ['H5160', 'H5161'],
627
629
  sensorLeak: ['H5054', 'H5058', 'H5059', 'H5830'],
628
630
  sensorThermo: [
629
631
  'B5178',
@@ -661,6 +663,10 @@ export default {
661
663
  // report what they send rather than showing a tile that never changes.
662
664
  // ⚠️ The H5183 is one of these but stays on the list above, because it has
663
665
  // been given working tiles for years and nobody has said they are wrong
666
+ // Power only for now. It also has a mode and a light, which report what
667
+ // they need rather than guessing (#1282)
668
+ composter: ['H7184'],
669
+
664
670
  sensorProbe: [
665
671
  'H5181',
666
672
  'H5182',
@@ -685,7 +691,10 @@ export default {
685
691
  diffuser: ['H7161', 'H7162'],
686
692
  iceMaker: ['H7172', 'H717D', 'H8102', 'H8120', 'H8121', 'H8122', 'H8131'],
687
693
  sensorButton: ['H5122'],
688
- sensorContact: ['H5123'],
694
+ sensorContact: ['H5023', 'H5123'],
695
+ // Sensors whose readings are not worked out yet, so they report what
696
+ // they send rather than showing a tile that never changes
697
+ sensorUnknown: ['H5026', 'H5130'],
689
698
  sensorPresence: ['H5127'],
690
699
  kettle: ['H7170', 'H7171', 'H7173', 'H7175', 'H717A'],
691
700
  template: [
@@ -702,7 +711,6 @@ export default {
702
711
  'H5126', // https://github.com/homebridge-plugins/homebridge-govee/issues/910
703
712
  'H5129', // https://github.com/homebridge-plugins/homebridge-govee/issues/1084
704
713
  'H5125', // https://github.com/homebridge-plugins/homebridge-govee/issues/981
705
- 'H7184', // https://github.com/homebridge-plugins/homebridge-govee/issues/1282
706
714
  ],
707
715
  },
708
716
 
@@ -45,6 +45,7 @@ const routes = [
45
45
  list: 'sensorThermo',
46
46
  choose: ({ deviceConf }) => (deviceConf.showExtraSwitch ? 'deviceSensorThermoSwitch' : 'deviceSensorThermo'),
47
47
  },
48
+ { list: 'composter', handler: 'deviceComposterBasic', awsPolling: true },
48
49
  { list: 'sensorProbe', handler: 'deviceSensorProbe' },
49
50
  { list: 'sensorMonitor', handler: 'deviceSensorMonitor', awsPolling: true },
50
51
  { list: 'sensorCO2', handler: 'deviceSensorCO2', awsPolling: true },
@@ -57,6 +58,7 @@ const routes = [
57
58
  { list: 'diffuser', prefix: 'deviceDiffuser', fallback: 'deviceDiffuserBasic', awsPolling: true },
58
59
  { list: 'sensorButton', handler: 'deviceSensorButton' },
59
60
  { list: 'sensorContact', handler: 'deviceSensorContact' },
61
+ { list: 'sensorUnknown', handler: 'deviceSensorBasic' },
60
62
  { list: 'kettle', handler: 'deviceKettle' },
61
63
  { list: 'iceMaker', prefix: 'deviceIceMaker', fallback: 'deviceIceMakerBasic' },
62
64
  { list: 'template', handler: 'deviceTemplate' },
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.32.2-beta.23",
5
+ "version": "11.32.2-beta.25",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",