homebridge-nanoleaf-multi 4.0.2 → 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/Device.d.ts +1 -0
- package/dist/Device.js +7 -0
- package/dist/Device.js.map +1 -1
- package/dist/Zone.d.ts +10 -4
- package/dist/Zone.js +56 -17
- package/dist/Zone.js.map +1 -1
- package/dist/accessories/ZoneBrightnessAccessory.d.ts +9 -0
- package/dist/accessories/ZoneBrightnessAccessory.js +35 -0
- package/dist/accessories/ZoneBrightnessAccessory.js.map +1 -0
- package/dist/accessories/{ZoneAccessory.d.ts → ZoneEffectAccessory.d.ts} +1 -3
- package/dist/accessories/{ZoneAccessory.js → ZoneEffectAccessory.js} +11 -13
- package/dist/accessories/ZoneEffectAccessory.js.map +1 -0
- package/dist/accessories/index.d.ts +2 -1
- package/dist/accessories/index.js +2 -1
- package/dist/accessories/index.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/platformFactory.js +9 -6
- package/dist/platformFactory.js.map +1 -1
- package/package.json +2 -2
- package/src/Device.ts +6 -0
- package/src/Zone.ts +72 -19
- package/src/accessories/ZoneBrightnessAccessory.ts +27 -0
- package/src/accessories/{ZoneAccessory.ts → ZoneEffectAccessory.ts} +8 -15
- package/src/accessories/index.ts +2 -1
- package/src/constants.ts +3 -0
- package/src/platformFactory.ts +17 -7
- package/dist/accessories/ZoneAccessory.js.map +0 -1
package/dist/Device.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export declare class Device {
|
|
|
13
13
|
private withWriteLock;
|
|
14
14
|
setActive(active: boolean): Promise<void>;
|
|
15
15
|
setActiveEffect(effect: Effect<any>): Promise<void>;
|
|
16
|
+
setBrightness(brightness: number): Promise<void>;
|
|
16
17
|
addNativeEffect(nativeEffect: NativeEffect): Promise<void>;
|
|
17
18
|
}
|
package/dist/Device.js
CHANGED
|
@@ -96,6 +96,13 @@ class Device {
|
|
|
96
96
|
}));
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
+
setBrightness(brightness) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
yield this.withWriteLock(() => __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
yield this.nanoleafClient.setBrightness(brightness * 100);
|
|
103
|
+
}));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
99
106
|
addNativeEffect(nativeEffect) {
|
|
100
107
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
108
|
yield this.withWriteLock(() => __awaiter(this, void 0, void 0, function* () {
|
package/dist/Device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.js","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Device.js","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"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"}
|
package/dist/Zone.d.ts
CHANGED
|
@@ -15,16 +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
|
-
|
|
27
|
-
|
|
31
|
+
private brightness;
|
|
32
|
+
getBrightness(): number;
|
|
33
|
+
setBrightness(brightness: number): Promise<void>;
|
|
28
34
|
private autoOffTimeout;
|
|
29
35
|
private setAutoOffTimeout;
|
|
30
36
|
private clearAutoOffTimeout;
|
package/dist/Zone.js
CHANGED
|
@@ -28,6 +28,8 @@ class Zone extends events_1.default {
|
|
|
28
28
|
this.devices = new Set();
|
|
29
29
|
// Effects
|
|
30
30
|
this.effects = new Map();
|
|
31
|
+
// Brightness
|
|
32
|
+
this.brightness = 1;
|
|
31
33
|
this.configuration = configuration;
|
|
32
34
|
this.context = context;
|
|
33
35
|
configuration.devices.forEach((deviceConfiguration) => {
|
|
@@ -44,7 +46,7 @@ class Zone extends events_1.default {
|
|
|
44
46
|
if (this.activeEffectId !== effect.id)
|
|
45
47
|
return;
|
|
46
48
|
this.context.log.info(`The active effect '${effect.name}' changed, applying to zone`);
|
|
47
|
-
this.
|
|
49
|
+
this.setActiveEffectById(effect.id);
|
|
48
50
|
});
|
|
49
51
|
this.effects.set(effect.id, effect);
|
|
50
52
|
});
|
|
@@ -89,18 +91,18 @@ class Zone extends events_1.default {
|
|
|
89
91
|
get devicesArray() {
|
|
90
92
|
return Array.from(this.devices);
|
|
91
93
|
}
|
|
94
|
+
getActive() {
|
|
95
|
+
return !!this.active;
|
|
96
|
+
}
|
|
92
97
|
setActive(active) {
|
|
93
98
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
99
|
if (!active) {
|
|
95
100
|
this.clearAutoOffTimeout();
|
|
96
101
|
}
|
|
102
|
+
this.active = active;
|
|
97
103
|
yield Promise.all(this.devicesArray.map((device) => __awaiter(this, void 0, void 0, function* () {
|
|
98
104
|
yield device.setActive(active);
|
|
99
105
|
})));
|
|
100
|
-
const { activeEffect } = this;
|
|
101
|
-
if (active && !!activeEffect) {
|
|
102
|
-
yield this.setActiveEffect(activeEffect);
|
|
103
|
-
}
|
|
104
106
|
});
|
|
105
107
|
}
|
|
106
108
|
getEffects() {
|
|
@@ -110,24 +112,37 @@ class Zone extends events_1.default {
|
|
|
110
112
|
const effect = this.effects.get(effectId);
|
|
111
113
|
return effect || null;
|
|
112
114
|
}
|
|
113
|
-
|
|
114
|
-
return this.getEffect(this.activeEffectId);
|
|
115
|
-
}
|
|
116
|
-
getDefaultActiveEffectId() {
|
|
115
|
+
getDefaultEffectId() {
|
|
117
116
|
if (this.effects.size === 0) {
|
|
118
117
|
return null;
|
|
119
118
|
}
|
|
120
119
|
return Array.from(this.effects.values())[0].id;
|
|
121
120
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
121
|
+
getEffectIdOrDefault() {
|
|
122
|
+
var _a;
|
|
123
|
+
return (_a = this.effectId) !== null && _a !== void 0 ? _a : this.getDefaultEffectId();
|
|
124
|
+
}
|
|
125
|
+
get effect() {
|
|
126
|
+
return this.getEffect(this.getEffectIdOrDefault());
|
|
127
|
+
}
|
|
128
|
+
get activeEffectId() {
|
|
129
|
+
if (!this.active)
|
|
130
|
+
return null;
|
|
131
|
+
return this.effectId;
|
|
127
132
|
}
|
|
128
|
-
|
|
133
|
+
get activeEffect() {
|
|
134
|
+
if (!this.activeEffectId)
|
|
135
|
+
return null;
|
|
136
|
+
return this.getEffect(this.activeEffectId);
|
|
137
|
+
}
|
|
138
|
+
setActiveEffectById(effectId) {
|
|
129
139
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
this.effectId = effectId;
|
|
130
141
|
this.clearAutoOffTimeout();
|
|
142
|
+
if (!this.active) {
|
|
143
|
+
this.setActive(true);
|
|
144
|
+
}
|
|
145
|
+
const effect = this.activeEffect;
|
|
131
146
|
yield Promise.all(Array.from(this.devices).map((device) => {
|
|
132
147
|
return device.setActiveEffect(effect);
|
|
133
148
|
}));
|
|
@@ -136,8 +151,32 @@ class Zone extends events_1.default {
|
|
|
136
151
|
}
|
|
137
152
|
});
|
|
138
153
|
}
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
getBrightness() {
|
|
155
|
+
if (!this.active)
|
|
156
|
+
return 0;
|
|
157
|
+
return this.brightness;
|
|
158
|
+
}
|
|
159
|
+
setBrightness(brightness) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
const previousBrightness = this.brightness;
|
|
162
|
+
const previousActive = previousBrightness > 0;
|
|
163
|
+
const active = brightness > 0;
|
|
164
|
+
// if (this.context.persistence) {
|
|
165
|
+
// this.context.log.debug(
|
|
166
|
+
// `Persisting zone ${logAccessoryName(
|
|
167
|
+
// this.name
|
|
168
|
+
// )} brightness = ${logPercent(brightness)}`
|
|
169
|
+
// );
|
|
170
|
+
// await this.context.persistence.setZoneBrightness(this.id, brightness);
|
|
171
|
+
// }
|
|
172
|
+
if (brightness > 0) {
|
|
173
|
+
this.brightness = brightness;
|
|
174
|
+
yield Promise.all(this.devicesArray.map((device) => device.setBrightness(brightness)));
|
|
175
|
+
}
|
|
176
|
+
if (active !== previousActive) {
|
|
177
|
+
this.setActive(active);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
141
180
|
}
|
|
142
181
|
setAutoOffTimeout(duration) {
|
|
143
182
|
this.autoOffTimeout = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BrightnessAccessory } from 'helpers-for-homebridge';
|
|
2
|
+
import { Context } from '../types';
|
|
3
|
+
import { Zone } from '../Zone';
|
|
4
|
+
export declare class ZoneBrightnessAccessory extends BrightnessAccessory {
|
|
5
|
+
private readonly zone;
|
|
6
|
+
constructor(zone: Zone, context: Context);
|
|
7
|
+
getBrightness(): Promise<number>;
|
|
8
|
+
setBrightness(brightness: number): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ZoneBrightnessAccessory = void 0;
|
|
13
|
+
const helpers_for_homebridge_1 = require("helpers-for-homebridge");
|
|
14
|
+
class ZoneBrightnessAccessory extends helpers_for_homebridge_1.BrightnessAccessory {
|
|
15
|
+
constructor(zone, context) {
|
|
16
|
+
super({
|
|
17
|
+
name: zone.name + ' Brightness',
|
|
18
|
+
serial: zone.id + '_brightness',
|
|
19
|
+
model: 'Nanoleaf Multi Zone Brightness',
|
|
20
|
+
}, context);
|
|
21
|
+
this.zone = zone;
|
|
22
|
+
}
|
|
23
|
+
getBrightness() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return this.zone.getBrightness();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
setBrightness(brightness) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
return this.zone.setBrightness(brightness);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.ZoneBrightnessAccessory = ZoneBrightnessAccessory;
|
|
35
|
+
//# sourceMappingURL=ZoneBrightnessAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZoneBrightnessAccessory.js","sourceRoot":"","sources":["../../src/accessories/ZoneBrightnessAccessory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA6D;AAI7D,MAAa,uBAAwB,SAAQ,4CAAmB;IAC9D,YACmB,IAAU,EAC3B,OAAgB;QAEhB,KAAK,CACH;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa;YAC/B,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,aAAa;YAC/B,KAAK,EAAE,gCAAgC;SACxC,EACD,OAAO,CACR,CAAC;QAVe,SAAI,GAAJ,IAAI,CAAM;IAW7B,CAAC;IAEqB,aAAa;;YACjC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,CAAC;KAAA;IAEqB,aAAa,CAAC,UAAkB;;YACpD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;KAAA;CACF;AAtBD,0DAsBC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { SelectionAccessory } from 'helpers-for-homebridge';
|
|
2
2
|
import { Context } from '../types';
|
|
3
3
|
import { Zone } from '../Zone';
|
|
4
|
-
export declare class
|
|
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>;
|
|
@@ -9,14 +9,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.ZoneEffectAccessory = void 0;
|
|
13
13
|
const helpers_for_homebridge_1 = require("helpers-for-homebridge");
|
|
14
|
-
|
|
14
|
+
const constants_1 = require("../constants");
|
|
15
|
+
class ZoneEffectAccessory extends helpers_for_homebridge_1.SelectionAccessory {
|
|
15
16
|
constructor(zone, context) {
|
|
16
17
|
super({
|
|
17
|
-
name: zone.name,
|
|
18
|
-
serial: zone.id,
|
|
19
|
-
model: 'Nanoleaf Multi Zone',
|
|
18
|
+
name: zone.name + ' Effect',
|
|
19
|
+
serial: zone.id + '_effect',
|
|
20
|
+
model: 'Nanoleaf Multi Zone Effect',
|
|
21
|
+
mode: constants_1.ZONE_EFFECT_SELECTION_ACCESSORY_MODE,
|
|
20
22
|
options: zone.configuration.effects.map((effectConfiguration) => {
|
|
21
23
|
return {
|
|
22
24
|
name: effectConfiguration.name,
|
|
@@ -26,31 +28,27 @@ class ZoneAccessory extends helpers_for_homebridge_1.SelectionAccessory {
|
|
|
26
28
|
}),
|
|
27
29
|
}, context);
|
|
28
30
|
this.zone = zone;
|
|
29
|
-
this.active = false;
|
|
30
|
-
this.activeOptionId = this.configuration.options[0].id;
|
|
31
31
|
}
|
|
32
32
|
getActiveOptionId() {
|
|
33
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
return this.
|
|
34
|
+
return this.zone.getEffectIdOrDefault();
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
setActiveOptionId(effectId) {
|
|
38
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
this.activeOptionId = effectId;
|
|
40
39
|
yield this.zone.setActiveEffectById(effectId);
|
|
41
40
|
});
|
|
42
41
|
}
|
|
43
42
|
getActive() {
|
|
44
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
return this.
|
|
44
|
+
return this.zone.getActive();
|
|
46
45
|
});
|
|
47
46
|
}
|
|
48
47
|
setActive(active) {
|
|
49
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
this.active = active;
|
|
51
49
|
yield this.zone.setActive(active);
|
|
52
50
|
});
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
|
-
exports.
|
|
56
|
-
//# sourceMappingURL=
|
|
53
|
+
exports.ZoneEffectAccessory = ZoneEffectAccessory;
|
|
54
|
+
//# sourceMappingURL=ZoneEffectAccessory.js.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './ZoneBrightnessAccessory';
|
|
2
|
+
export * from './ZoneEffectAccessory';
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./ZoneBrightnessAccessory"), exports);
|
|
18
|
+
__exportStar(require("./ZoneEffectAccessory"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/accessories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/accessories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,wDAAsC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ColorHSV } from '@manganese/palette-kit-core';
|
|
2
2
|
import { NativeEffect, NativeEffectType } from './types';
|
|
3
|
+
import { SelectionAccessoryMode } from 'helpers-for-homebridge';
|
|
3
4
|
export declare const OFF_COLOR: ColorHSV;
|
|
4
5
|
export declare const DEFAULT_DEVICE_SIZE = 50;
|
|
5
6
|
export declare const EFFECT_CHANGE_EVENT = "change";
|
|
@@ -8,3 +9,4 @@ export declare const DEFAULT_NATIVE_EFFECT_NAME = "Dynamic Effect";
|
|
|
8
9
|
export declare const NATIVE_EFFECT_TYPE_UUIDS: Map<NativeEffectType, string>;
|
|
9
10
|
export declare const NATIVE_EFFECT_BASE: NativeEffect;
|
|
10
11
|
export declare const ZONE_AUTO_OFF_EVENT = "zone_auto_off";
|
|
12
|
+
export declare const ZONE_EFFECT_SELECTION_ACCESSORY_MODE: SelectionAccessoryMode;
|
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZONE_AUTO_OFF_EVENT = exports.NATIVE_EFFECT_BASE = exports.NATIVE_EFFECT_TYPE_UUIDS = exports.DEFAULT_NATIVE_EFFECT_NAME = exports.EFFECT_SPEED_COEFFICIENT = exports.EFFECT_CHANGE_EVENT = exports.DEFAULT_DEVICE_SIZE = exports.OFF_COLOR = void 0;
|
|
3
|
+
exports.ZONE_EFFECT_SELECTION_ACCESSORY_MODE = exports.ZONE_AUTO_OFF_EVENT = exports.NATIVE_EFFECT_BASE = exports.NATIVE_EFFECT_TYPE_UUIDS = exports.DEFAULT_NATIVE_EFFECT_NAME = exports.EFFECT_SPEED_COEFFICIENT = exports.EFFECT_CHANGE_EVENT = exports.DEFAULT_DEVICE_SIZE = exports.OFF_COLOR = void 0;
|
|
4
4
|
const palette_kit_core_1 = require("@manganese/palette-kit-core");
|
|
5
5
|
const types_1 = require("./types");
|
|
6
6
|
exports.OFF_COLOR = {
|
|
@@ -33,4 +33,5 @@ exports.NATIVE_EFFECT_BASE = {
|
|
|
33
33
|
hasOverlay: false,
|
|
34
34
|
};
|
|
35
35
|
exports.ZONE_AUTO_OFF_EVENT = 'zone_auto_off';
|
|
36
|
+
exports.ZONE_EFFECT_SELECTION_ACCESSORY_MODE = 'outlet';
|
|
36
37
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,kEAAmE;AACnE,mCAAyD;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,kEAAmE;AACnE,mCAAyD;AAG5C,QAAA,SAAS,GAAa;IACjC,KAAK,EAAE,6BAAU,CAAC,GAAG;IACrB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;CACT,CAAC;AACW,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACzB,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,wBAAwB,GAAG,GAAG,CAAC;AAC/B,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAA2B;IACxE,CAAC,wBAAgB,CAAC,KAAK,EAAE,sCAAsC,CAAC;IAChE,CAAC,wBAAgB,CAAC,IAAI,EAAE,sCAAsC,CAAC;IAC/D,CAAC,wBAAgB,CAAC,OAAO,EAAE,sCAAsC,CAAC;IAClE,CAAC,wBAAgB,CAAC,IAAI,EAAE,sCAAsC,CAAC;IAC/D,CAAC,wBAAgB,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACjE,CAAC,wBAAgB,CAAC,SAAS,EAAE,sCAAsC,CAAC;CACrE,CAAC,CAAC;AACU,QAAA,kBAAkB,GAAiB;IAC9C,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,kCAA0B;IACpC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,gCAAwB,CAAC,GAAG,CAAC,wBAAgB,CAAC,IAAI,CAAC;IAC/D,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AACW,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oCAAoC,GAC/C,QAAQ,CAAC"}
|
package/dist/platformFactory.js
CHANGED
|
@@ -43,14 +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();
|
|
48
|
-
|
|
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) => {
|
|
50
|
+
const zoneEffectAccessory = new accessories_1.ZoneEffectAccessory(zone, this.context);
|
|
51
|
+
const zoneBrightnessAccessory = new accessories_1.ZoneBrightnessAccessory(zone, this.context);
|
|
49
52
|
zone.on(constants_1.ZONE_AUTO_OFF_EVENT, () => {
|
|
50
|
-
|
|
53
|
+
zoneEffectAccessory.updateActive(false);
|
|
51
54
|
});
|
|
52
|
-
return
|
|
53
|
-
}))
|
|
55
|
+
return [zoneEffectAccessory, zoneBrightnessAccessory];
|
|
56
|
+
}));
|
|
54
57
|
const accessories = [...zoneAccessories];
|
|
55
58
|
callback(accessories);
|
|
56
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,+
|
|
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": "
|
|
9
|
+
"version": "5.0.1",
|
|
10
10
|
"deprecated": false,
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Samuel Goodell"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"async-lock": "^1.2.4",
|
|
37
37
|
"axios": "^0.19.2",
|
|
38
38
|
"colors": "^1.4.0",
|
|
39
|
-
"helpers-for-homebridge": "^4.
|
|
39
|
+
"helpers-for-homebridge": "^4.4.0",
|
|
40
40
|
"nanoleaf-client-multi": "^2.0.1",
|
|
41
41
|
"rwlock": "^5.0.0",
|
|
42
42
|
"simple-node-logger": "^21.8.12"
|
package/src/Device.ts
CHANGED
|
@@ -106,6 +106,12 @@ export class Device {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
public async setBrightness(brightness: number): Promise<void> {
|
|
110
|
+
await this.withWriteLock(async () => {
|
|
111
|
+
await this.nanoleafClient.setBrightness(brightness * 100);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
109
115
|
public async addNativeEffect(nativeEffect: NativeEffect) {
|
|
110
116
|
await this.withWriteLock(async () => {
|
|
111
117
|
await this.nanoleafClient.addEffect(nativeEffect);
|
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,27 +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
|
|
|
134
|
+
this.active = active;
|
|
135
|
+
|
|
127
136
|
await Promise.all(
|
|
128
137
|
this.devicesArray.map(async (device) => {
|
|
129
138
|
await device.setActive(active);
|
|
130
139
|
})
|
|
131
140
|
);
|
|
132
|
-
|
|
133
|
-
const { activeEffect } = this;
|
|
134
|
-
|
|
135
|
-
if (active && !!activeEffect) {
|
|
136
|
-
await this.setActiveEffect(activeEffect);
|
|
137
|
-
}
|
|
138
141
|
}
|
|
139
142
|
|
|
140
143
|
// Effects
|
|
141
144
|
private effects = new Map<string, Effect<any>>();
|
|
142
|
-
private activeEffectId: string;
|
|
143
145
|
|
|
144
146
|
public getEffects() {
|
|
145
147
|
return this.effects;
|
|
@@ -153,11 +155,7 @@ export class Zone extends EventEmitter {
|
|
|
153
155
|
return (effect as T) || null;
|
|
154
156
|
}
|
|
155
157
|
|
|
156
|
-
public
|
|
157
|
-
return this.getEffect(this.activeEffectId);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
public getDefaultActiveEffectId() {
|
|
158
|
+
public getDefaultEffectId() {
|
|
161
159
|
if (this.effects.size === 0) {
|
|
162
160
|
return null;
|
|
163
161
|
}
|
|
@@ -165,15 +163,37 @@ export class Zone extends EventEmitter {
|
|
|
165
163
|
return Array.from(this.effects.values())[0].id;
|
|
166
164
|
}
|
|
167
165
|
|
|
168
|
-
|
|
169
|
-
|
|
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
|
+
}
|
|
174
|
+
|
|
175
|
+
public get activeEffectId() {
|
|
176
|
+
if (!this.active) return null;
|
|
177
|
+
|
|
178
|
+
return this.effectId;
|
|
179
|
+
}
|
|
170
180
|
|
|
171
|
-
|
|
181
|
+
public get activeEffect() {
|
|
182
|
+
if (!this.activeEffectId) return null;
|
|
183
|
+
|
|
184
|
+
return this.getEffect(this.activeEffectId);
|
|
172
185
|
}
|
|
173
186
|
|
|
174
|
-
public async
|
|
187
|
+
public async setActiveEffectById(effectId: string) {
|
|
188
|
+
this.effectId = effectId;
|
|
175
189
|
this.clearAutoOffTimeout();
|
|
176
190
|
|
|
191
|
+
if (!this.active) {
|
|
192
|
+
this.setActive(true);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const effect = this.activeEffect;
|
|
196
|
+
|
|
177
197
|
await Promise.all(
|
|
178
198
|
Array.from(this.devices).map((device) => {
|
|
179
199
|
return device.setActiveEffect(effect);
|
|
@@ -185,8 +205,41 @@ export class Zone extends EventEmitter {
|
|
|
185
205
|
}
|
|
186
206
|
}
|
|
187
207
|
|
|
188
|
-
|
|
189
|
-
|
|
208
|
+
// Brightness
|
|
209
|
+
private brightness: number = 1;
|
|
210
|
+
|
|
211
|
+
public getBrightness() {
|
|
212
|
+
if (!this.active) return 0;
|
|
213
|
+
|
|
214
|
+
return this.brightness;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
public async setBrightness(brightness: number): Promise<void> {
|
|
218
|
+
const previousBrightness = this.brightness;
|
|
219
|
+
const previousActive = previousBrightness > 0;
|
|
220
|
+
const active = brightness > 0;
|
|
221
|
+
|
|
222
|
+
// if (this.context.persistence) {
|
|
223
|
+
// this.context.log.debug(
|
|
224
|
+
// `Persisting zone ${logAccessoryName(
|
|
225
|
+
// this.name
|
|
226
|
+
// )} brightness = ${logPercent(brightness)}`
|
|
227
|
+
// );
|
|
228
|
+
|
|
229
|
+
// await this.context.persistence.setZoneBrightness(this.id, brightness);
|
|
230
|
+
// }
|
|
231
|
+
|
|
232
|
+
if (brightness > 0) {
|
|
233
|
+
this.brightness = brightness;
|
|
234
|
+
|
|
235
|
+
await Promise.all(
|
|
236
|
+
this.devicesArray.map((device) => device.setBrightness(brightness))
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (active !== previousActive) {
|
|
241
|
+
this.setActive(active);
|
|
242
|
+
}
|
|
190
243
|
}
|
|
191
244
|
|
|
192
245
|
// Auto-off
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BrightnessAccessory } from 'helpers-for-homebridge';
|
|
2
|
+
import { Context } from '../types';
|
|
3
|
+
import { Zone } from '../Zone';
|
|
4
|
+
|
|
5
|
+
export class ZoneBrightnessAccessory extends BrightnessAccessory {
|
|
6
|
+
constructor(
|
|
7
|
+
private readonly zone: Zone,
|
|
8
|
+
context: Context
|
|
9
|
+
) {
|
|
10
|
+
super(
|
|
11
|
+
{
|
|
12
|
+
name: zone.name + ' Brightness',
|
|
13
|
+
serial: zone.id + '_brightness',
|
|
14
|
+
model: 'Nanoleaf Multi Zone Brightness',
|
|
15
|
+
},
|
|
16
|
+
context
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public override async getBrightness(): Promise<number> {
|
|
21
|
+
return this.zone.getBrightness();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public override async setBrightness(brightness: number): Promise<void> {
|
|
25
|
+
return this.zone.setBrightness(brightness);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { SelectionAccessory } from 'helpers-for-homebridge';
|
|
2
2
|
import { Context } from '../types';
|
|
3
3
|
import { Zone } from '../Zone';
|
|
4
|
+
import { ZONE_EFFECT_SELECTION_ACCESSORY_MODE } from '../constants';
|
|
4
5
|
|
|
5
|
-
export class
|
|
6
|
+
export class ZoneEffectAccessory extends SelectionAccessory {
|
|
6
7
|
constructor(
|
|
7
8
|
private readonly zone: Zone,
|
|
8
9
|
context: Context
|
|
9
10
|
) {
|
|
10
11
|
super(
|
|
11
12
|
{
|
|
12
|
-
name: zone.name,
|
|
13
|
-
serial: zone.id,
|
|
14
|
-
model: 'Nanoleaf Multi Zone',
|
|
13
|
+
name: zone.name + ' Effect',
|
|
14
|
+
serial: zone.id + '_effect',
|
|
15
|
+
model: 'Nanoleaf Multi Zone Effect',
|
|
16
|
+
mode: ZONE_EFFECT_SELECTION_ACCESSORY_MODE,
|
|
15
17
|
options: zone.configuration.effects.map((effectConfiguration) => {
|
|
16
18
|
return {
|
|
17
19
|
name: effectConfiguration.name,
|
|
@@ -22,30 +24,21 @@ export class ZoneAccessory extends SelectionAccessory {
|
|
|
22
24
|
},
|
|
23
25
|
context
|
|
24
26
|
);
|
|
25
|
-
|
|
26
|
-
this.activeOptionId = this.configuration.options[0].id;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
private active: boolean = false;
|
|
30
|
-
private activeOptionId: string;
|
|
31
|
-
|
|
32
29
|
protected override async getActiveOptionId() {
|
|
33
|
-
return this.
|
|
30
|
+
return this.zone.getEffectIdOrDefault();
|
|
34
31
|
}
|
|
35
32
|
|
|
36
33
|
protected override async setActiveOptionId(effectId: string) {
|
|
37
|
-
this.activeOptionId = effectId;
|
|
38
|
-
|
|
39
34
|
await this.zone.setActiveEffectById(effectId);
|
|
40
35
|
}
|
|
41
36
|
|
|
42
37
|
protected override async getActive() {
|
|
43
|
-
return this.
|
|
38
|
+
return this.zone.getActive();
|
|
44
39
|
}
|
|
45
40
|
|
|
46
41
|
protected override async setActive(active: boolean) {
|
|
47
|
-
this.active = active;
|
|
48
|
-
|
|
49
42
|
await this.zone.setActive(active);
|
|
50
43
|
}
|
|
51
44
|
}
|
package/src/accessories/index.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './ZoneBrightnessAccessory';
|
|
2
|
+
export * from './ZoneEffectAccessory';
|
package/src/constants.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ColorHSV, ColorSpace } from '@manganese/palette-kit-core';
|
|
2
2
|
import { NativeEffect, NativeEffectType } from './types';
|
|
3
|
+
import { SelectionAccessoryMode } from 'helpers-for-homebridge';
|
|
3
4
|
|
|
4
5
|
export const OFF_COLOR: ColorHSV = {
|
|
5
6
|
space: ColorSpace.HSV,
|
|
@@ -31,3 +32,5 @@ export const NATIVE_EFFECT_BASE: NativeEffect = {
|
|
|
31
32
|
hasOverlay: false,
|
|
32
33
|
};
|
|
33
34
|
export const ZONE_AUTO_OFF_EVENT = 'zone_auto_off';
|
|
35
|
+
export const ZONE_EFFECT_SELECTION_ACCESSORY_MODE: SelectionAccessoryMode =
|
|
36
|
+
'outlet';
|
package/src/platformFactory.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Palette } from '@manganese/palette-kit-core';
|
|
|
5
5
|
import { PaletteClient } from '@manganese/palette-kit-client';
|
|
6
6
|
|
|
7
7
|
import { PlatformConfiguration, Context } from './types';
|
|
8
|
-
import {
|
|
8
|
+
import { ZoneBrightnessAccessory, ZoneEffectAccessory } from './accessories';
|
|
9
9
|
import { ZONE_AUTO_OFF_EVENT } from './constants';
|
|
10
10
|
import { Zone } from './Zone';
|
|
11
11
|
|
|
@@ -48,18 +48,28 @@ export default (homebridge: any) => {
|
|
|
48
48
|
|
|
49
49
|
public async accessories(callback) {
|
|
50
50
|
await this.context.paletteClient.connect();
|
|
51
|
-
|
|
52
|
-
const zoneAccessories = await Promise.all(
|
|
51
|
+
await Promise.all(
|
|
53
52
|
Array.from(this.zones.values()).map(async (zone) => {
|
|
54
|
-
await zone.initialize();
|
|
53
|
+
return await zone.initialize();
|
|
54
|
+
})
|
|
55
|
+
);
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
const zoneAccessories = await Promise.all(
|
|
58
|
+
Array.from(this.zones.values()).flatMap((zone) => {
|
|
59
|
+
const zoneEffectAccessory = new ZoneEffectAccessory(
|
|
60
|
+
zone,
|
|
61
|
+
this.context
|
|
62
|
+
);
|
|
63
|
+
const zoneBrightnessAccessory = new ZoneBrightnessAccessory(
|
|
64
|
+
zone,
|
|
65
|
+
this.context
|
|
66
|
+
);
|
|
57
67
|
|
|
58
68
|
zone.on(ZONE_AUTO_OFF_EVENT, () => {
|
|
59
|
-
|
|
69
|
+
zoneEffectAccessory.updateActive(false);
|
|
60
70
|
});
|
|
61
71
|
|
|
62
|
-
return
|
|
72
|
+
return [zoneEffectAccessory, zoneBrightnessAccessory];
|
|
63
73
|
})
|
|
64
74
|
);
|
|
65
75
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneAccessory.js","sourceRoot":"","sources":["../../src/accessories/ZoneAccessory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA4D;AAI5D,MAAa,aAAc,SAAQ,2CAAkB;IACnD,YACmB,IAAU,EAC3B,OAAgB;QAEhB,KAAK,CACH;YACE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,qBAAqB;YAC5B,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;QAjBe,SAAI,GAAJ,IAAI,CAAM;QAsBrB,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;AA9CD,sCA8CC"}
|