homebridge-cync-app 0.1.6 → 0.1.8
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/.github/ISSUE_TEMPLATE/add-support-for-a-new-cync-device.md +139 -0
- package/CHANGELOG.md +21 -0
- package/README.md +3 -1
- package/dist/cync/config-client.d.ts +23 -0
- package/dist/cync/config-client.js +133 -0
- package/dist/cync/config-client.js.map +1 -1
- package/dist/cync/cync-accessory-helpers.d.ts +46 -0
- package/dist/cync/cync-accessory-helpers.js +138 -0
- package/dist/cync/cync-accessory-helpers.js.map +1 -0
- package/dist/cync/cync-client.d.ts +5 -0
- package/dist/cync/cync-client.js +156 -2
- package/dist/cync/cync-client.js.map +1 -1
- package/dist/cync/cync-light-accessory.d.ts +4 -0
- package/dist/cync/cync-light-accessory.js +197 -0
- package/dist/cync/cync-light-accessory.js.map +1 -0
- package/dist/cync/cync-switch-accessory.d.ts +4 -0
- package/dist/cync/cync-switch-accessory.js +58 -0
- package/dist/cync/cync-switch-accessory.js.map +1 -0
- package/dist/cync/device-catalog.d.ts +19 -0
- package/dist/cync/device-catalog.js +35 -0
- package/dist/cync/device-catalog.js.map +1 -0
- package/dist/cync/token-store.js +2 -2
- package/dist/cync/token-store.js.map +1 -1
- package/dist/platform.d.ts +8 -3
- package/dist/platform.js +49 -320
- package/dist/platform.js.map +1 -1
- package/package.json +1 -1
- package/src/cync/config-client.ts +192 -0
- package/src/cync/cync-accessory-helpers.ts +233 -0
- package/src/cync/cync-client.ts +238 -2
- package/src/cync/cync-light-accessory.ts +359 -0
- package/src/cync/cync-switch-accessory.ts +100 -0
- package/src/cync/device-catalog.ts +55 -0
- package/src/cync/token-store.ts +3 -2
- package/src/platform.ts +87 -549
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Add Support for a New Cync Device
|
|
3
|
+
about: Request adding support for a Cync device
|
|
4
|
+
title: Add Cync Device [MODEL]
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: dash16
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Thank you for helping expand device support in **homebridge-cync-app**.
|
|
11
|
+
To add a new device model, I need diagnostic info from your plugin installation.
|
|
12
|
+
Please fill out all sections below.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. Device Information
|
|
17
|
+
|
|
18
|
+
**1.1 Product name as shown in the Cync app:**
|
|
19
|
+
(e.g., “6" Recessed Can Retrofit Fixture (Matter)”, “Indoor Smart Plug (3in1)”, “Indoor Smart Plug”)
|
|
20
|
+
|
|
21
|
+
**1.2 What kind of device is this?**
|
|
22
|
+
|
|
23
|
+
* Plug (on/off only)
|
|
24
|
+
* Dimmer
|
|
25
|
+
* Tunable white
|
|
26
|
+
* Full color light
|
|
27
|
+
* Multi-zone light
|
|
28
|
+
* Switch
|
|
29
|
+
* Downlight
|
|
30
|
+
* Other (describe)
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. Discovery Logs (Required)
|
|
35
|
+
|
|
36
|
+
Please enable **Homebridge Debug Mode** (`-D` or toggle in UI), restart Homebridge, and paste the *full debug block* for this device.
|
|
37
|
+
|
|
38
|
+
Look for log lines like:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
[Cync App] Fetched device: {
|
|
42
|
+
deviceId: …,
|
|
43
|
+
productId: …,
|
|
44
|
+
model: …,
|
|
45
|
+
capabilities: …,
|
|
46
|
+
raw: …
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Paste them here (sanitize serial numbers if you want):
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
<insert logs>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 3. Cloud `/property` Responses
|
|
59
|
+
|
|
60
|
+
To understand how the device reports its state, please:
|
|
61
|
+
|
|
62
|
+
1. Turn the device **on**, **off**, adjust **brightness**, or change **color** in the Cync app.
|
|
63
|
+
2. Copy all log lines showing cloud property fetches, for example:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
[Cync App] [cloud] GET /product/.../device/.../property → …
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Paste them here:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
<insert logs>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 4. LAN / TCP Logs (If Available)
|
|
78
|
+
|
|
79
|
+
Some Cync devices support LAN connections for faster updates.
|
|
80
|
+
If you see logs like `[Cync TCP] Connecting…`, please provide:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
[Cync TCP][recv] …
|
|
84
|
+
[Cync TCP][send] …
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Paste:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
<insert logs>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
If your device does *not* show TCP lines, say so:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
No TCP messages observed.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 5. Homebridge JSON View (Optional but Helpful)
|
|
102
|
+
|
|
103
|
+
In Homebridge UI:
|
|
104
|
+
|
|
105
|
+
**Plugins → Cync App → JSON Config Viewer (or Device Viewer)**
|
|
106
|
+
|
|
107
|
+
Copy the JSON block for this device:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
<insert JSON>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 6. Screenshots (Optional)
|
|
116
|
+
|
|
117
|
+
If possible, attach screenshots from the Cync app showing:
|
|
118
|
+
|
|
119
|
+
* Device settings panel
|
|
120
|
+
* Color/white mode UI
|
|
121
|
+
* Any advanced options
|
|
122
|
+
|
|
123
|
+
These help determine supported capabilities.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 7. Anything Else?
|
|
128
|
+
|
|
129
|
+
If the device behaves strangely (multiple endpoints, only some colors work, etc.), describe it here.
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
<notes>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Thank You!
|
|
138
|
+
|
|
139
|
+
Once you submit this, I’ll map the device’s capabilities, determine its proper HomeKit service type, and add support to the plugin.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.1.8
|
|
4
|
+
|
|
5
|
+
**Release Date:** 2025-12-11
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Automatic background re-authentication using username/password when access tokens expire
|
|
9
|
+
- Support for password-based login fallback when refresh tokens are unavailable
|
|
10
|
+
- Improved handling of expired Cync cloud tokens without requiring Homebridge restarts
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Devices becoming unresponsive after Cync access token expiration
|
|
14
|
+
- Cloud login failures caused by non-refreshable legacy tokens
|
|
15
|
+
|
|
16
|
+
## 0.1.7 – Token refresh & accessory polling
|
|
17
|
+
|
|
18
|
+
**Release Date:** 2025-12-10
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Automatic Cync token refresh so cloud sessions stay valid longer without manual re-login.
|
|
22
|
+
- Accessory state polling so Homebridge periodically refreshes device state from Cync, reducing stale states and missed updates.
|
|
23
|
+
|
|
3
24
|
## 0.1.6 – Cync lights with LAN color + dimming
|
|
4
25
|
|
|
5
26
|
**Release Date:** 2025-12-05
|
package/README.md
CHANGED
|
@@ -23,7 +23,9 @@ It currently supports:
|
|
|
23
23
|
- **Cync lights** exposed as HomeKit lightbulbs with:
|
|
24
24
|
- On/Off, dimming (Brightness), and color (Hue/Saturation) over LAN.
|
|
25
25
|
- Accessory Information populated from your Cync account (manufacturer, model, serial, firmware).
|
|
26
|
-
|
|
26
|
+
- Automatic token refresh to keep your Cync session alive without re-entering codes.
|
|
27
|
+
- Periodic accessory polling so Homebridge stays in sync with the Cync app.
|
|
28
|
+
> Status: **Early LAN preview.** Tested with Cync smart plugs and downlights. Other device types may not appear or may behave incorrectly.
|
|
27
29
|
|
|
28
30
|
## Installation
|
|
29
31
|
|
|
@@ -29,6 +29,11 @@ export interface CyncDeviceMesh {
|
|
|
29
29
|
export interface CyncCloudConfig {
|
|
30
30
|
meshes: CyncDeviceMesh[];
|
|
31
31
|
}
|
|
32
|
+
export interface CyncRefreshResponse {
|
|
33
|
+
accessToken: string;
|
|
34
|
+
refreshToken?: string;
|
|
35
|
+
expiresAt?: number;
|
|
36
|
+
}
|
|
32
37
|
export interface CyncLogger {
|
|
33
38
|
debug(message: string, ...args: unknown[]): void;
|
|
34
39
|
info(message: string, ...args: unknown[]): void;
|
|
@@ -57,6 +62,24 @@ export declare class ConfigClient {
|
|
|
57
62
|
* The access token is used for subsequent getCloudConfig() / getDeviceProperties() calls.
|
|
58
63
|
*/
|
|
59
64
|
loginWithTwoFactor(email: string, password: string, otpCode: string): Promise<CyncLoginSession>;
|
|
65
|
+
/**
|
|
66
|
+
* Password-only login for background refresh.
|
|
67
|
+
*
|
|
68
|
+
* This uses the /user_auth endpoint (no two_factor) and is intended
|
|
69
|
+
* for automatic re-auth when the access token has expired, after an
|
|
70
|
+
* initial 2FA bootstrap has already been completed.
|
|
71
|
+
*/
|
|
72
|
+
loginWithPassword(email: string, password: string): Promise<CyncLoginSession & {
|
|
73
|
+
refreshToken?: string;
|
|
74
|
+
expiresAt?: number;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Refresh the access token using a stored refresh token.
|
|
78
|
+
*
|
|
79
|
+
* This mirrors the 2FA login flow in shape, but only exchanges the
|
|
80
|
+
* refresh_token for a new access_token (and possibly a new refresh_token).
|
|
81
|
+
*/
|
|
82
|
+
refreshAccessToken(refreshToken: string): Promise<CyncRefreshResponse>;
|
|
60
83
|
/**
|
|
61
84
|
* Fetch the list of meshes/devices for the current user from the cloud.
|
|
62
85
|
*
|
|
@@ -114,6 +114,139 @@ export class ConfigClient {
|
|
|
114
114
|
raw: json,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Password-only login for background refresh.
|
|
119
|
+
*
|
|
120
|
+
* This uses the /user_auth endpoint (no two_factor) and is intended
|
|
121
|
+
* for automatic re-auth when the access token has expired, after an
|
|
122
|
+
* initial 2FA bootstrap has already been completed.
|
|
123
|
+
*/
|
|
124
|
+
async loginWithPassword(email, password) {
|
|
125
|
+
const url = `${CYNC_API_BASE}user_auth`;
|
|
126
|
+
this.log.debug('Logging into Cync with password-only auth for %s…', email);
|
|
127
|
+
const body = {
|
|
128
|
+
corp_id: CORP_ID,
|
|
129
|
+
email,
|
|
130
|
+
password,
|
|
131
|
+
resource: ConfigClient.randomLoginResource(),
|
|
132
|
+
};
|
|
133
|
+
const res = (await fetch(url, {
|
|
134
|
+
method: 'POST',
|
|
135
|
+
headers: {
|
|
136
|
+
'Content-Type': 'application/json',
|
|
137
|
+
},
|
|
138
|
+
body: JSON.stringify(body),
|
|
139
|
+
}));
|
|
140
|
+
const json = await res.json().catch(async () => {
|
|
141
|
+
const text = await res.text().catch(() => '');
|
|
142
|
+
throw new Error(`Cync password login returned non-JSON payload: ${text}`);
|
|
143
|
+
});
|
|
144
|
+
if (!res.ok) {
|
|
145
|
+
this.log.error('Cync password login failed: HTTP %d %s %o', res.status, res.statusText, json);
|
|
146
|
+
const errBody = json;
|
|
147
|
+
throw new Error(errBody.error?.msg ??
|
|
148
|
+
`Cync password login failed with status ${res.status} ${res.statusText}`);
|
|
149
|
+
}
|
|
150
|
+
const obj = json;
|
|
151
|
+
this.log.debug('Cync password login response: keys=%o', Object.keys(obj));
|
|
152
|
+
const accessTokenRaw = obj.access_token ?? obj.accessToken;
|
|
153
|
+
const userIdRaw = obj.user_id ?? obj.userId;
|
|
154
|
+
const authorizeRaw = obj.authorize;
|
|
155
|
+
const refreshTokenRaw = obj.refresh_token ?? obj.refreshToken;
|
|
156
|
+
const expiresAtRaw = obj.expires_at ?? obj.expiresAt;
|
|
157
|
+
const accessToken = typeof accessTokenRaw === 'string' && accessTokenRaw.length > 0
|
|
158
|
+
? accessTokenRaw
|
|
159
|
+
: undefined;
|
|
160
|
+
const userId = userIdRaw !== undefined && userIdRaw !== null
|
|
161
|
+
? String(userIdRaw)
|
|
162
|
+
: undefined;
|
|
163
|
+
const authorize = typeof authorizeRaw === 'string' && authorizeRaw.length > 0
|
|
164
|
+
? authorizeRaw
|
|
165
|
+
: undefined;
|
|
166
|
+
if (!accessToken || !userId) {
|
|
167
|
+
this.log.error('Cync password login missing access_token or user_id: %o', json);
|
|
168
|
+
throw new Error('Cync password login response missing access_token or user_id');
|
|
169
|
+
}
|
|
170
|
+
let refreshToken;
|
|
171
|
+
if (typeof refreshTokenRaw === 'string' && refreshTokenRaw.length > 0) {
|
|
172
|
+
refreshToken = refreshTokenRaw;
|
|
173
|
+
}
|
|
174
|
+
let expiresAt;
|
|
175
|
+
if (typeof expiresAtRaw === 'number') {
|
|
176
|
+
expiresAt = expiresAtRaw;
|
|
177
|
+
}
|
|
178
|
+
this.accessToken = accessToken;
|
|
179
|
+
this.userId = userId;
|
|
180
|
+
this.authorize = authorize ?? null;
|
|
181
|
+
this.log.info('Cync password login successful; userId=%s', userId);
|
|
182
|
+
return {
|
|
183
|
+
accessToken,
|
|
184
|
+
userId,
|
|
185
|
+
authorize,
|
|
186
|
+
raw: {
|
|
187
|
+
...obj,
|
|
188
|
+
refreshToken,
|
|
189
|
+
expiresAt,
|
|
190
|
+
},
|
|
191
|
+
refreshToken,
|
|
192
|
+
expiresAt,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Refresh the access token using a stored refresh token.
|
|
197
|
+
*
|
|
198
|
+
* This mirrors the 2FA login flow in shape, but only exchanges the
|
|
199
|
+
* refresh_token for a new access_token (and possibly a new refresh_token).
|
|
200
|
+
*/
|
|
201
|
+
async refreshAccessToken(refreshToken) {
|
|
202
|
+
const url = `${CYNC_API_BASE}user_auth/refresh`;
|
|
203
|
+
this.log.debug('Refreshing Cync access token…');
|
|
204
|
+
const body = {
|
|
205
|
+
corp_id: CORP_ID,
|
|
206
|
+
refresh_token: refreshToken,
|
|
207
|
+
resource: ConfigClient.randomLoginResource(),
|
|
208
|
+
};
|
|
209
|
+
const res = (await fetch(url, {
|
|
210
|
+
method: 'POST',
|
|
211
|
+
headers: {
|
|
212
|
+
'Content-Type': 'application/json',
|
|
213
|
+
},
|
|
214
|
+
body: JSON.stringify(body),
|
|
215
|
+
}));
|
|
216
|
+
const json = await res.json().catch(async () => {
|
|
217
|
+
const text = await res.text().catch(() => '');
|
|
218
|
+
throw new Error(`Cync refresh returned non-JSON payload: ${text}`);
|
|
219
|
+
});
|
|
220
|
+
if (!res.ok) {
|
|
221
|
+
this.log.error('Cync refresh failed: HTTP %d %s %o', res.status, res.statusText, json);
|
|
222
|
+
const errBody = json;
|
|
223
|
+
const msg = errBody.error?.msg ??
|
|
224
|
+
`Cync refresh failed with status ${res.status} ${res.statusText}`;
|
|
225
|
+
throw new Error(msg);
|
|
226
|
+
}
|
|
227
|
+
const obj = json;
|
|
228
|
+
this.log.debug('Cync refresh response: keys=%o', Object.keys(obj));
|
|
229
|
+
const accessTokenRaw = obj.access_token ?? obj.accessToken;
|
|
230
|
+
const refreshTokenRaw = obj.refresh_token ?? obj.refreshToken;
|
|
231
|
+
const expiresAtRaw = obj.expires_at ?? obj.expiresAt;
|
|
232
|
+
const accessToken = typeof accessTokenRaw === 'string' && accessTokenRaw.length > 0
|
|
233
|
+
? accessTokenRaw
|
|
234
|
+
: undefined;
|
|
235
|
+
if (!accessToken) {
|
|
236
|
+
this.log.error('Cync refresh missing access_token: %o', json);
|
|
237
|
+
throw new Error('Cync refresh response missing access_token');
|
|
238
|
+
}
|
|
239
|
+
const next = {
|
|
240
|
+
accessToken,
|
|
241
|
+
};
|
|
242
|
+
if (typeof refreshTokenRaw === 'string' && refreshTokenRaw.length > 0) {
|
|
243
|
+
next.refreshToken = refreshTokenRaw;
|
|
244
|
+
}
|
|
245
|
+
if (typeof expiresAtRaw === 'number') {
|
|
246
|
+
next.expiresAt = expiresAtRaw;
|
|
247
|
+
}
|
|
248
|
+
return next;
|
|
249
|
+
}
|
|
117
250
|
/**
|
|
118
251
|
* Fetch the list of meshes/devices for the current user from the cloud.
|
|
119
252
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-client.js","sourceRoot":"","sources":["../../src/cync/config-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-client.js","sourceRoot":"","sources":["../../src/cync/config-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { API, Logger, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { CyncDevice } from './config-client.js';
|
|
3
|
+
import type { TcpClient } from './tcp-client.js';
|
|
4
|
+
export interface CyncAccessoryContext {
|
|
5
|
+
cync?: {
|
|
6
|
+
meshId: string;
|
|
7
|
+
deviceId: string;
|
|
8
|
+
productId?: string;
|
|
9
|
+
on?: boolean;
|
|
10
|
+
brightness?: number;
|
|
11
|
+
hue?: number;
|
|
12
|
+
saturation?: number;
|
|
13
|
+
rgb?: {
|
|
14
|
+
r: number;
|
|
15
|
+
g: number;
|
|
16
|
+
b: number;
|
|
17
|
+
};
|
|
18
|
+
colorActive?: boolean;
|
|
19
|
+
};
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}
|
|
22
|
+
export interface CyncAccessoryEnv {
|
|
23
|
+
log: Logger;
|
|
24
|
+
api: API;
|
|
25
|
+
tcpClient: TcpClient;
|
|
26
|
+
isDeviceProbablyOffline(deviceId: string): boolean;
|
|
27
|
+
markDeviceSeen(deviceId: string): void;
|
|
28
|
+
startPollingDevice(deviceId: string): void;
|
|
29
|
+
registerAccessoryForDevice(deviceId: string, accessory: PlatformAccessory): void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* HSV (HomeKit style) → RGB helper used by color lights.
|
|
33
|
+
*/
|
|
34
|
+
export declare function hsvToRgb(hue: number, saturation: number, value: number): {
|
|
35
|
+
r: number;
|
|
36
|
+
g: number;
|
|
37
|
+
b: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Resolve the numeric device type from cloud + raw device shape.
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveDeviceType(device: CyncDevice): number | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Populate the standard Accessory Information service with Cync metadata.
|
|
45
|
+
*/
|
|
46
|
+
export declare function applyAccessoryInformationFromCyncDevice(api: API, accessory: PlatformAccessory, device: CyncDevice, deviceName: string, deviceId: string): void;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { lookupDeviceModel } from './device-catalog.js';
|
|
2
|
+
/**
|
|
3
|
+
* HSV (HomeKit style) → RGB helper used by color lights.
|
|
4
|
+
*/
|
|
5
|
+
export function hsvToRgb(hue, saturation, value) {
|
|
6
|
+
const h = ((hue % 360) + 360) % 360;
|
|
7
|
+
const s = Math.max(0, Math.min(100, saturation)) / 100;
|
|
8
|
+
const v = Math.max(0, Math.min(100, value)) / 100;
|
|
9
|
+
if (s === 0) {
|
|
10
|
+
const grey = Math.round(v * 255);
|
|
11
|
+
return { r: grey, g: grey, b: grey };
|
|
12
|
+
}
|
|
13
|
+
const sector = h / 60;
|
|
14
|
+
const i = Math.floor(sector);
|
|
15
|
+
const f = sector - i;
|
|
16
|
+
const p = v * (1 - s);
|
|
17
|
+
const q = v * (1 - s * f);
|
|
18
|
+
const t = v * (1 - s * (1 - f));
|
|
19
|
+
let r = 0;
|
|
20
|
+
let g = 0;
|
|
21
|
+
let b = 0;
|
|
22
|
+
switch (i) {
|
|
23
|
+
case 0:
|
|
24
|
+
r = v;
|
|
25
|
+
g = t;
|
|
26
|
+
b = p;
|
|
27
|
+
break;
|
|
28
|
+
case 1:
|
|
29
|
+
r = q;
|
|
30
|
+
g = v;
|
|
31
|
+
b = p;
|
|
32
|
+
break;
|
|
33
|
+
case 2:
|
|
34
|
+
r = p;
|
|
35
|
+
g = v;
|
|
36
|
+
b = t;
|
|
37
|
+
break;
|
|
38
|
+
case 3:
|
|
39
|
+
r = p;
|
|
40
|
+
g = q;
|
|
41
|
+
b = v;
|
|
42
|
+
break;
|
|
43
|
+
case 4:
|
|
44
|
+
r = t;
|
|
45
|
+
g = p;
|
|
46
|
+
b = v;
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
r = v;
|
|
50
|
+
g = p;
|
|
51
|
+
b = q;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
r: Math.round(r * 255),
|
|
56
|
+
g: Math.round(g * 255),
|
|
57
|
+
b: Math.round(b * 255),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve the numeric device type from cloud + raw device shape.
|
|
62
|
+
*/
|
|
63
|
+
export function resolveDeviceType(device) {
|
|
64
|
+
const typedDevice = device;
|
|
65
|
+
if (typeof typedDevice.device_type === 'number') {
|
|
66
|
+
return typedDevice.device_type;
|
|
67
|
+
}
|
|
68
|
+
const rawType = typedDevice.raw?.deviceType;
|
|
69
|
+
if (typeof rawType === 'number') {
|
|
70
|
+
return rawType;
|
|
71
|
+
}
|
|
72
|
+
if (typeof rawType === 'string' && rawType.trim() !== '') {
|
|
73
|
+
const parsed = Number(rawType.trim());
|
|
74
|
+
if (!Number.isNaN(parsed)) {
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Populate the standard Accessory Information service with Cync metadata.
|
|
82
|
+
*/
|
|
83
|
+
export function applyAccessoryInformationFromCyncDevice(api, accessory, device, deviceName, deviceId) {
|
|
84
|
+
const infoService = accessory.getService(api.hap.Service.AccessoryInformation);
|
|
85
|
+
if (!infoService) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const Characteristic = api.hap.Characteristic;
|
|
89
|
+
const deviceWithRaw = device;
|
|
90
|
+
const rawDevice = deviceWithRaw.raw ?? {};
|
|
91
|
+
// Name: keep in sync with how we present the accessory
|
|
92
|
+
const name = deviceName || accessory.displayName;
|
|
93
|
+
infoService.updateCharacteristic(Characteristic.Name, name);
|
|
94
|
+
// Manufacturer: fixed for all Cync devices
|
|
95
|
+
infoService.updateCharacteristic(Characteristic.Manufacturer, 'GE Lighting');
|
|
96
|
+
// Model: prefer catalog entry (Cync app-style model name), fall back to raw info
|
|
97
|
+
const resolvedType = resolveDeviceType(device);
|
|
98
|
+
const catalogEntry = typeof resolvedType === 'number'
|
|
99
|
+
? lookupDeviceModel(resolvedType)
|
|
100
|
+
: undefined;
|
|
101
|
+
let model;
|
|
102
|
+
if (catalogEntry) {
|
|
103
|
+
// Use the Cync app-style model name
|
|
104
|
+
model = catalogEntry.modelName;
|
|
105
|
+
// Persist for debugging / future use
|
|
106
|
+
const ctx = accessory.context;
|
|
107
|
+
ctx.deviceType = resolvedType;
|
|
108
|
+
ctx.modelName = catalogEntry.modelName;
|
|
109
|
+
if (catalogEntry.marketingName) {
|
|
110
|
+
ctx.marketingName = catalogEntry.marketingName;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Fallback: use device displayName + type
|
|
115
|
+
const modelBase = typeof rawDevice.displayName === 'string' && rawDevice.displayName.trim().length > 0
|
|
116
|
+
? rawDevice.displayName.trim()
|
|
117
|
+
: 'Cync Device';
|
|
118
|
+
const modelSuffix = typeof resolvedType === 'number'
|
|
119
|
+
? ` (Type ${resolvedType})`
|
|
120
|
+
: '';
|
|
121
|
+
model = modelBase + modelSuffix;
|
|
122
|
+
}
|
|
123
|
+
infoService.updateCharacteristic(Characteristic.Model, model);
|
|
124
|
+
// Serial: prefer wifiMac, then mac, then deviceID, then the string deviceId
|
|
125
|
+
const serial = (typeof rawDevice.wifiMac === 'string' && rawDevice.wifiMac.trim().length > 0)
|
|
126
|
+
? rawDevice.wifiMac.trim()
|
|
127
|
+
: (typeof rawDevice.mac === 'string' && rawDevice.mac.trim().length > 0)
|
|
128
|
+
? rawDevice.mac.trim()
|
|
129
|
+
: (rawDevice.deviceID !== undefined
|
|
130
|
+
? String(rawDevice.deviceID)
|
|
131
|
+
: deviceId);
|
|
132
|
+
infoService.updateCharacteristic(Characteristic.SerialNumber, serial);
|
|
133
|
+
// Firmware revision, if present
|
|
134
|
+
if (typeof rawDevice.firmwareVersion === 'string' && rawDevice.firmwareVersion.trim().length > 0) {
|
|
135
|
+
infoService.updateCharacteristic(Characteristic.FirmwareRevision, rawDevice.firmwareVersion.trim());
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=cync-accessory-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cync-accessory-helpers.js","sourceRoot":"","sources":["../../src/cync/cync-accessory-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class CyncClient {
|
|
|
13
13
|
private switchIdToHomeId;
|
|
14
14
|
private readonly loginConfig;
|
|
15
15
|
private lanUpdateHandler;
|
|
16
|
+
private loginWithPasswordForToken;
|
|
16
17
|
onLanDeviceUpdate(handler: (update: unknown) => void): void;
|
|
17
18
|
getLanLoginCode(): Uint8Array;
|
|
18
19
|
constructor(configClient: ConfigClient, tcpClient: TcpClient, loginConfig: {
|
|
@@ -53,6 +54,10 @@ export declare class CyncClient {
|
|
|
53
54
|
* // user reads email, gets code…
|
|
54
55
|
* await client.submitTwoFactor(username, password, code); // completes login
|
|
55
56
|
*/
|
|
57
|
+
private isAccessTokenExpiredError;
|
|
58
|
+
private refreshAccessToken;
|
|
59
|
+
private getCloudConfigWithRefresh;
|
|
60
|
+
private getDevicePropertiesWithRefresh;
|
|
56
61
|
authenticate(username: string): Promise<void>;
|
|
57
62
|
/**
|
|
58
63
|
* Step 2 of 2FA flow:
|