homebridge-nanoleaf-multi 5.0.0 → 5.0.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/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.setActiveEffect(effect);
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
- if (active && this.brightness === 0) {
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
- get activeEffect() {
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
- setActiveEffectById(effectId) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- this.activeEffectId = effectId;
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
- setActiveEffect(effect) {
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,10 +151,9 @@ 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) {
@@ -155,7 +161,6 @@ class Zone extends events_1.default {
155
161
  const previousBrightness = this.brightness;
156
162
  const previousActive = previousBrightness > 0;
157
163
  const active = brightness > 0;
158
- this.brightness = brightness;
159
164
  // if (this.context.persistence) {
160
165
  // this.context.log.debug(
161
166
  // `Persisting zone ${logAccessoryName(
@@ -165,6 +170,7 @@ class Zone extends events_1.default {
165
170
  // await this.context.persistence.setZoneBrightness(this.id, brightness);
166
171
  // }
167
172
  if (brightness > 0) {
173
+ this.brightness = brightness;
168
174
  yield Promise.all(this.devicesArray.map((device) => device.setBrightness(brightness)));
169
175
  }
170
176
  if (active !== previousActive) {
@@ -172,10 +178,6 @@ class Zone extends events_1.default {
172
178
  }
173
179
  });
174
180
  }
175
- updateBrightness(brightness) {
176
- this.brightness = brightness;
177
- this.emit('updateBrightness', brightness);
178
- }
179
181
  setAutoOffTimeout(duration) {
180
182
  this.autoOffTimeout = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
181
183
  try {
package/dist/Zone.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Zone.js","sourceRoot":"","sources":["../src/Zone.ts"],"names":[],"mappings":"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"}
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.activeOptionId;
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.active;
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;QAuBrB,WAAM,GAAY,KAAK,CAAC;QAH9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAKwB,iBAAiB;;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;KAAA;IAEwB,iBAAiB,CAAC,QAAgB;;YACzD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;YAE/B,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;IAEwB,SAAS;;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;KAAA;IAEwB,SAAS,CAAC,MAAe;;YAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;KAAA;CACF;AA/CD,kDA+CC"}
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"}
@@ -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
- const zoneAccessories = yield Promise.all(Array.from(this.zones.values()).flatMap((zone) => __awaiter(this, void 0, void 0, function* () {
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;gBAE3C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAO,IAAI,EAAE,EAAE;oBACrD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBAExB,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;wBACxC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,EAAE;wBACzC,uBAAuB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;gBACxD,CAAC,CAAA,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"}
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
@@ -6,7 +6,7 @@
6
6
  "keywords": [
7
7
  "homebridge-plugin"
8
8
  ],
9
- "version": "5.0.0",
9
+ "version": "5.0.1",
10
10
  "deprecated": false,
11
11
  "author": {
12
12
  "name": "Samuel Goodell"
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.setActiveEffect(effect);
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
- if (active && this.brightness === 0) {
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 get activeEffect() {
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
- public async setActiveEffectById(effectId: string) {
175
- this.activeEffectId = effectId;
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
- await this.setActiveEffect(this.activeEffect);
175
+ public get activeEffectId() {
176
+ if (!this.active) return null;
177
+
178
+ return this.effectId;
178
179
  }
179
180
 
180
- public async setActiveEffect(effect: Effect<any>) {
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,14 +205,12 @@ 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
 
@@ -207,8 +219,6 @@ export class Zone extends EventEmitter {
207
219
  const previousActive = previousBrightness > 0;
208
220
  const active = brightness > 0;
209
221
 
210
- this.brightness = brightness;
211
-
212
222
  // if (this.context.persistence) {
213
223
  // this.context.log.debug(
214
224
  // `Persisting zone ${logAccessoryName(
@@ -220,6 +230,8 @@ export class Zone extends EventEmitter {
220
230
  // }
221
231
 
222
232
  if (brightness > 0) {
233
+ this.brightness = brightness;
234
+
223
235
  await Promise.all(
224
236
  this.devicesArray.map((device) => device.setBrightness(brightness))
225
237
  );
@@ -230,12 +242,6 @@ export class Zone extends EventEmitter {
230
242
  }
231
243
  }
232
244
 
233
- private updateBrightness(brightness: number) {
234
- this.brightness = brightness;
235
-
236
- this.emit('updateBrightness', brightness);
237
- }
238
-
239
245
  // Auto-off
240
246
  private autoOffTimeout: NodeJS.Timeout;
241
247
 
@@ -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.activeOptionId;
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.active;
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
  }
@@ -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(async (zone) => {
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];