homebridge-cync-app 0.6.0 → 0.6.1
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 +11 -0
- package/README.md +5 -0
- package/config.schema.json +34 -56
- package/dist/platform.d.ts +2 -0
- package/dist/platform.js +87 -24
- package/dist/platform.js.map +1 -1
- package/homebridge-ui/public/index.html +152 -133
- package/homebridge-ui/server.js +103 -0
- package/package.json +1 -1
- package/src/platform.ts +127 -24
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.6.1
|
|
4
|
+
|
|
5
|
+
**Release Date:** 2026-06-23
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Added dynamic discovery of show-compatible devices in the Homebridge configuration UI.
|
|
9
|
+
- Added per-device selection of built-in Light Shows, Music Shows, saved Custom Shows, and saved Segment scenes.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Replaced global show controls with stable device-ID-based configuration while retaining runtime compatibility with existing global settings.
|
|
13
|
+
|
|
3
14
|
## v0.6.0
|
|
4
15
|
|
|
5
16
|
**Release Date:** 2026-06-21
|
package/README.md
CHANGED
|
@@ -91,6 +91,11 @@ Devices should appear automatically after startup.
|
|
|
91
91
|
|
|
92
92
|
Tokens are cached locally to reduce repeated login prompts.
|
|
93
93
|
|
|
94
|
+
### Shows by Device
|
|
95
|
+
|
|
96
|
+
After signing in, the plugin configuration dynamically lists every show-compatible Cync device. Expand a device to choose the built-in Light Shows, Music Shows, saved Custom Shows, and saved Segment scenes that should appear as HomeKit switches for that device.
|
|
97
|
+
|
|
98
|
+
Show selections are stored by Cync device ID, so renaming a device does not reset its configuration. Existing global show settings are migrated to per-device selections the next time the plugin configuration UI is opened and saved.
|
|
94
99
|
|
|
95
100
|
---
|
|
96
101
|
|
package/config.schema.json
CHANGED
|
@@ -30,66 +30,44 @@
|
|
|
30
30
|
"pattern": "^[0-9]{6}$",
|
|
31
31
|
"description": "Temporary 6-digit code emailed by Cync when you sign in. Leave blank normally; only needed when performing a fresh login."
|
|
32
32
|
},
|
|
33
|
-
"
|
|
34
|
-
"title": "
|
|
35
|
-
"type": "boolean",
|
|
36
|
-
"default": false,
|
|
37
|
-
"description": "Expose saved Cync RGBIC Custom Show switches for compatible devices."
|
|
38
|
-
},
|
|
39
|
-
"exposeLightShows": {
|
|
40
|
-
"title": "Expose Light Shows",
|
|
41
|
-
"type": "boolean",
|
|
42
|
-
"default": false,
|
|
43
|
-
"description": "Expose built-in Cync RGBIC Light Show switches for compatible devices."
|
|
44
|
-
},
|
|
45
|
-
"enabledLightShowIndexes": {
|
|
46
|
-
"title": "Enabled Light Shows",
|
|
47
|
-
"type": "array",
|
|
48
|
-
"items": {
|
|
49
|
-
"type": "number",
|
|
50
|
-
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 65, 67],
|
|
51
|
-
"enumNames": [
|
|
52
|
-
"Candle",
|
|
53
|
-
"Rainbow",
|
|
54
|
-
"Fireworks",
|
|
55
|
-
"Volcanic",
|
|
56
|
-
"Aurora",
|
|
57
|
-
"Happy Holidays",
|
|
58
|
-
"Red White Blue",
|
|
59
|
-
"Vegas",
|
|
60
|
-
"Party Time",
|
|
61
|
-
"Power Up",
|
|
62
|
-
"Cyber"
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
"uniqueItems": true,
|
|
66
|
-
"default": []
|
|
67
|
-
},
|
|
68
|
-
"exposeMusicShows": {
|
|
69
|
-
"title": "Expose Music Shows",
|
|
70
|
-
"type": "boolean",
|
|
71
|
-
"default": false,
|
|
72
|
-
"description": "Expose built-in Cync RGBIC Music Show switches for compatible devices."
|
|
73
|
-
},
|
|
74
|
-
"enabledMusicShowIndexes": {
|
|
75
|
-
"title": "Enabled Music Shows",
|
|
33
|
+
"deviceShowConfigs": {
|
|
34
|
+
"title": "Shows by Device",
|
|
76
35
|
"type": "array",
|
|
77
36
|
"items": {
|
|
78
|
-
"type": "
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"deviceId": { "type": "string" },
|
|
40
|
+
"lightShowIndexes": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": { "type": "number" },
|
|
43
|
+
"uniqueItems": true
|
|
44
|
+
},
|
|
45
|
+
"musicShowIndexes": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": { "type": "number" },
|
|
48
|
+
"uniqueItems": true
|
|
49
|
+
},
|
|
50
|
+
"customLightShowIndexes": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": { "type": "number" },
|
|
53
|
+
"uniqueItems": true
|
|
54
|
+
},
|
|
55
|
+
"customMusicShowIndexes": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"items": { "type": "number" },
|
|
58
|
+
"uniqueItems": true
|
|
59
|
+
},
|
|
60
|
+
"multiColorSchemeIndexes": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"items": { "type": "number" },
|
|
63
|
+
"uniqueItems": true
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"required": ["deviceId"]
|
|
90
67
|
},
|
|
91
68
|
"uniqueItems": true,
|
|
92
|
-
"default": []
|
|
69
|
+
"default": [],
|
|
70
|
+
"description": "Per-device show selections managed by the custom plugin UI."
|
|
93
71
|
}
|
|
94
72
|
},
|
|
95
73
|
"required": [
|
package/dist/platform.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
17
17
|
private readonly pollIntervalMs;
|
|
18
18
|
private setMainAccessoryOnForDevice;
|
|
19
19
|
private clearActiveShowsForDevice;
|
|
20
|
+
private getDeviceShowConfig;
|
|
20
21
|
private shouldExposeCustomShows;
|
|
21
22
|
private readonly musicShowServicesByDeviceId;
|
|
22
23
|
private registerMusicShowAccessoryForDevice;
|
|
@@ -26,6 +27,7 @@ export declare class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
26
27
|
private getEnabledLightShowIndexes;
|
|
27
28
|
private shouldExposeMusicShows;
|
|
28
29
|
private getEnabledMusicShowIndexes;
|
|
30
|
+
private getEnabledCustomShowIndexes;
|
|
29
31
|
private markDeviceSeen;
|
|
30
32
|
private registerLightShowAccessoryForDevice;
|
|
31
33
|
private markActiveLightShowForDevice;
|
package/dist/platform.js
CHANGED
|
@@ -79,7 +79,44 @@ export class CyncAppPlatform {
|
|
|
79
79
|
this.markActiveLightShowForDevice(deviceId, null);
|
|
80
80
|
this.markActiveMusicShowForDevice(deviceId, null);
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
getDeviceShowConfig(deviceId) {
|
|
83
|
+
const raw = this.config;
|
|
84
|
+
if (!Array.isArray(raw.deviceShowConfigs)) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const hasLegacyShowConfig = 'exposeCustomShows' in raw ||
|
|
88
|
+
'exposeLightShows' in raw ||
|
|
89
|
+
'enabledLightShowIndexes' in raw ||
|
|
90
|
+
'exposeMusicShows' in raw ||
|
|
91
|
+
'enabledMusicShowIndexes' in raw;
|
|
92
|
+
if (raw.deviceShowConfigs.length === 0 && hasLegacyShowConfig) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const entry = raw.deviceShowConfigs.find((value) => {
|
|
96
|
+
if (!value || typeof value !== 'object') {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return String(value.deviceId ?? '') === deviceId;
|
|
100
|
+
});
|
|
101
|
+
const indexes = (key) => Array.isArray(entry?.[key])
|
|
102
|
+
? entry[key].map(Number).filter(Number.isFinite)
|
|
103
|
+
: [];
|
|
104
|
+
return {
|
|
105
|
+
deviceId,
|
|
106
|
+
lightShowIndexes: indexes('lightShowIndexes'),
|
|
107
|
+
musicShowIndexes: indexes('musicShowIndexes'),
|
|
108
|
+
customLightShowIndexes: indexes('customLightShowIndexes'),
|
|
109
|
+
customMusicShowIndexes: indexes('customMusicShowIndexes'),
|
|
110
|
+
multiColorSchemeIndexes: indexes('multiColorSchemeIndexes'),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
shouldExposeCustomShows(deviceId) {
|
|
114
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
115
|
+
if (deviceConfig) {
|
|
116
|
+
return deviceConfig.customLightShowIndexes.length > 0 ||
|
|
117
|
+
deviceConfig.customMusicShowIndexes.length > 0 ||
|
|
118
|
+
deviceConfig.multiColorSchemeIndexes.length > 0;
|
|
119
|
+
}
|
|
83
120
|
const raw = this.config;
|
|
84
121
|
return raw.exposeCustomShows === true;
|
|
85
122
|
}
|
|
@@ -110,11 +147,19 @@ export class CyncAppPlatform {
|
|
|
110
147
|
}
|
|
111
148
|
}
|
|
112
149
|
lightShowServicesByDeviceId = new Map();
|
|
113
|
-
shouldExposeLightShows() {
|
|
150
|
+
shouldExposeLightShows(deviceId) {
|
|
151
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
152
|
+
if (deviceConfig) {
|
|
153
|
+
return deviceConfig.lightShowIndexes.length > 0;
|
|
154
|
+
}
|
|
114
155
|
const raw = this.config;
|
|
115
156
|
return raw.exposeLightShows === true;
|
|
116
157
|
}
|
|
117
|
-
getEnabledLightShowIndexes() {
|
|
158
|
+
getEnabledLightShowIndexes(deviceId) {
|
|
159
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
160
|
+
if (deviceConfig) {
|
|
161
|
+
return new Set(deviceConfig.lightShowIndexes);
|
|
162
|
+
}
|
|
118
163
|
const raw = this.config;
|
|
119
164
|
const value = raw.enabledLightShowIndexes;
|
|
120
165
|
if (!Array.isArray(value)) {
|
|
@@ -124,11 +169,19 @@ export class CyncAppPlatform {
|
|
|
124
169
|
.map(Number)
|
|
125
170
|
.filter((index) => Number.isFinite(index)));
|
|
126
171
|
}
|
|
127
|
-
shouldExposeMusicShows() {
|
|
172
|
+
shouldExposeMusicShows(deviceId) {
|
|
173
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
174
|
+
if (deviceConfig) {
|
|
175
|
+
return deviceConfig.musicShowIndexes.length > 0;
|
|
176
|
+
}
|
|
128
177
|
const raw = this.config;
|
|
129
178
|
return raw.exposeMusicShows === true;
|
|
130
179
|
}
|
|
131
|
-
getEnabledMusicShowIndexes() {
|
|
180
|
+
getEnabledMusicShowIndexes(deviceId) {
|
|
181
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
182
|
+
if (deviceConfig) {
|
|
183
|
+
return new Set(deviceConfig.musicShowIndexes);
|
|
184
|
+
}
|
|
132
185
|
const raw = this.config;
|
|
133
186
|
const value = raw.enabledMusicShowIndexes;
|
|
134
187
|
if (!Array.isArray(value)) {
|
|
@@ -138,6 +191,10 @@ export class CyncAppPlatform {
|
|
|
138
191
|
.map(Number)
|
|
139
192
|
.filter((index) => Number.isFinite(index)));
|
|
140
193
|
}
|
|
194
|
+
getEnabledCustomShowIndexes(deviceId, kind) {
|
|
195
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
196
|
+
return deviceConfig ? new Set(deviceConfig[kind]) : null;
|
|
197
|
+
}
|
|
141
198
|
markDeviceSeen(deviceId) {
|
|
142
199
|
this.deviceLastSeen.set(deviceId, Date.now());
|
|
143
200
|
}
|
|
@@ -635,11 +692,11 @@ export class CyncAppPlatform {
|
|
|
635
692
|
crc: savedShowCrcMap[String(show.index)],
|
|
636
693
|
}))
|
|
637
694
|
: [];
|
|
638
|
-
this.log.debug('Cync custom show discovery for %s: expose=%s light=%d multiColor=%d music=%d showCrcKeys=%s multiColorCrcKeys=%s', deviceName, String(this.shouldExposeCustomShows()), customLightShows.length, customMultiColorSchemes.length, customMusicShows.length, JSON.stringify(Object.keys(savedShowCrcMap)), JSON.stringify(Object.keys(savedMultiColorSchemesCrcMap)));
|
|
639
|
-
const enabledLightShowIndexes = this.getEnabledLightShowIndexes();
|
|
695
|
+
this.log.debug('Cync custom show discovery for %s: expose=%s light=%d multiColor=%d music=%d showCrcKeys=%s multiColorCrcKeys=%s', deviceName, String(this.shouldExposeCustomShows(deviceId)), customLightShows.length, customMultiColorSchemes.length, customMusicShows.length, JSON.stringify(Object.keys(savedShowCrcMap)), JSON.stringify(Object.keys(savedMultiColorSchemesCrcMap)));
|
|
696
|
+
const enabledLightShowIndexes = this.getEnabledLightShowIndexes(deviceId);
|
|
640
697
|
const lightShows = BUILT_IN_CYNC_LIGHT_SHOWS.filter(lightShow => enabledLightShowIndexes === null ||
|
|
641
698
|
enabledLightShowIndexes.has(lightShow.index));
|
|
642
|
-
if (this.shouldExposeLightShows() &&
|
|
699
|
+
if (this.shouldExposeLightShows(deviceId) &&
|
|
643
700
|
supportsLightShows) {
|
|
644
701
|
for (const lightShow of lightShows) {
|
|
645
702
|
const showIndex = lightShow.index;
|
|
@@ -665,10 +722,10 @@ export class CyncAppPlatform {
|
|
|
665
722
|
configureCyncLightShowAccessory(this.accessoryEnv, mesh, device, lightShowAccessory, lightShowName, deviceId, lightShow, 'built-in-light', (showDeviceId, showIndex) => this.client.activateLightShow(showDeviceId, showIndex));
|
|
666
723
|
}
|
|
667
724
|
}
|
|
668
|
-
const enabledMusicShowIndexes = this.getEnabledMusicShowIndexes();
|
|
725
|
+
const enabledMusicShowIndexes = this.getEnabledMusicShowIndexes(deviceId);
|
|
669
726
|
const musicShows = BUILT_IN_CYNC_MUSIC_SHOWS.filter(musicShow => enabledMusicShowIndexes === null ||
|
|
670
727
|
enabledMusicShowIndexes.has(musicShow.index));
|
|
671
|
-
if (this.shouldExposeMusicShows() &&
|
|
728
|
+
if (this.shouldExposeMusicShows(deviceId) &&
|
|
672
729
|
supportsMusicShows) {
|
|
673
730
|
for (const musicShow of musicShows) {
|
|
674
731
|
const showIndex = musicShow.index;
|
|
@@ -694,9 +751,15 @@ export class CyncAppPlatform {
|
|
|
694
751
|
configureCyncMusicShowAccessory(this.accessoryEnv, mesh, device, musicShowAccessory, musicShowName, deviceId, musicShow, (showDeviceId, showIndex) => this.client.activateMusicShow(showDeviceId, showIndex));
|
|
695
752
|
}
|
|
696
753
|
}
|
|
697
|
-
|
|
754
|
+
const enabledCustomLightShowIndexes = this.getEnabledCustomShowIndexes(deviceId, 'customLightShowIndexes');
|
|
755
|
+
const enabledMultiColorSchemeIndexes = this.getEnabledCustomShowIndexes(deviceId, 'multiColorSchemeIndexes');
|
|
756
|
+
const enabledCustomMusicShowIndexes = this.getEnabledCustomShowIndexes(deviceId, 'customMusicShowIndexes');
|
|
757
|
+
const selectedCustomLightShows = customLightShows.filter(show => enabledCustomLightShowIndexes === null || enabledCustomLightShowIndexes.has(show.index));
|
|
758
|
+
const selectedMultiColorSchemes = customMultiColorSchemes.filter(scheme => enabledMultiColorSchemeIndexes === null || enabledMultiColorSchemeIndexes.has(scheme.index));
|
|
759
|
+
const selectedCustomMusicShows = customMusicShows.filter(show => enabledCustomMusicShowIndexes === null || enabledCustomMusicShowIndexes.has(show.index));
|
|
760
|
+
if (this.shouldExposeCustomShows(deviceId) &&
|
|
698
761
|
supportsLightShows) {
|
|
699
|
-
for (const customLightShow of
|
|
762
|
+
for (const customLightShow of selectedCustomLightShows) {
|
|
700
763
|
const showIndex = customLightShow.index;
|
|
701
764
|
const showName = customLightShow.name;
|
|
702
765
|
const customLightShowName = `${showName} - ${deviceName} - Custom Light`;
|
|
@@ -715,8 +778,8 @@ export class CyncAppPlatform {
|
|
|
715
778
|
customLightShowAccessory.context.showKind = 'custom-light';
|
|
716
779
|
configureCyncLightShowAccessory(this.accessoryEnv, mesh, device, customLightShowAccessory, customLightShowName, deviceId, customLightShow, 'custom-light', (showDeviceId, showIndex) => this.client.activateLightShow(showDeviceId, showIndex));
|
|
717
780
|
}
|
|
718
|
-
for (const customMultiColorScheme of (supportsSegmentedControl ||
|
|
719
|
-
?
|
|
781
|
+
for (const customMultiColorScheme of (supportsSegmentedControl || selectedMultiColorSchemes.length > 0)
|
|
782
|
+
? selectedMultiColorSchemes
|
|
720
783
|
: []) {
|
|
721
784
|
const schemeIndex = customMultiColorScheme.index;
|
|
722
785
|
const schemeName = customMultiColorScheme.name;
|
|
@@ -736,7 +799,7 @@ export class CyncAppPlatform {
|
|
|
736
799
|
customMultiColorSchemeAccessory.context.showKind = 'custom-multicolor';
|
|
737
800
|
configureCyncLightShowAccessory(this.accessoryEnv, mesh, device, customMultiColorSchemeAccessory, customMultiColorSchemeName, deviceId, customMultiColorScheme, 'custom-multicolor', (showDeviceId, showIndex) => this.client.activateMultiColorScheme(showDeviceId, showIndex));
|
|
738
801
|
}
|
|
739
|
-
for (const customMusicShow of supportsMusicShows ?
|
|
802
|
+
for (const customMusicShow of supportsMusicShows ? selectedCustomMusicShows : []) {
|
|
740
803
|
const showIndex = customMusicShow.index;
|
|
741
804
|
const showName = customMusicShow.name;
|
|
742
805
|
const customMusicShowName = `${showName} - ${deviceName} - Custom Music`;
|
|
@@ -756,29 +819,29 @@ export class CyncAppPlatform {
|
|
|
756
819
|
configureCyncMusicShowAccessory(this.accessoryEnv, mesh, device, customMusicShowAccessory, customMusicShowName, deviceId, customMusicShow, (showDeviceId, showIndex) => this.client.activateMusicShow(showDeviceId, showIndex));
|
|
757
820
|
}
|
|
758
821
|
}
|
|
759
|
-
const enabledLightShowIndexesForCleanup = this.shouldExposeLightShows() &&
|
|
822
|
+
const enabledLightShowIndexesForCleanup = this.shouldExposeLightShows(deviceId) &&
|
|
760
823
|
supportsLightShows
|
|
761
824
|
? new Set(lightShows.map((lightShow) => lightShow.index))
|
|
762
825
|
: new Set();
|
|
763
826
|
this.cleanupDisabledShowAccessoriesForDevice(String(mesh.id), deviceId, enabledLightShowIndexesForCleanup, 'built-in-light', 'cync-lightshow', 'light show');
|
|
764
|
-
const enabledMusicShowIndexesForCleanup = this.shouldExposeMusicShows() &&
|
|
827
|
+
const enabledMusicShowIndexesForCleanup = this.shouldExposeMusicShows(deviceId) &&
|
|
765
828
|
supportsMusicShows
|
|
766
829
|
? new Set(musicShows.map((musicShow) => musicShow.index))
|
|
767
830
|
: new Set();
|
|
768
831
|
this.cleanupDisabledShowAccessoriesForDevice(String(mesh.id), deviceId, enabledMusicShowIndexesForCleanup, 'built-in-music', 'cync-musicshow', 'music show');
|
|
769
|
-
const enabledCustomLightShowIndexesForCleanup = this.shouldExposeCustomShows() &&
|
|
832
|
+
const enabledCustomLightShowIndexesForCleanup = this.shouldExposeCustomShows(deviceId) &&
|
|
770
833
|
supportsLightShows
|
|
771
|
-
? new Set(
|
|
834
|
+
? new Set(selectedCustomLightShows.map((customLightShow) => customLightShow.index))
|
|
772
835
|
: new Set();
|
|
773
836
|
this.cleanupDisabledShowAccessoriesForDevice(String(mesh.id), deviceId, enabledCustomLightShowIndexesForCleanup, 'custom-light', 'cync-custom-lightshow', 'custom light show');
|
|
774
|
-
const enabledCustomMultiColorIndexesForCleanup = this.shouldExposeCustomShows() &&
|
|
775
|
-
(supportsSegmentedControl ||
|
|
776
|
-
? new Set(
|
|
837
|
+
const enabledCustomMultiColorIndexesForCleanup = this.shouldExposeCustomShows(deviceId) &&
|
|
838
|
+
(supportsSegmentedControl || selectedMultiColorSchemes.length > 0)
|
|
839
|
+
? new Set(selectedMultiColorSchemes.map((scheme) => scheme.index))
|
|
777
840
|
: new Set();
|
|
778
841
|
this.cleanupDisabledShowAccessoriesForDevice(String(mesh.id), deviceId, enabledCustomMultiColorIndexesForCleanup, 'custom-multicolor', 'cync-custom-multicolor', 'custom MultiColor scheme');
|
|
779
|
-
const enabledCustomMusicShowIndexesForCleanup = this.shouldExposeCustomShows() &&
|
|
842
|
+
const enabledCustomMusicShowIndexesForCleanup = this.shouldExposeCustomShows(deviceId) &&
|
|
780
843
|
supportsMusicShows
|
|
781
|
-
? new Set(
|
|
844
|
+
? new Set(selectedCustomMusicShows.map((customMusicShow) => customMusicShow.index))
|
|
782
845
|
: new Set();
|
|
783
846
|
this.cleanupDisabledShowAccessoriesForDevice(String(mesh.id), deviceId, enabledCustomMusicShowIndexesForCleanup, 'custom-music', 'cync-custom-musicshow', 'custom music show');
|
|
784
847
|
}
|
package/dist/platform.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -51,50 +51,15 @@
|
|
|
51
51
|
|
|
52
52
|
<div class="card mb-3">
|
|
53
53
|
<div class="card-body">
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
<input type="checkbox" id="cyncExposeCustomShows" class="form-check-input">
|
|
58
|
-
<label for="cyncExposeCustomShows" class="form-check-label">
|
|
59
|
-
Expose saved Custom Shows as HomeKit switches
|
|
60
|
-
</label>
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
<p class="text-muted mt-2">
|
|
64
|
-
Saved Custom Shows created in the Cync app can be exposed as separate HomeKit switches.
|
|
65
|
-
</p>
|
|
66
|
-
<div class="form-check">
|
|
67
|
-
<input type="checkbox" id="cyncExposeLightShows" class="form-check-input">
|
|
68
|
-
<label for="cyncExposeLightShows" class="form-check-label">
|
|
69
|
-
Expose built-in Light Shows as HomeKit switches
|
|
70
|
-
</label>
|
|
54
|
+
<div class="d-flex justify-content-between align-items-center gap-2">
|
|
55
|
+
<h5 class="card-title mb-0">Shows by Device</h5>
|
|
56
|
+
<button id="cyncRefreshDevicesBtn" class="btn btn-sm btn-outline-secondary">Refresh Devices</button>
|
|
71
57
|
</div>
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Supported RGBIC devices can expose selected built-in Cync Light Shows as separate HomeKit switches.
|
|
58
|
+
<p class="text-muted mt-2 mb-3">
|
|
59
|
+
Choose exactly which show switches each compatible Cync device exposes to HomeKit.
|
|
75
60
|
</p>
|
|
76
|
-
|
|
77
|
-
<
|
|
78
|
-
<summary>Choose Light Shows to expose</summary>
|
|
79
|
-
|
|
80
|
-
<div id="cyncLightShowChoices" class="mt-3"></div>
|
|
81
|
-
</details>
|
|
82
|
-
<div class="form-check mt-3">
|
|
83
|
-
<input type="checkbox" id="cyncExposeMusicShows" class="form-check-input">
|
|
84
|
-
<label for="cyncExposeMusicShows" class="form-check-label">
|
|
85
|
-
Expose built-in Music Shows as HomeKit switches
|
|
86
|
-
</label>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<p class="text-muted mt-2">
|
|
90
|
-
Supported RGBIC devices can expose selected built-in Cync Music Shows as separate HomeKit switches.
|
|
91
|
-
</p>
|
|
92
|
-
|
|
93
|
-
<details class="mt-3">
|
|
94
|
-
<summary>Choose Music Shows to expose</summary>
|
|
95
|
-
|
|
96
|
-
<div id="cyncMusicShowChoices" class="mt-3"></div>
|
|
97
|
-
</details>
|
|
61
|
+
<div id="cyncDeviceShowsStatus" class="text-muted">Loading compatible devices…</div>
|
|
62
|
+
<div id="cyncDeviceShows"></div>
|
|
98
63
|
</div>
|
|
99
64
|
</div>
|
|
100
65
|
|
|
@@ -107,8 +72,9 @@ homebridge.addEventListener('ready', async () => {
|
|
|
107
72
|
const signOutBtn = document.getElementById('cyncSignOutBtn');
|
|
108
73
|
const statusEl = document.getElementById('cyncStatus');
|
|
109
74
|
|
|
110
|
-
const
|
|
111
|
-
const
|
|
75
|
+
const deviceShowsEl = document.getElementById('cyncDeviceShows');
|
|
76
|
+
const deviceShowsStatusEl = document.getElementById('cyncDeviceShowsStatus');
|
|
77
|
+
const refreshDevicesBtn = document.getElementById('cyncRefreshDevicesBtn');
|
|
112
78
|
const BUILT_IN_CYNC_LIGHT_SHOWS = [
|
|
113
79
|
{ index: 1, name: 'Candle' },
|
|
114
80
|
{ index: 2, name: 'Rainbow' },
|
|
@@ -123,8 +89,6 @@ homebridge.addEventListener('ready', async () => {
|
|
|
123
89
|
{ index: 67, name: 'Cyber' },
|
|
124
90
|
];
|
|
125
91
|
|
|
126
|
-
const exposeMusicShowsInput = document.getElementById('cyncExposeMusicShows');
|
|
127
|
-
const musicShowChoicesEl = document.getElementById('cyncMusicShowChoices');
|
|
128
92
|
const BUILT_IN_CYNC_MUSIC_SHOWS = [
|
|
129
93
|
{ index: 1, name: 'Midnight' },
|
|
130
94
|
{ index: 2, name: 'Earth Tones' },
|
|
@@ -139,87 +103,81 @@ homebridge.addEventListener('ready', async () => {
|
|
|
139
103
|
let pluginConfig = await homebridge.getPluginConfig();
|
|
140
104
|
let cfg = pluginConfig[0] || {};
|
|
141
105
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
for (const show of BUILT_IN_CYNC_LIGHT_SHOWS) {
|
|
162
|
-
const wrapper = document.createElement('div');
|
|
163
|
-
wrapper.className = 'form-check';
|
|
164
|
-
|
|
165
|
-
const input = document.createElement('input');
|
|
166
|
-
input.type = 'checkbox';
|
|
167
|
-
input.className = 'form-check-input';
|
|
168
|
-
input.id = `cyncLightShow${show.index}`;
|
|
169
|
-
input.value = String(show.index);
|
|
170
|
-
input.checked = enabledLightShowIndexes.includes(show.index);
|
|
171
|
-
|
|
172
|
-
const label = document.createElement('label');
|
|
173
|
-
label.className = 'form-check-label';
|
|
174
|
-
label.htmlFor = input.id;
|
|
175
|
-
label.textContent = show.name;
|
|
176
|
-
|
|
177
|
-
input.addEventListener('change', async () => {
|
|
178
|
-
const selected = Array.from(
|
|
179
|
-
lightShowChoicesEl.querySelectorAll('input[type="checkbox"]:checked'),
|
|
180
|
-
).map((checkedInput) => Number(checkedInput.value));
|
|
181
|
-
|
|
182
|
-
await updateConfig({
|
|
183
|
-
enabledLightShowIndexes: selected,
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
statusEl.textContent = 'Light Show selection updated. Click Save.';
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
wrapper.appendChild(input);
|
|
190
|
-
wrapper.appendChild(label);
|
|
191
|
-
lightShowChoicesEl.appendChild(wrapper);
|
|
192
|
-
}
|
|
106
|
+
function legacyDeviceConfig(device) {
|
|
107
|
+
return {
|
|
108
|
+
deviceId: device.deviceId,
|
|
109
|
+
lightShowIndexes: cfg.exposeLightShows === true
|
|
110
|
+
? (Array.isArray(cfg.enabledLightShowIndexes)
|
|
111
|
+
? cfg.enabledLightShowIndexes.map(Number) : BUILT_IN_CYNC_LIGHT_SHOWS.map(show => show.index))
|
|
112
|
+
: [],
|
|
113
|
+
musicShowIndexes: cfg.exposeMusicShows === true
|
|
114
|
+
? (Array.isArray(cfg.enabledMusicShowIndexes)
|
|
115
|
+
? cfg.enabledMusicShowIndexes.map(Number) : BUILT_IN_CYNC_MUSIC_SHOWS.map(show => show.index))
|
|
116
|
+
: [],
|
|
117
|
+
customLightShowIndexes: cfg.exposeCustomShows === true
|
|
118
|
+
? device.customLightShows.map(show => show.index) : [],
|
|
119
|
+
customMusicShowIndexes: cfg.exposeCustomShows === true
|
|
120
|
+
? device.customMusicShows.map(show => show.index) : [],
|
|
121
|
+
multiColorSchemeIndexes: cfg.exposeCustomShows === true
|
|
122
|
+
? device.multiColorSchemes.map(show => show.index) : [],
|
|
123
|
+
};
|
|
193
124
|
}
|
|
194
125
|
|
|
195
|
-
|
|
126
|
+
function getDeviceConfig(device) {
|
|
127
|
+
const existing = Array.isArray(cfg.deviceShowConfigs)
|
|
128
|
+
? cfg.deviceShowConfigs.find(entry => String(entry.deviceId) === device.deviceId)
|
|
129
|
+
: null;
|
|
130
|
+
return existing || legacyDeviceConfig(device);
|
|
131
|
+
}
|
|
196
132
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
133
|
+
async function saveDeviceSelection(deviceId, key, indexes) {
|
|
134
|
+
const configs = Array.isArray(cfg.deviceShowConfigs) ? [...cfg.deviceShowConfigs] : [];
|
|
135
|
+
const index = configs.findIndex(entry => String(entry.deviceId) === deviceId);
|
|
136
|
+
const current = index >= 0 ? configs[index] : {
|
|
137
|
+
deviceId,
|
|
138
|
+
lightShowIndexes: [],
|
|
139
|
+
musicShowIndexes: [],
|
|
140
|
+
customLightShowIndexes: [],
|
|
141
|
+
customMusicShowIndexes: [],
|
|
142
|
+
multiColorSchemeIndexes: [],
|
|
143
|
+
};
|
|
144
|
+
const next = { ...current, deviceId, [key]: indexes };
|
|
145
|
+
if (index >= 0) {
|
|
146
|
+
configs[index] = next;
|
|
147
|
+
} else {
|
|
148
|
+
configs.push(next);
|
|
149
|
+
}
|
|
203
150
|
|
|
204
|
-
|
|
151
|
+
cfg = { ...cfg, deviceShowConfigs: configs };
|
|
152
|
+
delete cfg.exposeCustomShows;
|
|
153
|
+
delete cfg.exposeLightShows;
|
|
154
|
+
delete cfg.enabledLightShowIndexes;
|
|
155
|
+
delete cfg.exposeMusicShows;
|
|
156
|
+
delete cfg.enabledMusicShowIndexes;
|
|
157
|
+
pluginConfig = [cfg];
|
|
158
|
+
await homebridge.updatePluginConfig(pluginConfig);
|
|
159
|
+
statusEl.textContent = 'Device show selection updated. Click Save.';
|
|
160
|
+
}
|
|
205
161
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
162
|
+
function addShowGroup(container, device, title, key, shows, selectedIndexes) {
|
|
163
|
+
if (!shows.length) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
209
166
|
|
|
210
|
-
|
|
211
|
-
|
|
167
|
+
const heading = document.createElement('div');
|
|
168
|
+
heading.className = 'fw-semibold mt-3 mb-1';
|
|
169
|
+
heading.textContent = title;
|
|
170
|
+
container.appendChild(heading);
|
|
212
171
|
|
|
213
|
-
for (const show of
|
|
172
|
+
for (const show of shows) {
|
|
214
173
|
const wrapper = document.createElement('div');
|
|
215
174
|
wrapper.className = 'form-check';
|
|
216
|
-
|
|
217
175
|
const input = document.createElement('input');
|
|
218
176
|
input.type = 'checkbox';
|
|
219
177
|
input.className = 'form-check-input';
|
|
220
|
-
input.id = `
|
|
178
|
+
input.id = `cync-${device.deviceId}-${key}-${show.index}`;
|
|
221
179
|
input.value = String(show.index);
|
|
222
|
-
input.checked =
|
|
180
|
+
input.checked = selectedIndexes.includes(show.index);
|
|
223
181
|
|
|
224
182
|
const label = document.createElement('label');
|
|
225
183
|
label.className = 'form-check-label';
|
|
@@ -227,31 +185,89 @@ homebridge.addEventListener('ready', async () => {
|
|
|
227
185
|
label.textContent = show.name;
|
|
228
186
|
|
|
229
187
|
input.addEventListener('change', async () => {
|
|
230
|
-
const selected = Array.from(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
await updateConfig({
|
|
235
|
-
enabledMusicShowIndexes: selected,
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
statusEl.textContent = 'Music Show selection updated. Click Save.';
|
|
188
|
+
const selected = Array.from(container.querySelectorAll(`input[data-config-key="${key}"]:checked`))
|
|
189
|
+
.map(checked => Number(checked.value));
|
|
190
|
+
await saveDeviceSelection(device.deviceId, key, selected);
|
|
239
191
|
});
|
|
192
|
+
input.dataset.configKey = key;
|
|
193
|
+
wrapper.append(input, label);
|
|
194
|
+
container.appendChild(wrapper);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
240
197
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
198
|
+
function renderDevices(devices) {
|
|
199
|
+
deviceShowsEl.innerHTML = '';
|
|
200
|
+
deviceShowsStatusEl.textContent = devices.length
|
|
201
|
+
? `${devices.length} compatible device${devices.length === 1 ? '' : 's'} found.`
|
|
202
|
+
: 'No show-compatible Cync devices were found.';
|
|
203
|
+
|
|
204
|
+
for (const device of devices) {
|
|
205
|
+
const config = getDeviceConfig(device);
|
|
206
|
+
const details = document.createElement('details');
|
|
207
|
+
details.className = 'border rounded p-3 mt-3';
|
|
208
|
+
const summary = document.createElement('summary');
|
|
209
|
+
summary.className = 'fw-semibold';
|
|
210
|
+
summary.textContent = device.name;
|
|
211
|
+
details.appendChild(summary);
|
|
212
|
+
|
|
213
|
+
addShowGroup(details, device, 'Light Shows', 'lightShowIndexes',
|
|
214
|
+
BUILT_IN_CYNC_LIGHT_SHOWS, config.lightShowIndexes || []);
|
|
215
|
+
if (device.supportsMusicShows) {
|
|
216
|
+
addShowGroup(details, device, 'Music Shows', 'musicShowIndexes',
|
|
217
|
+
BUILT_IN_CYNC_MUSIC_SHOWS, config.musicShowIndexes || []);
|
|
218
|
+
}
|
|
219
|
+
addShowGroup(details, device, 'Saved Light Shows', 'customLightShowIndexes',
|
|
220
|
+
device.customLightShows, config.customLightShowIndexes || []);
|
|
221
|
+
addShowGroup(details, device, 'Saved Music Shows', 'customMusicShowIndexes',
|
|
222
|
+
device.customMusicShows, config.customMusicShowIndexes || []);
|
|
223
|
+
addShowGroup(details, device, 'Saved Segment Scenes', 'multiColorSchemeIndexes',
|
|
224
|
+
device.multiColorSchemes, config.multiColorSchemeIndexes || []);
|
|
225
|
+
deviceShowsEl.appendChild(details);
|
|
244
226
|
}
|
|
245
227
|
}
|
|
246
228
|
|
|
247
|
-
|
|
229
|
+
async function loadDevices() {
|
|
230
|
+
refreshDevicesBtn.disabled = true;
|
|
231
|
+
deviceShowsStatusEl.textContent = 'Loading compatible devices…';
|
|
232
|
+
try {
|
|
233
|
+
const response = await homebridge.request('/devices');
|
|
234
|
+
if (!response?.ok) {
|
|
235
|
+
throw new Error(response?.error || 'Unable to load Cync devices.');
|
|
236
|
+
}
|
|
237
|
+
const hasLegacyShowConfig = [
|
|
238
|
+
'exposeCustomShows',
|
|
239
|
+
'exposeLightShows',
|
|
240
|
+
'enabledLightShowIndexes',
|
|
241
|
+
'exposeMusicShows',
|
|
242
|
+
'enabledMusicShowIndexes',
|
|
243
|
+
].some(key => Object.prototype.hasOwnProperty.call(cfg, key));
|
|
244
|
+
if (
|
|
245
|
+
!Array.isArray(cfg.deviceShowConfigs) ||
|
|
246
|
+
(cfg.deviceShowConfigs.length === 0 && hasLegacyShowConfig)
|
|
247
|
+
) {
|
|
248
|
+
cfg = {
|
|
249
|
+
...cfg,
|
|
250
|
+
deviceShowConfigs: (response.devices || []).map(legacyDeviceConfig),
|
|
251
|
+
};
|
|
252
|
+
delete cfg.exposeCustomShows;
|
|
253
|
+
delete cfg.exposeLightShows;
|
|
254
|
+
delete cfg.enabledLightShowIndexes;
|
|
255
|
+
delete cfg.exposeMusicShows;
|
|
256
|
+
delete cfg.enabledMusicShowIndexes;
|
|
257
|
+
pluginConfig = [cfg];
|
|
258
|
+
await homebridge.updatePluginConfig(pluginConfig);
|
|
259
|
+
statusEl.textContent = 'Show settings migrated by device. Click Save.';
|
|
260
|
+
}
|
|
261
|
+
renderDevices(response.devices || []);
|
|
262
|
+
} catch (error) {
|
|
263
|
+
deviceShowsStatusEl.textContent = error?.message || 'Unable to load Cync devices.';
|
|
264
|
+
deviceShowsEl.innerHTML = '';
|
|
265
|
+
} finally {
|
|
266
|
+
refreshDevicesBtn.disabled = false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
248
269
|
|
|
249
|
-
|
|
250
|
-
await updateConfig({
|
|
251
|
-
exposeMusicShows: exposeMusicShowsInput.checked,
|
|
252
|
-
});
|
|
253
|
-
statusEl.textContent = 'Setting updated. Click Save.';
|
|
254
|
-
});
|
|
270
|
+
refreshDevicesBtn.addEventListener('click', loadDevices);
|
|
255
271
|
|
|
256
272
|
// Helper to update in-memory pluginConfig (persisted when user clicks Save in HB)
|
|
257
273
|
async function updateConfig(partial) {
|
|
@@ -284,6 +300,8 @@ homebridge.addEventListener('ready', async () => {
|
|
|
284
300
|
console.error('[cync-ui] /status request failed:', e);
|
|
285
301
|
}
|
|
286
302
|
|
|
303
|
+
await loadDevices();
|
|
304
|
+
|
|
287
305
|
// Request OTP email via server.js
|
|
288
306
|
requestOtpBtn.addEventListener('click', async () => {
|
|
289
307
|
const email = emailInput.value.trim();
|
|
@@ -355,6 +373,7 @@ homebridge.addEventListener('ready', async () => {
|
|
|
355
373
|
username: '',
|
|
356
374
|
password: '',
|
|
357
375
|
twoFactor: '',
|
|
376
|
+
deviceShowConfigs: [],
|
|
358
377
|
});
|
|
359
378
|
|
|
360
379
|
setLockedState(false);
|
package/homebridge-ui/server.js
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
import { HomebridgePluginUiServer } from '@homebridge/plugin-ui-utils';
|
|
3
3
|
import { ConfigClient } from '../dist/cync/config-client.js';
|
|
4
4
|
import { CyncTokenStore } from '../dist/cync/token-store.js';
|
|
5
|
+
import { getCyncApkDeviceProfile } from '../dist/cync/device-capabilities.js';
|
|
6
|
+
|
|
7
|
+
function asShowList(value, crcMap) {
|
|
8
|
+
if (!Array.isArray(value)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return value
|
|
13
|
+
.filter(show =>
|
|
14
|
+
show &&
|
|
15
|
+
typeof show.index === 'number' &&
|
|
16
|
+
typeof show.name === 'string' &&
|
|
17
|
+
typeof crcMap[String(show.index)] === 'number',
|
|
18
|
+
)
|
|
19
|
+
.map(show => ({ index: show.index, name: show.name }));
|
|
20
|
+
}
|
|
5
21
|
|
|
6
22
|
class CyncUiServer extends HomebridgePluginUiServer {
|
|
7
23
|
constructor() {
|
|
@@ -19,6 +35,7 @@ class CyncUiServer extends HomebridgePluginUiServer {
|
|
|
19
35
|
this.onRequest('/request-otp', this.handleRequestOtp.bind(this));
|
|
20
36
|
this.onRequest('/sign-out', this.handleSignOut.bind(this));
|
|
21
37
|
this.onRequest('/status', this.handleStatus.bind(this));
|
|
38
|
+
this.onRequest('/devices', this.handleDevices.bind(this));
|
|
22
39
|
|
|
23
40
|
this.ready();
|
|
24
41
|
}
|
|
@@ -57,6 +74,92 @@ class CyncUiServer extends HomebridgePluginUiServer {
|
|
|
57
74
|
return { ok: true, hasToken: false };
|
|
58
75
|
}
|
|
59
76
|
}
|
|
77
|
+
|
|
78
|
+
async restoreCloudSession() {
|
|
79
|
+
let token = await this.tokenStore.load();
|
|
80
|
+
if (!token) {
|
|
81
|
+
throw new Error('Sign in to Cync before loading devices.');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (
|
|
85
|
+
token.expiresAt &&
|
|
86
|
+
Date.now() >= token.expiresAt - 60_000 &&
|
|
87
|
+
token.refreshToken
|
|
88
|
+
) {
|
|
89
|
+
const refreshed = await this.configClient.refreshAccessToken(token.refreshToken);
|
|
90
|
+
token = {
|
|
91
|
+
...token,
|
|
92
|
+
accessToken: refreshed.accessToken,
|
|
93
|
+
refreshToken: refreshed.refreshToken ?? token.refreshToken,
|
|
94
|
+
expiresAt: refreshed.expiresAt ?? token.expiresAt,
|
|
95
|
+
};
|
|
96
|
+
await this.tokenStore.save(token);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
this.configClient.restoreSession(token.accessToken, token.userId);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async handleDevices() {
|
|
103
|
+
try {
|
|
104
|
+
await this.restoreCloudSession();
|
|
105
|
+
const cloudConfig = await this.configClient.getCloudConfig();
|
|
106
|
+
const devices = [];
|
|
107
|
+
|
|
108
|
+
for (const mesh of cloudConfig.meshes) {
|
|
109
|
+
let properties;
|
|
110
|
+
try {
|
|
111
|
+
properties = await this.configClient.getDeviceProperties(
|
|
112
|
+
String(mesh.product_id),
|
|
113
|
+
String(mesh.id),
|
|
114
|
+
);
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.warn('[cync-ui-config] Unable to inspect mesh %s: %s', mesh.id, error?.message ?? error);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const lightShows = properties.lightShows;
|
|
121
|
+
const musicShows = properties.musicShows;
|
|
122
|
+
const multiColorSchemes = properties.multiColorSchemes;
|
|
123
|
+
const bulbs = Array.isArray(properties.bulbsArray) ? properties.bulbsArray : [];
|
|
124
|
+
|
|
125
|
+
for (const bulb of bulbs) {
|
|
126
|
+
const deviceId = bulb?.deviceID ?? bulb?.deviceId;
|
|
127
|
+
const deviceType = Number(bulb?.deviceType);
|
|
128
|
+
const profile = getCyncApkDeviceProfile(
|
|
129
|
+
Number.isFinite(deviceType) ? deviceType : undefined,
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
if (deviceId === undefined || profile?.supportsLightShows !== true) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const showCrcMap = bulb.savedLightShowsCrcMap ??
|
|
137
|
+
bulb.savedShowCrcMap ?? bulb.savedShowsCrcMap ?? {};
|
|
138
|
+
const multiColorCrcMap = bulb.savedMultiColorSchemesCrcMap ??
|
|
139
|
+
bulb.savedMultiColorSchemes ?? bulb.savedMulticolorSchemes ??
|
|
140
|
+
bulb.multiColorSchemeCrcMap ?? bulb.schemeCrcMap ?? {};
|
|
141
|
+
|
|
142
|
+
devices.push({
|
|
143
|
+
deviceId: String(deviceId),
|
|
144
|
+
name: typeof bulb.displayName === 'string' ? bulb.displayName : `Cync ${deviceId}`,
|
|
145
|
+
deviceType: Number.isFinite(deviceType) ? deviceType : null,
|
|
146
|
+
supportsLightShows: profile.supportsLightShows,
|
|
147
|
+
supportsMusicShows: profile.supportsMusicShows,
|
|
148
|
+
supportsSegmentedControl: profile.supportsSegmentedControl,
|
|
149
|
+
customLightShows: asShowList(lightShows, showCrcMap),
|
|
150
|
+
customMusicShows: asShowList(musicShows, showCrcMap),
|
|
151
|
+
multiColorSchemes: asShowList(multiColorSchemes, multiColorCrcMap),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
devices.sort((a, b) => a.name.localeCompare(b.name));
|
|
157
|
+
return { ok: true, devices };
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error('[cync-ui-config] Device discovery failed:', error);
|
|
160
|
+
return { ok: false, error: error?.message ?? String(error), devices: [] };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
60
163
|
}
|
|
61
164
|
|
|
62
165
|
(() => new CyncUiServer())();
|
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.6.
|
|
5
|
+
"version": "0.6.1",
|
|
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",
|
package/src/platform.ts
CHANGED
|
@@ -66,6 +66,15 @@ interface ResolvedPlatformDevice {
|
|
|
66
66
|
classification: CyncDeviceClassification;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
interface CyncDeviceShowConfig {
|
|
70
|
+
deviceId: string;
|
|
71
|
+
lightShowIndexes: number[];
|
|
72
|
+
musicShowIndexes: number[];
|
|
73
|
+
customLightShowIndexes: number[];
|
|
74
|
+
customMusicShowIndexes: number[];
|
|
75
|
+
multiColorSchemeIndexes: number[];
|
|
76
|
+
}
|
|
77
|
+
|
|
69
78
|
function getDefaultCapabilitiesForDeviceType(deviceType?: number): CyncCapabilityProfile {
|
|
70
79
|
const apkProfile = getCyncApkDeviceProfile(deviceType);
|
|
71
80
|
const isLight = apkProfile?.accessoryType === 'light';
|
|
@@ -146,7 +155,50 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
146
155
|
this.markActiveMusicShowForDevice(deviceId, null);
|
|
147
156
|
}
|
|
148
157
|
|
|
149
|
-
private
|
|
158
|
+
private getDeviceShowConfig(deviceId: string): CyncDeviceShowConfig | null {
|
|
159
|
+
const raw = this.config as Record<string, unknown>;
|
|
160
|
+
if (!Array.isArray(raw.deviceShowConfigs)) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
const hasLegacyShowConfig =
|
|
164
|
+
'exposeCustomShows' in raw ||
|
|
165
|
+
'exposeLightShows' in raw ||
|
|
166
|
+
'enabledLightShowIndexes' in raw ||
|
|
167
|
+
'exposeMusicShows' in raw ||
|
|
168
|
+
'enabledMusicShowIndexes' in raw;
|
|
169
|
+
if (raw.deviceShowConfigs.length === 0 && hasLegacyShowConfig) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const entry = raw.deviceShowConfigs.find((value) => {
|
|
174
|
+
if (!value || typeof value !== 'object') {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
return String((value as Record<string, unknown>).deviceId ?? '') === deviceId;
|
|
178
|
+
}) as Record<string, unknown> | undefined;
|
|
179
|
+
|
|
180
|
+
const indexes = (key: string): number[] => Array.isArray(entry?.[key])
|
|
181
|
+
? (entry[key] as unknown[]).map(Number).filter(Number.isFinite)
|
|
182
|
+
: [];
|
|
183
|
+
|
|
184
|
+
return {
|
|
185
|
+
deviceId,
|
|
186
|
+
lightShowIndexes: indexes('lightShowIndexes'),
|
|
187
|
+
musicShowIndexes: indexes('musicShowIndexes'),
|
|
188
|
+
customLightShowIndexes: indexes('customLightShowIndexes'),
|
|
189
|
+
customMusicShowIndexes: indexes('customMusicShowIndexes'),
|
|
190
|
+
multiColorSchemeIndexes: indexes('multiColorSchemeIndexes'),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
private shouldExposeCustomShows(deviceId: string): boolean {
|
|
195
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
196
|
+
if (deviceConfig) {
|
|
197
|
+
return deviceConfig.customLightShowIndexes.length > 0 ||
|
|
198
|
+
deviceConfig.customMusicShowIndexes.length > 0 ||
|
|
199
|
+
deviceConfig.multiColorSchemeIndexes.length > 0;
|
|
200
|
+
}
|
|
201
|
+
|
|
150
202
|
const raw = this.config as Record<string, unknown>;
|
|
151
203
|
return raw.exposeCustomShows === true;
|
|
152
204
|
}
|
|
@@ -206,12 +258,22 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
206
258
|
showKind: CyncLightShowKind;
|
|
207
259
|
}>>();
|
|
208
260
|
|
|
209
|
-
private shouldExposeLightShows(): boolean {
|
|
261
|
+
private shouldExposeLightShows(deviceId: string): boolean {
|
|
262
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
263
|
+
if (deviceConfig) {
|
|
264
|
+
return deviceConfig.lightShowIndexes.length > 0;
|
|
265
|
+
}
|
|
266
|
+
|
|
210
267
|
const raw = this.config as Record<string, unknown>;
|
|
211
268
|
return raw.exposeLightShows === true;
|
|
212
269
|
}
|
|
213
270
|
|
|
214
|
-
private getEnabledLightShowIndexes(): Set<number> | null {
|
|
271
|
+
private getEnabledLightShowIndexes(deviceId: string): Set<number> | null {
|
|
272
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
273
|
+
if (deviceConfig) {
|
|
274
|
+
return new Set(deviceConfig.lightShowIndexes);
|
|
275
|
+
}
|
|
276
|
+
|
|
215
277
|
const raw = this.config as Record<string, unknown>;
|
|
216
278
|
const value = raw.enabledLightShowIndexes;
|
|
217
279
|
|
|
@@ -226,12 +288,22 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
226
288
|
);
|
|
227
289
|
}
|
|
228
290
|
|
|
229
|
-
private shouldExposeMusicShows(): boolean {
|
|
291
|
+
private shouldExposeMusicShows(deviceId: string): boolean {
|
|
292
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
293
|
+
if (deviceConfig) {
|
|
294
|
+
return deviceConfig.musicShowIndexes.length > 0;
|
|
295
|
+
}
|
|
296
|
+
|
|
230
297
|
const raw = this.config as Record<string, unknown>;
|
|
231
298
|
return raw.exposeMusicShows === true;
|
|
232
299
|
}
|
|
233
300
|
|
|
234
|
-
private getEnabledMusicShowIndexes(): Set<number> | null {
|
|
301
|
+
private getEnabledMusicShowIndexes(deviceId: string): Set<number> | null {
|
|
302
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
303
|
+
if (deviceConfig) {
|
|
304
|
+
return new Set(deviceConfig.musicShowIndexes);
|
|
305
|
+
}
|
|
306
|
+
|
|
235
307
|
const raw = this.config as Record<string, unknown>;
|
|
236
308
|
const value = raw.enabledMusicShowIndexes;
|
|
237
309
|
|
|
@@ -246,6 +318,14 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
246
318
|
);
|
|
247
319
|
}
|
|
248
320
|
|
|
321
|
+
private getEnabledCustomShowIndexes(
|
|
322
|
+
deviceId: string,
|
|
323
|
+
kind: 'customLightShowIndexes' | 'customMusicShowIndexes' | 'multiColorSchemeIndexes',
|
|
324
|
+
): Set<number> | null {
|
|
325
|
+
const deviceConfig = this.getDeviceShowConfig(deviceId);
|
|
326
|
+
return deviceConfig ? new Set(deviceConfig[kind]) : null;
|
|
327
|
+
}
|
|
328
|
+
|
|
249
329
|
private markDeviceSeen(deviceId: string): void {
|
|
250
330
|
this.deviceLastSeen.set(deviceId, Date.now());
|
|
251
331
|
}
|
|
@@ -1064,7 +1144,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1064
1144
|
this.log.debug(
|
|
1065
1145
|
'Cync custom show discovery for %s: expose=%s light=%d multiColor=%d music=%d showCrcKeys=%s multiColorCrcKeys=%s',
|
|
1066
1146
|
deviceName,
|
|
1067
|
-
String(this.shouldExposeCustomShows()),
|
|
1147
|
+
String(this.shouldExposeCustomShows(deviceId)),
|
|
1068
1148
|
customLightShows.length,
|
|
1069
1149
|
customMultiColorSchemes.length,
|
|
1070
1150
|
customMusicShows.length,
|
|
@@ -1072,7 +1152,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1072
1152
|
JSON.stringify(Object.keys(savedMultiColorSchemesCrcMap)),
|
|
1073
1153
|
);
|
|
1074
1154
|
|
|
1075
|
-
const enabledLightShowIndexes = this.getEnabledLightShowIndexes();
|
|
1155
|
+
const enabledLightShowIndexes = this.getEnabledLightShowIndexes(deviceId);
|
|
1076
1156
|
|
|
1077
1157
|
const lightShows = BUILT_IN_CYNC_LIGHT_SHOWS.filter(
|
|
1078
1158
|
lightShow =>
|
|
@@ -1081,7 +1161,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1081
1161
|
);
|
|
1082
1162
|
|
|
1083
1163
|
if (
|
|
1084
|
-
this.shouldExposeLightShows() &&
|
|
1164
|
+
this.shouldExposeLightShows(deviceId) &&
|
|
1085
1165
|
supportsLightShows
|
|
1086
1166
|
) {
|
|
1087
1167
|
for (const lightShow of lightShows) {
|
|
@@ -1142,7 +1222,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1142
1222
|
}
|
|
1143
1223
|
}
|
|
1144
1224
|
|
|
1145
|
-
const enabledMusicShowIndexes = this.getEnabledMusicShowIndexes();
|
|
1225
|
+
const enabledMusicShowIndexes = this.getEnabledMusicShowIndexes(deviceId);
|
|
1146
1226
|
|
|
1147
1227
|
const musicShows = BUILT_IN_CYNC_MUSIC_SHOWS.filter(
|
|
1148
1228
|
musicShow =>
|
|
@@ -1151,7 +1231,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1151
1231
|
);
|
|
1152
1232
|
|
|
1153
1233
|
if (
|
|
1154
|
-
this.shouldExposeMusicShows() &&
|
|
1234
|
+
this.shouldExposeMusicShows(deviceId) &&
|
|
1155
1235
|
supportsMusicShows
|
|
1156
1236
|
) {
|
|
1157
1237
|
for (const musicShow of musicShows) {
|
|
@@ -1211,11 +1291,34 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1211
1291
|
}
|
|
1212
1292
|
}
|
|
1213
1293
|
|
|
1294
|
+
const enabledCustomLightShowIndexes = this.getEnabledCustomShowIndexes(
|
|
1295
|
+
deviceId,
|
|
1296
|
+
'customLightShowIndexes',
|
|
1297
|
+
);
|
|
1298
|
+
const enabledMultiColorSchemeIndexes = this.getEnabledCustomShowIndexes(
|
|
1299
|
+
deviceId,
|
|
1300
|
+
'multiColorSchemeIndexes',
|
|
1301
|
+
);
|
|
1302
|
+
const enabledCustomMusicShowIndexes = this.getEnabledCustomShowIndexes(
|
|
1303
|
+
deviceId,
|
|
1304
|
+
'customMusicShowIndexes',
|
|
1305
|
+
);
|
|
1306
|
+
|
|
1307
|
+
const selectedCustomLightShows = customLightShows.filter(show =>
|
|
1308
|
+
enabledCustomLightShowIndexes === null || enabledCustomLightShowIndexes.has(show.index),
|
|
1309
|
+
);
|
|
1310
|
+
const selectedMultiColorSchemes = customMultiColorSchemes.filter(scheme =>
|
|
1311
|
+
enabledMultiColorSchemeIndexes === null || enabledMultiColorSchemeIndexes.has(scheme.index),
|
|
1312
|
+
);
|
|
1313
|
+
const selectedCustomMusicShows = customMusicShows.filter(show =>
|
|
1314
|
+
enabledCustomMusicShowIndexes === null || enabledCustomMusicShowIndexes.has(show.index),
|
|
1315
|
+
);
|
|
1316
|
+
|
|
1214
1317
|
if (
|
|
1215
|
-
this.shouldExposeCustomShows() &&
|
|
1318
|
+
this.shouldExposeCustomShows(deviceId) &&
|
|
1216
1319
|
supportsLightShows
|
|
1217
1320
|
) {
|
|
1218
|
-
for (const customLightShow of
|
|
1321
|
+
for (const customLightShow of selectedCustomLightShows) {
|
|
1219
1322
|
const showIndex = customLightShow.index;
|
|
1220
1323
|
const showName = customLightShow.name;
|
|
1221
1324
|
|
|
@@ -1263,8 +1366,8 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1263
1366
|
|
|
1264
1367
|
for (
|
|
1265
1368
|
const customMultiColorScheme of
|
|
1266
|
-
(supportsSegmentedControl ||
|
|
1267
|
-
?
|
|
1369
|
+
(supportsSegmentedControl || selectedMultiColorSchemes.length > 0)
|
|
1370
|
+
? selectedMultiColorSchemes
|
|
1268
1371
|
: []
|
|
1269
1372
|
) {
|
|
1270
1373
|
const schemeIndex = customMultiColorScheme.index;
|
|
@@ -1311,7 +1414,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1311
1414
|
);
|
|
1312
1415
|
}
|
|
1313
1416
|
|
|
1314
|
-
for (const customMusicShow of supportsMusicShows ?
|
|
1417
|
+
for (const customMusicShow of supportsMusicShows ? selectedCustomMusicShows : []) {
|
|
1315
1418
|
const showIndex = customMusicShow.index;
|
|
1316
1419
|
const showName = customMusicShow.name;
|
|
1317
1420
|
|
|
@@ -1357,7 +1460,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1357
1460
|
}
|
|
1358
1461
|
|
|
1359
1462
|
const enabledLightShowIndexesForCleanup =
|
|
1360
|
-
this.shouldExposeLightShows() &&
|
|
1463
|
+
this.shouldExposeLightShows(deviceId) &&
|
|
1361
1464
|
supportsLightShows
|
|
1362
1465
|
? new Set(lightShows.map((lightShow) => lightShow.index))
|
|
1363
1466
|
: new Set<number>();
|
|
@@ -1372,7 +1475,7 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1372
1475
|
);
|
|
1373
1476
|
|
|
1374
1477
|
const enabledMusicShowIndexesForCleanup =
|
|
1375
|
-
this.shouldExposeMusicShows() &&
|
|
1478
|
+
this.shouldExposeMusicShows(deviceId) &&
|
|
1376
1479
|
supportsMusicShows
|
|
1377
1480
|
? new Set(musicShows.map((musicShow) => musicShow.index))
|
|
1378
1481
|
: new Set<number>();
|
|
@@ -1387,9 +1490,9 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1387
1490
|
);
|
|
1388
1491
|
|
|
1389
1492
|
const enabledCustomLightShowIndexesForCleanup =
|
|
1390
|
-
this.shouldExposeCustomShows() &&
|
|
1493
|
+
this.shouldExposeCustomShows(deviceId) &&
|
|
1391
1494
|
supportsLightShows
|
|
1392
|
-
? new Set(
|
|
1495
|
+
? new Set(selectedCustomLightShows.map((customLightShow) => customLightShow.index))
|
|
1393
1496
|
: new Set<number>();
|
|
1394
1497
|
|
|
1395
1498
|
this.cleanupDisabledShowAccessoriesForDevice(
|
|
@@ -1402,9 +1505,9 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1402
1505
|
);
|
|
1403
1506
|
|
|
1404
1507
|
const enabledCustomMultiColorIndexesForCleanup =
|
|
1405
|
-
this.shouldExposeCustomShows() &&
|
|
1406
|
-
(supportsSegmentedControl ||
|
|
1407
|
-
? new Set(
|
|
1508
|
+
this.shouldExposeCustomShows(deviceId) &&
|
|
1509
|
+
(supportsSegmentedControl || selectedMultiColorSchemes.length > 0)
|
|
1510
|
+
? new Set(selectedMultiColorSchemes.map((scheme) => scheme.index))
|
|
1408
1511
|
: new Set<number>();
|
|
1409
1512
|
|
|
1410
1513
|
this.cleanupDisabledShowAccessoriesForDevice(
|
|
@@ -1417,9 +1520,9 @@ export class CyncAppPlatform implements DynamicPlatformPlugin {
|
|
|
1417
1520
|
);
|
|
1418
1521
|
|
|
1419
1522
|
const enabledCustomMusicShowIndexesForCleanup =
|
|
1420
|
-
this.shouldExposeCustomShows() &&
|
|
1523
|
+
this.shouldExposeCustomShows(deviceId) &&
|
|
1421
1524
|
supportsMusicShows
|
|
1422
|
-
? new Set(
|
|
1525
|
+
? new Set(selectedCustomMusicShows.map((customMusicShow) => customMusicShow.index))
|
|
1423
1526
|
: new Set<number>();
|
|
1424
1527
|
|
|
1425
1528
|
this.cleanupDisabledShowAccessoriesForDevice(
|