homebridge-nest-accfactory 0.2.9 → 0.3.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 +29 -1
- package/README.md +14 -7
- package/config.schema.json +126 -1
- package/dist/HomeKitDevice.js +194 -77
- package/dist/HomeKitHistory.js +1 -1
- package/dist/config.js +207 -0
- package/dist/devices.js +113 -0
- package/dist/index.js +2 -1
- package/dist/nexustalk.js +19 -21
- package/dist/{camera.js → plugins/camera.js} +212 -239
- package/dist/{doorbell.js → plugins/doorbell.js} +32 -30
- package/dist/plugins/floodlight.js +91 -0
- package/dist/plugins/heatlink.js +17 -0
- package/dist/{protect.js → plugins/protect.js} +24 -41
- package/dist/{tempsensor.js → plugins/tempsensor.js} +13 -17
- package/dist/{thermostat.js → plugins/thermostat.js} +424 -381
- package/dist/{weather.js → plugins/weather.js} +26 -60
- package/dist/protobuf/google/trait/product/camera.proto +1 -1
- package/dist/protobuf/googlehome/foyer.proto +0 -46
- package/dist/protobuf/nest/services/apigateway.proto +31 -1
- package/dist/protobuf/nest/trait/firmware.proto +207 -89
- package/dist/protobuf/nest/trait/hvac.proto +1052 -312
- package/dist/protobuf/nest/trait/located.proto +51 -8
- package/dist/protobuf/nest/trait/network.proto +366 -36
- package/dist/protobuf/nest/trait/occupancy.proto +145 -17
- package/dist/protobuf/nest/trait/product/protect.proto +57 -43
- package/dist/protobuf/nest/trait/resourcedirectory.proto +8 -0
- package/dist/protobuf/nest/trait/sensor.proto +7 -1
- package/dist/protobuf/nest/trait/service.proto +3 -1
- package/dist/protobuf/nest/trait/structure.proto +60 -14
- package/dist/protobuf/nest/trait/ui.proto +41 -1
- package/dist/protobuf/nest/trait/user.proto +6 -1
- package/dist/protobuf/nest/trait/voiceassistant.proto +2 -1
- package/dist/protobuf/nestlabs/eventingapi/v1.proto +20 -1
- package/dist/protobuf/root.proto +1 -0
- package/dist/protobuf/wdl.proto +18 -2
- package/dist/protobuf/weave/common.proto +2 -1
- package/dist/protobuf/weave/trait/heartbeat.proto +41 -1
- package/dist/protobuf/weave/trait/power.proto +1 -0
- package/dist/protobuf/weave/trait/security.proto +10 -1
- package/dist/streamer.js +80 -80
- package/dist/system.js +1208 -1245
- package/dist/webrtc.js +28 -23
- package/package.json +12 -12
- package/dist/floodlight.js +0 -97
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `homebridge-nest-accfactory` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
-
## v0.
|
|
5
|
+
## v0.3.0 (2025/06/14)
|
|
6
|
+
|
|
7
|
+
- General code cleanup and stability improvements
|
|
8
|
+
- Introduced plugin-style architecture for Nest/Google devices
|
|
9
|
+
- Updated README.md to reflect changes to the devices section in configuration
|
|
10
|
+
- Prevent excluded devices from being restored from Homebridge cache
|
|
11
|
+
- Added internal support for selecting active temperature sensor (not yet exposed to HomeKit)
|
|
12
|
+
- Fixed loss of custom devices section when using the plugin config UI
|
|
13
|
+
- Fixed motion services being recreated when restored from Homebridge cache
|
|
14
|
+
- Fixed missing devices for Nest FieldTest accounts
|
|
15
|
+
- Added hot water heating boost (on/off) support for compatible EU/UK Thermostats
|
|
16
|
+
- Added support for Nest Heat Link devices as room temperature sensors
|
|
17
|
+
|
|
18
|
+
### Deprecation Notice
|
|
19
|
+
- Support for the standalone Docker version of this plugin is planned to be deprecated in an upcoming release. While it currently remains functional, future updates may no longer include Docker-specific build support. Users are encouraged to transition to standard Homebridge installations where possible.
|
|
20
|
+
|
|
21
|
+
### Known Issues
|
|
22
|
+
|
|
23
|
+
- Audio from newer Nest/Google cameras and doorbells is currently silent (blank audio output)
|
|
24
|
+
- The ip npm package has a known security advisory [GHSA-2p57-rm9w-gvfp](https://github.com/advisories/GHSA-2p57-rm9w-gvfp); this is used indirectly via the werift library
|
|
25
|
+
|
|
26
|
+
### Thanks
|
|
27
|
+
Special thanks to [@Daniel](https://github.com/no1knows) and [@Brad](https://github.com/bcullman) for testing and feedback on this release!
|
|
28
|
+
|
|
29
|
+
## v0.2.11 (2025/04/17)
|
|
30
|
+
|
|
31
|
+
- General code cleanup and bug fixes
|
|
32
|
+
|
|
33
|
+
## v0.2.9 (2025/03/23)
|
|
6
34
|
|
|
7
35
|
- General code cleanup and bug fixes
|
|
8
36
|
- Support for Nest Protect(s) in Google Home app
|
package/README.md
CHANGED
|
@@ -23,8 +23,12 @@ The following Nest devices are known to be supported
|
|
|
23
23
|
* Nest Temp Sensors (1st gen)
|
|
24
24
|
* Nest Cameras (Cam Indoor, IQ Indoor, Outdoor, IQ Outdoor, Cam with Floodlight)
|
|
25
25
|
* Nest Doorbells (wired 1st gen)
|
|
26
|
+
* Nest HeatLink
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
**Note:** Google has announced it will discontinue support for 1st and 2nd generation Nest Thermostats as of **October 25, 2025**.
|
|
29
|
+
Based on their stated intentions, these models are expected to stop functioning with this Homebridge plugin after that date.
|
|
30
|
+
|
|
31
|
+
The accessory supports connection to Nest using a Nest account AND/OR a Google (migrated Nest account) account.
|
|
28
32
|
|
|
29
33
|
## Configuration
|
|
30
34
|
|
|
@@ -79,14 +83,15 @@ Sample config.json entries below
|
|
|
79
83
|
"elevation": 600,
|
|
80
84
|
"hksv": false
|
|
81
85
|
},
|
|
82
|
-
"devices":
|
|
83
|
-
|
|
86
|
+
"devices": [
|
|
87
|
+
{
|
|
88
|
+
"serialNumber": "XXXXXXXX",
|
|
84
89
|
"exclude": false
|
|
85
90
|
},
|
|
86
|
-
|
|
91
|
+
"serialNumber": "YYYYYYYY",
|
|
87
92
|
"hksv" : true
|
|
88
93
|
}
|
|
89
|
-
|
|
94
|
+
],
|
|
90
95
|
"platform": "NestAccfactory"
|
|
91
96
|
}
|
|
92
97
|
```
|
|
@@ -99,15 +104,15 @@ The following options are available in the config.json options object. These app
|
|
|
99
104
|
|-------------------|-----------------------------------------------------------------------------------------------|----------------|
|
|
100
105
|
| elevation | Height above sea level for the weather station | 0 |
|
|
101
106
|
| eveHistory | Provide history in EveHome application where applicable | true |
|
|
107
|
+
| exclude | Exclude ALL devices | false |
|
|
102
108
|
| ffmegDebug | Turns on specific debugging output for when ffmpeg is envoked | false |
|
|
103
109
|
| ffmegPath | Path to an ffmpeg binary for us to use | /usr/local/bin |
|
|
104
110
|
| hksv | Enable HomeKit Secure Video for supported camera(s) and doorbell(s) | false |
|
|
105
|
-
| maxStreams | Maximum number of concurrent video streams in HomeKit for supported camera(s) and doorbell(s) | 2 |
|
|
106
111
|
| weather | Virtual weather station for each Nest/Google home we discover | false |
|
|
107
112
|
|
|
108
113
|
#### devices
|
|
109
114
|
|
|
110
|
-
The following options are available on a per-device level in the config.json devices
|
|
115
|
+
The following options are available on a per-device level in the `config.json` `devices` array. Each device is specified as a JSON object, and the device is identified using the `"serialNumber"` key with the value of its serial number (in uppercase).
|
|
111
116
|
|
|
112
117
|
| Name | Description | Default |
|
|
113
118
|
|-------------------|-----------------------------------------------------------------------------------------------|----------------|
|
|
@@ -118,10 +123,12 @@ The following options are available on a per-device level in the config.json dev
|
|
|
118
123
|
| exclude | Exclude the device | false |
|
|
119
124
|
| ffmegDebug | Turns on specific debugging output for when ffmpeg is envoked | false |
|
|
120
125
|
| hksv | Enable HomeKit Secure Video for supported camera(s) and doorbell(s) | false |
|
|
126
|
+
| hotWaterBoostTime | Time in seconds for hotwater boost heating | 1800 |
|
|
121
127
|
| humiditySensor | Create a seperate humidity sensor for supported thermostat(s) | false |
|
|
122
128
|
| localAccess | Use direct access to supported camera(s) and doorbell(s) for video streaming and recording | false |
|
|
123
129
|
| motionCooldown | Time in seconds between detected motion events | 60 |
|
|
124
130
|
| personCooldown | Time in seconds between detected person events | 120 |
|
|
131
|
+
| serialNumber | Device serial number to which these settings belong too | |
|
|
125
132
|
|
|
126
133
|
## ffmpeg
|
|
127
134
|
|
package/config.schema.json
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
"title": "Nest Account",
|
|
16
16
|
"type": "object",
|
|
17
17
|
"expandable": true,
|
|
18
|
+
"expanded": {
|
|
19
|
+
"functionBody": "return model.nest && model.nest.access_token"
|
|
20
|
+
},
|
|
18
21
|
"properties": {
|
|
19
22
|
"access_token": {
|
|
20
23
|
"title": "Access Token",
|
|
@@ -36,6 +39,9 @@
|
|
|
36
39
|
"title": "Google Account",
|
|
37
40
|
"type": "object",
|
|
38
41
|
"expandable": true,
|
|
42
|
+
"expanded": {
|
|
43
|
+
"functionBody": "return model.google && model.google.issuetoken && model.google.cookie"
|
|
44
|
+
},
|
|
39
45
|
"properties": {
|
|
40
46
|
"issuetoken": {
|
|
41
47
|
"title": "Issue Token",
|
|
@@ -57,12 +63,13 @@
|
|
|
57
63
|
"functionBody": "return model.google.issuetoken && model.google.cookie"
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
|
-
}
|
|
66
|
+
}
|
|
61
67
|
},
|
|
62
68
|
"options": {
|
|
63
69
|
"title": "Options",
|
|
64
70
|
"type": "object",
|
|
65
71
|
"expandable": true,
|
|
72
|
+
"expanded": true,
|
|
66
73
|
"properties": {
|
|
67
74
|
"eveHistory": {
|
|
68
75
|
"title": "EveHome History",
|
|
@@ -98,6 +105,84 @@
|
|
|
98
105
|
"type": "string",
|
|
99
106
|
"placeholder": "Path to an ffmpeg binary",
|
|
100
107
|
"default": "/usr/local/bin/ffmpeg"
|
|
108
|
+
},
|
|
109
|
+
"ffmegDebug": {
|
|
110
|
+
"type": "boolean"
|
|
111
|
+
},
|
|
112
|
+
"maxStreams": {
|
|
113
|
+
"type": "integer"
|
|
114
|
+
},
|
|
115
|
+
"exclude": {
|
|
116
|
+
"type": "boolean"
|
|
117
|
+
},
|
|
118
|
+
"useNestAPI": {
|
|
119
|
+
"type": "boolean"
|
|
120
|
+
},
|
|
121
|
+
"useGoogleAPI": {
|
|
122
|
+
"type": "boolean"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"devices": {
|
|
127
|
+
"title": "Per device configuration options",
|
|
128
|
+
"type": "array",
|
|
129
|
+
"items": {
|
|
130
|
+
"title": "Device",
|
|
131
|
+
"type": "object",
|
|
132
|
+
"properties": {
|
|
133
|
+
"serialNumber": {
|
|
134
|
+
"title": "Device Serial Number",
|
|
135
|
+
"type": "string",
|
|
136
|
+
"required": true
|
|
137
|
+
},
|
|
138
|
+
"chimeSwitch": {
|
|
139
|
+
"type": "boolean"
|
|
140
|
+
},
|
|
141
|
+
"doorbellCooldown": {
|
|
142
|
+
"type": "number"
|
|
143
|
+
},
|
|
144
|
+
"elevation": {
|
|
145
|
+
"type": "number"
|
|
146
|
+
},
|
|
147
|
+
"eveHistory": {
|
|
148
|
+
"type": "boolean"
|
|
149
|
+
},
|
|
150
|
+
"exclude": {
|
|
151
|
+
"type": "boolean"
|
|
152
|
+
},
|
|
153
|
+
"externalCool": {
|
|
154
|
+
"type": "string"
|
|
155
|
+
},
|
|
156
|
+
"externalDehumidifier": {
|
|
157
|
+
"type": "string"
|
|
158
|
+
},
|
|
159
|
+
"externalFan": {
|
|
160
|
+
"type": "string"
|
|
161
|
+
},
|
|
162
|
+
"externalHeat": {
|
|
163
|
+
"type": "string"
|
|
164
|
+
},
|
|
165
|
+
"ffmegDebug": {
|
|
166
|
+
"type": "boolean"
|
|
167
|
+
},
|
|
168
|
+
"hkPairingCode": {
|
|
169
|
+
"type": "string"
|
|
170
|
+
},
|
|
171
|
+
"hksv": {
|
|
172
|
+
"type": "boolean"
|
|
173
|
+
},
|
|
174
|
+
"humiditySensor": {
|
|
175
|
+
"type": "boolean"
|
|
176
|
+
},
|
|
177
|
+
"localAccess": {
|
|
178
|
+
"type": "boolean"
|
|
179
|
+
},
|
|
180
|
+
"motionCooldown": {
|
|
181
|
+
"type": "number"
|
|
182
|
+
},
|
|
183
|
+
"personCooldown": {
|
|
184
|
+
"type": "number"
|
|
185
|
+
}
|
|
101
186
|
}
|
|
102
187
|
}
|
|
103
188
|
}
|
|
@@ -110,5 +195,45 @@
|
|
|
110
195
|
{
|
|
111
196
|
"required": ["google"]
|
|
112
197
|
}
|
|
198
|
+
],
|
|
199
|
+
"layout": [
|
|
200
|
+
{
|
|
201
|
+
"type": "fieldset",
|
|
202
|
+
"title": "Nest Account",
|
|
203
|
+
"expandable": true,
|
|
204
|
+
"expanded": {
|
|
205
|
+
"functionBody": "return model.nest && model.nest.access_token"
|
|
206
|
+
},
|
|
207
|
+
"items": [
|
|
208
|
+
"nest.access_token",
|
|
209
|
+
"nest.fieldTest"
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"type": "fieldset",
|
|
214
|
+
"title": "Google Account",
|
|
215
|
+
"expandable": true,
|
|
216
|
+
"expanded": {
|
|
217
|
+
"functionBody": "return model.google && model.google.issuetoken && model.google.cookie"
|
|
218
|
+
},
|
|
219
|
+
"items": [
|
|
220
|
+
"google.issuetoken",
|
|
221
|
+
"google.cookie",
|
|
222
|
+
"google.fieldTest"
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"type": "fieldset",
|
|
227
|
+
"title": "Options",
|
|
228
|
+
"expandable": true,
|
|
229
|
+
"expanded": true,
|
|
230
|
+
"items": [
|
|
231
|
+
"options.eveHistory",
|
|
232
|
+
"options.weather",
|
|
233
|
+
"options.elevation",
|
|
234
|
+
"options.hksv",
|
|
235
|
+
"options.ffmpegPath"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
113
238
|
]
|
|
114
239
|
}
|