homebridge-cync-app 0.1.3 → 0.1.6

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
@@ -1,20 +1,54 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.22025-11-26
3
+ ## 0.1.6Cync lights with LAN color + dimming
4
4
 
5
- ### Fixes
5
+ **Release Date:** 2025-12-05
6
6
 
7
- - Improve reliability when HomeKit scenes toggle multiple Cync plugs at once.
8
- - Serialize LAN power commands through a send queue so multiple `On.set` calls share a single TCP session instead of opening parallel connections.
9
- - Reuse an existing LAN socket for burst traffic and pace packets slightly to avoid race conditions with the Cync bridge.
10
- - Ensure per-device LAN updates are consistently received for both outlets after scene execution.
7
+ ### Added
8
+ - **Cync Lightbulb accessory support**
9
+ - Discover and expose color-capable Cync devices as native HomeKit `Lightbulb` accessories.
10
+ - Implemented LAN-backed `On`, `Brightness`, `Hue`, and `Saturation` characteristics using the Cync TCP transport.
11
+ - Per-accessory state is cached so HomeKit reads reflect the last known LAN state.
12
+
13
+ - **Accessory metadata from Cync**
14
+ - Populate the Accessory Information service with data from the Cync cloud:
15
+ - `Manufacturer` → `GE Lighting`
16
+ - `Model` → derived from the Cync device display name and device type (for example, `Downlight (Type 46)`).
17
+ - `SerialNumber` → derived from Wi-Fi MAC, MAC, or device ID.
18
+ - `FirmwareRevision` → firmware version string reported by Cync.
19
+
20
+ ### Changed
21
+ - Devices that were previously exposed as `Switch` are now migrated to `Lightbulb`:
22
+ - Any stale `Switch` service is removed before configuring the `Lightbulb` service.
23
+ - Accessory category is set to `LIGHTBULB` so HomeKit and other apps treat these as lights.
24
+
25
+ ## v0.1.5 – Custom 2FA UI & Token Locking
26
+ **Release Date:** 2025-11-29
27
+
28
+ - Added a custom Homebridge UI for Cync login:
29
+ - Email, password, and verification code (OTP) now live in a single guided flow.
30
+ - “Request Verification Code” button triggers the Cync 2FA email from the settings UI.
31
+ - Implemented a Homebridge UI server:
32
+ - `/request-otp` endpoint uses the existing `ConfigClient.sendTwoFactorCode()` flow.
33
+ - `/status` endpoint reports whether a stored token exists.
34
+ - `/sign-out` endpoint clears the stored token file.
35
+ - Token-aware UI behavior:
36
+ - When a valid token exists, credential and OTP fields are disabled to prevent accidental edits.
37
+ - “Sign Out” clears the token, blanks credentials, and unlocks the form.
38
+ - Fixed 2FA variable drift:
39
+ - Standardised on `username`, `password`, and `twoFactor` in config and UI.
40
+ - Ensured `CyncClient.ensureLoggedIn()` correctly picks up `twoFactor` and writes `cync-tokens.json`.
41
+ - General cleanup:
42
+ - Removed redundant client-side save button; now using the Homebridge “Save” button for persistence.
43
+ - Minor logging and UI text improvements.
11
44
 
12
- ### Internal
45
+ ## v0.1.4 – “Rollback to sanity”
13
46
 
14
- - Add a queued send path to `TcpClient` with a `flushQueue()` helper that writes packets in order over one socket.
15
- - Guard `ensureConnected()` with a shared `connecting` promise so concurrent calls don’t race separate `establishSocket()` attempts.
16
- - Make the socket `close` handler only null out `this.socket` when it corresponds to the active instance (avoids stray listeners from older sockets).
47
+ **Release Date:** 2025-11-28
17
48
 
49
+ - Reset codebase to v0.1.0 (last known good 2FA behavior).
50
+ - Reintroduced LAN command serialization (fixes issues with multiple commands at once).
51
+ - Marked v0.1.3 as experimental/dead branch.
18
52
 
19
53
  ## 0.1.0 – LAN Control Preview
20
54
 
package/README.md CHANGED
@@ -1,4 +1,17 @@
1
1
  # homebridge-cync-app
2
+
3
+ [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=flat)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
4
+ ![platform](https://img.shields.io/badge/type-platform-lightgrey)
5
+ [![npm](https://img.shields.io/npm/v/homebridge-cync-app.svg)](https://www.npmjs.com/package/homebridge-cync-app)
6
+ [![npm downloads](https://img.shields.io/npm/dm/homebridge-cync-app.svg)](https://www.npmjs.com/package/homebridge-cync-app)
7
+ ![node-lts](https://img.shields.io/badge/node%20LTS-20%7C22%7C24-6aa84f)
8
+ ![license](https://img.shields.io/github/license/dash16/homebridge-cync-app.svg)
9
+
10
+ [![issues](https://img.shields.io/github/issues/dash16/homebridge-cync-app.svg)](https://github.com/dash16/homebridge-cync-app/issues)
11
+ ![last commit](https://img.shields.io/github/last-commit/dash16/homebridge-cync-app.svg)
12
+ ![typescript](https://img.shields.io/badge/language-typescript-3178c6)
13
+
14
+
2
15
  Homebridge plugin that integrates your GE Cync account (via the Cync app/API) and exposes all supported devices: plugs, lights, switches, etc.
3
16
 
4
17
  It currently supports:
@@ -6,8 +19,10 @@ It currently supports:
6
19
  - Email + password + 2FA (one-time code) login
7
20
  - Persistent token storage in the Homebridge storage path
8
21
  - Discovery of Cync “meshes” and devices from the cloud
9
- - Exposing Cync outlets as HomeKit switches with their Cync `displayName`
10
-
22
+ - Cync plugs exposed as HomeKit switches/outlets.
23
+ - **Cync lights** exposed as HomeKit lightbulbs with:
24
+ - On/Off, dimming (Brightness), and color (Hue/Saturation) over LAN.
25
+ - Accessory Information populated from your Cync account (manufacturer, model, serial, firmware).
11
26
  > Status: **Early LAN preview.** Tested with Cync smart plugs only. Other device types may not appear or may behave incorrectly.
12
27
 
13
28
  ## Installation
@@ -36,26 +51,18 @@ Add a platform entry to your Homebridge `config.json`:
36
51
  ]
37
52
  }
38
53
  ```
39
- ### 2FA flow
54
+ ## Cync Login / 2FA Flow
40
55
 
41
- 1. Start with no twoFactor field (or leave it empty).
56
+ 1. Open the plugin settings in Homebridge UI.
57
+ 2. Enter your Cync **Email** and **Password**.
58
+ 3. Click **Request Verification Code**.
59
+ 4. Check your email for the 6-digit Cync verification code.
60
+ 5. Enter the code in **Verification Code (OTP)**.
61
+ 6. Click the Homebridge **Save** button.
62
+ 7. Restart Homebridge.
42
63
 
43
- 2. Start Homebridge:
44
- - The plugin asks Cync to send a 2FA code to your email.
45
- - In the log you’ll see:
46
- - Cync: starting 2FA handshake for ...
47
- - Cync: 2FA code sent to your email...
48
-
49
- 3. Copy the code from your email.
50
-
51
- 4. Add "twoFactor": "123456" (replace with your real code) to the plugin config and restart Homebridge.
52
-
53
- 5. On successful login:
54
- - The plugin stores an access token in the Homebridge storage path.
55
- - On future restarts, it logs:
56
- - CyncClient: using stored token for userId=...
57
- - Cync: restored session from stored token; userId=...
58
- - No further 2FA input is needed unless the token expires or is revoked.
64
+ On successful login, a token will be stored in `cync-tokens.json` under the Homebridge storage path.
65
+ While a valid token exists, the login fields are locked. Click **Sign Out** in the plugin UI to clear the token and re-enter credentials.
59
66
 
60
67
  ## Project Status & Roadmap
61
68
  - **0.0.1** – Initial scaffold, basic Homebridge platform, config wiring, and logging.
@@ -67,5 +74,6 @@ Add a platform entry to your Homebridge `config.json`:
67
74
  - HomeKit can now control Cync smart plugs directly over the Cync LAN bridge.
68
75
  - Switch states update independently and stay in sync between the Cync app and HomeKit.
69
76
  - Cloud config is still used for login + topology, but ongoing control is via TCP.
70
-
71
- **This plugin is an unofficial integration and is not affiliated with GE or Cync.**
77
+ - **0.1.1 - 0.1.3** - Failed experiment to incorporate custom UI.
78
+ - **0.1.4** - Codebase restored to v0.1.0
79
+ - **0.1.5** - Successful Custom UI implementation, improved 2FA login flow.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "pluginAlias": "CyncAppPlatform",
3
3
  "pluginType": "platform",
4
- "singular": true,
5
4
  "customUi": true,
5
+ "singular": true,
6
6
  "schema": {
7
7
  "type": "object",
8
8
  "properties": {
@@ -16,24 +16,19 @@
16
16
  "title": "Cync Email",
17
17
  "type": "string",
18
18
  "format": "email",
19
- "required": true,
20
- "default": "",
21
19
  "description": "Email address you use to sign in to the Cync app."
22
20
  },
23
21
  "password": {
24
22
  "title": "Cync Password",
25
23
  "type": "string",
26
24
  "format": "password",
27
- "required": true,
28
- "default": "",
29
25
  "description": "Password for your Cync account."
30
26
  },
31
27
  "twoFactor": {
32
28
  "title": "Two-Factor Code (OTP)",
33
29
  "type": "string",
34
30
  "pattern": "^[0-9]{6}$",
35
- "default": "",
36
- "description": "Temporary 6-digit code emailed by Cync when you sign in."
31
+ "description": "Temporary 6-digit code emailed by Cync when you sign in. Leave blank normally; only needed when performing a fresh login."
37
32
  }
38
33
  },
39
34
  "required": [
@@ -16,7 +16,7 @@ export declare class CyncClient {
16
16
  onLanDeviceUpdate(handler: (update: unknown) => void): void;
17
17
  getLanLoginCode(): Uint8Array;
18
18
  constructor(configClient: ConfigClient, tcpClient: TcpClient, loginConfig: {
19
- email: string;
19
+ username: string;
20
20
  password: string;
21
21
  twoFactor?: string;
22
22
  }, storagePath: string, logger?: CyncLogger);
@@ -29,13 +29,14 @@ export declare class CyncClient {
29
29
  */
30
30
  ensureLoggedIn(): Promise<boolean>;
31
31
  /**
32
- * Internal helper: request a 2FA email code using existing authenticate().
33
- */
32
+ * Internal helper: request a 2FA email code using existing authenticate().
33
+ * Accepts the same username value we store in loginConfig (email address for Cync).
34
+ */
34
35
  private requestTwoFactorCode;
35
36
  /**
36
- * Internal helper: complete 2FA login using existing submitTwoFactor().
37
- * This converts CyncLoginSession into the richer shape we want for token storage.
38
- */
37
+ * Internal helper: complete 2FA login using existing submitTwoFactor().
38
+ * This converts CyncLoginSession into the richer shape we want for token storage.
39
+ */
39
40
  private completeTwoFactorLogin;
40
41
  /**
41
42
  * Apply an access token (and associated metadata) to the underlying ConfigClient,
@@ -60,7 +61,7 @@ export declare class CyncClient {
60
61
  * This method is stateless: it does not rely on prior calls to authenticate()
61
62
  * in the same process, so it works across Homebridge restarts.
62
63
  */
63
- submitTwoFactor(email: string, password: string, code: string): Promise<CyncLoginSession>;
64
+ submitTwoFactor(username: string, password: string, code: string): Promise<CyncLoginSession>;
64
65
  /**
65
66
  * Fetch and cache the cloud configuration (meshes/devices) for the logged-in user.
66
67
  * Also builds HA-style LAN topology mappings:
@@ -19,6 +19,11 @@ export class CyncClient {
19
19
  homeControllers = {};
20
20
  switchIdToHomeId = {};
21
21
  // Credentials from config.json, used to drive 2FA bootstrap.
22
+ //
23
+ // Canonical keys (must match platform + config):
24
+ // - username: login identifier (email address used in Cync app)
25
+ // - password: account password
26
+ // - twoFactor: 6-digit OTP, optional; when present we complete 2FA on restart.
22
27
  loginConfig;
23
28
  // Optional LAN update hook for the platform
24
29
  lanUpdateHandler = null;
@@ -46,6 +51,12 @@ export class CyncClient {
46
51
  this.log = logger ?? defaultLogger;
47
52
  this.loginConfig = loginConfig;
48
53
  this.tokenStore = new CyncTokenStore(storagePath);
54
+ // One-time sanity log so we can see exactly what was passed in from platform/config.
55
+ this.log.debug('CyncClient: constructed with loginConfig=%o', {
56
+ username: loginConfig.username,
57
+ hasPassword: !!loginConfig.password,
58
+ twoFactor: loginConfig.twoFactor,
59
+ });
49
60
  }
50
61
  // ### 🧩 LAN Login Code Builder
51
62
  buildLanLoginCode(authorize, userId) {
@@ -85,21 +96,23 @@ export class CyncClient {
85
96
  return true;
86
97
  }
87
98
  // 2) No stored token – run 2FA bootstrap
88
- const { email, password, twoFactor } = this.loginConfig;
89
- if (!email || !password) {
90
- this.log.error('CyncClient: email and password are required to obtain a new token.');
99
+ const { username, password, twoFactor } = this.loginConfig;
100
+ if (!username || !password) {
101
+ this.log.error('CyncClient: username and password are required to obtain a new token.');
91
102
  return false;
92
103
  }
93
- if (!twoFactor || String(twoFactor).trim() === '') {
104
+ const trimmedCode = typeof twoFactor === 'string' ? twoFactor.trim() : '';
105
+ const hasTwoFactor = trimmedCode.length > 0;
106
+ if (!hasTwoFactor) {
94
107
  // No 2FA code – request one
95
- this.log.info('Cync: starting 2FA handshake for %s', email);
96
- await this.requestTwoFactorCode(email);
108
+ this.log.info('Cync: starting 2FA handshake for %s', username);
109
+ await this.requestTwoFactorCode(username);
97
110
  this.log.info('Cync: 2FA code sent to your email. Enter the code as "twoFactor" in the plugin config and restart Homebridge to complete login.');
98
111
  return false;
99
112
  }
100
113
  // We have a 2FA code – complete login and persist token
101
- this.log.info('Cync: completing 2FA login for %s', email);
102
- const loginResult = await this.completeTwoFactorLogin(email, password, String(twoFactor).trim());
114
+ this.log.info('Cync: completing 2FA login for %s', username);
115
+ const loginResult = await this.completeTwoFactorLogin(username, password, trimmedCode);
103
116
  // Build LAN login code
104
117
  let authorize;
105
118
  let lanLoginCode;
@@ -125,20 +138,19 @@ export class CyncClient {
125
138
  // Hydrate ConfigClient + session snapshot from the freshly obtained token.
126
139
  this.applyAccessToken(tokenData);
127
140
  this.log.info('Cync login successful; userId=%s (token stored)', tokenData.userId);
128
- this.log.info('Cync: 2FA login complete and a token has been stored. You may now clear the "twoFactor" code from the plugin config; ' +
129
- 'it will only be needed again if the stored token expires or is removed.');
130
141
  return true;
131
142
  }
132
143
  /**
133
- * Internal helper: request a 2FA email code using existing authenticate().
134
- */
135
- async requestTwoFactorCode(email) {
136
- await this.authenticate(email);
144
+ * Internal helper: request a 2FA email code using existing authenticate().
145
+ * Accepts the same username value we store in loginConfig (email address for Cync).
146
+ */
147
+ async requestTwoFactorCode(username) {
148
+ await this.authenticate(username);
137
149
  }
138
150
  /**
139
- * Internal helper: complete 2FA login using existing submitTwoFactor().
140
- * This converts CyncLoginSession into the richer shape we want for token storage.
141
- */
151
+ * Internal helper: complete 2FA login using existing submitTwoFactor().
152
+ * This converts CyncLoginSession into the richer shape we want for token storage.
153
+ */
142
154
  async completeTwoFactorLogin(email, password, code) {
143
155
  const session = await this.submitTwoFactor(email, password, code);
144
156
  // Extract authorize field from session.raw (Cync returns it)
@@ -217,8 +229,8 @@ export class CyncClient {
217
229
  * This method is stateless: it does not rely on prior calls to authenticate()
218
230
  * in the same process, so it works across Homebridge restarts.
219
231
  */
220
- async submitTwoFactor(email, password, code) {
221
- const trimmedEmail = email.trim();
232
+ async submitTwoFactor(username, password, code) {
233
+ const trimmedEmail = username.trim();
222
234
  const trimmedCode = code.trim();
223
235
  this.log.info('CyncClient: completing 2FA login for %s', trimmedEmail);
224
236
  const session = await this.configClient.loginWithTwoFactor(trimmedEmail, password, trimmedCode);
@@ -256,6 +268,19 @@ export class CyncClient {
256
268
  const bulbsArray = props.bulbsArray;
257
269
  if (Array.isArray(bulbsArray)) {
258
270
  this.log.info('CyncClient: mesh %s bulbsArray length=%d; first item keys=%o', meshName, bulbsArray.length, bulbsArray[0] ? Object.keys(bulbsArray[0]) : []);
271
+ // ### 🧩 Bulb Capability Debug: log each bulb so we can classify plugs vs lights
272
+ bulbsArray.forEach((bulb, index) => {
273
+ const record = bulb;
274
+ this.log.debug('CyncClient: bulb #%d for mesh %s → %o', index, meshName, {
275
+ displayName: record.displayName,
276
+ deviceID: record.deviceID ?? record.deviceId,
277
+ deviceType: record.deviceType,
278
+ loadSelection: record.loadSelection,
279
+ defaultBrightness: record.defaultBrightness,
280
+ lightRingColor: record.lightRingColor,
281
+ raw: record,
282
+ });
283
+ });
259
284
  const rawDevices = bulbsArray;
260
285
  const devicesForMesh = [];
261
286
  for (const raw of rawDevices) {
@@ -1 +1 @@
1
- {"version":3,"file":"cync-client.js","sourceRoot":"","sources":["../../src/cync/cync-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cync-client.js","sourceRoot":"","sources":["../../src/cync/cync-client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type DeviceUpdateCallback = (payload: unknown) => void;
3
3
  export type RawFrameListener = (frame: Buffer) => void;
4
4
  export declare class TcpClient {
5
5
  registerSwitchMapping(controllerId: number, deviceId: string): void;
6
+ private commandChain;
6
7
  private homeDevices;
7
8
  private switchIdToHomeId;
8
9
  private readonly log;
@@ -19,9 +20,7 @@ export declare class TcpClient {
19
20
  private heartbeatTimer;
20
21
  private rawFrameListeners;
21
22
  private controllerToDevice;
22
- private connecting;
23
- private readonly sendQueue;
24
- private sending;
23
+ private enqueueCommand;
25
24
  private parseSwitchStateFrame;
26
25
  private parseLanSwitchUpdate;
27
26
  constructor(logger?: CyncLogger);
@@ -37,37 +36,29 @@ export declare class TcpClient {
37
36
  homeDevices: Record<string, string[]>;
38
37
  switchIdToHomeId: Record<number, string>;
39
38
  }): void;
40
- /**
41
- * Ensure we have an open, logged-in socket.
42
- * If multiple callers invoke this concurrently, they will share a single
43
- * connection attempt via `this.connecting`.
44
- */
45
39
  private ensureConnected;
46
- /**
47
- * Open a new socket to cm.gelighting.com and send the loginCode,
48
- * mirroring the HA integration’s behavior.
49
- */
50
40
  private establishSocket;
51
41
  private openTlsSocket;
52
42
  private openTcpSocket;
53
43
  private startHeartbeat;
54
44
  private nextSeq;
55
- private flushQueue;
56
45
  private buildPowerPacket;
46
+ private buildComboPacket;
57
47
  disconnect(): Promise<void>;
58
48
  onDeviceUpdate(cb: DeviceUpdateCallback): void;
59
49
  onRoomUpdate(cb: DeviceUpdateCallback): void;
60
50
  onMotionUpdate(cb: DeviceUpdateCallback): void;
61
51
  onAmbientUpdate(cb: DeviceUpdateCallback): void;
62
52
  onRawFrame(listener: RawFrameListener): void;
63
- /**
64
- * High-level API to change switch state.
65
- * Now enqueues a power packet so multiple HomeKit scene writes are
66
- * serialized over a single TCP session.
67
- */
68
53
  setSwitchState(deviceId: string, params: {
69
54
  on: boolean;
70
55
  }): Promise<void>;
56
+ setBrightness(deviceId: string, brightnessPct: number): Promise<void>;
57
+ setColor(deviceId: string, rgb: {
58
+ r: number;
59
+ g: number;
60
+ b: number;
61
+ }, brightnessPct?: number): Promise<void>;
71
62
  private findDevice;
72
63
  private attachSocketListeners;
73
64
  private processIncoming;