homebridge-openrgb-multi 7.1.3 → 8.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.js CHANGED
@@ -38,28 +38,34 @@ class Device {
38
38
  initialize() {
39
39
  return __awaiter(this, void 0, void 0, function* () {
40
40
  if (this.virtual) {
41
- this.context.log.info(`Initialized virtual device <${this.configuration.name}>`);
41
+ this.context.log.info(`Initialized virtual device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)}`);
42
+ return;
42
43
  }
43
- else {
44
+ this.context.openRgbClient.once('connect', () => __awaiter(this, void 0, void 0, function* () {
45
+ this.context.log.debug(`Connected OpenRGB, initializing device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)}`);
44
46
  const openRgbDevices = yield this.context.openRgbClient.getAllControllerData();
45
47
  const openRgbDevice = openRgbDevices.find((openRgb) => openRgb.serial.replace(/\s+$/g, '') ===
46
48
  this.configuration.serial);
47
49
  if (!openRgbDevice) {
48
- this.context.log.warn(`Could not resolve device <${this.name}> to OpenRGB controller`);
50
+ this.context.log.warn(`Could not resolve device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} to OpenRGB controller`);
49
51
  }
50
52
  else {
51
53
  this.openRgbDeviceId = openRgbDevice.deviceId;
52
54
  this.size = openRgbDevice.leds.length;
53
55
  this.colors = new Array(this.size).fill(palette_kit_core_1.DEFAULT_COLOR);
54
- this.context.log.info(`Resolved device <${this.name}> to OpenRGB controller ID [${this.openRgbDeviceId}] with size ${this.size}`);
56
+ this.context.log.info(`Resolved device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} to OpenRGB controller ID [${this.openRgbDeviceId}] with size ${this.size}`);
55
57
  }
56
- }
58
+ }));
57
59
  });
58
60
  }
59
61
  withWriteLock(callback) {
60
62
  return __awaiter(this, void 0, void 0, function* () {
61
63
  if (!this.virtual && this.openRgbDeviceId < 0) {
62
- this.context.log.warn(`Ignoring write lock request because device <${this.name}> was not initialized`);
64
+ this.context.log.warn(`Ignoring write lock request because device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} was not initialized`);
65
+ return;
66
+ }
67
+ if (!this.virtual && !this.context.openRgbClient.isConnected) {
68
+ this.context.log.warn(`Ignoring write lock request for device ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} because OpenRGB client is not connected`);
63
69
  return;
64
70
  }
65
71
  return this.lock.writeLock((release) => __awaiter(this, void 0, void 0, function* () {
@@ -102,7 +108,7 @@ class Device {
102
108
  yield this.withWriteLock(() => __awaiter(this, void 0, void 0, function* () {
103
109
  if (this.virtual)
104
110
  return;
105
- this.context.log.debug(`Applied <${this.name}>.active = ${(0, helpers_for_homebridge_1.logBoolean)(active)}`);
111
+ this.context.log.debug(`Applied ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)}.active = ${(0, helpers_for_homebridge_1.logBoolean)(active)}`);
106
112
  }));
107
113
  });
108
114
  }
@@ -127,7 +133,7 @@ class Device {
127
133
  this.colors[index] = colors[index - fromIndex];
128
134
  }
129
135
  }
130
- this.context.log.debug(`Applied <${this.name}>[${fromIndex}-${toIndex}] = [\n${colors
136
+ this.context.log.debug(`Applied ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)}[${fromIndex}-${toIndex}] = [\n${colors
131
137
  .map(palette_kit_core_1.colorToString)
132
138
  .map((colorString) => ' ' + colorString)
133
139
  .join(',\n')}\n]`);
@@ -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.js CHANGED
@@ -30,19 +30,6 @@ class Zone extends effect_kit_1.Zone {
30
30
  });
31
31
  return __awaiter(this, void 0, void 0, function* () {
32
32
  yield _super.initialize.call(this);
33
- if (this.context.persistence) {
34
- const active = yield this.context.persistence.getZoneActive(this.id);
35
- const brightness = yield this.context.persistence.getZoneBrightness(this.id);
36
- const effectId = yield this.context.persistence.getZoneEffectId(this.id);
37
- if (effectId) {
38
- const effect = this.getEffect(effectId);
39
- this.context.log.debug(`Restoring persisted zone ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} effect ID = [${effect.name}]`);
40
- yield this.setEffectId(effectId);
41
- }
42
- this.context.log.debug(`Restoring persisted zone ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} active = ${(0, helpers_for_homebridge_1.logBoolean)(active)}, brightness = ${(0, helpers_for_homebridge_1.logPercent)(brightness)}`);
43
- yield this.setBrightness(brightness);
44
- yield this.setActive(active);
45
- }
46
33
  this.on('updateActive', (active) => __awaiter(this, void 0, void 0, function* () {
47
34
  yield this.context.persistence.setZoneActive(this.id, active);
48
35
  }));
@@ -54,6 +41,22 @@ class Zone extends effect_kit_1.Zone {
54
41
  yield this.context.persistence.setZoneEffectId(this.id, effectId);
55
42
  }
56
43
  }));
44
+ this.context.openRgbClient.once('connect', () => __awaiter(this, void 0, void 0, function* () {
45
+ this.context.log.debug(`Connected OpenRGB, initializing zone ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)}`);
46
+ if (this.context.persistence) {
47
+ const active = yield this.context.persistence.getZoneActive(this.id);
48
+ const brightness = yield this.context.persistence.getZoneBrightness(this.id);
49
+ const effectId = yield this.context.persistence.getZoneEffectId(this.id);
50
+ if (effectId) {
51
+ const effect = this.getEffect(effectId);
52
+ this.context.log.debug(`Restoring persisted zone ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} effect ID = [${effect.name}]`);
53
+ yield this.setEffectId(effectId);
54
+ }
55
+ this.context.log.debug(`Restoring persisted zone ${(0, helpers_for_homebridge_1.logAccessoryName)(this.name)} active = ${(0, helpers_for_homebridge_1.logBoolean)(active)}, brightness = ${(0, helpers_for_homebridge_1.logPercent)(brightness)}`);
56
+ yield this.setBrightness(brightness);
57
+ yield this.setActive(active);
58
+ }
59
+ }));
57
60
  });
58
61
  }
59
62
  get devicesArray() {
package/dist/Zone.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Zone.js","sourceRoot":"","sources":["../src/Zone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Zone.js","sourceRoot":"","sources":["../src/Zone.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare const createPlatform: (homebridge: API) => {
6
6
  context: Context;
7
7
  zones: Map<string, Zone>;
8
8
  readonly configuration: PlatformConfiguration;
9
+ connectOpenRgbClient(): Promise<void>;
9
10
  accessories(callback: any): Promise<void>;
10
11
  };
11
12
  };
@@ -55,9 +55,23 @@ const createPlatform = (homebridge) => {
55
55
  this.zones.set(zone.id, zone);
56
56
  });
57
57
  }
58
+ connectOpenRgbClient() {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ while (!this.context.openRgbClient.isConnected) {
61
+ try {
62
+ yield this.context.openRgbClient.connect();
63
+ this.context.log.info(`Connected to OpenRGB server at ${this.configuration.openRgbHost}:${this.configuration.openRgbPort}`);
64
+ }
65
+ catch (error) {
66
+ this.context.log.warn(`Failed to connect to OpenRGB server at ${this.configuration.openRgbHost}:${this.configuration.openRgbPort}. Retrying in 5 seconds...`);
67
+ yield new Promise((resolve) => setTimeout(resolve, 5000));
68
+ }
69
+ }
70
+ });
71
+ }
58
72
  accessories(callback) {
59
73
  return __awaiter(this, void 0, void 0, function* () {
60
- yield this.context.openRgbClient.connect();
74
+ this.connectOpenRgbClient();
61
75
  yield this.context.paletteClient.connect();
62
76
  yield Promise.all(Array.from(this.zones.values()).map((zone) => __awaiter(this, void 0, void 0, function* () {
63
77
  return yield zone.initialize();
@@ -1 +1 @@
1
- {"version":3,"file":"platformFactory.js","sourceRoot":"","sources":["../src/platformFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platformFactory.js","sourceRoot":"","sources":["../src/platformFactory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { ZoneConfiguration as EffectKitZoneConfiguration } from '@manganese/effect-kit';
2
2
  import { DeviceConfiguration } from './DeviceConfiguration';
3
3
  export interface ZoneConfiguration extends EffectKitZoneConfiguration {
4
- trueOff?: boolean;
5
4
  devices: DeviceConfiguration[];
6
5
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "homebridge-openrgb-multi",
3
3
  "displayName": "Homebridge OpenRGB Multi",
4
4
  "description": "Homebridge plugin for multi-color dynamic effects for OpenRGB",
5
- "version": "7.1.3",
5
+ "version": "8.0.1",
6
6
  "keywords": [
7
7
  "homebridge-plugin"
8
8
  ],
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "deprecated": false,
21
21
  "engines": {
22
- "node": ">=24.0.0",
23
- "homebridge": "^1.6.0"
22
+ "node": "^24",
23
+ "homebridge": "^2.0.0"
24
24
  },
25
25
  "scripts": {
26
26
  "clean": "rm -rf dist node_modules package-lock.json",
@@ -34,7 +34,7 @@
34
34
  "@manganese/effect-kit": "^3.4.0",
35
35
  "@manganese/palette-kit-client": "^5.0.0",
36
36
  "@manganese/palette-kit-core": "^5.0.0",
37
- "helpers-for-homebridge": "^6.0.2",
37
+ "helpers-for-homebridge": "^7.0.0",
38
38
  "lodash": "^4.17.21",
39
39
  "openrgb-sdk": "^0.6.0",
40
40
  "rwlock": "^5.0.0",
@@ -46,7 +46,7 @@
46
46
  "@manganese/prettier-configuration": "^1.0.5",
47
47
  "@types/node": "^24.11.0",
48
48
  "@types/rwlock": "^5.0.3",
49
- "homebridge": "^1.6.0",
49
+ "homebridge": "^2.0.0",
50
50
  "prettier": "^3.1.1",
51
51
  "typescript": "^5.9.3"
52
52
  }
package/src/Device.ts CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  } from '@manganese/palette-kit-core';
13
13
  import { Controller, ApplyParameters } from '@manganese/effect-kit';
14
14
  import { Context, DeviceConfiguration } from './types';
15
- import { logBoolean } from 'helpers-for-homebridge';
15
+ import { logAccessoryName, logBoolean } from 'helpers-for-homebridge';
16
16
 
17
17
  export class Device implements Controller {
18
18
  private openRgbDeviceId: number = -1;
@@ -43,9 +43,15 @@ export class Device implements Controller {
43
43
  public async initialize() {
44
44
  if (this.virtual) {
45
45
  this.context.log.info(
46
- `Initialized virtual device <${this.configuration.name}>`
46
+ `Initialized virtual device ${logAccessoryName(this.name)}`
47
47
  );
48
- } else {
48
+
49
+ return;
50
+ }
51
+
52
+ this.context.openRgbClient.once('connect', async () => {
53
+ this.context.log.debug(`Connected OpenRGB, initializing device ${logAccessoryName(this.name)}`);
54
+
49
55
  const openRgbDevices =
50
56
  await (this.context.openRgbClient.getAllControllerData() as unknown as Promise<
51
57
  OpenRGBDevice[]
@@ -58,23 +64,30 @@ export class Device implements Controller {
58
64
 
59
65
  if (!openRgbDevice) {
60
66
  this.context.log.warn(
61
- `Could not resolve device <${this.name}> to OpenRGB controller`
67
+ `Could not resolve device ${logAccessoryName(this.name)} to OpenRGB controller`
62
68
  );
63
69
  } else {
64
70
  this.openRgbDeviceId = openRgbDevice.deviceId;
65
71
  this.size = openRgbDevice.leds.length;
66
72
  this.colors = new Array(this.size).fill(DEFAULT_COLOR);
67
73
  this.context.log.info(
68
- `Resolved device <${this.name}> to OpenRGB controller ID [${this.openRgbDeviceId}] with size ${this.size}`
74
+ `Resolved device ${logAccessoryName(this.name)} to OpenRGB controller ID [${this.openRgbDeviceId}] with size ${this.size}`
69
75
  );
70
76
  }
71
- }
77
+ });
72
78
  }
73
79
 
74
80
  private async withWriteLock(callback: () => Promise<void>) {
75
81
  if (!this.virtual && this.openRgbDeviceId < 0) {
76
82
  this.context.log.warn(
77
- `Ignoring write lock request because device <${this.name}> was not initialized`
83
+ `Ignoring write lock request because device ${logAccessoryName(this.name)} was not initialized`
84
+ );
85
+
86
+ return;
87
+ }
88
+ if (!this.virtual && !this.context.openRgbClient.isConnected) {
89
+ this.context.log.warn(
90
+ `Ignoring write lock request for device ${logAccessoryName(this.name)} because OpenRGB client is not connected`
78
91
  );
79
92
 
80
93
  return;
@@ -126,7 +139,7 @@ export class Device implements Controller {
126
139
  if (this.virtual) return;
127
140
 
128
141
  this.context.log.debug(
129
- `Applied <${this.name}>.active = ${logBoolean(active)}`
142
+ `Applied ${logAccessoryName(this.name)}.active = ${logBoolean(active)}`
130
143
  );
131
144
  });
132
145
  }
@@ -165,7 +178,7 @@ export class Device implements Controller {
165
178
  }
166
179
 
167
180
  this.context.log.debug(
168
- `Applied <${this.name}>[${fromIndex}-${toIndex}] = [\n${colors
181
+ `Applied ${logAccessoryName(this.name)}[${fromIndex}-${toIndex}] = [\n${colors
169
182
  .map(colorToString)
170
183
  .map((colorString) => ' ' + colorString)
171
184
  .join(',\n')}\n]`
package/src/Zone.ts CHANGED
@@ -27,37 +27,6 @@ export class Zone extends EffectKitZone {
27
27
  public async initialize() {
28
28
  await super.initialize();
29
29
 
30
- if (this.context.persistence) {
31
- const active = await this.context.persistence.getZoneActive(this.id);
32
- const brightness = await this.context.persistence.getZoneBrightness(
33
- this.id
34
- );
35
- const effectId = await this.context.persistence.getZoneEffectId(this.id);
36
-
37
- if (effectId) {
38
- const effect = this.getEffect<Effect<any>>(effectId);
39
-
40
- this.context.log.debug(
41
- `Restoring persisted zone ${logAccessoryName(
42
- this.name
43
- )} effect ID = [${effect.name}]`
44
- );
45
-
46
- await this.setEffectId(effectId);
47
- }
48
-
49
- this.context.log.debug(
50
- `Restoring persisted zone ${logAccessoryName(
51
- this.name
52
- )} active = ${logBoolean(active)}, brightness = ${logPercent(
53
- brightness
54
- )}`
55
- );
56
-
57
- await this.setBrightness(brightness);
58
- await this.setActive(active);
59
- }
60
-
61
30
  this.on('updateActive', async (active: boolean) => {
62
31
  await this.context.persistence.setZoneActive(this.id, active);
63
32
  });
@@ -71,6 +40,41 @@ export class Zone extends EffectKitZone {
71
40
  await this.context.persistence.setZoneEffectId(this.id, effectId);
72
41
  }
73
42
  });
43
+
44
+ this.context.openRgbClient.once('connect', async () => {
45
+ this.context.log.debug(`Connected OpenRGB, initializing zone ${logAccessoryName(this.name)}`);
46
+
47
+ if (this.context.persistence) {
48
+ const active = await this.context.persistence.getZoneActive(this.id);
49
+ const brightness = await this.context.persistence.getZoneBrightness(
50
+ this.id
51
+ );
52
+ const effectId = await this.context.persistence.getZoneEffectId(this.id);
53
+
54
+ if (effectId) {
55
+ const effect = this.getEffect<Effect<any>>(effectId);
56
+
57
+ this.context.log.debug(
58
+ `Restoring persisted zone ${logAccessoryName(
59
+ this.name
60
+ )} effect ID = [${effect.name}]`
61
+ );
62
+
63
+ await this.setEffectId(effectId);
64
+ }
65
+
66
+ this.context.log.debug(
67
+ `Restoring persisted zone ${logAccessoryName(
68
+ this.name
69
+ )} active = ${logBoolean(active)}, brightness = ${logPercent(
70
+ brightness
71
+ )}`
72
+ );
73
+
74
+ await this.setBrightness(brightness);
75
+ await this.setActive(active);
76
+ }
77
+ });
74
78
  }
75
79
 
76
80
  // Devices
@@ -68,8 +68,27 @@ export const createPlatform = (homebridge: API) => {
68
68
  });
69
69
  }
70
70
 
71
+ async connectOpenRgbClient() {
72
+ while (!this.context.openRgbClient.isConnected) {
73
+ try {
74
+ await this.context.openRgbClient.connect();
75
+
76
+ this.context.log.info(
77
+ `Connected to OpenRGB server at ${this.configuration.openRgbHost}:${this.configuration.openRgbPort}`
78
+ );
79
+ } catch (error) {
80
+ this.context.log.warn(
81
+ `Failed to connect to OpenRGB server at ${this.configuration.openRgbHost}:${this.configuration.openRgbPort}. Retrying in 5 seconds...`
82
+ );
83
+
84
+ await new Promise((resolve) => setTimeout(resolve, 5000));
85
+ }
86
+ }
87
+ }
88
+
71
89
  public async accessories(callback) {
72
- await this.context.openRgbClient.connect();
90
+ this.connectOpenRgbClient();
91
+
73
92
  await this.context.paletteClient.connect();
74
93
  await Promise.all(
75
94
  Array.from(this.zones.values()).map(async (zone) => {
@@ -2,6 +2,5 @@ import { ZoneConfiguration as EffectKitZoneConfiguration } from '@manganese/effe
2
2
  import { DeviceConfiguration } from './DeviceConfiguration';
3
3
 
4
4
  export interface ZoneConfiguration extends EffectKitZoneConfiguration {
5
- trueOff?: boolean;
6
5
  devices: DeviceConfiguration[];
7
6
  }