@homebridge-plugins/homebridge-govee 10.16.0 → 10.17.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
@@ -8,6 +8,20 @@ This project tries to adhere to [Semantic Versioning](http://semver.org/). In pr
8
8
  - `MINOR` version when a new device type is added, or when a new feature is added that is backwards-compatible
9
9
  - `PATCH` version when backwards-compatible bug fixes are implemented
10
10
 
11
+ ## v10.17.0 (2025-03-22)
12
+
13
+ ### Added
14
+
15
+ - support light models `H6013` and `H8604`
16
+
17
+ ### Changed
18
+
19
+ - updated dependencies
20
+
21
+ ### Fixed
22
+
23
+ - fix hap-nodejs permissions for hb2
24
+
11
25
  ## v10.16.0 (2025-02-24)
12
26
 
13
27
  ### Added
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) Ben Potter
3
+ Copyright (c) 2022 - 2025 Ben Potter
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -51,7 +51,7 @@ export default function (homebridge) {
51
51
  super('S2R1', S2R1Characteristic.UUID)
52
52
  this.setProps({
53
53
  format: homebridge.hap.Formats.DATA,
54
- perms: [homebridge.hap.Perms.READ, homebridge.hap.Perms.NOTIFY, homebridge.hap.Perms.HIDDEN],
54
+ perms: [homebridge.hap.Perms.PAIRED_READ, homebridge.hap.Perms.NOTIFY, homebridge.hap.Perms.HIDDEN],
55
55
  })
56
56
  }
57
57
  }
@@ -63,7 +63,7 @@ export default function (homebridge) {
63
63
  super('S2R2', S2R2Characteristic.UUID)
64
64
  this.setProps({
65
65
  format: homebridge.hap.Formats.DATA,
66
- perms: [homebridge.hap.Perms.READ, homebridge.hap.Perms.NOTIFY, homebridge.hap.Perms.HIDDEN],
66
+ perms: [homebridge.hap.Perms.PAIRED_READ, homebridge.hap.Perms.NOTIFY, homebridge.hap.Perms.HIDDEN],
67
67
  })
68
68
  }
69
69
  }
@@ -75,7 +75,7 @@ export default function (homebridge) {
75
75
  super('S2W1', S2W1Characteristic.UUID)
76
76
  this.setProps({
77
77
  format: homebridge.hap.Formats.DATA,
78
- perms: [homebridge.hap.Perms.WRITE, homebridge.hap.Perms.HIDDEN],
78
+ perms: [homebridge.hap.Perms.PAIRED_WRITE, homebridge.hap.Perms.HIDDEN],
79
79
  })
80
80
  }
81
81
  }
@@ -87,7 +87,7 @@ export default function (homebridge) {
87
87
  super('S2W2', S2W2Characteristic.UUID)
88
88
  this.setProps({
89
89
  format: homebridge.hap.Formats.DATA,
90
- perms: [homebridge.hap.Perms.WRITE, homebridge.hap.Perms.HIDDEN],
90
+ perms: [homebridge.hap.Perms.PAIRED_WRITE, homebridge.hap.Perms.HIDDEN],
91
91
  })
92
92
  }
93
93
  }
@@ -137,6 +137,7 @@ export default {
137
137
  'H600A',
138
138
  'H600D',
139
139
  'H6010',
140
+ 'H6013',
140
141
  'H601A',
141
142
  'H601B',
142
143
  'H601C',
@@ -421,6 +422,7 @@ export default {
421
422
  'H805C',
422
423
  'H8072',
423
424
  'H80C4',
425
+ 'H8604',
424
426
  'HXXXX', // placeholder for LAN-only configured models
425
427
  ],
426
428
  switchSingle: ['H5001', 'H5080', 'H5081', 'H5083', 'H5086', 'H7014'],
@@ -35,7 +35,7 @@ export default class {
35
35
  self.hapChar.call(this, 'Colour Mode', self.uuids.colourMode)
36
36
  this.setProps({
37
37
  format: api.hap.Formats.BOOL,
38
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
38
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
39
39
  })
40
40
  this.value = this.getDefaultValue()
41
41
  }
@@ -43,7 +43,7 @@ export default class {
43
43
  self.hapChar.call(this, 'Music Mode', self.uuids.musicMode)
44
44
  this.setProps({
45
45
  format: api.hap.Formats.BOOL,
46
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
46
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
47
47
  })
48
48
  this.value = this.getDefaultValue()
49
49
  }
@@ -51,7 +51,7 @@ export default class {
51
51
  self.hapChar.call(this, 'Music Mode 2', self.uuids.musicModeTwo)
52
52
  this.setProps({
53
53
  format: api.hap.Formats.BOOL,
54
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
54
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
55
55
  })
56
56
  this.value = this.getDefaultValue()
57
57
  }
@@ -59,7 +59,7 @@ export default class {
59
59
  self.hapChar.call(this, 'Scene', self.uuids.scene)
60
60
  this.setProps({
61
61
  format: api.hap.Formats.BOOL,
62
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
62
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
63
63
  })
64
64
  this.value = this.getDefaultValue()
65
65
  }
@@ -67,7 +67,7 @@ export default class {
67
67
  self.hapChar.call(this, 'Scene 2', self.uuids.sceneTwo)
68
68
  this.setProps({
69
69
  format: api.hap.Formats.BOOL,
70
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
70
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
71
71
  })
72
72
  this.value = this.getDefaultValue()
73
73
  }
@@ -75,7 +75,7 @@ export default class {
75
75
  self.hapChar.call(this, 'Scene 3', self.uuids.sceneThree)
76
76
  this.setProps({
77
77
  format: api.hap.Formats.BOOL,
78
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
78
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
79
79
  })
80
80
  this.value = this.getDefaultValue()
81
81
  }
@@ -83,7 +83,7 @@ export default class {
83
83
  self.hapChar.call(this, 'Scene 4', self.uuids.sceneFour)
84
84
  this.setProps({
85
85
  format: api.hap.Formats.BOOL,
86
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
86
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
87
87
  })
88
88
  this.value = this.getDefaultValue()
89
89
  }
@@ -91,7 +91,7 @@ export default class {
91
91
  self.hapChar.call(this, 'DIY Mode', self.uuids.diyMode)
92
92
  this.setProps({
93
93
  format: api.hap.Formats.BOOL,
94
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
94
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
95
95
  })
96
96
  this.value = this.getDefaultValue()
97
97
  }
@@ -99,7 +99,7 @@ export default class {
99
99
  self.hapChar.call(this, 'DIY Mode 2', self.uuids.diyModeTwo)
100
100
  this.setProps({
101
101
  format: api.hap.Formats.BOOL,
102
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
102
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
103
103
  })
104
104
  this.value = this.getDefaultValue()
105
105
  }
@@ -107,7 +107,7 @@ export default class {
107
107
  self.hapChar.call(this, 'DIY Mode 3', self.uuids.diyModeThree)
108
108
  this.setProps({
109
109
  format: api.hap.Formats.BOOL,
110
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
110
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
111
111
  })
112
112
  this.value = this.getDefaultValue()
113
113
  }
@@ -115,7 +115,7 @@ export default class {
115
115
  self.hapChar.call(this, 'DIY Mode 4', self.uuids.diyModeFour)
116
116
  this.setProps({
117
117
  format: api.hap.Formats.BOOL,
118
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
118
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
119
119
  })
120
120
  this.value = this.getDefaultValue()
121
121
  }
@@ -123,7 +123,7 @@ export default class {
123
123
  self.hapChar.call(this, 'Segmented', self.uuids.segmented)
124
124
  this.setProps({
125
125
  format: api.hap.Formats.BOOL,
126
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
126
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
127
127
  })
128
128
  this.value = this.getDefaultValue()
129
129
  }
@@ -131,7 +131,7 @@ export default class {
131
131
  self.hapChar.call(this, 'Segmented 2', self.uuids.segmentedTwo)
132
132
  this.setProps({
133
133
  format: api.hap.Formats.BOOL,
134
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
134
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
135
135
  })
136
136
  this.value = this.getDefaultValue()
137
137
  }
@@ -139,7 +139,7 @@ export default class {
139
139
  self.hapChar.call(this, 'Segmented 3', self.uuids.segmentedThree)
140
140
  this.setProps({
141
141
  format: api.hap.Formats.BOOL,
142
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
142
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
143
143
  })
144
144
  this.value = this.getDefaultValue()
145
145
  }
@@ -147,7 +147,7 @@ export default class {
147
147
  self.hapChar.call(this, 'Segmented 4', self.uuids.segmentedFour)
148
148
  this.setProps({
149
149
  format: api.hap.Formats.BOOL,
150
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
150
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
151
151
  })
152
152
  this.value = this.getDefaultValue()
153
153
  }
@@ -155,7 +155,7 @@ export default class {
155
155
  self.hapChar.call(this, 'Video Mode', self.uuids.videoMode)
156
156
  this.setProps({
157
157
  format: api.hap.Formats.BOOL,
158
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
158
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
159
159
  })
160
160
  this.value = this.getDefaultValue()
161
161
  }
@@ -163,7 +163,7 @@ export default class {
163
163
  self.hapChar.call(this, 'Video Mode 2', self.uuids.videoModeTwo)
164
164
  this.setProps({
165
165
  format: api.hap.Formats.BOOL,
166
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
166
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
167
167
  })
168
168
  this.value = this.getDefaultValue()
169
169
  }
@@ -171,7 +171,7 @@ export default class {
171
171
  self.hapChar.call(this, 'Night Light', self.uuids.nightLight)
172
172
  this.setProps({
173
173
  format: api.hap.Formats.BOOL,
174
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
174
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
175
175
  })
176
176
  this.value = this.getDefaultValue()
177
177
  }
@@ -179,7 +179,7 @@ export default class {
179
179
  self.hapChar.call(this, 'Display Light', self.uuids.displayLight)
180
180
  this.setProps({
181
181
  format: api.hap.Formats.BOOL,
182
- perms: [api.hap.Perms.READ, api.hap.Perms.WRITE, api.hap.Perms.NOTIFY],
182
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
183
183
  })
184
184
  this.value = this.getDefaultValue()
185
185
  }
@@ -19,7 +19,7 @@ export default class {
19
19
  maxValue: 100000,
20
20
  minValue: 0,
21
21
  minStep: 1,
22
- perms: [api.hap.Perms.READ, api.hap.Perms.NOTIFY],
22
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
23
23
  })
24
24
  this.value = this.getDefaultValue()
25
25
  }
@@ -31,7 +31,7 @@ export default class {
31
31
  maxValue: 100000000000,
32
32
  minValue: 0,
33
33
  minStep: 1,
34
- perms: [api.hap.Perms.READ, api.hap.Perms.NOTIFY],
34
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
35
35
  })
36
36
  this.value = this.getDefaultValue()
37
37
  }
@@ -43,7 +43,7 @@ export default class {
43
43
  maxValue: 100000000000,
44
44
  minValue: 0,
45
45
  minStep: 0.1,
46
- perms: [api.hap.Perms.READ, api.hap.Perms.NOTIFY],
46
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
47
47
  })
48
48
  this.value = this.getDefaultValue()
49
49
  }
@@ -52,7 +52,7 @@ export default class {
52
52
  this.setProps({
53
53
  format: api.hap.Formats.UINT32,
54
54
  unit: api.hap.Units.SECONDS,
55
- perms: [api.hap.Perms.READ, api.hap.Perms.NOTIFY],
55
+ perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
56
56
  })
57
57
  this.value = this.getDefaultValue()
58
58
  }
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": "10.16.0",
5
+ "version": "10.17.0",
6
6
  "description": "Homebridge plugin to integrate Govee devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",
@@ -48,7 +48,7 @@
48
48
  "main": "lib/index.js",
49
49
  "engines": {
50
50
  "homebridge": "^1.6.0 || ^2.0.0-beta.0",
51
- "node": "^18.20.7 || ^20.18.3 || ^22.14.0"
51
+ "node": "^18.20.7 || ^20.19.0 || ^22.14.0"
52
52
  },
53
53
  "scripts": {
54
54
  "lint": "eslint . --fix",
@@ -57,23 +57,23 @@
57
57
  "dependencies": {
58
58
  "@homebridge/plugin-ui-utils": "^2.0.1",
59
59
  "aws-iot-device-sdk": "^2.2.15",
60
- "axios": "^1.7.9",
60
+ "axios": "^1.8.4",
61
61
  "node-persist": "^4.0.4",
62
62
  "node-rsa": "^1.1.1",
63
63
  "p-queue": "^8.1.0",
64
64
  "pem": "^1.14.8"
65
65
  },
66
66
  "optionalDependencies": {
67
- "@stoprocent/bluetooth-hci-socket": "^1.4.4",
68
- "@stoprocent/noble": "^1.18.2",
67
+ "@stoprocent/bluetooth-hci-socket": "^1.5.2",
68
+ "@stoprocent/noble": "^1.19.1",
69
69
  "govee-bt-client": "^1.0.15"
70
70
  },
71
71
  "devDependencies": {
72
- "@antfu/eslint-config": "^4.3.0"
72
+ "@antfu/eslint-config": "^4.10.2"
73
73
  },
74
74
  "overrides": {
75
75
  "govee-bt-client": {
76
- "@abandonware/noble": "npm:@stoprocent/noble@^1.18.2"
76
+ "@abandonware/noble": "npm:@stoprocent/noble@^1.19.1"
77
77
  }
78
78
  }
79
79
  }