homebridge-nanoleaf-multi 5.0.0 → 5.0.2
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/dist/Zone.d.ts +7 -5
- package/dist/Zone.js +32 -32
- package/dist/Zone.js.map +1 -1
- package/dist/accessories/ZoneEffectAccessory.d.ts +0 -2
- package/dist/accessories/ZoneEffectAccessory.js +2 -6
- package/dist/accessories/ZoneEffectAccessory.js.map +1 -1
- package/dist/platformFactory.js +5 -7
- package/dist/platformFactory.js.map +1 -1
- package/package.json +1 -1
- package/src/Zone.ts +41 -37
- package/src/accessories/ZoneEffectAccessory.ts +2 -11
- package/src/platformFactory.ts +6 -7
package/dist/Zone.d.ts
CHANGED
|
@@ -15,20 +15,22 @@ export declare class Zone extends EventEmitter {
|
|
|
15
15
|
initialize(): Promise<void>;
|
|
16
16
|
private devices;
|
|
17
17
|
private get devicesArray();
|
|
18
|
+
private active;
|
|
19
|
+
getActive(): boolean;
|
|
18
20
|
setActive(active: boolean): Promise<void>;
|
|
19
21
|
private effects;
|
|
20
|
-
private activeEffectId;
|
|
21
22
|
getEffects(): Map<string, Effect<any>>;
|
|
22
23
|
getEffect<T extends Effect<any> = Effect<EffectConfigurationBase>>(effectId: string): T | null;
|
|
24
|
+
getDefaultEffectId(): string;
|
|
25
|
+
private effectId;
|
|
26
|
+
getEffectIdOrDefault(): string;
|
|
27
|
+
get effect(): Effect<EffectConfigurationBase>;
|
|
28
|
+
get activeEffectId(): string;
|
|
23
29
|
get activeEffect(): Effect<EffectConfigurationBase>;
|
|
24
|
-
getDefaultActiveEffectId(): string;
|
|
25
30
|
setActiveEffectById(effectId: string): Promise<void>;
|
|
26
|
-
setActiveEffect(effect: Effect<any>): Promise<void>;
|
|
27
|
-
getActiveEffectId(): string;
|
|
28
31
|
private brightness;
|
|
29
32
|
getBrightness(): number;
|
|
30
33
|
setBrightness(brightness: number): Promise<void>;
|
|
31
|
-
private updateBrightness;
|
|
32
34
|
private autoOffTimeout;
|
|
33
35
|
private setAutoOffTimeout;
|
|
34
36
|
private clearAutoOffTimeout;
|
package/dist/Zone.js
CHANGED
|
@@ -46,7 +46,7 @@ class Zone extends events_1.default {
|
|
|
46
46
|
if (this.activeEffectId !== effect.id)
|
|
47
47
|
return;
|
|
48
48
|
this.context.log.info(`The active effect '${effect.name}' changed, applying to zone`);
|
|
49
|
-
this.
|
|
49
|
+
this.setActiveEffectById(effect.id);
|
|
50
50
|
});
|
|
51
51
|
this.effects.set(effect.id, effect);
|
|
52
52
|
});
|
|
@@ -91,24 +91,18 @@ class Zone extends events_1.default {
|
|
|
91
91
|
get devicesArray() {
|
|
92
92
|
return Array.from(this.devices);
|
|
93
93
|
}
|
|
94
|
+
getActive() {
|
|
95
|
+
return !!this.active;
|
|
96
|
+
}
|
|
94
97
|
setActive(active) {
|
|
95
98
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
99
|
if (!active) {
|
|
97
100
|
this.clearAutoOffTimeout();
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
this.updateBrightness(1);
|
|
101
|
-
}
|
|
102
|
-
else if (!active && this.brightness > 0) {
|
|
103
|
-
this.updateBrightness(0);
|
|
104
|
-
}
|
|
102
|
+
this.active = active;
|
|
105
103
|
yield Promise.all(this.devicesArray.map((device) => __awaiter(this, void 0, void 0, function* () {
|
|
106
104
|
yield device.setActive(active);
|
|
107
105
|
})));
|
|
108
|
-
const { activeEffect } = this;
|
|
109
|
-
if (active && !!activeEffect) {
|
|
110
|
-
yield this.setActiveEffect(activeEffect);
|
|
111
|
-
}
|
|
112
106
|
});
|
|
113
107
|
}
|
|
114
108
|
getEffects() {
|
|
@@ -118,24 +112,37 @@ class Zone extends events_1.default {
|
|
|
118
112
|
const effect = this.effects.get(effectId);
|
|
119
113
|
return effect || null;
|
|
120
114
|
}
|
|
121
|
-
|
|
122
|
-
return this.getEffect(this.activeEffectId);
|
|
123
|
-
}
|
|
124
|
-
getDefaultActiveEffectId() {
|
|
115
|
+
getDefaultEffectId() {
|
|
125
116
|
if (this.effects.size === 0) {
|
|
126
117
|
return null;
|
|
127
118
|
}
|
|
128
119
|
return Array.from(this.effects.values())[0].id;
|
|
129
120
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
yield this.setActiveEffect(this.activeEffect);
|
|
134
|
-
});
|
|
121
|
+
getEffectIdOrDefault() {
|
|
122
|
+
var _a;
|
|
123
|
+
return (_a = this.effectId) !== null && _a !== void 0 ? _a : this.getDefaultEffectId();
|
|
135
124
|
}
|
|
136
|
-
|
|
125
|
+
get effect() {
|
|
126
|
+
return this.getEffect(this.getEffectIdOrDefault());
|
|
127
|
+
}
|
|
128
|
+
get activeEffectId() {
|
|
129
|
+
if (!this.active)
|
|
130
|
+
return null;
|
|
131
|
+
return this.effectId;
|
|
132
|
+
}
|
|
133
|
+
get activeEffect() {
|
|
134
|
+
if (!this.activeEffectId)
|
|
135
|
+
return null;
|
|
136
|
+
return this.getEffect(this.activeEffectId);
|
|
137
|
+
}
|
|
138
|
+
setActiveEffectById(effectId) {
|
|
137
139
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
this.effectId = effectId;
|
|
138
141
|
this.clearAutoOffTimeout();
|
|
142
|
+
if (!this.active) {
|
|
143
|
+
this.setActive(true);
|
|
144
|
+
}
|
|
145
|
+
const effect = this.activeEffect;
|
|
139
146
|
yield Promise.all(Array.from(this.devices).map((device) => {
|
|
140
147
|
return device.setActiveEffect(effect);
|
|
141
148
|
}));
|
|
@@ -144,18 +151,14 @@ class Zone extends events_1.default {
|
|
|
144
151
|
}
|
|
145
152
|
});
|
|
146
153
|
}
|
|
147
|
-
getActiveEffectId() {
|
|
148
|
-
return this.activeEffectId;
|
|
149
|
-
}
|
|
150
154
|
getBrightness() {
|
|
155
|
+
if (!this.active)
|
|
156
|
+
return 0;
|
|
151
157
|
return this.brightness;
|
|
152
158
|
}
|
|
153
159
|
setBrightness(brightness) {
|
|
154
160
|
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
-
const previousBrightness = this.brightness;
|
|
156
|
-
const previousActive = previousBrightness > 0;
|
|
157
161
|
const active = brightness > 0;
|
|
158
|
-
this.brightness = brightness;
|
|
159
162
|
// if (this.context.persistence) {
|
|
160
163
|
// this.context.log.debug(
|
|
161
164
|
// `Persisting zone ${logAccessoryName(
|
|
@@ -165,17 +168,14 @@ class Zone extends events_1.default {
|
|
|
165
168
|
// await this.context.persistence.setZoneBrightness(this.id, brightness);
|
|
166
169
|
// }
|
|
167
170
|
if (brightness > 0) {
|
|
171
|
+
this.brightness = brightness;
|
|
168
172
|
yield Promise.all(this.devicesArray.map((device) => device.setBrightness(brightness)));
|
|
169
173
|
}
|
|
170
|
-
if (active !==
|
|
174
|
+
if (this.active !== active) {
|
|
171
175
|
this.setActive(active);
|
|
172
176
|
}
|
|
173
177
|
});
|
|
174
178
|
}
|
|
175
|
-
updateBrightness(brightness) {
|
|
176
|
-
this.brightness = brightness;
|
|
177
|
-
this.emit('updateBrightness', brightness);
|
|
178
|
-
}
|
|
179
179
|
setAutoOffTimeout(duration) {
|
|
180
180
|
this.autoOffTimeout = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
181
181
|
try {
|
package/dist/Zone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Zone.js","sourceRoot":"","sources":["../src/Zone.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,mCASiB;AACjB,2CAAuE;AAEvE,qCAAkC;AAElC,+CAA4C;AAC5C,6CAA0C;AAC1C,iDAA8C;AAE9C,MAAa,IAAK,SAAQ,gBAAY;IAIpC,YAAY,aAAgC,EAAE,OAAgB;;QAC5D,KAAK,EAAE,CAAC;QA0FV,UAAU;QACF,YAAO,GAAG,IAAI,GAAG,EAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Zone.js","sourceRoot":"","sources":["../src/Zone.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,6 @@ import { Zone } from '../Zone';
|
|
|
4
4
|
export declare class ZoneEffectAccessory extends SelectionAccessory {
|
|
5
5
|
private readonly zone;
|
|
6
6
|
constructor(zone: Zone, context: Context);
|
|
7
|
-
private active;
|
|
8
|
-
private activeOptionId;
|
|
9
7
|
protected getActiveOptionId(): Promise<string>;
|
|
10
8
|
protected setActiveOptionId(effectId: string): Promise<void>;
|
|
11
9
|
protected getActive(): Promise<boolean>;
|
|
@@ -28,28 +28,24 @@ class ZoneEffectAccessory extends helpers_for_homebridge_1.SelectionAccessory {
|
|
|
28
28
|
}),
|
|
29
29
|
}, context);
|
|
30
30
|
this.zone = zone;
|
|
31
|
-
this.active = false;
|
|
32
|
-
this.activeOptionId = this.configuration.options[0].id;
|
|
33
31
|
}
|
|
34
32
|
getActiveOptionId() {
|
|
35
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
return this.
|
|
34
|
+
return this.zone.getEffectIdOrDefault();
|
|
37
35
|
});
|
|
38
36
|
}
|
|
39
37
|
setActiveOptionId(effectId) {
|
|
40
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
this.activeOptionId = effectId;
|
|
42
39
|
yield this.zone.setActiveEffectById(effectId);
|
|
43
40
|
});
|
|
44
41
|
}
|
|
45
42
|
getActive() {
|
|
46
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
return this.
|
|
44
|
+
return this.zone.getActive();
|
|
48
45
|
});
|
|
49
46
|
}
|
|
50
47
|
setActive(active) {
|
|
51
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
this.active = active;
|
|
53
49
|
yield this.zone.setActive(active);
|
|
54
50
|
});
|
|
55
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneEffectAccessory.js","sourceRoot":"","sources":["../../src/accessories/ZoneEffectAccessory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA4D;AAG5D,4CAAoE;AAEpE,MAAa,mBAAoB,SAAQ,2CAAkB;IACzD,YACmB,IAAU,EAC3B,OAAgB;QAEhB,KAAK,CACH;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS;YAC3B,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS;YAC3B,KAAK,EAAE,4BAA4B;YACnC,IAAI,EAAE,gDAAoC;YAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;gBAC9D,OAAO;oBACL,IAAI,EAAE,mBAAmB,CAAC,IAAI;oBAC9B,EAAE,EAAE,mBAAmB,CAAC,EAAE;oBAC1B,aAAa,EAAE,mBAAmB,CAAC,aAAa;iBACjD,CAAC;YACJ,CAAC,CAAC;SACH,EACD,OAAO,CACR,CAAC;QAlBe,SAAI,GAAJ,IAAI,CAAM;
|
|
1
|
+
{"version":3,"file":"ZoneEffectAccessory.js","sourceRoot":"","sources":["../../src/accessories/ZoneEffectAccessory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA4D;AAG5D,4CAAoE;AAEpE,MAAa,mBAAoB,SAAQ,2CAAkB;IACzD,YACmB,IAAU,EAC3B,OAAgB;QAEhB,KAAK,CACH;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS;YAC3B,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS;YAC3B,KAAK,EAAE,4BAA4B;YACnC,IAAI,EAAE,gDAAoC;YAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;gBAC9D,OAAO;oBACL,IAAI,EAAE,mBAAmB,CAAC,IAAI;oBAC9B,EAAE,EAAE,mBAAmB,CAAC,EAAE;oBAC1B,aAAa,EAAE,mBAAmB,CAAC,aAAa;iBACjD,CAAC;YACJ,CAAC,CAAC;SACH,EACD,OAAO,CACR,CAAC;QAlBe,SAAI,GAAJ,IAAI,CAAM;IAmB7B,CAAC;IAEwB,iBAAiB;;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1C,CAAC;KAAA;IAEwB,iBAAiB,CAAC,QAAgB;;YACzD,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;IAEwB,SAAS;;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEwB,SAAS,CAAC,MAAe;;YAChD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;KAAA;CACF;AAtCD,kDAsCC"}
|
package/dist/platformFactory.js
CHANGED
|
@@ -43,19 +43,17 @@ exports.default = (homebridge) => {
|
|
|
43
43
|
accessories(callback) {
|
|
44
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
45
|
yield this.context.paletteClient.connect();
|
|
46
|
-
|
|
47
|
-
yield zone.initialize();
|
|
46
|
+
yield Promise.all(Array.from(this.zones.values()).map((zone) => __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
return yield zone.initialize();
|
|
48
|
+
})));
|
|
49
|
+
const zoneAccessories = yield Promise.all(Array.from(this.zones.values()).flatMap((zone) => {
|
|
48
50
|
const zoneEffectAccessory = new accessories_1.ZoneEffectAccessory(zone, this.context);
|
|
49
51
|
const zoneBrightnessAccessory = new accessories_1.ZoneBrightnessAccessory(zone, this.context);
|
|
50
52
|
zone.on(constants_1.ZONE_AUTO_OFF_EVENT, () => {
|
|
51
53
|
zoneEffectAccessory.updateActive(false);
|
|
52
|
-
zoneBrightnessAccessory.updateBrightness(0);
|
|
53
|
-
});
|
|
54
|
-
zone.on('updateBrightness', (brightness) => {
|
|
55
|
-
zoneBrightnessAccessory.updateBrightness(brightness);
|
|
56
54
|
});
|
|
57
55
|
return [zoneEffectAccessory, zoneBrightnessAccessory];
|
|
58
|
-
}))
|
|
56
|
+
}));
|
|
59
57
|
const accessories = [...zoneAccessories];
|
|
60
58
|
callback(accessories);
|
|
61
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformFactory.js","sourceRoot":"","sources":["../src/platformFactory.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAA4C;AAE5C,mEAA+D;AAC/D,kEAAsD;AACtD,sEAA8D;AAG9D,+CAA6E;AAC7E,2CAAkD;AAClD,iCAA8B;AAE9B,kBAAe,CAAC,UAAe,EAAE,EAAE;IACjC,MAAM,QAAQ;QAIZ,YACE,aAAsB,EACb,aAAoC;YAApC,kBAAa,GAAb,aAAa,CAAuB;YAJ/C,UAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;YAM5C,MAAM,GAAG,GAAG,IAAI,2BAAM,CAAC;gBACrB,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,CAAC,IAAI,8CAAqB,CAAC,aAAa,CAAC,CAAC;aACtD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,0BAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,IAAI,kCAAa,CACrC,aAAa,CAAC,aAAa,EAC3B;gBACE,GAAG;aACJ,EACD,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,OAAO,GAAG;gBACb,UAAU;gBACV,GAAG;gBACH,OAAO;gBACP,aAAa;aACd,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBACrD,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;QAEY,WAAW,CAAC,QAAQ;;gBAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"platformFactory.js","sourceRoot":"","sources":["../src/platformFactory.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAA4C;AAE5C,mEAA+D;AAC/D,kEAAsD;AACtD,sEAA8D;AAG9D,+CAA6E;AAC7E,2CAAkD;AAClD,iCAA8B;AAE9B,kBAAe,CAAC,UAAe,EAAE,EAAE;IACjC,MAAM,QAAQ;QAIZ,YACE,aAAsB,EACb,aAAoC;YAApC,kBAAa,GAAb,aAAa,CAAuB;YAJ/C,UAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;YAM5C,MAAM,GAAG,GAAG,IAAI,2BAAM,CAAC;gBACrB,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,CAAC,IAAI,8CAAqB,CAAC,aAAa,CAAC,CAAC;aACtD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,0BAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,IAAI,kCAAa,CACrC,aAAa,CAAC,aAAa,EAC3B;gBACE,GAAG;aACJ,EACD,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,OAAO,GAAG;gBACb,UAAU;gBACV,GAAG;gBACH,OAAO;gBACP,aAAa;aACd,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBACrD,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;QAEY,WAAW,CAAC,QAAQ;;gBAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3C,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;oBACjD,OAAO,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjC,CAAC,CAAA,CAAC,CACH,CAAC;gBAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC/C,MAAM,mBAAmB,GAAG,IAAI,iCAAmB,CACjD,IAAI,EACJ,IAAI,CAAC,OAAO,CACb,CAAC;oBACF,MAAM,uBAAuB,GAAG,IAAI,qCAAuB,CACzD,IAAI,EACJ,IAAI,CAAC,OAAO,CACb,CAAC;oBAEF,IAAI,CAAC,EAAE,CAAC,+BAAmB,EAAE,GAAG,EAAE;wBAChC,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;gBACxD,CAAC,CAAC,CACH,CAAC;gBAEF,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;gBAEzC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACxB,CAAC;SAAA;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/Zone.ts
CHANGED
|
@@ -48,7 +48,7 @@ export class Zone extends EventEmitter {
|
|
|
48
48
|
`The active effect '${effect.name}' changed, applying to zone`
|
|
49
49
|
);
|
|
50
50
|
|
|
51
|
-
this.
|
|
51
|
+
this.setActiveEffectById(effect.id);
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
this.effects.set(effect.id, effect);
|
|
@@ -119,33 +119,29 @@ export class Zone extends EventEmitter {
|
|
|
119
119
|
return Array.from(this.devices);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
// Active
|
|
123
|
+
private active: boolean;
|
|
124
|
+
|
|
125
|
+
public getActive() {
|
|
126
|
+
return !!this.active;
|
|
127
|
+
}
|
|
128
|
+
|
|
122
129
|
public async setActive(active: boolean) {
|
|
123
130
|
if (!active) {
|
|
124
131
|
this.clearAutoOffTimeout();
|
|
125
132
|
}
|
|
126
133
|
|
|
127
|
-
|
|
128
|
-
this.updateBrightness(1);
|
|
129
|
-
} else if (!active && this.brightness > 0) {
|
|
130
|
-
this.updateBrightness(0);
|
|
131
|
-
}
|
|
134
|
+
this.active = active;
|
|
132
135
|
|
|
133
136
|
await Promise.all(
|
|
134
137
|
this.devicesArray.map(async (device) => {
|
|
135
138
|
await device.setActive(active);
|
|
136
139
|
})
|
|
137
140
|
);
|
|
138
|
-
|
|
139
|
-
const { activeEffect } = this;
|
|
140
|
-
|
|
141
|
-
if (active && !!activeEffect) {
|
|
142
|
-
await this.setActiveEffect(activeEffect);
|
|
143
|
-
}
|
|
144
141
|
}
|
|
145
142
|
|
|
146
143
|
// Effects
|
|
147
144
|
private effects = new Map<string, Effect<any>>();
|
|
148
|
-
private activeEffectId: string;
|
|
149
145
|
|
|
150
146
|
public getEffects() {
|
|
151
147
|
return this.effects;
|
|
@@ -159,11 +155,7 @@ export class Zone extends EventEmitter {
|
|
|
159
155
|
return (effect as T) || null;
|
|
160
156
|
}
|
|
161
157
|
|
|
162
|
-
public
|
|
163
|
-
return this.getEffect(this.activeEffectId);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
public getDefaultActiveEffectId() {
|
|
158
|
+
public getDefaultEffectId() {
|
|
167
159
|
if (this.effects.size === 0) {
|
|
168
160
|
return null;
|
|
169
161
|
}
|
|
@@ -171,15 +163,37 @@ export class Zone extends EventEmitter {
|
|
|
171
163
|
return Array.from(this.effects.values())[0].id;
|
|
172
164
|
}
|
|
173
165
|
|
|
174
|
-
|
|
175
|
-
|
|
166
|
+
private effectId: string;
|
|
167
|
+
|
|
168
|
+
public getEffectIdOrDefault() {
|
|
169
|
+
return this.effectId ?? this.getDefaultEffectId();
|
|
170
|
+
}
|
|
171
|
+
public get effect() {
|
|
172
|
+
return this.getEffect(this.getEffectIdOrDefault());
|
|
173
|
+
}
|
|
176
174
|
|
|
177
|
-
|
|
175
|
+
public get activeEffectId() {
|
|
176
|
+
if (!this.active) return null;
|
|
177
|
+
|
|
178
|
+
return this.effectId;
|
|
178
179
|
}
|
|
179
180
|
|
|
180
|
-
public
|
|
181
|
+
public get activeEffect() {
|
|
182
|
+
if (!this.activeEffectId) return null;
|
|
183
|
+
|
|
184
|
+
return this.getEffect(this.activeEffectId);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
public async setActiveEffectById(effectId: string) {
|
|
188
|
+
this.effectId = effectId;
|
|
181
189
|
this.clearAutoOffTimeout();
|
|
182
190
|
|
|
191
|
+
if (!this.active) {
|
|
192
|
+
this.setActive(true);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const effect = this.activeEffect;
|
|
196
|
+
|
|
183
197
|
await Promise.all(
|
|
184
198
|
Array.from(this.devices).map((device) => {
|
|
185
199
|
return device.setActiveEffect(effect);
|
|
@@ -191,24 +205,18 @@ export class Zone extends EventEmitter {
|
|
|
191
205
|
}
|
|
192
206
|
}
|
|
193
207
|
|
|
194
|
-
public getActiveEffectId() {
|
|
195
|
-
return this.activeEffectId;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
208
|
// Brightness
|
|
199
209
|
private brightness: number = 1;
|
|
200
210
|
|
|
201
211
|
public getBrightness() {
|
|
212
|
+
if (!this.active) return 0;
|
|
213
|
+
|
|
202
214
|
return this.brightness;
|
|
203
215
|
}
|
|
204
216
|
|
|
205
217
|
public async setBrightness(brightness: number): Promise<void> {
|
|
206
|
-
const previousBrightness = this.brightness;
|
|
207
|
-
const previousActive = previousBrightness > 0;
|
|
208
218
|
const active = brightness > 0;
|
|
209
219
|
|
|
210
|
-
this.brightness = brightness;
|
|
211
|
-
|
|
212
220
|
// if (this.context.persistence) {
|
|
213
221
|
// this.context.log.debug(
|
|
214
222
|
// `Persisting zone ${logAccessoryName(
|
|
@@ -220,22 +228,18 @@ export class Zone extends EventEmitter {
|
|
|
220
228
|
// }
|
|
221
229
|
|
|
222
230
|
if (brightness > 0) {
|
|
231
|
+
this.brightness = brightness;
|
|
232
|
+
|
|
223
233
|
await Promise.all(
|
|
224
234
|
this.devicesArray.map((device) => device.setBrightness(brightness))
|
|
225
235
|
);
|
|
226
236
|
}
|
|
227
237
|
|
|
228
|
-
if (active !==
|
|
238
|
+
if (this.active !== active) {
|
|
229
239
|
this.setActive(active);
|
|
230
240
|
}
|
|
231
241
|
}
|
|
232
242
|
|
|
233
|
-
private updateBrightness(brightness: number) {
|
|
234
|
-
this.brightness = brightness;
|
|
235
|
-
|
|
236
|
-
this.emit('updateBrightness', brightness);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
243
|
// Auto-off
|
|
240
244
|
private autoOffTimeout: NodeJS.Timeout;
|
|
241
245
|
|
|
@@ -24,30 +24,21 @@ export class ZoneEffectAccessory extends SelectionAccessory {
|
|
|
24
24
|
},
|
|
25
25
|
context
|
|
26
26
|
);
|
|
27
|
-
|
|
28
|
-
this.activeOptionId = this.configuration.options[0].id;
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
private active: boolean = false;
|
|
32
|
-
private activeOptionId: string;
|
|
33
|
-
|
|
34
29
|
protected override async getActiveOptionId() {
|
|
35
|
-
return this.
|
|
30
|
+
return this.zone.getEffectIdOrDefault();
|
|
36
31
|
}
|
|
37
32
|
|
|
38
33
|
protected override async setActiveOptionId(effectId: string) {
|
|
39
|
-
this.activeOptionId = effectId;
|
|
40
|
-
|
|
41
34
|
await this.zone.setActiveEffectById(effectId);
|
|
42
35
|
}
|
|
43
36
|
|
|
44
37
|
protected override async getActive() {
|
|
45
|
-
return this.
|
|
38
|
+
return this.zone.getActive();
|
|
46
39
|
}
|
|
47
40
|
|
|
48
41
|
protected override async setActive(active: boolean) {
|
|
49
|
-
this.active = active;
|
|
50
|
-
|
|
51
42
|
await this.zone.setActive(active);
|
|
52
43
|
}
|
|
53
44
|
}
|
package/src/platformFactory.ts
CHANGED
|
@@ -48,11 +48,14 @@ export default (homebridge: any) => {
|
|
|
48
48
|
|
|
49
49
|
public async accessories(callback) {
|
|
50
50
|
await this.context.paletteClient.connect();
|
|
51
|
+
await Promise.all(
|
|
52
|
+
Array.from(this.zones.values()).map(async (zone) => {
|
|
53
|
+
return await zone.initialize();
|
|
54
|
+
})
|
|
55
|
+
);
|
|
51
56
|
|
|
52
57
|
const zoneAccessories = await Promise.all(
|
|
53
|
-
Array.from(this.zones.values()).flatMap(
|
|
54
|
-
await zone.initialize();
|
|
55
|
-
|
|
58
|
+
Array.from(this.zones.values()).flatMap((zone) => {
|
|
56
59
|
const zoneEffectAccessory = new ZoneEffectAccessory(
|
|
57
60
|
zone,
|
|
58
61
|
this.context
|
|
@@ -64,10 +67,6 @@ export default (homebridge: any) => {
|
|
|
64
67
|
|
|
65
68
|
zone.on(ZONE_AUTO_OFF_EVENT, () => {
|
|
66
69
|
zoneEffectAccessory.updateActive(false);
|
|
67
|
-
zoneBrightnessAccessory.updateBrightness(0);
|
|
68
|
-
});
|
|
69
|
-
zone.on('updateBrightness', (brightness) => {
|
|
70
|
-
zoneBrightnessAccessory.updateBrightness(brightness);
|
|
71
70
|
});
|
|
72
71
|
|
|
73
72
|
return [zoneEffectAccessory, zoneBrightnessAccessory];
|