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.
Files changed (35) hide show
  1. package/.github/ISSUE_TEMPLATE/add-support-for-a-new-cync-device.md +139 -0
  2. package/CHANGELOG.md +21 -0
  3. package/README.md +3 -1
  4. package/dist/cync/config-client.d.ts +23 -0
  5. package/dist/cync/config-client.js +133 -0
  6. package/dist/cync/config-client.js.map +1 -1
  7. package/dist/cync/cync-accessory-helpers.d.ts +46 -0
  8. package/dist/cync/cync-accessory-helpers.js +138 -0
  9. package/dist/cync/cync-accessory-helpers.js.map +1 -0
  10. package/dist/cync/cync-client.d.ts +5 -0
  11. package/dist/cync/cync-client.js +156 -2
  12. package/dist/cync/cync-client.js.map +1 -1
  13. package/dist/cync/cync-light-accessory.d.ts +4 -0
  14. package/dist/cync/cync-light-accessory.js +197 -0
  15. package/dist/cync/cync-light-accessory.js.map +1 -0
  16. package/dist/cync/cync-switch-accessory.d.ts +4 -0
  17. package/dist/cync/cync-switch-accessory.js +58 -0
  18. package/dist/cync/cync-switch-accessory.js.map +1 -0
  19. package/dist/cync/device-catalog.d.ts +19 -0
  20. package/dist/cync/device-catalog.js +35 -0
  21. package/dist/cync/device-catalog.js.map +1 -0
  22. package/dist/cync/token-store.js +2 -2
  23. package/dist/cync/token-store.js.map +1 -1
  24. package/dist/platform.d.ts +8 -3
  25. package/dist/platform.js +49 -320
  26. package/dist/platform.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/cync/config-client.ts +192 -0
  29. package/src/cync/cync-accessory-helpers.ts +233 -0
  30. package/src/cync/cync-client.ts +238 -2
  31. package/src/cync/cync-light-accessory.ts +359 -0
  32. package/src/cync/cync-switch-accessory.ts +100 -0
  33. package/src/cync/device-catalog.ts +55 -0
  34. package/src/cync/token-store.ts +3 -2
  35. package/src/platform.ts +87 -549
@@ -7,12 +7,17 @@ export declare class CyncAppPlatform implements DynamicPlatformPlugin {
7
7
  private readonly config;
8
8
  private readonly client;
9
9
  private readonly tcpClient;
10
+ private readonly accessoryEnv;
10
11
  private cloudConfig;
11
12
  private readonly deviceIdToAccessory;
13
+ private readonly deviceLastSeen;
14
+ private readonly devicePollTimers;
15
+ private readonly offlineTimeoutMs;
16
+ private readonly pollIntervalMs;
17
+ private markDeviceSeen;
18
+ private isDeviceProbablyOffline;
19
+ private startPollingDevice;
12
20
  private handleLanUpdate;
13
- private configureCyncSwitchAccessory;
14
- private configureCyncLightAccessory;
15
- private applyAccessoryInformationFromCyncDevice;
16
21
  constructor(log: Logger, config: PlatformConfig, api: API);
17
22
  private loadCync;
18
23
  private discoverDevices;
package/dist/platform.js CHANGED
@@ -2,67 +2,15 @@ import { PLATFORM_NAME } from './settings.js';
2
2
  import { CyncClient } from './cync/cync-client.js';
3
3
  import { ConfigClient } from './cync/config-client.js';
4
4
  import { TcpClient } from './cync/tcp-client.js';
5
+ import { resolveDeviceType, } from './cync/cync-accessory-helpers.js';
6
+ import { configureCyncLightAccessory } from './cync/cync-light-accessory.js';
7
+ import { configureCyncSwitchAccessory } from './cync/cync-switch-accessory.js';
5
8
  const toCyncLogger = (log) => ({
6
9
  debug: log.debug.bind(log),
7
10
  info: log.info.bind(log),
8
11
  warn: log.warn.bind(log),
9
12
  error: log.error.bind(log),
10
13
  });
11
- function hsvToRgb(hue, saturation, value) {
12
- const h = ((hue % 360) + 360) % 360;
13
- const s = Math.max(0, Math.min(100, saturation)) / 100;
14
- const v = Math.max(0, Math.min(100, value)) / 100;
15
- if (s === 0) {
16
- const grey = Math.round(v * 255);
17
- return { r: grey, g: grey, b: grey };
18
- }
19
- const sector = h / 60;
20
- const i = Math.floor(sector);
21
- const f = sector - i;
22
- const p = v * (1 - s);
23
- const q = v * (1 - s * f);
24
- const t = v * (1 - s * (1 - f));
25
- let r = 0;
26
- let g = 0;
27
- let b = 0;
28
- switch (i) {
29
- case 0:
30
- r = v;
31
- g = t;
32
- b = p;
33
- break;
34
- case 1:
35
- r = q;
36
- g = v;
37
- b = p;
38
- break;
39
- case 2:
40
- r = p;
41
- g = v;
42
- b = t;
43
- break;
44
- case 3:
45
- r = p;
46
- g = q;
47
- b = v;
48
- break;
49
- case 4:
50
- r = t;
51
- g = p;
52
- b = v;
53
- break;
54
- default:
55
- r = v;
56
- g = p;
57
- b = q;
58
- break;
59
- }
60
- return {
61
- r: Math.round(r * 255),
62
- g: Math.round(g * 255),
63
- b: Math.round(b * 255),
64
- };
65
- }
66
14
  export class CyncAppPlatform {
67
15
  accessories = [];
68
16
  configureAccessory(accessory) {
@@ -74,8 +22,39 @@ export class CyncAppPlatform {
74
22
  config;
75
23
  client;
76
24
  tcpClient;
25
+ accessoryEnv;
77
26
  cloudConfig = null;
78
27
  deviceIdToAccessory = new Map();
28
+ deviceLastSeen = new Map();
29
+ devicePollTimers = new Map();
30
+ offlineTimeoutMs = 5 * 60 * 1000; // 5 minutes
31
+ pollIntervalMs = 60_000; // 60 seconds
32
+ markDeviceSeen(deviceId) {
33
+ this.deviceLastSeen.set(deviceId, Date.now());
34
+ }
35
+ isDeviceProbablyOffline(deviceId) {
36
+ const last = this.deviceLastSeen.get(deviceId);
37
+ if (!last) {
38
+ // No data yet; treat as online until we know better
39
+ return false;
40
+ }
41
+ return Date.now() - last > this.offlineTimeoutMs;
42
+ }
43
+ startPollingDevice(deviceId) {
44
+ // For now this is just a placeholder hook. We keep a timer per device so
45
+ // you can later add a real poll (e.g. TCP “ping” or cloud get) here if you want.
46
+ const existing = this.devicePollTimers.get(deviceId);
47
+ if (existing) {
48
+ clearInterval(existing);
49
+ }
50
+ const timer = setInterval(() => {
51
+ // Optional future hook:
52
+ // - Call a "getDeviceState" or similar on tcpClient/client
53
+ // - On success, call this.markDeviceSeen(deviceId)
54
+ // - On failure, optionally log or mark offline
55
+ }, this.pollIntervalMs);
56
+ this.devicePollTimers.set(deviceId, timer);
57
+ }
79
58
  handleLanUpdate(update) {
80
59
  // Parsed 0x83 frames from TcpClient.parseLanSwitchUpdate look like:
81
60
  // { controllerId: number, deviceId?: string, on: boolean, level: number }
@@ -84,6 +63,7 @@ export class CyncAppPlatform {
84
63
  return;
85
64
  }
86
65
  const accessory = this.deviceIdToAccessory.get(payload.deviceId);
66
+ this.markDeviceSeen(payload.deviceId);
87
67
  if (!accessory) {
88
68
  this.log.debug('Cync: LAN update for unknown deviceId=%s; no accessory mapping', payload.deviceId);
89
69
  return;
@@ -119,252 +99,6 @@ export class CyncAppPlatform {
119
99
  }
120
100
  }
121
101
  }
122
- configureCyncSwitchAccessory(mesh, device, accessory, deviceName, deviceId) {
123
- const service = accessory.getService(this.api.hap.Service.Switch) ||
124
- accessory.addService(this.api.hap.Service.Switch, deviceName);
125
- const existingLight = accessory.getService(this.api.hap.Service.Lightbulb);
126
- if (existingLight) {
127
- this.log.info('Cync: removing stale Lightbulb service from %s (deviceId=%s) before configuring as Switch', deviceName, deviceId);
128
- accessory.removeService(existingLight);
129
- }
130
- // Ensure context is initialized
131
- const ctx = accessory.context;
132
- ctx.cync = ctx.cync ?? {
133
- meshId: mesh.id,
134
- deviceId,
135
- productId: device.product_id,
136
- on: false,
137
- };
138
- // Remember mapping for LAN updates
139
- this.deviceIdToAccessory.set(deviceId, accessory);
140
- service
141
- .getCharacteristic(this.api.hap.Characteristic.On)
142
- .onGet(() => {
143
- const currentOn = !!ctx.cync?.on;
144
- this.log.info('Cync: On.get -> %s for %s (deviceId=%s)', String(currentOn), deviceName, deviceId);
145
- return currentOn;
146
- })
147
- .onSet(async (value) => {
148
- const cyncMeta = ctx.cync;
149
- if (!cyncMeta?.deviceId) {
150
- this.log.warn('Cync: Light On.set called for %s but no cync.deviceId in context', deviceName);
151
- return;
152
- }
153
- const on = value === true || value === 1;
154
- this.log.info('Cync: Light On.set -> %s for %s (deviceId=%s)', String(on), deviceName, cyncMeta.deviceId);
155
- cyncMeta.on = on;
156
- if (!on) {
157
- // Off is always a plain power packet
158
- await this.tcpClient.setSwitchState(cyncMeta.deviceId, { on: false });
159
- return;
160
- }
161
- // Turning on:
162
- // - If we were in color mode with a known RGB + brightness, restore color.
163
- // - Otherwise, just send a basic power-on packet.
164
- if (cyncMeta.colorActive && cyncMeta.rgb && typeof cyncMeta.brightness === 'number') {
165
- await this.tcpClient.setColor(cyncMeta.deviceId, cyncMeta.rgb, cyncMeta.brightness);
166
- }
167
- else {
168
- await this.tcpClient.setSwitchState(cyncMeta.deviceId, { on: true });
169
- }
170
- });
171
- }
172
- configureCyncLightAccessory(mesh, device, accessory, deviceName, deviceId) {
173
- // If this accessory used to be a switch, remove that service
174
- const existingSwitch = accessory.getService(this.api.hap.Service.Switch);
175
- if (existingSwitch) {
176
- this.log.info('Cync: removing stale Switch service from %s (deviceId=%s) before configuring as Lightbulb', deviceName, deviceId);
177
- accessory.removeService(existingSwitch);
178
- }
179
- const service = accessory.getService(this.api.hap.Service.Lightbulb) ||
180
- accessory.addService(this.api.hap.Service.Lightbulb, deviceName);
181
- // Optionally update accessory category so UIs treat it as a light
182
- if (accessory.category !== 5 /* this.api.hap.Categories.LIGHTBULB */) {
183
- accessory.category = 5 /* this.api.hap.Categories.LIGHTBULB */;
184
- }
185
- // NEW: populate Accessory Information from Cync metadata
186
- this.applyAccessoryInformationFromCyncDevice(accessory, device, deviceName, deviceId);
187
- // Ensure context is initialized
188
- const ctx = accessory.context;
189
- ctx.cync = ctx.cync ?? {
190
- meshId: mesh.id,
191
- deviceId,
192
- productId: device.product_id,
193
- on: false,
194
- };
195
- // Remember mapping for LAN updates
196
- this.deviceIdToAccessory.set(deviceId, accessory);
197
- const Characteristic = this.api.hap.Characteristic;
198
- // ----- On/Off -----
199
- service
200
- .getCharacteristic(Characteristic.On)
201
- .onGet(() => {
202
- const currentOn = !!ctx.cync?.on;
203
- this.log.info('Cync: Light On.get -> %s for %s (deviceId=%s)', String(currentOn), deviceName, deviceId);
204
- return currentOn;
205
- })
206
- .onSet(async (value) => {
207
- const cyncMeta = ctx.cync;
208
- if (!cyncMeta?.deviceId) {
209
- this.log.warn('Cync: Light On.set called for %s but no cync.deviceId in context', deviceName);
210
- return;
211
- }
212
- const on = value === true || value === 1;
213
- this.log.info('Cync: Light On.set -> %s for %s (deviceId=%s)', String(on), deviceName, cyncMeta.deviceId);
214
- // Optimistic local cache; LAN update will confirm
215
- cyncMeta.on = on;
216
- await this.tcpClient.setSwitchState(cyncMeta.deviceId, { on });
217
- });
218
- // ----- Brightness (dimming via LAN combo_control) -----
219
- service
220
- .getCharacteristic(Characteristic.Brightness)
221
- .onGet(() => {
222
- const current = ctx.cync?.brightness;
223
- // If we have a cached LAN level, use it; otherwise infer from On.
224
- if (typeof current === 'number') {
225
- return current;
226
- }
227
- const on = ctx.cync?.on ?? false;
228
- return on ? 100 : 0;
229
- })
230
- .onSet(async (value) => {
231
- const cyncMeta = ctx.cync;
232
- if (!cyncMeta?.deviceId) {
233
- this.log.warn('Cync: Light Brightness.set called for %s but no cync.deviceId in context', deviceName);
234
- return;
235
- }
236
- const brightness = Math.max(0, Math.min(100, Number(value)));
237
- if (!Number.isFinite(brightness)) {
238
- this.log.warn('Cync: Light Brightness.set received invalid value=%o for %s (deviceId=%s)', value, deviceName, cyncMeta.deviceId);
239
- return;
240
- }
241
- // Optimistic cache
242
- cyncMeta.brightness = brightness;
243
- cyncMeta.on = brightness > 0;
244
- this.log.info('Cync: Light Brightness.set -> %d for %s (deviceId=%s)', brightness, deviceName, cyncMeta.deviceId);
245
- // If we're in "color mode", keep the existing RGB and scale brightness via setColor();
246
- // otherwise treat this as a white-brightness change.
247
- if (cyncMeta.colorActive && cyncMeta.rgb) {
248
- await this.tcpClient.setColor(cyncMeta.deviceId, cyncMeta.rgb, brightness);
249
- }
250
- else {
251
- await this.tcpClient.setBrightness(cyncMeta.deviceId, brightness);
252
- }
253
- });
254
- // ----- Hue -----
255
- service
256
- .getCharacteristic(Characteristic.Hue)
257
- .onGet(() => {
258
- const hue = ctx.cync?.hue;
259
- if (typeof hue === 'number') {
260
- return hue;
261
- }
262
- // Default to 0° (red) if we have no color history
263
- return 0;
264
- })
265
- .onSet(async (value) => {
266
- const cyncMeta = ctx.cync;
267
- if (!cyncMeta?.deviceId) {
268
- this.log.warn('Cync: Light Hue.set called for %s but no cync.deviceId in context', deviceName);
269
- return;
270
- }
271
- const hue = Math.max(0, Math.min(360, Number(value)));
272
- if (!Number.isFinite(hue)) {
273
- this.log.warn('Cync: Light Hue.set received invalid value=%o for %s (deviceId=%s)', value, deviceName, cyncMeta.deviceId);
274
- return;
275
- }
276
- // Use cached saturation/brightness if available, otherwise sane defaults
277
- const saturation = typeof cyncMeta.saturation === 'number'
278
- ? cyncMeta.saturation
279
- : 100;
280
- const brightness = typeof cyncMeta.brightness === 'number'
281
- ? cyncMeta.brightness
282
- : 100;
283
- const rgb = hsvToRgb(hue, saturation, brightness);
284
- // Optimistic cache
285
- cyncMeta.hue = hue;
286
- cyncMeta.saturation = saturation;
287
- cyncMeta.rgb = rgb;
288
- cyncMeta.colorActive = true;
289
- cyncMeta.on = brightness > 0;
290
- cyncMeta.brightness = brightness;
291
- this.log.info('Cync: Light Hue.set -> %d for %s (deviceId=%s) -> rgb=(%d,%d,%d) brightness=%d', hue, deviceName, cyncMeta.deviceId, rgb.r, rgb.g, rgb.b, brightness);
292
- await this.tcpClient.setColor(cyncMeta.deviceId, rgb, brightness);
293
- });
294
- // ----- Saturation -----
295
- service
296
- .getCharacteristic(Characteristic.Saturation)
297
- .onGet(() => {
298
- const sat = ctx.cync?.saturation;
299
- if (typeof sat === 'number') {
300
- return sat;
301
- }
302
- return 100;
303
- })
304
- .onSet(async (value) => {
305
- const cyncMeta = ctx.cync;
306
- if (!cyncMeta?.deviceId) {
307
- this.log.warn('Cync: Light Saturation.set called for %s but no cync.deviceId in context', deviceName);
308
- return;
309
- }
310
- const saturation = Math.max(0, Math.min(100, Number(value)));
311
- if (!Number.isFinite(saturation)) {
312
- this.log.warn('Cync: Light Saturation.set received invalid value=%o for %s (deviceId=%s)', value, deviceName, cyncMeta.deviceId);
313
- return;
314
- }
315
- const hue = typeof cyncMeta.hue === 'number'
316
- ? cyncMeta.hue
317
- : 0;
318
- const brightness = typeof cyncMeta.brightness === 'number'
319
- ? cyncMeta.brightness
320
- : 100;
321
- const rgb = hsvToRgb(hue, saturation, brightness);
322
- // Optimistic cache
323
- cyncMeta.hue = hue;
324
- cyncMeta.saturation = saturation;
325
- cyncMeta.rgb = rgb;
326
- cyncMeta.colorActive = true;
327
- cyncMeta.on = brightness > 0;
328
- cyncMeta.brightness = brightness;
329
- this.log.info('Cync: Light Saturation.set -> %d for %s (deviceId=%s) -> rgb=(%d,%d,%d) brightness=%d', saturation, deviceName, cyncMeta.deviceId, rgb.r, rgb.g, rgb.b, brightness);
330
- await this.tcpClient.setColor(cyncMeta.deviceId, rgb, brightness);
331
- });
332
- }
333
- applyAccessoryInformationFromCyncDevice(accessory, device, deviceName, deviceId) {
334
- const infoService = accessory.getService(this.api.hap.Service.AccessoryInformation);
335
- if (!infoService) {
336
- return;
337
- }
338
- const Characteristic = this.api.hap.Characteristic;
339
- const deviceWithRaw = device;
340
- const rawDevice = deviceWithRaw.raw ?? {};
341
- // Name: keep in sync with how we present the accessory
342
- const name = deviceName || accessory.displayName;
343
- infoService.updateCharacteristic(Characteristic.Name, name);
344
- // Manufacturer: fixed for all Cync devices
345
- infoService.updateCharacteristic(Characteristic.Manufacturer, 'GE Lighting');
346
- // Model: use the device's displayName + type if available
347
- const modelBase = typeof rawDevice.displayName === 'string' && rawDevice.displayName.trim().length > 0
348
- ? rawDevice.displayName.trim()
349
- : 'Cync Device';
350
- const modelSuffix = typeof rawDevice.deviceType === 'number'
351
- ? ` (Type ${rawDevice.deviceType})`
352
- : '';
353
- infoService.updateCharacteristic(Characteristic.Model, modelBase + modelSuffix);
354
- // Serial: prefer wifiMac, then mac, then deviceID, then the string deviceId
355
- const serial = (typeof rawDevice.wifiMac === 'string' && rawDevice.wifiMac.trim().length > 0)
356
- ? rawDevice.wifiMac.trim()
357
- : (typeof rawDevice.mac === 'string' && rawDevice.mac.trim().length > 0)
358
- ? rawDevice.mac.trim()
359
- : (rawDevice.deviceID !== undefined
360
- ? String(rawDevice.deviceID)
361
- : deviceId);
362
- infoService.updateCharacteristic(Characteristic.SerialNumber, serial);
363
- // Firmware revision, if present
364
- if (typeof rawDevice.firmwareVersion === 'string' && rawDevice.firmwareVersion.trim().length > 0) {
365
- infoService.updateCharacteristic(Characteristic.FirmwareRevision, rawDevice.firmwareVersion.trim());
366
- }
367
- }
368
102
  constructor(log, config, api) {
369
103
  this.log = log;
370
104
  this.config = config;
@@ -400,6 +134,17 @@ export class CyncAppPlatform {
400
134
  this.log.info(PLATFORM_NAME, 'didFinishLaunching');
401
135
  void this.loadCync();
402
136
  });
137
+ this.accessoryEnv = {
138
+ log: this.log,
139
+ api: this.api,
140
+ tcpClient: this.tcpClient,
141
+ isDeviceProbablyOffline: this.isDeviceProbablyOffline.bind(this),
142
+ markDeviceSeen: this.markDeviceSeen.bind(this),
143
+ startPollingDevice: this.startPollingDevice.bind(this),
144
+ registerAccessoryForDevice: (deviceId, accessory) => {
145
+ this.deviceIdToAccessory.set(deviceId, accessory);
146
+ },
147
+ };
403
148
  }
404
149
  async loadCync() {
405
150
  try {
@@ -483,31 +228,15 @@ export class CyncAppPlatform {
483
228
  this.api.registerPlatformAccessories('homebridge-cync-app', 'CyncAppPlatform', [accessory]);
484
229
  this.accessories.push(accessory);
485
230
  }
486
- // Decide how to expose this device in HomeKit based on device_type / raw.deviceType
487
- const typedDevice = device;
488
- let deviceType;
489
- if (typeof typedDevice.device_type === 'number') {
490
- deviceType = typedDevice.device_type;
491
- }
492
- else if (typedDevice.raw && typeof typedDevice.raw.deviceType === 'number') {
493
- deviceType = typedDevice.raw.deviceType;
494
- }
495
- else if (typedDevice.raw &&
496
- typeof typedDevice.raw.deviceType === 'string' &&
497
- typedDevice.raw.deviceType.trim() !== '') {
498
- const parsed = Number(typedDevice.raw.deviceType);
499
- if (!Number.isNaN(parsed)) {
500
- deviceType = parsed;
501
- }
502
- }
231
+ const deviceType = resolveDeviceType(device);
503
232
  const isDownlight = deviceType === 46;
504
233
  if (isDownlight) {
505
234
  this.log.info('Cync: configuring %s as Lightbulb (deviceType=%s, deviceId=%s)', deviceName, String(deviceType), deviceId);
506
- this.configureCyncLightAccessory(mesh, device, accessory, deviceName, deviceId);
235
+ configureCyncLightAccessory(this.accessoryEnv, mesh, device, accessory, deviceName, deviceId);
507
236
  }
508
237
  else {
509
238
  this.log.info('Cync: configuring %s as Switch (deviceType=%s, deviceId=%s)', deviceName, deviceType ?? 'unknown', deviceId);
510
- this.configureCyncSwitchAccessory(mesh, device, accessory, deviceName, deviceId);
239
+ configureCyncSwitchAccessory(this.accessoryEnv, mesh, device, accessory, deviceName, deviceId);
511
240
  }
512
241
  }
513
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "homebridge-cync-app",
3
3
  "displayName": "Homebridge Cync App",
4
4
  "type": "module",
5
- "version": "0.1.6",
5
+ "version": "0.1.8",
6
6
  "private": false,
7
7
  "description": "Homebridge plugin that integrates your GE Cync account (via the Cync app/API) and exposes all supported devices: plugs, lights, switches, etc",
8
8
  "author": "Dustin Newell",