@felixgeelhaar/govee-api-client 3.0.0 → 3.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/README.md +162 -2
- package/dist/GoveeClient.d.ts +16 -1
- package/dist/GoveeClient.d.ts.map +1 -1
- package/dist/GoveeClient.js +27 -0
- package/dist/GoveeClient.js.map +1 -1
- package/dist/domain/entities/Command.d.ts +124 -1
- package/dist/domain/entities/Command.d.ts.map +1 -1
- package/dist/domain/entities/Command.js +173 -1
- package/dist/domain/entities/Command.js.map +1 -1
- package/dist/domain/entities/DeviceState.d.ts +34 -2
- package/dist/domain/entities/DeviceState.d.ts.map +1 -1
- package/dist/domain/entities/DeviceState.js +32 -0
- package/dist/domain/entities/DeviceState.js.map +1 -1
- package/dist/domain/entities/GoveeDevice.d.ts.map +1 -1
- package/dist/domain/entities/GoveeDevice.js +56 -0
- package/dist/domain/entities/GoveeDevice.js.map +1 -1
- package/dist/domain/entities/index.d.ts +2 -2
- package/dist/domain/entities/index.d.ts.map +1 -1
- package/dist/domain/entities/index.js +1 -1
- package/dist/domain/entities/index.js.map +1 -1
- package/dist/domain/repositories/IGoveeDeviceRepository.d.ts +5 -0
- package/dist/domain/repositories/IGoveeDeviceRepository.d.ts.map +1 -1
- package/dist/domain/value-objects/LightScene.d.ts +72 -0
- package/dist/domain/value-objects/LightScene.d.ts.map +1 -0
- package/dist/domain/value-objects/LightScene.js +138 -0
- package/dist/domain/value-objects/LightScene.js.map +1 -0
- package/dist/domain/value-objects/MusicMode.d.ts +51 -0
- package/dist/domain/value-objects/MusicMode.d.ts.map +1 -0
- package/dist/domain/value-objects/MusicMode.js +95 -0
- package/dist/domain/value-objects/MusicMode.js.map +1 -0
- package/dist/domain/value-objects/SegmentColor.d.ts +59 -0
- package/dist/domain/value-objects/SegmentColor.d.ts.map +1 -0
- package/dist/domain/value-objects/SegmentColor.js +90 -0
- package/dist/domain/value-objects/SegmentColor.js.map +1 -0
- package/dist/domain/value-objects/index.d.ts +3 -0
- package/dist/domain/value-objects/index.d.ts.map +1 -1
- package/dist/domain/value-objects/index.js +3 -0
- package/dist/domain/value-objects/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/GoveeDeviceRepository.d.ts +2 -0
- package/dist/infrastructure/GoveeDeviceRepository.d.ts.map +1 -1
- package/dist/infrastructure/GoveeDeviceRepository.js +125 -8
- package/dist/infrastructure/GoveeDeviceRepository.js.map +1 -1
- package/dist/infrastructure/response-schemas.d.ts +47 -0
- package/dist/infrastructure/response-schemas.d.ts.map +1 -1
- package/dist/infrastructure/response-schemas.js +28 -0
- package/dist/infrastructure/response-schemas.js.map +1 -1
- package/dist/infrastructure/retry/RetryableRepository.d.ts +5 -0
- package/dist/infrastructure/retry/RetryableRepository.d.ts.map +1 -1
- package/dist/infrastructure/retry/RetryableRepository.js +17 -0
- package/dist/infrastructure/retry/RetryableRepository.js.map +1 -1
- package/dist/services/GoveeControlService.d.ts +43 -1
- package/dist/services/GoveeControlService.d.ts.map +1 -1
- package/dist/services/GoveeControlService.js +70 -0
- package/dist/services/GoveeControlService.js.map +1 -1
- package/docs/EXAMPLES.md +238 -0
- package/docs/LLM_API_REFERENCE.md +139 -6
- package/docs/TYPE_DEFINITIONS.md +86 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -149,6 +149,78 @@ await client.turnOnWithColor(deviceId, model, red, new Brightness(75));
|
|
|
149
149
|
await client.turnOnWithColorTemperature(deviceId, model, coolWhite, new Brightness(100));
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
+
### Advanced Light Control
|
|
153
|
+
|
|
154
|
+
#### Dynamic Light Scenes
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { LightScene } from '@felixgeelhaar/govee-api-client';
|
|
158
|
+
|
|
159
|
+
// Get available dynamic scenes for a device
|
|
160
|
+
const scenes = await client.getDynamicScenes(deviceId, model);
|
|
161
|
+
console.log(`Available scenes: ${scenes.map(s => s.name).join(', ')}`);
|
|
162
|
+
|
|
163
|
+
// Use built-in factory methods for common scenes
|
|
164
|
+
await client.setLightScene(deviceId, model, LightScene.sunrise());
|
|
165
|
+
await client.setLightScene(deviceId, model, LightScene.sunset());
|
|
166
|
+
await client.setLightScene(deviceId, model, LightScene.rainbow());
|
|
167
|
+
await client.setLightScene(deviceId, model, LightScene.aurora());
|
|
168
|
+
|
|
169
|
+
// Or set a custom scene
|
|
170
|
+
const customScene = new LightScene(3853, 4280, 'My Scene');
|
|
171
|
+
await client.setLightScene(deviceId, model, customScene);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
#### Segment Color Control (RGB IC Devices)
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
import { SegmentColor, ColorRgb } from '@felixgeelhaar/govee-api-client';
|
|
178
|
+
|
|
179
|
+
// Set color for individual segments
|
|
180
|
+
const segment1 = new SegmentColor(0, new ColorRgb(255, 0, 0)); // Red
|
|
181
|
+
const segment2 = new SegmentColor(1, new ColorRgb(0, 255, 0)); // Green
|
|
182
|
+
const segment3 = new SegmentColor(2, new ColorRgb(0, 0, 255)); // Blue
|
|
183
|
+
|
|
184
|
+
// Set multiple segments at once
|
|
185
|
+
await client.setSegmentColors(deviceId, model, [segment1, segment2, segment3]);
|
|
186
|
+
|
|
187
|
+
// Set brightness for individual segments
|
|
188
|
+
await client.setSegmentBrightness(deviceId, model, [
|
|
189
|
+
{ index: 0, brightness: new Brightness(100) },
|
|
190
|
+
{ index: 1, brightness: new Brightness(75) },
|
|
191
|
+
{ index: 2, brightness: new Brightness(50) },
|
|
192
|
+
]);
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
#### Music Mode
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import { MusicMode } from '@felixgeelhaar/govee-api-client';
|
|
199
|
+
|
|
200
|
+
// Set music mode with sensitivity
|
|
201
|
+
const musicMode = new MusicMode(1, 75); // Mode 1, 75% sensitivity
|
|
202
|
+
await client.setMusicMode(deviceId, model, musicMode);
|
|
203
|
+
|
|
204
|
+
// Music mode without sensitivity (uses device default)
|
|
205
|
+
const basicMode = new MusicMode(2);
|
|
206
|
+
await client.setMusicMode(deviceId, model, basicMode);
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
#### Toggle and Mode Controls
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
// Nightlight toggle
|
|
213
|
+
await client.setNightlightToggle(deviceId, model, true); // Enable
|
|
214
|
+
await client.setNightlightToggle(deviceId, model, false); // Disable
|
|
215
|
+
|
|
216
|
+
// Gradient toggle
|
|
217
|
+
await client.setGradientToggle(deviceId, model, true);
|
|
218
|
+
|
|
219
|
+
// Preset scenes
|
|
220
|
+
await client.setNightlightScene(deviceId, model, 1); // Scene ID 1
|
|
221
|
+
await client.setPresetScene(deviceId, model, 'cozy'); // Named scene
|
|
222
|
+
```
|
|
223
|
+
|
|
152
224
|
### Value Objects
|
|
153
225
|
|
|
154
226
|
#### ColorRgb
|
|
@@ -189,6 +261,75 @@ console.log(bright.asPercent()); // 0.75
|
|
|
189
261
|
console.log(custom.isDim()); // false
|
|
190
262
|
```
|
|
191
263
|
|
|
264
|
+
#### LightScene
|
|
265
|
+
|
|
266
|
+
```typescript
|
|
267
|
+
import { LightScene } from '@felixgeelhaar/govee-api-client';
|
|
268
|
+
|
|
269
|
+
// Built-in factory methods for common dynamic scenes
|
|
270
|
+
const sunrise = LightScene.sunrise();
|
|
271
|
+
const sunset = LightScene.sunset();
|
|
272
|
+
const rainbow = LightScene.rainbow();
|
|
273
|
+
const aurora = LightScene.aurora();
|
|
274
|
+
const candlelight = LightScene.candlelight();
|
|
275
|
+
const nightlight = LightScene.nightlight();
|
|
276
|
+
const romantic = LightScene.romantic();
|
|
277
|
+
const blinking = LightScene.blinking();
|
|
278
|
+
|
|
279
|
+
// Custom scene
|
|
280
|
+
const custom = new LightScene(3853, 4280, 'My Custom Scene');
|
|
281
|
+
|
|
282
|
+
// Scene properties
|
|
283
|
+
console.log(sunrise.name); // "Sunrise"
|
|
284
|
+
console.log(sunrise.id); // 3853
|
|
285
|
+
console.log(sunrise.paramId); // 4280
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### SegmentColor
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
import { SegmentColor, ColorRgb, Brightness } from '@felixgeelhaar/govee-api-client';
|
|
292
|
+
|
|
293
|
+
// Color only for a segment
|
|
294
|
+
const segment1 = new SegmentColor(0, new ColorRgb(255, 0, 0));
|
|
295
|
+
|
|
296
|
+
// Color with brightness for a segment
|
|
297
|
+
const segment2 = new SegmentColor(
|
|
298
|
+
1,
|
|
299
|
+
new ColorRgb(0, 255, 0),
|
|
300
|
+
new Brightness(75)
|
|
301
|
+
);
|
|
302
|
+
|
|
303
|
+
// Check if segment has brightness
|
|
304
|
+
console.log(segment1.hasBrightness()); // false
|
|
305
|
+
console.log(segment2.hasBrightness()); // true
|
|
306
|
+
|
|
307
|
+
// Access segment properties
|
|
308
|
+
console.log(segment2.index); // 1
|
|
309
|
+
console.log(segment2.color.toHex()); // "#00ff00"
|
|
310
|
+
console.log(segment2.brightness?.level); // 75
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
#### MusicMode
|
|
314
|
+
|
|
315
|
+
```typescript
|
|
316
|
+
import { MusicMode } from '@felixgeelhaar/govee-api-client';
|
|
317
|
+
|
|
318
|
+
// Music mode with sensitivity (0-100)
|
|
319
|
+
const mode1 = new MusicMode(1, 75);
|
|
320
|
+
|
|
321
|
+
// Music mode without sensitivity
|
|
322
|
+
const mode2 = new MusicMode(2);
|
|
323
|
+
|
|
324
|
+
// Check if mode has sensitivity
|
|
325
|
+
console.log(mode1.hasSensitivity()); // true
|
|
326
|
+
console.log(mode2.hasSensitivity()); // false
|
|
327
|
+
|
|
328
|
+
// Access properties
|
|
329
|
+
console.log(mode1.modeId); // 1
|
|
330
|
+
console.log(mode1.sensitivity); // 75
|
|
331
|
+
```
|
|
332
|
+
|
|
192
333
|
## Error Handling
|
|
193
334
|
|
|
194
335
|
The library provides a comprehensive error hierarchy for different types of failures:
|
|
@@ -464,7 +605,7 @@ await client.sendCommand(deviceId, model, setBrightness);
|
|
|
464
605
|
|
|
465
606
|
## Requirements
|
|
466
607
|
|
|
467
|
-
- Node.js
|
|
608
|
+
- Node.js 20.0.0 or higher
|
|
468
609
|
- Valid Govee Developer API key
|
|
469
610
|
|
|
470
611
|
## Development
|
|
@@ -492,7 +633,26 @@ MIT © [Felix Geelhaar]
|
|
|
492
633
|
|
|
493
634
|
## Contributing
|
|
494
635
|
|
|
495
|
-
Contributions are welcome! Please
|
|
636
|
+
Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on:
|
|
637
|
+
|
|
638
|
+
- Code of conduct
|
|
639
|
+
- Development workflow
|
|
640
|
+
- Code standards and architecture
|
|
641
|
+
- Testing requirements
|
|
642
|
+
- Commit guidelines
|
|
643
|
+
- Pull request process
|
|
644
|
+
|
|
645
|
+
For feature requests and discussions, visit our [GitHub Discussions](https://github.com/felixgeelhaar/govee-api-client/discussions).
|
|
646
|
+
|
|
647
|
+
## Roadmap
|
|
648
|
+
|
|
649
|
+
See our [Product Roadmap](ROADMAP.md) for planned features and enhancements, including:
|
|
650
|
+
|
|
651
|
+
- **Short-term (1-3 months):** Additional scene factory methods, animation utilities, performance optimizations
|
|
652
|
+
- **Medium-term (3-6 months):** Device discovery, advanced scheduling, real-time monitoring
|
|
653
|
+
- **Long-term (6-12 months):** Cloud integration, UI components, AI/ML features, ecosystem integrations
|
|
654
|
+
|
|
655
|
+
We welcome feedback and contributions for any roadmap items!
|
|
496
656
|
|
|
497
657
|
## API Documentation
|
|
498
658
|
|
package/dist/GoveeClient.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Logger } from 'pino';
|
|
|
2
2
|
import { GoveeDevice } from './domain/entities/GoveeDevice';
|
|
3
3
|
import { DeviceState } from './domain/entities/DeviceState';
|
|
4
4
|
import { Command } from './domain/entities/Command';
|
|
5
|
-
import { ColorRgb, ColorTemperature, Brightness } from './domain/value-objects';
|
|
5
|
+
import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode } from './domain/value-objects';
|
|
6
6
|
import { RetryPolicy } from './infrastructure/retry';
|
|
7
7
|
export interface GoveeClientConfig {
|
|
8
8
|
apiKey?: string;
|
|
@@ -29,6 +29,21 @@ export declare class GoveeClient {
|
|
|
29
29
|
setBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
|
|
30
30
|
setColor(deviceId: string, model: string, color: ColorRgb): Promise<void>;
|
|
31
31
|
setColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature): Promise<void>;
|
|
32
|
+
getDynamicScenes(deviceId: string, model: string): Promise<LightScene[]>;
|
|
33
|
+
setLightScene(deviceId: string, model: string, scene: LightScene): Promise<void>;
|
|
34
|
+
setSegmentColors(deviceId: string, model: string, segments: SegmentColor | SegmentColor[]): Promise<void>;
|
|
35
|
+
setSegmentBrightness(deviceId: string, model: string, segments: Array<{
|
|
36
|
+
index: number;
|
|
37
|
+
brightness: Brightness;
|
|
38
|
+
}> | {
|
|
39
|
+
index: number;
|
|
40
|
+
brightness: Brightness;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
setMusicMode(deviceId: string, model: string, musicMode: MusicMode): Promise<void>;
|
|
43
|
+
setNightlightToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
|
|
44
|
+
setGradientToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
|
|
45
|
+
setNightlightScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
|
|
46
|
+
setPresetScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
|
|
32
47
|
turnOnWithBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
|
|
33
48
|
turnOnWithColor(deviceId: string, model: string, color: ColorRgb, brightness?: Brightness): Promise<void>;
|
|
34
49
|
turnOnWithColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature, brightness?: Brightness): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
|
package/dist/GoveeClient.js
CHANGED
|
@@ -96,6 +96,33 @@ export class GoveeClient {
|
|
|
96
96
|
async setColorTemperature(deviceId, model, colorTemperature) {
|
|
97
97
|
return this.controlService.setColorTemperature(deviceId, model, colorTemperature);
|
|
98
98
|
}
|
|
99
|
+
async getDynamicScenes(deviceId, model) {
|
|
100
|
+
return this.controlService.getDynamicScenes(deviceId, model);
|
|
101
|
+
}
|
|
102
|
+
async setLightScene(deviceId, model, scene) {
|
|
103
|
+
return this.controlService.setLightScene(deviceId, model, scene);
|
|
104
|
+
}
|
|
105
|
+
async setSegmentColors(deviceId, model, segments) {
|
|
106
|
+
return this.controlService.setSegmentColors(deviceId, model, segments);
|
|
107
|
+
}
|
|
108
|
+
async setSegmentBrightness(deviceId, model, segments) {
|
|
109
|
+
return this.controlService.setSegmentBrightness(deviceId, model, segments);
|
|
110
|
+
}
|
|
111
|
+
async setMusicMode(deviceId, model, musicMode) {
|
|
112
|
+
return this.controlService.setMusicMode(deviceId, model, musicMode);
|
|
113
|
+
}
|
|
114
|
+
async setNightlightToggle(deviceId, model, enabled) {
|
|
115
|
+
return this.controlService.setNightlightToggle(deviceId, model, enabled);
|
|
116
|
+
}
|
|
117
|
+
async setGradientToggle(deviceId, model, enabled) {
|
|
118
|
+
return this.controlService.setGradientToggle(deviceId, model, enabled);
|
|
119
|
+
}
|
|
120
|
+
async setNightlightScene(deviceId, model, sceneValue) {
|
|
121
|
+
return this.controlService.setNightlightScene(deviceId, model, sceneValue);
|
|
122
|
+
}
|
|
123
|
+
async setPresetScene(deviceId, model, sceneValue) {
|
|
124
|
+
return this.controlService.setPresetScene(deviceId, model, sceneValue);
|
|
125
|
+
}
|
|
99
126
|
// Convenience methods
|
|
100
127
|
async turnOnWithBrightness(deviceId, model, brightness) {
|
|
101
128
|
return this.controlService.turnOnWithBrightness(deviceId, model, brightness);
|
package/dist/GoveeClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"AAAA,OAAO,IAAgB,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColorRgb, ColorTemperature, Brightness } from '../value-objects';
|
|
1
|
+
import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode } from '../value-objects';
|
|
2
2
|
export declare abstract class Command {
|
|
3
3
|
abstract readonly name: string;
|
|
4
4
|
abstract readonly value: unknown;
|
|
@@ -64,12 +64,135 @@ export declare class ColorTemperatureCommand extends Command {
|
|
|
64
64
|
value: number;
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
export declare class LightSceneCommand extends Command {
|
|
68
|
+
readonly name = "lightScene";
|
|
69
|
+
private readonly _scene;
|
|
70
|
+
constructor(scene: LightScene);
|
|
71
|
+
get value(): {
|
|
72
|
+
paramId: number;
|
|
73
|
+
id: number;
|
|
74
|
+
};
|
|
75
|
+
get scene(): LightScene;
|
|
76
|
+
toObject(): {
|
|
77
|
+
name: string;
|
|
78
|
+
value: {
|
|
79
|
+
paramId: number;
|
|
80
|
+
id: number;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export declare class SegmentColorRgbCommand extends Command {
|
|
85
|
+
readonly name = "segmentedColorRgb";
|
|
86
|
+
private readonly _segments;
|
|
87
|
+
constructor(segments: SegmentColor | SegmentColor[]);
|
|
88
|
+
get value(): Array<{
|
|
89
|
+
segment: number;
|
|
90
|
+
rgb: {
|
|
91
|
+
r: number;
|
|
92
|
+
g: number;
|
|
93
|
+
b: number;
|
|
94
|
+
};
|
|
95
|
+
}>;
|
|
96
|
+
get segments(): readonly SegmentColor[];
|
|
97
|
+
toObject(): {
|
|
98
|
+
name: string;
|
|
99
|
+
value: Array<{
|
|
100
|
+
segment: number;
|
|
101
|
+
rgb: {
|
|
102
|
+
r: number;
|
|
103
|
+
g: number;
|
|
104
|
+
b: number;
|
|
105
|
+
};
|
|
106
|
+
}>;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export declare class SegmentBrightnessCommand extends Command {
|
|
110
|
+
readonly name = "segmentedBrightness";
|
|
111
|
+
private readonly _segments;
|
|
112
|
+
constructor(segments: Array<{
|
|
113
|
+
index: number;
|
|
114
|
+
brightness: Brightness;
|
|
115
|
+
}> | {
|
|
116
|
+
index: number;
|
|
117
|
+
brightness: Brightness;
|
|
118
|
+
});
|
|
119
|
+
get value(): Array<{
|
|
120
|
+
segment: number;
|
|
121
|
+
brightness: number;
|
|
122
|
+
}>;
|
|
123
|
+
get segments(): ReadonlyArray<{
|
|
124
|
+
index: number;
|
|
125
|
+
brightness: Brightness;
|
|
126
|
+
}>;
|
|
127
|
+
toObject(): {
|
|
128
|
+
name: string;
|
|
129
|
+
value: Array<{
|
|
130
|
+
segment: number;
|
|
131
|
+
brightness: number;
|
|
132
|
+
}>;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export declare class MusicModeCommand extends Command {
|
|
136
|
+
readonly name = "musicMode";
|
|
137
|
+
private readonly _musicMode;
|
|
138
|
+
constructor(musicMode: MusicMode);
|
|
139
|
+
get value(): {
|
|
140
|
+
modeId: number;
|
|
141
|
+
sensitivity?: number;
|
|
142
|
+
};
|
|
143
|
+
get musicMode(): MusicMode;
|
|
144
|
+
toObject(): {
|
|
145
|
+
name: string;
|
|
146
|
+
value: {
|
|
147
|
+
modeId: number;
|
|
148
|
+
sensitivity?: number;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export declare class ToggleCommand extends Command {
|
|
153
|
+
readonly name: string;
|
|
154
|
+
private readonly _enabled;
|
|
155
|
+
constructor(instance: string, enabled: boolean);
|
|
156
|
+
get value(): number;
|
|
157
|
+
get enabled(): boolean;
|
|
158
|
+
toObject(): {
|
|
159
|
+
name: string;
|
|
160
|
+
value: number;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export declare class ModeCommand extends Command {
|
|
164
|
+
readonly name: string;
|
|
165
|
+
private readonly _modeValue;
|
|
166
|
+
constructor(instance: string, modeValue: string | number);
|
|
167
|
+
get value(): string | number;
|
|
168
|
+
get modeValue(): string | number;
|
|
169
|
+
toObject(): {
|
|
170
|
+
name: string;
|
|
171
|
+
value: string | number;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
67
174
|
export declare class CommandFactory {
|
|
68
175
|
static powerOn(): PowerOnCommand;
|
|
69
176
|
static powerOff(): PowerOffCommand;
|
|
70
177
|
static brightness(brightness: Brightness): BrightnessCommand;
|
|
71
178
|
static color(color: ColorRgb): ColorCommand;
|
|
72
179
|
static colorTemperature(colorTemperature: ColorTemperature): ColorTemperatureCommand;
|
|
180
|
+
static lightScene(scene: LightScene): LightSceneCommand;
|
|
181
|
+
static segmentColorRgb(segments: SegmentColor | SegmentColor[]): SegmentColorRgbCommand;
|
|
182
|
+
static segmentBrightness(segments: Array<{
|
|
183
|
+
index: number;
|
|
184
|
+
brightness: Brightness;
|
|
185
|
+
}> | {
|
|
186
|
+
index: number;
|
|
187
|
+
brightness: Brightness;
|
|
188
|
+
}): SegmentBrightnessCommand;
|
|
189
|
+
static musicMode(musicMode: MusicMode): MusicModeCommand;
|
|
190
|
+
static toggle(instance: string, enabled: boolean): ToggleCommand;
|
|
191
|
+
static nightlightToggle(enabled: boolean): ToggleCommand;
|
|
192
|
+
static gradientToggle(enabled: boolean): ToggleCommand;
|
|
193
|
+
static mode(instance: string, modeValue: string | number): ModeCommand;
|
|
194
|
+
static nightlightScene(sceneValue: string | number): ModeCommand;
|
|
195
|
+
static presetScene(sceneValue: string | number): ModeCommand;
|
|
73
196
|
static fromObject(obj: {
|
|
74
197
|
name: string;
|
|
75
198
|
value: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACV,MAAM,kBAAkB,CAAC;AAE1B,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAEjC,QAAQ,CAAC,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;CACtD;AAED,qBAAa,cAAe,SAAQ,OAAO;IACzC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,QAAQ;IAEtB,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,SAAS;IAEvB,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAE7B,UAAU,EAAE,UAAU;IAKlC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;gBAEtB,KAAK,EAAE,QAAQ;IAK3B,IAAI,KAAK,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAE/C;IAED,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;CAGzE;AAED,qBAAa,uBAAwB,SAAQ,OAAO;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;gBAEzC,gBAAgB,EAAE,gBAAgB;IAK9C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,KAAK,EAAE,UAAU;IAK7B,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAE3C;IAED,IAAI,KAAK,IAAI,UAAU,CAEtB;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;CAGrE;AAED,qBAAa,sBAAuB,SAAQ,OAAO;IACjD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;gBAE/B,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE;IAKnD,IAAI,KAAK,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAKhF;IAED,IAAI,QAAQ,IAAI,SAAS,YAAY,EAAE,CAEtC;IAED,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE;gBAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KAC7E;CAGF;AAED,qBAAa,wBAAyB,SAAQ,OAAO;IACnD,QAAQ,CAAC,IAAI,yBAAyB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmD;gBAG3E,QAAQ,EACJ,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC,GAChD;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IAM/C,IAAI,KAAK,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAK1D;IAED,IAAI,QAAQ,IAAI,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC,CAEvE;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;CAGpF;AAED,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE3B,SAAS,EAAE,SAAS;IAKhC,IAAI,KAAK,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAEpD;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;CAG9E;AAED,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEvB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAM9C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;gBAEjC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAMxD,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,MAAM,CAE/B;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;CAGrD;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,OAAO,IAAI,cAAc;IAIhC,MAAM,CAAC,QAAQ,IAAI,eAAe;IAIlC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB;IAI5D,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY;IAI3C,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,uBAAuB;IAIpF,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB;IAIvD,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,sBAAsB;IAIvF,MAAM,CAAC,iBAAiB,CACtB,QAAQ,EACJ,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC,GAChD;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,GAC5C,wBAAwB;IAI3B,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB;IAIxD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa;IAIhE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa;IAIxD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa;IAItD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAItE,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAIhE,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAI5D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;CAiFlE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColorRgb, ColorTemperature, Brightness } from '../value-objects';
|
|
1
|
+
import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode, } from '../value-objects';
|
|
2
2
|
export class Command {
|
|
3
3
|
}
|
|
4
4
|
export class PowerOnCommand extends Command {
|
|
@@ -69,6 +69,108 @@ export class ColorTemperatureCommand extends Command {
|
|
|
69
69
|
return { name: this.name, value: this.value };
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
export class LightSceneCommand extends Command {
|
|
73
|
+
constructor(scene) {
|
|
74
|
+
super();
|
|
75
|
+
this.name = 'lightScene';
|
|
76
|
+
this._scene = scene;
|
|
77
|
+
}
|
|
78
|
+
get value() {
|
|
79
|
+
return this._scene.toApiValue();
|
|
80
|
+
}
|
|
81
|
+
get scene() {
|
|
82
|
+
return this._scene;
|
|
83
|
+
}
|
|
84
|
+
toObject() {
|
|
85
|
+
return { name: this.name, value: this.value };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export class SegmentColorRgbCommand extends Command {
|
|
89
|
+
constructor(segments) {
|
|
90
|
+
super();
|
|
91
|
+
this.name = 'segmentedColorRgb';
|
|
92
|
+
this._segments = Array.isArray(segments) ? segments : [segments];
|
|
93
|
+
}
|
|
94
|
+
get value() {
|
|
95
|
+
return this._segments.map(seg => ({
|
|
96
|
+
segment: seg.index,
|
|
97
|
+
rgb: seg.color.toObject(),
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
get segments() {
|
|
101
|
+
return Object.freeze([...this._segments]);
|
|
102
|
+
}
|
|
103
|
+
toObject() {
|
|
104
|
+
return { name: this.name, value: this.value };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export class SegmentBrightnessCommand extends Command {
|
|
108
|
+
constructor(segments) {
|
|
109
|
+
super();
|
|
110
|
+
this.name = 'segmentedBrightness';
|
|
111
|
+
this._segments = Array.isArray(segments) ? segments : [segments];
|
|
112
|
+
}
|
|
113
|
+
get value() {
|
|
114
|
+
return this._segments.map(seg => ({
|
|
115
|
+
segment: seg.index,
|
|
116
|
+
brightness: seg.brightness.level,
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
get segments() {
|
|
120
|
+
return Object.freeze([...this._segments]);
|
|
121
|
+
}
|
|
122
|
+
toObject() {
|
|
123
|
+
return { name: this.name, value: this.value };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export class MusicModeCommand extends Command {
|
|
127
|
+
constructor(musicMode) {
|
|
128
|
+
super();
|
|
129
|
+
this.name = 'musicMode';
|
|
130
|
+
this._musicMode = musicMode;
|
|
131
|
+
}
|
|
132
|
+
get value() {
|
|
133
|
+
return this._musicMode.toApiValue();
|
|
134
|
+
}
|
|
135
|
+
get musicMode() {
|
|
136
|
+
return this._musicMode;
|
|
137
|
+
}
|
|
138
|
+
toObject() {
|
|
139
|
+
return { name: this.name, value: this.value };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export class ToggleCommand extends Command {
|
|
143
|
+
constructor(instance, enabled) {
|
|
144
|
+
super();
|
|
145
|
+
this.name = instance; // e.g., 'nightlightToggle', 'gradientToggle'
|
|
146
|
+
this._enabled = enabled;
|
|
147
|
+
}
|
|
148
|
+
get value() {
|
|
149
|
+
return this._enabled ? 1 : 0;
|
|
150
|
+
}
|
|
151
|
+
get enabled() {
|
|
152
|
+
return this._enabled;
|
|
153
|
+
}
|
|
154
|
+
toObject() {
|
|
155
|
+
return { name: this.name, value: this.value };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export class ModeCommand extends Command {
|
|
159
|
+
constructor(instance, modeValue) {
|
|
160
|
+
super();
|
|
161
|
+
this.name = instance; // e.g., 'nightlightScene', 'presetScene'
|
|
162
|
+
this._modeValue = modeValue;
|
|
163
|
+
}
|
|
164
|
+
get value() {
|
|
165
|
+
return this._modeValue;
|
|
166
|
+
}
|
|
167
|
+
get modeValue() {
|
|
168
|
+
return this._modeValue;
|
|
169
|
+
}
|
|
170
|
+
toObject() {
|
|
171
|
+
return { name: this.name, value: this.value };
|
|
172
|
+
}
|
|
173
|
+
}
|
|
72
174
|
export class CommandFactory {
|
|
73
175
|
static powerOn() {
|
|
74
176
|
return new PowerOnCommand();
|
|
@@ -85,6 +187,36 @@ export class CommandFactory {
|
|
|
85
187
|
static colorTemperature(colorTemperature) {
|
|
86
188
|
return new ColorTemperatureCommand(colorTemperature);
|
|
87
189
|
}
|
|
190
|
+
static lightScene(scene) {
|
|
191
|
+
return new LightSceneCommand(scene);
|
|
192
|
+
}
|
|
193
|
+
static segmentColorRgb(segments) {
|
|
194
|
+
return new SegmentColorRgbCommand(segments);
|
|
195
|
+
}
|
|
196
|
+
static segmentBrightness(segments) {
|
|
197
|
+
return new SegmentBrightnessCommand(segments);
|
|
198
|
+
}
|
|
199
|
+
static musicMode(musicMode) {
|
|
200
|
+
return new MusicModeCommand(musicMode);
|
|
201
|
+
}
|
|
202
|
+
static toggle(instance, enabled) {
|
|
203
|
+
return new ToggleCommand(instance, enabled);
|
|
204
|
+
}
|
|
205
|
+
static nightlightToggle(enabled) {
|
|
206
|
+
return new ToggleCommand('nightlightToggle', enabled);
|
|
207
|
+
}
|
|
208
|
+
static gradientToggle(enabled) {
|
|
209
|
+
return new ToggleCommand('gradientToggle', enabled);
|
|
210
|
+
}
|
|
211
|
+
static mode(instance, modeValue) {
|
|
212
|
+
return new ModeCommand(instance, modeValue);
|
|
213
|
+
}
|
|
214
|
+
static nightlightScene(sceneValue) {
|
|
215
|
+
return new ModeCommand('nightlightScene', sceneValue);
|
|
216
|
+
}
|
|
217
|
+
static presetScene(sceneValue) {
|
|
218
|
+
return new ModeCommand('presetScene', sceneValue);
|
|
219
|
+
}
|
|
88
220
|
static fromObject(obj) {
|
|
89
221
|
switch (obj.name) {
|
|
90
222
|
case 'turn':
|
|
@@ -111,6 +243,46 @@ export class CommandFactory {
|
|
|
111
243
|
return new ColorTemperatureCommand(new ColorTemperature(obj.value));
|
|
112
244
|
}
|
|
113
245
|
throw new Error(`Invalid color temperature command value: ${obj.value}`);
|
|
246
|
+
case 'lightScene':
|
|
247
|
+
if (typeof obj.value === 'object' && obj.value !== null) {
|
|
248
|
+
const sceneValue = obj.value;
|
|
249
|
+
return new LightSceneCommand(new LightScene(sceneValue.id, sceneValue.paramId, 'Scene'));
|
|
250
|
+
}
|
|
251
|
+
throw new Error(`Invalid light scene command value: ${obj.value}`);
|
|
252
|
+
case 'segmentedColorRgb':
|
|
253
|
+
if (Array.isArray(obj.value)) {
|
|
254
|
+
const segments = obj.value.map((seg) => new SegmentColor(seg.segment, ColorRgb.fromObject(seg.rgb)));
|
|
255
|
+
return new SegmentColorRgbCommand(segments);
|
|
256
|
+
}
|
|
257
|
+
throw new Error(`Invalid segmented color RGB command value: ${obj.value}`);
|
|
258
|
+
case 'segmentedBrightness':
|
|
259
|
+
if (Array.isArray(obj.value)) {
|
|
260
|
+
const segments = obj.value.map((seg) => ({
|
|
261
|
+
index: seg.segment,
|
|
262
|
+
brightness: new Brightness(seg.brightness),
|
|
263
|
+
}));
|
|
264
|
+
return new SegmentBrightnessCommand(segments);
|
|
265
|
+
}
|
|
266
|
+
throw new Error(`Invalid segmented brightness command value: ${obj.value}`);
|
|
267
|
+
case 'musicMode':
|
|
268
|
+
if (typeof obj.value === 'object' && obj.value !== null) {
|
|
269
|
+
const modeValue = obj.value;
|
|
270
|
+
return new MusicModeCommand(new MusicMode(modeValue.modeId, modeValue.sensitivity));
|
|
271
|
+
}
|
|
272
|
+
throw new Error(`Invalid music mode command value: ${obj.value}`);
|
|
273
|
+
case 'nightlightToggle':
|
|
274
|
+
case 'gradientToggle':
|
|
275
|
+
if (typeof obj.value === 'number' || typeof obj.value === 'boolean') {
|
|
276
|
+
const enabled = typeof obj.value === 'number' ? obj.value === 1 : obj.value;
|
|
277
|
+
return new ToggleCommand(obj.name, enabled);
|
|
278
|
+
}
|
|
279
|
+
throw new Error(`Invalid toggle command value: ${obj.value}`);
|
|
280
|
+
case 'nightlightScene':
|
|
281
|
+
case 'presetScene':
|
|
282
|
+
if (typeof obj.value === 'string' || typeof obj.value === 'number') {
|
|
283
|
+
return new ModeCommand(obj.name, obj.value);
|
|
284
|
+
}
|
|
285
|
+
throw new Error(`Invalid mode command value: ${obj.value}`);
|
|
114
286
|
default:
|
|
115
287
|
throw new Error(`Unknown command name: ${obj.name}`);
|
|
116
288
|
}
|