@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
|
@@ -48,6 +48,25 @@ class GoveeClient {
|
|
|
48
48
|
colorTemperature: ColorTemperature
|
|
49
49
|
): Promise<void>;
|
|
50
50
|
|
|
51
|
+
// Advanced Light Control
|
|
52
|
+
getDynamicScenes(deviceId: string, model: string): Promise<LightScene[]>;
|
|
53
|
+
setLightScene(deviceId: string, model: string, scene: LightScene): Promise<void>;
|
|
54
|
+
setSegmentColors(
|
|
55
|
+
deviceId: string,
|
|
56
|
+
model: string,
|
|
57
|
+
segments: SegmentColor | SegmentColor[]
|
|
58
|
+
): Promise<void>;
|
|
59
|
+
setSegmentBrightness(
|
|
60
|
+
deviceId: string,
|
|
61
|
+
model: string,
|
|
62
|
+
segments: Array<{ index: number; brightness: Brightness }> | { index: number; brightness: Brightness }
|
|
63
|
+
): Promise<void>;
|
|
64
|
+
setMusicMode(deviceId: string, model: string, musicMode: MusicMode): Promise<void>;
|
|
65
|
+
setNightlightToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
|
|
66
|
+
setGradientToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
|
|
67
|
+
setNightlightScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
|
|
68
|
+
setPresetScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
|
|
69
|
+
|
|
51
70
|
// Convenience Methods
|
|
52
71
|
turnOnWithBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
|
|
53
72
|
turnOnWithColor(
|
|
@@ -125,13 +144,31 @@ class DeviceState {
|
|
|
125
144
|
readonly model: string;
|
|
126
145
|
readonly properties: readonly StateProperty[];
|
|
127
146
|
|
|
147
|
+
// Basic state getters
|
|
128
148
|
getPowerState(): 'on' | 'off' | undefined;
|
|
129
|
-
getBrightness():
|
|
130
|
-
getColor():
|
|
131
|
-
getColorTemperature():
|
|
149
|
+
getBrightness(): Brightness | undefined;
|
|
150
|
+
getColor(): ColorRgb | undefined;
|
|
151
|
+
getColorTemperature(): ColorTemperature | undefined;
|
|
152
|
+
|
|
153
|
+
// Advanced state getters
|
|
154
|
+
getLightScene(): LightScene | undefined;
|
|
155
|
+
getSegmentColors(): SegmentColor[] | undefined;
|
|
156
|
+
getSegmentBrightness(): Array<{ index: number; brightness: Brightness }> | undefined;
|
|
157
|
+
getMusicMode(): MusicMode | undefined;
|
|
158
|
+
getNightlightToggle(): boolean | undefined;
|
|
159
|
+
getGradientToggle(): boolean | undefined;
|
|
160
|
+
getNightlightScene(): string | number | undefined;
|
|
161
|
+
getPresetScene(): string | number | undefined;
|
|
162
|
+
|
|
163
|
+
// Status checks
|
|
132
164
|
isOnline(): boolean;
|
|
133
|
-
|
|
134
|
-
|
|
165
|
+
isPoweredOn(): boolean;
|
|
166
|
+
isPoweredOff(): boolean;
|
|
167
|
+
isOffline(): boolean;
|
|
168
|
+
|
|
169
|
+
// Property access
|
|
170
|
+
hasProperty(key: string): boolean;
|
|
171
|
+
getProperty<T extends StateProperty>(key: string): T | undefined;
|
|
135
172
|
}
|
|
136
173
|
```
|
|
137
174
|
|
|
@@ -146,20 +183,44 @@ abstract class Command {
|
|
|
146
183
|
abstract toApiFormat(): { name: string; value: unknown }
|
|
147
184
|
}
|
|
148
185
|
|
|
149
|
-
//
|
|
186
|
+
// Basic command types:
|
|
150
187
|
class PowerOnCommand extends Command
|
|
151
188
|
class PowerOffCommand extends Command
|
|
152
189
|
class BrightnessCommand extends Command
|
|
153
190
|
class ColorCommand extends Command
|
|
154
191
|
class ColorTemperatureCommand extends Command
|
|
155
192
|
|
|
193
|
+
// Advanced command types:
|
|
194
|
+
class LightSceneCommand extends Command
|
|
195
|
+
class SegmentColorRgbCommand extends Command
|
|
196
|
+
class SegmentBrightnessCommand extends Command
|
|
197
|
+
class MusicModeCommand extends Command
|
|
198
|
+
class ToggleCommand extends Command
|
|
199
|
+
class ModeCommand extends Command
|
|
200
|
+
|
|
156
201
|
// Command factory:
|
|
157
202
|
class CommandFactory {
|
|
203
|
+
// Basic commands
|
|
158
204
|
static powerOn(): PowerOnCommand
|
|
159
205
|
static powerOff(): PowerOffCommand
|
|
160
206
|
static brightness(brightness: Brightness): BrightnessCommand
|
|
161
207
|
static color(color: ColorRgb): ColorCommand
|
|
162
208
|
static colorTemperature(temp: ColorTemperature): ColorTemperatureCommand
|
|
209
|
+
|
|
210
|
+
// Advanced commands
|
|
211
|
+
static lightScene(scene: LightScene): LightSceneCommand
|
|
212
|
+
static segmentColorRgb(segments: SegmentColor | SegmentColor[]): SegmentColorRgbCommand
|
|
213
|
+
static segmentBrightness(segments: Array<{ index: number; brightness: Brightness }> | { index: number; brightness: Brightness }): SegmentBrightnessCommand
|
|
214
|
+
static musicMode(musicMode: MusicMode): MusicModeCommand
|
|
215
|
+
static toggle(instance: string, enabled: boolean): ToggleCommand
|
|
216
|
+
static nightlightToggle(enabled: boolean): ToggleCommand
|
|
217
|
+
static gradientToggle(enabled: boolean): ToggleCommand
|
|
218
|
+
static mode(instance: string, modeValue: string | number): ModeCommand
|
|
219
|
+
static nightlightScene(sceneValue: string | number): ModeCommand
|
|
220
|
+
static presetScene(sceneValue: string | number): ModeCommand
|
|
221
|
+
|
|
222
|
+
// Create from object
|
|
223
|
+
static fromObject(obj: { name: string; value: unknown }): Command
|
|
163
224
|
}
|
|
164
225
|
```
|
|
165
226
|
|
|
@@ -234,6 +295,78 @@ class Brightness {
|
|
|
234
295
|
}
|
|
235
296
|
```
|
|
236
297
|
|
|
298
|
+
### LightScene
|
|
299
|
+
|
|
300
|
+
Represents a dynamic light scene with ID, paramId, and name.
|
|
301
|
+
|
|
302
|
+
```typescript
|
|
303
|
+
class LightScene {
|
|
304
|
+
constructor(id: number, paramId: number, name: string);
|
|
305
|
+
|
|
306
|
+
readonly id: number;
|
|
307
|
+
readonly paramId: number;
|
|
308
|
+
readonly name: string;
|
|
309
|
+
|
|
310
|
+
equals(other: LightScene): boolean;
|
|
311
|
+
toString(): string;
|
|
312
|
+
toApiValue(): { paramId: number; id: number };
|
|
313
|
+
toObject(): { id: number; paramId: number; name: string };
|
|
314
|
+
|
|
315
|
+
// Factory methods for common scenes
|
|
316
|
+
static sunrise(): LightScene;
|
|
317
|
+
static sunset(): LightScene;
|
|
318
|
+
static rainbow(): LightScene;
|
|
319
|
+
static aurora(): LightScene;
|
|
320
|
+
static candlelight(): LightScene;
|
|
321
|
+
static nightlight(): LightScene;
|
|
322
|
+
static romantic(): LightScene;
|
|
323
|
+
static blinking(): LightScene;
|
|
324
|
+
static fromObject(obj: { id: number; paramId: number; name: string }): LightScene;
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### SegmentColor
|
|
329
|
+
|
|
330
|
+
Represents color (and optional brightness) for an individual LED segment in RGB IC devices.
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
class SegmentColor {
|
|
334
|
+
constructor(index: number, color: ColorRgb, brightness?: Brightness);
|
|
335
|
+
|
|
336
|
+
readonly index: number; // Segment index (0-based)
|
|
337
|
+
readonly color: ColorRgb;
|
|
338
|
+
readonly brightness: Brightness | undefined;
|
|
339
|
+
|
|
340
|
+
equals(other: SegmentColor): boolean;
|
|
341
|
+
hasBrightness(): boolean;
|
|
342
|
+
toString(): string;
|
|
343
|
+
toObject(): { index: number; color: { r: number; g: number; b: number }; brightness?: { level: number } };
|
|
344
|
+
|
|
345
|
+
static fromObject(obj: { index: number; color: { r: number; g: number; b: number }; brightness?: { level: number } }): SegmentColor;
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### MusicMode
|
|
350
|
+
|
|
351
|
+
Represents music-reactive lighting mode configuration.
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
class MusicMode {
|
|
355
|
+
constructor(modeId: number, sensitivity?: number);
|
|
356
|
+
|
|
357
|
+
readonly modeId: number;
|
|
358
|
+
readonly sensitivity: number | undefined; // 0-100 (optional)
|
|
359
|
+
|
|
360
|
+
equals(other: MusicMode): boolean;
|
|
361
|
+
hasSensitivity(): boolean;
|
|
362
|
+
toString(): string;
|
|
363
|
+
toApiValue(): { modeId: number; sensitivity?: number };
|
|
364
|
+
toObject(): { modeId: number; sensitivity?: number };
|
|
365
|
+
|
|
366
|
+
static fromObject(obj: { modeId: number; sensitivity?: number }): MusicMode;
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
237
370
|
## Error Handling
|
|
238
371
|
|
|
239
372
|
### Error Hierarchy
|
package/docs/TYPE_DEFINITIONS.md
CHANGED
|
@@ -295,6 +295,92 @@ interface BrightnessObject {
|
|
|
295
295
|
}
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
+
### LightScene
|
|
299
|
+
|
|
300
|
+
Represents a dynamic light scene with paramId and sceneId.
|
|
301
|
+
|
|
302
|
+
```typescript
|
|
303
|
+
class LightScene {
|
|
304
|
+
readonly id: number;
|
|
305
|
+
readonly paramId: number;
|
|
306
|
+
readonly name: string;
|
|
307
|
+
|
|
308
|
+
constructor(id: number, paramId: number, name: string);
|
|
309
|
+
equals(other: LightScene): boolean;
|
|
310
|
+
toString(): string;
|
|
311
|
+
toApiValue(): { paramId: number; id: number };
|
|
312
|
+
toObject(): LightSceneObject;
|
|
313
|
+
|
|
314
|
+
// Factory methods for common scenes
|
|
315
|
+
static sunrise(): LightScene;
|
|
316
|
+
static sunset(): LightScene;
|
|
317
|
+
static rainbow(): LightScene;
|
|
318
|
+
static aurora(): LightScene;
|
|
319
|
+
static candlelight(): LightScene;
|
|
320
|
+
static nightlight(): LightScene;
|
|
321
|
+
static romantic(): LightScene;
|
|
322
|
+
static blinking(): LightScene;
|
|
323
|
+
static fromObject(obj: LightSceneObject): LightScene;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
interface LightSceneObject {
|
|
327
|
+
id: number;
|
|
328
|
+
paramId: number;
|
|
329
|
+
name: string;
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### SegmentColor
|
|
334
|
+
|
|
335
|
+
Represents color (and optional brightness) for an individual LED segment in RGB IC devices.
|
|
336
|
+
|
|
337
|
+
```typescript
|
|
338
|
+
class SegmentColor {
|
|
339
|
+
readonly index: number; // Segment index (0-based)
|
|
340
|
+
readonly color: ColorRgb;
|
|
341
|
+
readonly brightness: Brightness | undefined;
|
|
342
|
+
|
|
343
|
+
constructor(index: number, color: ColorRgb, brightness?: Brightness);
|
|
344
|
+
equals(other: SegmentColor): boolean;
|
|
345
|
+
hasBrightness(): boolean;
|
|
346
|
+
toString(): string;
|
|
347
|
+
toObject(): SegmentColorObject;
|
|
348
|
+
|
|
349
|
+
static fromObject(obj: SegmentColorObject): SegmentColor;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
interface SegmentColorObject {
|
|
353
|
+
index: number;
|
|
354
|
+
color: ColorRgbObject;
|
|
355
|
+
brightness?: BrightnessObject;
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### MusicMode
|
|
360
|
+
|
|
361
|
+
Represents music-reactive lighting mode configuration.
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
class MusicMode {
|
|
365
|
+
readonly modeId: number;
|
|
366
|
+
readonly sensitivity: number | undefined; // 0-100 (optional)
|
|
367
|
+
|
|
368
|
+
constructor(modeId: number, sensitivity?: number);
|
|
369
|
+
equals(other: MusicMode): boolean;
|
|
370
|
+
hasSensitivity(): boolean;
|
|
371
|
+
toString(): string;
|
|
372
|
+
toApiValue(): { modeId: number; sensitivity?: number };
|
|
373
|
+
toObject(): MusicModeObject;
|
|
374
|
+
|
|
375
|
+
static fromObject(obj: MusicModeObject): MusicMode;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
interface MusicModeObject {
|
|
379
|
+
modeId: number;
|
|
380
|
+
sensitivity?: number;
|
|
381
|
+
}
|
|
382
|
+
```
|
|
383
|
+
|
|
298
384
|
## Error Types
|
|
299
385
|
|
|
300
386
|
### Error Hierarchy
|