@felixgeelhaar/govee-api-client 1.0.2 → 1.1.0

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.
@@ -1,17 +1,34 @@
1
+ interface GoveeCapability {
2
+ type: string;
3
+ instance: string;
4
+ parameters?: {
5
+ dataType: string;
6
+ options?: Array<{
7
+ name: string;
8
+ value: unknown;
9
+ }>;
10
+ };
11
+ }
1
12
  export declare class GoveeDevice {
2
13
  private readonly _deviceId;
3
- private readonly _model;
14
+ private readonly _sku;
4
15
  private readonly _deviceName;
16
+ private readonly _capabilities;
5
17
  private readonly _controllable;
6
18
  private readonly _retrievable;
7
19
  private readonly _supportedCmds;
8
- constructor(deviceId: string, model: string, deviceName: string, controllable: boolean, retrievable: boolean, supportedCmds: string[]);
20
+ constructor(deviceId: string, sku: string, deviceName: string, capabilities: GoveeCapability[]);
9
21
  private validateDeviceId;
10
- private validateModel;
22
+ private validateSku;
11
23
  private validateDeviceName;
12
- private validateSupportedCmds;
24
+ private validateCapabilities;
25
+ private deriveControllable;
26
+ private deriveRetrievable;
27
+ private deriveSupportedCommands;
13
28
  get deviceId(): string;
14
29
  get model(): string;
30
+ get sku(): string;
31
+ get capabilities(): readonly GoveeCapability[];
15
32
  get deviceName(): string;
16
33
  get controllable(): boolean;
17
34
  get retrievable(): boolean;
@@ -38,4 +55,5 @@ export declare class GoveeDevice {
38
55
  supportedCmds: string[];
39
56
  }): GoveeDevice;
40
57
  }
58
+ export {};
41
59
  //# sourceMappingURL=GoveeDevice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeDevice.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/GoveeDevice.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;gBAGxC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,MAAM,EAAE;IAezB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,qBAAqB;IAW7B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,aAAa,IAAI,SAAS,MAAM,EAAE,CAErC;IAED,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAInC,QAAQ,IAAI,MAAM;IAIlB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB;IAWD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,GAAG,WAAW;CAUhB"}
1
+ {"version":3,"file":"GoveeDevice.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/GoveeDevice.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,OAAO,CAAC;SAChB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;gBAE9B,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE;IAe9F,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,uBAAuB;IAgB/B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,YAAY,IAAI,SAAS,eAAe,EAAE,CAE7C;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,aAAa,IAAI,SAAS,MAAM,EAAE,CAErC;IAED,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAInC,QAAQ,IAAI,MAAM;IAIlB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB;IAWD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,GAAG,WAAW;CAsBhB"}
@@ -1,24 +1,25 @@
1
1
  export class GoveeDevice {
2
- constructor(deviceId, model, deviceName, controllable, retrievable, supportedCmds) {
2
+ constructor(deviceId, sku, deviceName, capabilities) {
3
3
  this.validateDeviceId(deviceId);
4
- this.validateModel(model);
4
+ this.validateSku(sku);
5
5
  this.validateDeviceName(deviceName);
6
- this.validateSupportedCmds(supportedCmds);
6
+ this.validateCapabilities(capabilities);
7
7
  this._deviceId = deviceId;
8
- this._model = model;
8
+ this._sku = sku;
9
9
  this._deviceName = deviceName;
10
- this._controllable = controllable;
11
- this._retrievable = retrievable;
12
- this._supportedCmds = [...supportedCmds];
10
+ this._capabilities = [...capabilities];
11
+ this._controllable = this.deriveControllable(capabilities);
12
+ this._retrievable = this.deriveRetrievable(capabilities);
13
+ this._supportedCmds = this.deriveSupportedCommands(capabilities);
13
14
  }
14
15
  validateDeviceId(deviceId) {
15
16
  if (!deviceId || typeof deviceId !== 'string' || deviceId.trim().length === 0) {
16
17
  throw new Error('Device ID must be a non-empty string');
17
18
  }
18
19
  }
19
- validateModel(model) {
20
- if (!model || typeof model !== 'string' || model.trim().length === 0) {
21
- throw new Error('Model must be a non-empty string');
20
+ validateSku(sku) {
21
+ if (!sku || typeof sku !== 'string' || sku.trim().length === 0) {
22
+ throw new Error('SKU must be a non-empty string');
22
23
  }
23
24
  }
24
25
  validateDeviceName(deviceName) {
@@ -26,21 +27,55 @@ export class GoveeDevice {
26
27
  throw new Error('Device name must be a non-empty string');
27
28
  }
28
29
  }
29
- validateSupportedCmds(supportedCmds) {
30
- if (!Array.isArray(supportedCmds)) {
31
- throw new Error('Supported commands must be an array');
30
+ validateCapabilities(capabilities) {
31
+ if (!Array.isArray(capabilities)) {
32
+ throw new Error('Capabilities must be an array');
32
33
  }
33
- for (const cmd of supportedCmds) {
34
- if (typeof cmd !== 'string' || cmd.trim().length === 0) {
35
- throw new Error('All supported commands must be non-empty strings');
34
+ for (const capability of capabilities) {
35
+ if (!capability.type ||
36
+ typeof capability.type !== 'string' ||
37
+ capability.type.trim().length === 0) {
38
+ throw new Error('All capabilities must have non-empty type strings');
36
39
  }
37
40
  }
38
41
  }
42
+ deriveControllable(capabilities) {
43
+ // Device is controllable if it has any control capabilities
44
+ return capabilities.some(cap => cap.type.includes('on_off') ||
45
+ cap.type.includes('range') ||
46
+ cap.type.includes('color_setting'));
47
+ }
48
+ deriveRetrievable(capabilities) {
49
+ // Most devices with capabilities are retrievable
50
+ return capabilities.length > 0;
51
+ }
52
+ deriveSupportedCommands(capabilities) {
53
+ const commands = new Set();
54
+ for (const capability of capabilities) {
55
+ if (capability.type.includes('on_off'))
56
+ commands.add('turn');
57
+ if (capability.type.includes('range') && capability.instance === 'brightness')
58
+ commands.add('brightness');
59
+ if (capability.type.includes('color_setting')) {
60
+ if (capability.instance === 'colorRgb')
61
+ commands.add('color');
62
+ if (capability.instance === 'colorTemperatureK')
63
+ commands.add('colorTem');
64
+ }
65
+ }
66
+ return Array.from(commands);
67
+ }
39
68
  get deviceId() {
40
69
  return this._deviceId;
41
70
  }
42
71
  get model() {
43
- return this._model;
72
+ return this._sku; // For backward compatibility
73
+ }
74
+ get sku() {
75
+ return this._sku;
76
+ }
77
+ get capabilities() {
78
+ return Object.freeze([...this._capabilities]);
44
79
  }
45
80
  get deviceName() {
46
81
  return this._deviceName;
@@ -55,10 +90,10 @@ export class GoveeDevice {
55
90
  return Object.freeze([...this._supportedCmds]);
56
91
  }
57
92
  equals(other) {
58
- return this._deviceId === other._deviceId && this._model === other._model;
93
+ return this._deviceId === other._deviceId && this._sku === other._sku;
59
94
  }
60
95
  toString() {
61
- return `GoveeDevice(${this._deviceId}, ${this._model}, "${this._deviceName}")`;
96
+ return `GoveeDevice(${this._deviceId}, ${this._sku}, "${this._deviceName}")`;
62
97
  }
63
98
  supportsCommand(command) {
64
99
  return this._supportedCmds.includes(command);
@@ -72,7 +107,7 @@ export class GoveeDevice {
72
107
  toObject() {
73
108
  return {
74
109
  deviceId: this._deviceId,
75
- model: this._model,
110
+ model: this._sku,
76
111
  deviceName: this._deviceName,
77
112
  controllable: this._controllable,
78
113
  retrievable: this._retrievable,
@@ -80,8 +115,24 @@ export class GoveeDevice {
80
115
  };
81
116
  }
82
117
  static fromObject(obj) {
83
- return new GoveeDevice(obj.deviceId, obj.model, obj.deviceName, obj.controllable, obj.retrievable, [...obj.supportedCmds] // Create a copy to prevent mutation
84
- );
118
+ // Convert old format to new capabilities format for backward compatibility
119
+ const capabilities = [];
120
+ if (obj.supportedCmds.includes('turn')) {
121
+ capabilities.push({ type: 'devices.capabilities.on_off', instance: 'powerSwitch' });
122
+ }
123
+ if (obj.supportedCmds.includes('brightness')) {
124
+ capabilities.push({ type: 'devices.capabilities.range', instance: 'brightness' });
125
+ }
126
+ if (obj.supportedCmds.includes('color')) {
127
+ capabilities.push({ type: 'devices.capabilities.color_setting', instance: 'colorRgb' });
128
+ }
129
+ if (obj.supportedCmds.includes('colorTem')) {
130
+ capabilities.push({
131
+ type: 'devices.capabilities.color_setting',
132
+ instance: 'colorTemperatureK',
133
+ });
134
+ }
135
+ return new GoveeDevice(obj.deviceId, obj.model, obj.deviceName, capabilities);
85
136
  }
86
137
  }
87
138
  //# sourceMappingURL=GoveeDevice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeDevice.js","sourceRoot":"","sources":["../../../src/domain/entities/GoveeDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoveeDevice.js","sourceRoot":"","sources":["../../../src/domain/entities/GoveeDevice.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,10 @@ export interface IGoveeDeviceRepository {
9
9
  /**
10
10
  * Retrieves the current state of a specific device
11
11
  */
12
- findState(deviceId: string, model: string): Promise<DeviceState>;
12
+ findState(deviceId: string, sku: string): Promise<DeviceState>;
13
13
  /**
14
14
  * Sends a command to control a specific device
15
15
  */
16
- sendCommand(deviceId: string, model: string, command: Command): Promise<void>;
16
+ sendCommand(deviceId: string, sku: string, command: Command): Promise<void>;
17
17
  }
18
18
  //# sourceMappingURL=IGoveeDeviceRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IGoveeDeviceRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/IGoveeDeviceRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E"}
1
+ {"version":3,"file":"IGoveeDeviceRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/IGoveeDeviceRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE/D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E"}
@@ -12,16 +12,17 @@ export declare class GoveeDeviceRepository implements IGoveeDeviceRepository {
12
12
  private readonly httpClient;
13
13
  private readonly logger;
14
14
  private static readonly BASE_URL;
15
+ private generateRequestId;
15
16
  constructor(config: GoveeApiConfig);
16
17
  private validateConfig;
17
18
  private setupInterceptors;
18
19
  private handleHttpError;
19
20
  findAll(): Promise<GoveeDevice[]>;
20
- findState(deviceId: string, model: string): Promise<DeviceState>;
21
- sendCommand(deviceId: string, model: string, command: Command): Promise<void>;
21
+ findState(deviceId: string, sku: string): Promise<DeviceState>;
22
+ sendCommand(deviceId: string, sku: string, command: Command): Promise<void>;
22
23
  private validateDeviceParams;
23
- private parseStateProperties;
24
- private mapToStateProperties;
24
+ private convertCommandToCapability;
25
+ private mapCapabilitiesToStateProperties;
25
26
  }
26
27
  export {};
27
28
  //# sourceMappingURL=GoveeDeviceRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeDeviceRepository.d.ts","sourceRoot":"","sources":["../../src/infrastructure/GoveeDeviceRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACL,WAAW,EAKZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIrD,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoDD,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAE5D,MAAM,EAAE,cAAc;IAgBlC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,eAAe;IAkCjB,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAoGjC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqChE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCnF,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;CA8B7B"}
1
+ {"version":3,"file":"GoveeDeviceRepository.d.ts","sourceRoot":"","sources":["../../src/infrastructure/GoveeDeviceRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACL,WAAW,EAKZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIrD,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8ED,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAEnE,OAAO,CAAC,iBAAiB;gBAIb,MAAM,EAAE,cAAc;IAgBlC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,eAAe;IAkCjB,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA+FjC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8C9D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjF,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,gCAAgC;CA4BzC"}
@@ -4,6 +4,9 @@ import { DeviceState, } from '../domain/entities/DeviceState';
4
4
  import { ColorRgb, ColorTemperature, Brightness } from '../domain/value-objects';
5
5
  import { GoveeApiError, InvalidApiKeyError, RateLimitError, NetworkError } from '../errors';
6
6
  export class GoveeDeviceRepository {
7
+ generateRequestId() {
8
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
9
+ }
7
10
  constructor(config) {
8
11
  this.validateConfig(config);
9
12
  this.logger = config.logger;
@@ -75,23 +78,21 @@ export class GoveeDeviceRepository {
75
78
  async findAll() {
76
79
  this.logger?.info('Fetching all devices');
77
80
  try {
78
- const response = await this.httpClient.get('/devices');
81
+ const response = await this.httpClient.get('/router/api/v1/user/devices');
79
82
  const apiResponse = response.data;
80
83
  if (apiResponse.code !== 200) {
81
84
  throw new GoveeApiError(`API returned error code ${apiResponse.code}: ${apiResponse.message}`, response.status, apiResponse.code, apiResponse.message);
82
85
  }
83
- const devices = apiResponse.data.devices
86
+ const devices = apiResponse.data
84
87
  .filter(device => {
85
- if (!device.deviceId ||
86
- typeof device.deviceId !== 'string' ||
87
- device.deviceId.trim().length === 0) {
88
- this.logger?.warn({ device: { ...device, deviceId: '[INVALID]' } }, 'Filtering out device with invalid device ID');
88
+ if (!device.device ||
89
+ typeof device.device !== 'string' ||
90
+ device.device.trim().length === 0) {
91
+ this.logger?.warn({ device: { ...device, device: '[INVALID]' } }, 'Filtering out device with invalid device ID');
89
92
  return false;
90
93
  }
91
- if (!device.model ||
92
- typeof device.model !== 'string' ||
93
- device.model.trim().length === 0) {
94
- this.logger?.warn({ device: { ...device, model: '[INVALID]' } }, 'Filtering out device with invalid model');
94
+ if (!device.sku || typeof device.sku !== 'string' || device.sku.trim().length === 0) {
95
+ this.logger?.warn({ device: { ...device, sku: '[INVALID]' } }, 'Filtering out device with invalid sku');
95
96
  return false;
96
97
  }
97
98
  if (!device.deviceName ||
@@ -100,20 +101,22 @@ export class GoveeDeviceRepository {
100
101
  this.logger?.warn({ device: { ...device, deviceName: '[INVALID]' } }, 'Filtering out device with invalid device name');
101
102
  return false;
102
103
  }
103
- if (!Array.isArray(device.supportCmds)) {
104
- this.logger?.warn({ device: { ...device, supportCmds: '[INVALID]' } }, 'Filtering out device with invalid supported commands');
104
+ if (!Array.isArray(device.capabilities)) {
105
+ this.logger?.warn({ device: { ...device, capabilities: '[INVALID]' } }, 'Filtering out device with invalid capabilities');
105
106
  return false;
106
107
  }
107
- for (const cmd of device.supportCmds) {
108
- if (typeof cmd !== 'string' || cmd.trim().length === 0) {
109
- this.logger?.warn({ device: { ...device, supportCmds: '[INVALID]' } }, 'Filtering out device with invalid supported command');
108
+ for (const capability of device.capabilities) {
109
+ if (!capability.type ||
110
+ typeof capability.type !== 'string' ||
111
+ capability.type.trim().length === 0) {
112
+ this.logger?.warn({ device: { ...device, capabilities: '[INVALID]' } }, 'Filtering out device with invalid capability type');
110
113
  return false;
111
114
  }
112
115
  }
113
116
  return true;
114
117
  })
115
- .map(device => new GoveeDevice(device.deviceId, device.model, device.deviceName, device.controllable, device.retrievable, device.supportCmds));
116
- const totalDevicesFromApi = apiResponse.data.devices.length;
118
+ .map(device => new GoveeDevice(device.device, device.sku, device.deviceName, device.capabilities));
119
+ const totalDevicesFromApi = apiResponse.data.length;
117
120
  const validDevices = devices.length;
118
121
  const filteredDevices = totalDevicesFromApi - validDevices;
119
122
  if (filteredDevices > 0) {
@@ -129,19 +132,27 @@ export class GoveeDeviceRepository {
129
132
  throw error;
130
133
  }
131
134
  }
132
- async findState(deviceId, model) {
133
- this.validateDeviceParams(deviceId, model);
134
- this.logger?.info({ deviceId, model }, 'Fetching device state');
135
+ async findState(deviceId, sku) {
136
+ this.validateDeviceParams(deviceId, sku);
137
+ this.logger?.info({ deviceId, sku }, 'Fetching device state');
135
138
  try {
136
- const response = await this.httpClient.get(`/devices/state?device=${encodeURIComponent(deviceId)}&model=${encodeURIComponent(model)}`);
139
+ const requestBody = {
140
+ requestId: this.generateRequestId(),
141
+ payload: {
142
+ sku: sku,
143
+ device: deviceId,
144
+ },
145
+ };
146
+ const response = await this.httpClient.post('/router/api/v1/device/state', requestBody);
137
147
  const apiResponse = response.data;
138
148
  if (apiResponse.code !== 200) {
139
149
  throw new GoveeApiError(`API returned error code ${apiResponse.code}: ${apiResponse.message}`, response.status, apiResponse.code, apiResponse.message);
140
150
  }
141
- const properties = this.parseStateProperties(apiResponse.data.properties);
142
- const online = properties.online ?? true;
143
- const deviceState = new DeviceState(deviceId, model, online, this.mapToStateProperties(properties));
144
- this.logger?.info({ deviceId, model, online }, 'Successfully fetched device state');
151
+ // Parse capabilities into state properties
152
+ const stateProperties = this.mapCapabilitiesToStateProperties(apiResponse.data.capabilities);
153
+ const deviceState = new DeviceState(deviceId, sku, true, // Assume online if we get a response
154
+ stateProperties);
155
+ this.logger?.info({ deviceId, sku }, 'Successfully fetched device state');
145
156
  return deviceState;
146
157
  }
147
158
  catch (error) {
@@ -149,60 +160,75 @@ export class GoveeDeviceRepository {
149
160
  throw error;
150
161
  }
151
162
  }
152
- async sendCommand(deviceId, model, command) {
153
- this.validateDeviceParams(deviceId, model);
154
- this.logger?.info({ deviceId, model, command: command.toObject() }, 'Sending command to device');
163
+ async sendCommand(deviceId, sku, command) {
164
+ this.validateDeviceParams(deviceId, sku);
165
+ this.logger?.info({ deviceId, sku, command: command.toObject() }, 'Sending command to device');
155
166
  const requestBody = {
156
- device: deviceId,
157
- model: model,
158
- cmd: command.toObject(),
167
+ requestId: this.generateRequestId(),
168
+ payload: {
169
+ sku: sku,
170
+ device: deviceId,
171
+ capability: this.convertCommandToCapability(command),
172
+ },
159
173
  };
160
174
  try {
161
- const response = await this.httpClient.put('/devices/control', requestBody);
175
+ const response = await this.httpClient.post('/router/api/v1/device/control', requestBody);
162
176
  const apiResponse = response.data;
163
177
  if (apiResponse.code !== 200) {
164
178
  throw new GoveeApiError(`API returned error code ${apiResponse.code}: ${apiResponse.message}`, response.status, apiResponse.code, apiResponse.message);
165
179
  }
166
- this.logger?.info({ deviceId, model }, 'Successfully sent command to device');
180
+ this.logger?.info({ deviceId, sku }, 'Successfully sent command to device');
167
181
  }
168
182
  catch (error) {
169
183
  this.logger?.error(error, 'Failed to send command to device');
170
184
  throw error;
171
185
  }
172
186
  }
173
- validateDeviceParams(deviceId, model) {
187
+ validateDeviceParams(deviceId, sku) {
174
188
  if (!deviceId || typeof deviceId !== 'string' || deviceId.trim().length === 0) {
175
189
  throw new Error('Device ID must be a non-empty string');
176
190
  }
177
- if (!model || typeof model !== 'string' || model.trim().length === 0) {
178
- throw new Error('Model must be a non-empty string');
191
+ if (!sku || typeof sku !== 'string' || sku.trim().length === 0) {
192
+ throw new Error('SKU must be a non-empty string');
179
193
  }
180
194
  }
181
- parseStateProperties(properties) {
182
- // Govee API returns an array of property objects, but typically contains a single object
183
- // with all the device properties
184
- return properties.reduce((acc, prop) => ({ ...acc, ...prop }), {});
195
+ convertCommandToCapability(command) {
196
+ const cmdObj = command.toObject();
197
+ // Map command names to capability types
198
+ const capabilityTypeMap = {
199
+ turn: 'devices.capabilities.on_off',
200
+ brightness: 'devices.capabilities.range',
201
+ color: 'devices.capabilities.color_setting',
202
+ colorTem: 'devices.capabilities.color_setting',
203
+ };
204
+ return {
205
+ type: capabilityTypeMap[cmdObj.name] || `devices.capabilities.${cmdObj.name}`,
206
+ instance: cmdObj.name === 'colorTem' ? 'colorTemperatureK' : cmdObj.name,
207
+ value: cmdObj.value,
208
+ };
185
209
  }
186
- mapToStateProperties(properties) {
210
+ mapCapabilitiesToStateProperties(capabilities) {
187
211
  const result = {};
188
- // Map power state
189
- if (typeof properties.powerSwitch === 'number') {
190
- result.powerSwitch = { value: properties.powerSwitch === 1 ? 'on' : 'off' };
191
- }
192
- // Map brightness
193
- if (typeof properties.brightness === 'number') {
194
- result.brightness = { value: new Brightness(properties.brightness) };
195
- }
196
- // Map color
197
- if (properties.color && typeof properties.color === 'object') {
198
- result.color = { value: ColorRgb.fromObject(properties.color) };
199
- }
200
- // Map color temperature
201
- if (typeof properties.colorTem === 'number') {
202
- result.colorTem = { value: new ColorTemperature(properties.colorTem) };
212
+ for (const capability of capabilities) {
213
+ if (capability.type.includes('on_off')) {
214
+ result.powerSwitch = { value: capability.state.value ? 'on' : 'off' };
215
+ }
216
+ else if (capability.type.includes('range') && capability.instance === 'brightness') {
217
+ result.brightness = { value: new Brightness(capability.state.value) };
218
+ }
219
+ else if (capability.type.includes('color_setting')) {
220
+ if (capability.instance === 'colorRgb') {
221
+ result.color = {
222
+ value: ColorRgb.fromObject(capability.state.value),
223
+ };
224
+ }
225
+ else if (capability.instance === 'colorTemperatureK') {
226
+ result.colorTem = { value: new ColorTemperature(capability.state.value) };
227
+ }
228
+ }
203
229
  }
204
230
  return result;
205
231
  }
206
232
  }
207
- GoveeDeviceRepository.BASE_URL = 'https://developer-api.govee.com/v1';
233
+ GoveeDeviceRepository.BASE_URL = 'https://openapi.api.govee.com';
208
234
  //# sourceMappingURL=GoveeDeviceRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeDeviceRepository.js","sourceRoot":"","sources":["../../src/infrastructure/GoveeDeviceRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoveeDeviceRepository.js","sourceRoot":"","sources":["../../src/infrastructure/GoveeDeviceRepository.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felixgeelhaar/govee-api-client",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Enterprise-grade TypeScript client library for the Govee Developer REST API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",