homebridge-arctic-spas 1.0.3 → 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.
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Arctic Spas Hot Tub Homebridge Plugin
2
2
  [![Downloads](https://img.shields.io/npm/dt/homebridge-arctic-spas?logo=icloud&style=for-the-badge)](https://www.npmjs.com/package/homebridge-arctic-spas)
3
3
  [![Version](https://img.shields.io/npm/v/homebridge-arctic-spas?label=Latest%20Version&style=for-the-badge)](https://www.npmjs.com/package/homebridge-arctic-spas)
4
+ [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=for-the-badge&logoColor=%23FFFFFF&logo=homebridge)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
4
5
 
5
6
  ## HomeKit support for Arctic Spas Hot Tub using [Homebridge](https://homebridge.io)
6
- `homebridge-arctic-spas` uses the Arctic Spas API to allow native HomeKit support via Homebridge for any thermostats on your account.
7
+ `homebridge-arctic-spas` uses the Arctic Spas API to allow native HomeKit support via Homebridge for any thermostats on your account. Visibility to pumps, lights, and accessories are provided, as well as SpaBoy values if applicable.
7
8
 
8
9
  ## Accessories and their features (dependent upon your system/equipment capabilities):
9
10
  * Hot Tub Temperature
@@ -12,7 +12,7 @@
12
12
  "properties": {
13
13
  "name": { "title": "Name", "type": "string", "default": "Arctic Spas" },
14
14
  "apiKey": {
15
- "title": "X-API-KEY",
15
+ "title": "Arctic Spas API Key",
16
16
  "type": "string"
17
17
  },
18
18
  "pollIntervalSeconds": {
@@ -69,32 +69,32 @@
69
69
  "enableBlower1": {
70
70
  "title": "Enable Blower 1",
71
71
  "type": "boolean",
72
- "default": true
72
+ "default": false
73
73
  },
74
74
  "enableBlower2": {
75
75
  "title": "Enable Blower 2",
76
76
  "type": "boolean",
77
- "default": true
77
+ "default": false
78
78
  },
79
79
  "enableEasyMode": {
80
80
  "title": "Enable Easy Mode",
81
81
  "type": "boolean",
82
- "default": true
82
+ "default": false
83
83
  },
84
84
  "enableSds": {
85
85
  "title": "Enable SDS",
86
86
  "type": "boolean",
87
- "default": true
87
+ "default": false
88
88
  },
89
89
  "enableYess": {
90
90
  "title": "Enable YESS",
91
91
  "type": "boolean",
92
- "default": true
92
+ "default": false
93
93
  },
94
94
  "enableFogger": {
95
95
  "title": "Enable Fogger",
96
96
  "type": "boolean",
97
- "default": true
97
+ "default": false
98
98
  }
99
99
  }
100
100
  },
@@ -1,12 +1,20 @@
1
1
  import type { PlatformAccessory } from 'homebridge';
2
2
  import type { ArcticSpasPlatform } from '../platform.js';
3
3
  import type { SpaClient } from '../spaClient.js';
4
+ type PumpId = 'pump1' | 'pump2' | 'pump3' | 'pump4' | 'pump5';
5
+ type PumpMode = 'two-state' | 'three-state';
4
6
  interface EnabledSwitchesConfig {
5
7
  pump1: boolean;
6
8
  pump2: boolean;
7
9
  pump3: boolean;
8
10
  pump4: boolean;
9
11
  pump5: boolean;
12
+ /**
13
+ * Optional per-pump mode overrides (defaults come from DEFAULT_PUMP_MODES).
14
+ * - two-state => behaves like a simple on/off fan (speed 0/100)
15
+ * - three-state => behaves like off/low/high (speed 0/50/100)
16
+ */
17
+ pumpModes?: Partial<Record<PumpId, PumpMode>>;
10
18
  blower1: boolean;
11
19
  blower2: boolean;
12
20
  easymode: boolean;
@@ -23,11 +31,14 @@ export declare class ArcticSpasPumpsAccessory {
23
31
  private readonly services;
24
32
  private currentStatus;
25
33
  constructor(platform: ArcticSpasPlatform, accessory: PlatformAccessory, client: SpaClient, pollIntervalMs: number, enabledSwitches: EnabledSwitchesConfig);
34
+ private isEnabled;
35
+ private removeMismatchedServices;
26
36
  private pollStatus;
27
- private handleSet;
28
- private handleSetPump;
29
- private handleSetBlower;
30
- private handleSetToggle;
31
- private handleBoost;
37
+ private getPumpActive;
38
+ private setPumpActive;
39
+ private getPumpSpeed;
40
+ private setPumpSpeed;
41
+ private getOn;
42
+ private setOn;
32
43
  }
33
44
  export {};
@@ -1,9 +1,18 @@
1
- const SWITCHES = [
2
- { id: 'pump1', displayName: 'Pump 1', kind: 'pump' },
3
- { id: 'pump2', displayName: 'Pump 2', kind: 'pump' },
4
- { id: 'pump3', displayName: 'Pump 3', kind: 'pump' },
5
- { id: 'pump4', displayName: 'Pump 4', kind: 'pump' },
6
- { id: 'pump5', displayName: 'Pump 5', kind: 'pump' },
1
+ const DEFAULT_PUMP_MODES = {
2
+ pump1: 'three-state',
3
+ pump2: 'two-state',
4
+ pump3: 'two-state',
5
+ pump4: 'two-state',
6
+ pump5: 'two-state',
7
+ };
8
+ const PUMP_DEFS = [
9
+ { id: 'pump1', displayName: 'Pump 1', kind: 'pump', pumpNumber: '1' },
10
+ { id: 'pump2', displayName: 'Pump 2', kind: 'pump', pumpNumber: '2' },
11
+ { id: 'pump3', displayName: 'Pump 3', kind: 'pump', pumpNumber: '3' },
12
+ { id: 'pump4', displayName: 'Pump 4', kind: 'pump', pumpNumber: '4' },
13
+ { id: 'pump5', displayName: 'Pump 5', kind: 'pump', pumpNumber: '5' },
14
+ ];
15
+ const OTHER_SWITCHES = [
7
16
  { id: 'blower1', displayName: 'Blower 1', kind: 'blower' },
8
17
  { id: 'blower2', displayName: 'Blower 2', kind: 'blower' },
9
18
  { id: 'easymode', displayName: 'Easy Mode', kind: 'toggle' },
@@ -12,6 +21,54 @@ const SWITCHES = [
12
21
  { id: 'fogger', displayName: 'Fogger', kind: 'toggle' },
13
22
  { id: 'boost', displayName: 'Boost', kind: 'boost' },
14
23
  ];
24
+ function isPumpId(id) {
25
+ return id === 'pump1' || id === 'pump2' || id === 'pump3' || id === 'pump4' || id === 'pump5';
26
+ }
27
+ function getStatusValue(status, key) {
28
+ if (!status) {
29
+ return undefined;
30
+ }
31
+ return status[key];
32
+ }
33
+ function getStatusString(status, key) {
34
+ const v = getStatusValue(status, key);
35
+ if (typeof v === 'string') {
36
+ return v;
37
+ }
38
+ return undefined;
39
+ }
40
+ function clampToDiscreteSpeed(mode, raw) {
41
+ if (mode === 'two-state') {
42
+ if (raw > 0) {
43
+ return 100;
44
+ }
45
+ return 0;
46
+ }
47
+ // three-state
48
+ if (raw <= 0) {
49
+ return 0;
50
+ }
51
+ if (raw <= 75) {
52
+ return 50;
53
+ }
54
+ return 100;
55
+ }
56
+ function pumpStateFromSpeed(mode, speed) {
57
+ if (mode === 'two-state') {
58
+ return speed === 0 ? 'off' : 'on';
59
+ }
60
+ // three-state
61
+ if (speed === 0) {
62
+ return 'off';
63
+ }
64
+ if (speed === 50) {
65
+ return 'low';
66
+ }
67
+ return 'high';
68
+ }
69
+ function pumpActiveFromState(state) {
70
+ return Boolean(state && state !== 'off');
71
+ }
15
72
  export class ArcticSpasPumpsAccessory {
16
73
  platform;
17
74
  accessory;
@@ -27,37 +84,140 @@ export class ArcticSpasPumpsAccessory {
27
84
  this.pollIntervalMs = pollIntervalMs;
28
85
  this.enabledSwitches = enabledSwitches;
29
86
  const { Service, Characteristic } = this.platform;
30
- const infoService = this.accessory.getService(Service.AccessoryInformation) ??
31
- this.accessory.addService(Service.AccessoryInformation);
32
- infoService
33
- .setCharacteristic(Characteristic.Manufacturer, 'Arctic Spas')
34
- .setCharacteristic(Characteristic.Model, 'Arctic Spas (Pumps & Features)')
35
- .setCharacteristic(Characteristic.SerialNumber, 'ArcticSpa-Pumps');
36
- for (const cfg of SWITCHES) {
37
- // Pump / blower / toggle are controlled by config; boost is always on
38
- if (cfg.kind !== 'boost') {
39
- const id = cfg.id;
40
- if (!this.enabledSwitches[id]) {
41
- continue;
42
- }
87
+ // Build pump configs from defaults + optional overrides.
88
+ const pumpModes = {
89
+ ...DEFAULT_PUMP_MODES,
90
+ ...(this.enabledSwitches.pumpModes ?? {}),
91
+ };
92
+ const pumps = PUMP_DEFS.map((p) => ({
93
+ ...p,
94
+ mode: pumpModes[p.id],
95
+ }));
96
+ // Ensure service types don't get mixed if you previously ran a different implementation.
97
+ // We remove by displayName to avoid leaving behind stale Switch services.
98
+ for (const cfg of [...pumps, ...OTHER_SWITCHES]) {
99
+ this.removeMismatchedServices(cfg.displayName, cfg.kind);
100
+ }
101
+ // Create services for pumps (Fanv2)
102
+ for (const pump of pumps) {
103
+ if (!this.isEnabled(pump.id)) {
104
+ continue;
43
105
  }
44
- const service = this.accessory.getService(cfg.displayName) ??
106
+ const fan = this.accessory.getService(pump.displayName) ??
107
+ this.accessory.addService(Service.Fanv2, pump.displayName, pump.id);
108
+ this.services.set(pump.id, fan);
109
+ fan.getCharacteristic(Characteristic.Active)
110
+ .onGet(() => this.getPumpActive(pump))
111
+ .onSet((value) => this.setPumpActive(pump, value));
112
+ const minStep = pump.mode === 'three-state' ? 50 : 100;
113
+ fan.getCharacteristic(Characteristic.RotationSpeed)
114
+ .setProps({ minValue: 0, maxValue: 100, minStep })
115
+ .onGet(() => this.getPumpSpeed(pump))
116
+ .onSet((value) => this.setPumpSpeed(pump, value));
117
+ }
118
+ // Create services for other toggles (Switch)
119
+ for (const cfg of OTHER_SWITCHES) {
120
+ if (!this.isEnabled(cfg.id)) {
121
+ continue;
122
+ }
123
+ const sw = this.accessory.getService(cfg.displayName) ??
45
124
  this.accessory.addService(Service.Switch, cfg.displayName, cfg.id);
46
- service
47
- .getCharacteristic(Characteristic.On)
48
- .onSet((value) => this.handleSet(cfg, value));
49
- this.services.set(cfg.id, service);
125
+ this.services.set(cfg.id, sw);
126
+ sw.getCharacteristic(Characteristic.On)
127
+ .onGet(() => this.getOn(cfg))
128
+ .onSet((value) => this.setOn(cfg, value));
50
129
  }
130
+ // Kick off polling
51
131
  void this.pollStatus();
52
- setInterval(() => {
53
- void this.pollStatus();
54
- }, this.pollIntervalMs);
132
+ setInterval(() => void this.pollStatus(), this.pollIntervalMs);
133
+ }
134
+ isEnabled(id) {
135
+ switch (id) {
136
+ case 'pump1': {
137
+ return this.enabledSwitches.pump1;
138
+ }
139
+ case 'pump2': {
140
+ return this.enabledSwitches.pump2;
141
+ }
142
+ case 'pump3': {
143
+ return this.enabledSwitches.pump3;
144
+ }
145
+ case 'pump4': {
146
+ return this.enabledSwitches.pump4;
147
+ }
148
+ case 'pump5': {
149
+ return this.enabledSwitches.pump5;
150
+ }
151
+ case 'blower1': {
152
+ return this.enabledSwitches.blower1;
153
+ }
154
+ case 'blower2': {
155
+ return this.enabledSwitches.blower2;
156
+ }
157
+ case 'easymode': {
158
+ return this.enabledSwitches.easymode;
159
+ }
160
+ case 'sds': {
161
+ return this.enabledSwitches.sds;
162
+ }
163
+ case 'yess': {
164
+ return this.enabledSwitches.yess;
165
+ }
166
+ case 'fogger': {
167
+ return this.enabledSwitches.fogger;
168
+ }
169
+ case 'boost': {
170
+ return false;
171
+ }
172
+ default: {
173
+ return false;
174
+ }
175
+ }
176
+ }
177
+ removeMismatchedServices(displayName, kind) {
178
+ const { Service } = this.platform;
179
+ const shouldBeFan = kind === 'pump';
180
+ const shouldBeSwitch = kind !== 'pump';
181
+ for (const svc of this.accessory.services.slice()) {
182
+ if (svc.displayName !== displayName) {
183
+ continue;
184
+ }
185
+ const isFan = svc.UUID === Service.Fanv2.UUID;
186
+ const isSwitch = svc.UUID === Service.Switch.UUID;
187
+ if (shouldBeFan && isSwitch) {
188
+ this.platform.log.warn(`Removing stale Switch service for ${displayName} (now Fanv2)`);
189
+ this.accessory.removeService(svc);
190
+ }
191
+ if (shouldBeSwitch && isFan) {
192
+ this.platform.log.warn(`Removing stale Fanv2 service for ${displayName} (now Switch)`);
193
+ this.accessory.removeService(svc);
194
+ }
195
+ }
55
196
  }
56
197
  async pollStatus() {
57
198
  try {
58
199
  const status = await this.client.getStatus();
59
200
  this.currentStatus = status;
60
201
  const { Characteristic } = this.platform;
202
+ // Pumps: update Active + RotationSpeed
203
+ for (const [id, svc] of this.services.entries()) {
204
+ if (!isPumpId(id)) {
205
+ continue;
206
+ }
207
+ // Determine mode from enabledSwitches overrides + defaults (same logic as ctor)
208
+ const mode = {
209
+ ...DEFAULT_PUMP_MODES,
210
+ ...(this.enabledSwitches.pumpModes ?? {}),
211
+ }[id];
212
+ const rawState = getStatusString(status, id);
213
+ const active = pumpActiveFromState(rawState);
214
+ const speed = mode === 'three-state'
215
+ ? (rawState === 'high' ? 100 : rawState === 'low' ? 50 : 0)
216
+ : (active ? 100 : 0);
217
+ svc.updateCharacteristic(Characteristic.Active, active ? Characteristic.Active.ACTIVE : Characteristic.Active.INACTIVE);
218
+ svc.updateCharacteristic(Characteristic.RotationSpeed, speed);
219
+ }
220
+ // Switch toggles: update On
61
221
  const setSwitch = (id, on) => {
62
222
  const svc = this.services.get(id);
63
223
  if (!svc) {
@@ -65,46 +225,129 @@ export class ArcticSpasPumpsAccessory {
65
225
  }
66
226
  svc.updateCharacteristic(Characteristic.On, on);
67
227
  };
68
- // Pumps: treat anything other than "off" as on
69
- setSwitch('pump1', Boolean(status.pump1 && status.pump1 !== 'off'));
70
- setSwitch('pump2', Boolean(status.pump2 && status.pump2 !== 'off'));
71
- setSwitch('pump3', Boolean(status.pump3 && status.pump3 !== 'off'));
72
- setSwitch('pump4', Boolean(status.pump4 && status.pump4 !== 'off'));
73
- setSwitch('pump5', Boolean(status.pump5 && status.pump5 !== 'off'));
74
- // Blowers
75
- setSwitch('blower1', status.blower1 === 'on');
76
- setSwitch('blower2', status.blower2 === 'on');
77
- // Toggles
78
- setSwitch('easymode', status.easymode === 'on');
79
- setSwitch('sds', status.sds === 'on');
80
- setSwitch('yess', status.yess === 'on');
81
- setSwitch('fogger', status.fogger === 'on');
82
- // Boost is write-only; leave switch state as-is
83
- this.platform.log.debug('Pumps/features status updated');
228
+ setSwitch('blower1', getStatusString(status, 'blower1') === 'on');
229
+ setSwitch('blower2', getStatusString(status, 'blower2') === 'on');
230
+ setSwitch('easymode', getStatusString(status, 'easymode') === 'on');
231
+ setSwitch('sds', getStatusString(status, 'sds') === 'on');
232
+ setSwitch('yess', getStatusString(status, 'yess') === 'on');
233
+ setSwitch('fogger', getStatusString(status, 'fogger') === 'on');
234
+ // Boost is write-only (momentary trigger); do not update from status.
84
235
  }
85
236
  catch (error) {
86
237
  const message = error instanceof Error ? error.message : String(error);
87
238
  this.platform.log.error('Failed to poll pumps/features status:', message);
88
239
  }
89
240
  }
90
- async handleSet(cfg, value) {
241
+ getPumpActive(cfg) {
242
+ // const { Characteristic } = this.platform;
243
+ const status = this.currentStatus;
244
+ if (!status) {
245
+ return false;
246
+ }
247
+ const rawState = getStatusString(status, cfg.id);
248
+ return pumpActiveFromState(rawState);
249
+ }
250
+ async setPumpActive(cfg, value) {
251
+ const { Characteristic } = this.platform;
252
+ const active = Number(value) === Characteristic.Active.ACTIVE;
253
+ try {
254
+ if (cfg.mode === 'two-state') {
255
+ await this.client.setPump(cfg.pumpNumber, active ? 'on' : 'off');
256
+ }
257
+ else {
258
+ // three-state: turning on defaults to low (as before), off is off
259
+ await this.client.setPump(cfg.pumpNumber, active ? 'low' : 'off');
260
+ }
261
+ // Keep UI in sync
262
+ const svc = this.services.get(cfg.id);
263
+ if (svc) {
264
+ svc.updateCharacteristic(Characteristic.Active, active ? Characteristic.Active.ACTIVE : Characteristic.Active.INACTIVE);
265
+ const speed = cfg.mode === 'three-state' ? (active ? 50 : 0) : (active ? 100 : 0);
266
+ svc.updateCharacteristic(Characteristic.RotationSpeed, speed);
267
+ }
268
+ }
269
+ catch (error) {
270
+ const message = error instanceof Error ? error.message : String(error);
271
+ this.platform.log.error(`Failed to set ${cfg.id} active:`, message);
272
+ throw error;
273
+ }
274
+ }
275
+ getPumpSpeed(cfg) {
276
+ const status = this.currentStatus;
277
+ if (!status) {
278
+ return 0;
279
+ }
280
+ const rawState = getStatusString(status, cfg.id);
281
+ if (cfg.mode === 'two-state') {
282
+ return pumpActiveFromState(rawState) ? 100 : 0;
283
+ }
284
+ if (rawState === 'high') {
285
+ return 100;
286
+ }
287
+ if (rawState === 'low') {
288
+ return 50;
289
+ }
290
+ return 0;
291
+ }
292
+ async setPumpSpeed(cfg, value) {
293
+ const { Characteristic } = this.platform;
294
+ const raw = typeof value === 'number' ? value : Number(value);
295
+ const snapped = clampToDiscreteSpeed(cfg.mode, raw);
296
+ const state = pumpStateFromSpeed(cfg.mode, snapped);
297
+ try {
298
+ // Pump 1 expects off/low/high; others expect on/off (two-state) or off/low/high (if configured).
299
+ await this.client.setPump(cfg.pumpNumber, state);
300
+ const svc = this.services.get(cfg.id);
301
+ if (svc) {
302
+ svc.updateCharacteristic(Characteristic.Active, state === 'off' ? Characteristic.Active.INACTIVE : Characteristic.Active.ACTIVE);
303
+ svc.updateCharacteristic(Characteristic.RotationSpeed, snapped);
304
+ }
305
+ }
306
+ catch (error) {
307
+ const message = error instanceof Error ? error.message : String(error);
308
+ this.platform.log.error(`Failed to set ${cfg.id} speed:`, message);
309
+ throw error;
310
+ }
311
+ }
312
+ getOn(cfg) {
313
+ const status = this.currentStatus;
314
+ if (!status) {
315
+ return false;
316
+ }
317
+ const raw = getStatusString(status, cfg.id);
318
+ if (cfg.kind === 'boost') {
319
+ return Boolean(raw && raw !== 'off');
320
+ }
321
+ return raw === 'on';
322
+ }
323
+ async setOn(cfg, value) {
91
324
  const on = Boolean(value);
92
325
  try {
93
- switch (cfg.kind) {
94
- case 'pump':
95
- await this.handleSetPump(cfg.id, on);
96
- break;
97
- case 'blower':
98
- await this.handleSetBlower(cfg.id, on);
99
- break;
100
- case 'toggle':
101
- await this.handleSetToggle(cfg.id, on);
102
- break;
103
- case 'boost':
104
- await this.handleBoost(on);
105
- break;
106
- default:
107
- break;
326
+ if (cfg.kind === 'blower') {
327
+ const blowerNumber = cfg.id.replace('blower', '');
328
+ await this.client.setBlower(blowerNumber, on ? 'on' : 'off');
329
+ }
330
+ else if (cfg.kind === 'toggle') {
331
+ const path = cfg.id;
332
+ await this.client.setToggle(path, on);
333
+ }
334
+ else if (cfg.kind === 'boost') {
335
+ if (on) {
336
+ this.platform.log.info('Triggering Boost');
337
+ await this.client.boost();
338
+ const svc = this.services.get('boost');
339
+ if (svc) {
340
+ setTimeout(() => {
341
+ try {
342
+ svc.updateCharacteristic(this.platform.Characteristic.On, false);
343
+ }
344
+ catch (error) {
345
+ const message = error instanceof Error ? error.message : String(error);
346
+ this.platform.log.error('Failed to reset Boost switch:', message);
347
+ }
348
+ }, 1000);
349
+ }
350
+ }
108
351
  }
109
352
  }
110
353
  catch (error) {
@@ -113,45 +356,5 @@ export class ArcticSpasPumpsAccessory {
113
356
  throw error;
114
357
  }
115
358
  }
116
- async handleSetPump(id, on) {
117
- // For now, map "On" to "high" and "Off" to "off"
118
- const pumpNumber = id.replace('pump', '');
119
- const state = on ? 'high' : 'off';
120
- this.platform.log.info(`Setting pump ${pumpNumber} -> ${state}`);
121
- await this.client.setPump(pumpNumber, state);
122
- }
123
- async handleSetBlower(id, on) {
124
- const blowerNumber = id.replace('blower', '');
125
- const state = on ? 'on' : 'off';
126
- this.platform.log.info(`Setting blower ${blowerNumber} -> ${state}`);
127
- await this.client.setBlower(blowerNumber, state);
128
- }
129
- async handleSetToggle(id, on) {
130
- const path = id;
131
- this.platform.log.info(`Setting ${path} -> ${on ? 'on' : 'off'}`);
132
- await this.client.setToggle(path, on);
133
- }
134
- async handleBoost(on) {
135
- if (!on) {
136
- // we only act on "on"; switch will be reset
137
- return;
138
- }
139
- this.platform.log.info('Triggering boost mode');
140
- await this.client.boost();
141
- const service = this.services.get('boost');
142
- if (!service) {
143
- return;
144
- }
145
- // Auto-reset the switch to "off" after a short delay
146
- setTimeout(() => {
147
- try {
148
- service.updateCharacteristic(this.platform.Characteristic.On, false);
149
- }
150
- catch (error) {
151
- const message = error instanceof Error ? error.message : String(error);
152
- this.platform.log.error('Failed to reset boost switch:', message);
153
- }
154
- }, 1000);
155
- }
156
359
  }
157
360
  //# sourceMappingURL=spaPumpsAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spaPumpsAccessory.js","sourceRoot":"","sources":["../../src/accessories/spaPumpsAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spaPumpsAccessory.js","sourceRoot":"","sources":["../../src/accessories/spaPumpsAccessory.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,12 @@ interface ArcticSpaConfig extends PlatformConfig {
9
9
  enablePump3?: boolean;
10
10
  enablePump4?: boolean;
11
11
  enablePump5?: boolean;
12
+ /** Optional pump mode overrides. Defaults: pump1=three-state, others=two-state */
13
+ pump1Mode?: 'two-state' | 'three-state';
14
+ pump2Mode?: 'two-state' | 'three-state';
15
+ pump3Mode?: 'two-state' | 'three-state';
16
+ pump4Mode?: 'two-state' | 'three-state';
17
+ pump5Mode?: 'two-state' | 'three-state';
12
18
  enableBlower1?: boolean;
13
19
  enableBlower2?: boolean;
14
20
  enableEasyMode?: boolean;
package/dist/platform.js CHANGED
@@ -79,12 +79,19 @@ export class ArcticSpasPlatform {
79
79
  pump3: this.config.enablePump3 ?? true,
80
80
  pump4: this.config.enablePump4 ?? false,
81
81
  pump5: this.config.enablePump5 ?? false,
82
- blower1: this.config.enableBlower1 ?? true,
83
- blower2: this.config.enableBlower2 ?? true,
82
+ pumpModes: {
83
+ ...(this.config.pump1Mode ? { pump1: this.config.pump1Mode } : {}),
84
+ ...(this.config.pump2Mode ? { pump2: this.config.pump2Mode } : {}),
85
+ ...(this.config.pump3Mode ? { pump3: this.config.pump3Mode } : {}),
86
+ ...(this.config.pump4Mode ? { pump4: this.config.pump4Mode } : {}),
87
+ ...(this.config.pump5Mode ? { pump5: this.config.pump5Mode } : {}),
88
+ },
89
+ blower1: this.config.enableBlower1 ?? false,
90
+ blower2: this.config.enableBlower2 ?? false,
84
91
  easymode: this.config.enableEasyMode ?? true,
85
- sds: this.config.enableSds ?? true,
86
- yess: this.config.enableYess ?? true,
87
- fogger: this.config.enableFogger ?? true,
92
+ sds: this.config.enableSds ?? false,
93
+ yess: this.config.enableYess ?? false,
94
+ fogger: this.config.enableFogger ?? false,
88
95
  };
89
96
  new ArcticSpasEnvironmentAccessory(this, environmentAccessory, this.client, pollIntervalMs);
90
97
  if (lightsAccessory) {
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,14 @@ export interface SpaStatus {
23
23
  spaboyOrp?: number;
24
24
  }
25
25
  export declare class SpaClient {
26
- private readonly http;
26
+ private readonly baseUrl;
27
+ private readonly apiKey;
27
28
  private readonly minIntervalMs;
29
+ private readonly timeoutMs;
28
30
  private lastStatus;
29
31
  private lastFetchTime;
30
32
  private inFlight;
31
- constructor(apiKey: string, minIntervalMs?: number);
33
+ constructor(apiKey: string, minIntervalMs?: number, timeoutMs?: number);
32
34
  getStatus(): Promise<SpaStatus>;
33
35
  setTemperatureF(setpointF: number): Promise<void>;
34
36
  setLights(on: boolean): Promise<void>;
@@ -36,4 +38,5 @@ export declare class SpaClient {
36
38
  setBlower(blower: '1' | '2' | 'all', state: OnOffState): Promise<void>;
37
39
  setToggle(path: 'easymode' | 'sds' | 'yess' | 'fogger', on: boolean): Promise<void>;
38
40
  boost(): Promise<void>;
41
+ private requestJson;
39
42
  }
package/dist/spaClient.js CHANGED
@@ -1,20 +1,24 @@
1
- import axios from 'axios';
1
+ async function safeReadText(res) {
2
+ try {
3
+ const t = await res.text();
4
+ return t?.trim() ?? '';
5
+ }
6
+ catch {
7
+ return '';
8
+ }
9
+ }
2
10
  export class SpaClient {
3
- http;
11
+ baseUrl = 'https://api.myarcticspa.com/v2/spa';
12
+ apiKey;
4
13
  minIntervalMs;
14
+ timeoutMs;
5
15
  lastStatus = null;
6
16
  lastFetchTime = 0;
7
17
  inFlight = null;
8
- constructor(apiKey, minIntervalMs = 0) {
18
+ constructor(apiKey, minIntervalMs = 0, timeoutMs = 5000) {
19
+ this.apiKey = apiKey;
9
20
  this.minIntervalMs = minIntervalMs;
10
- this.http = axios.create({
11
- baseURL: 'https://api.myarcticspa.com/v2/spa',
12
- headers: {
13
- 'X-API-KEY': apiKey,
14
- 'Content-Type': 'application/json',
15
- },
16
- timeout: 5000,
17
- });
21
+ this.timeoutMs = timeoutMs;
18
22
  }
19
23
  async getStatus() {
20
24
  const now = Date.now();
@@ -29,10 +33,10 @@ export class SpaClient {
29
33
  // 3) Otherwise, start a new request and share that promise
30
34
  this.inFlight = (async () => {
31
35
  try {
32
- const response = await this.http.get('/status');
33
- this.lastStatus = response.data;
36
+ const data = await this.requestJson('GET', '/status');
37
+ this.lastStatus = data;
34
38
  this.lastFetchTime = Date.now();
35
- return response.data;
39
+ return data;
36
40
  }
37
41
  finally {
38
42
  this.inFlight = null;
@@ -41,24 +45,60 @@ export class SpaClient {
41
45
  return this.inFlight;
42
46
  }
43
47
  async setTemperatureF(setpointF) {
44
- await this.http.put('/temperature', { setpointF });
48
+ await this.requestJson('PUT', '/temperature', { setpointF });
45
49
  }
46
50
  async setLights(on) {
47
51
  const state = on ? 'on' : 'off';
48
- await this.http.put('/lights', { state });
52
+ await this.requestJson('PUT', '/lights', { state });
49
53
  }
50
54
  async setPump(pump, state) {
51
- await this.http.put(`/pumps/${pump}`, { state });
55
+ await this.requestJson('PUT', `/pumps/${pump}`, { state });
52
56
  }
53
57
  async setBlower(blower, state) {
54
- await this.http.put(`/blowers/${blower}`, { state });
58
+ await this.requestJson('PUT', `/blowers/${blower}`, { state });
55
59
  }
56
60
  async setToggle(path, on) {
57
61
  const state = on ? 'on' : 'off';
58
- await this.http.put(`/${path}`, { state });
62
+ await this.requestJson('PUT', `/${path}`, { state });
59
63
  }
60
64
  async boost() {
61
- await this.http.put('/boost');
65
+ await this.requestJson('PUT', '/boost');
66
+ }
67
+ async requestJson(method, path, body) {
68
+ const controller = new AbortController();
69
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
70
+ try {
71
+ const res = await fetch(`${this.baseUrl}${path}`, {
72
+ method,
73
+ headers: {
74
+ 'X-API-KEY': this.apiKey,
75
+ 'Content-Type': 'application/json',
76
+ 'Accept': 'application/json',
77
+ },
78
+ body: body ? JSON.stringify(body) : undefined,
79
+ signal: controller.signal,
80
+ });
81
+ // Helpful error text (avoid “just status code”)
82
+ if (!res.ok) {
83
+ const text = await safeReadText(res);
84
+ throw new Error(`Arctic Spas API ${method} ${path} failed: ${res.status} ${res.statusText}${text ? ` - ${text}` : ''}`);
85
+ }
86
+ // Some endpoints might return no body
87
+ if (res.status === 204) {
88
+ return undefined;
89
+ }
90
+ // If content-type isn't json, still try to parse, but fail cleanly
91
+ const contentType = res.headers.get('content-type') ?? '';
92
+ if (!contentType.includes('application/json')) {
93
+ const text = await safeReadText(res);
94
+ // If caller expects void, allow non-json success
95
+ return text;
96
+ }
97
+ return (await res.json());
98
+ }
99
+ finally {
100
+ clearTimeout(timer);
101
+ }
62
102
  }
63
103
  }
64
104
  //# sourceMappingURL=spaClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spaClient.js","sourceRoot":"","sources":["../src/spaClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spaClient.js","sourceRoot":"","sources":["../src/spaClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,13 +2,13 @@
2
2
  "name": "homebridge-arctic-spas",
3
3
  "displayName": "Homebridge Arctic Spas",
4
4
  "type": "module",
5
- "version": "1.0.3",
5
+ "version": "1.1.0",
6
6
  "description": "Control an Arctic Spas Hot Tub via API, and report SpaBoy results.",
7
7
  "license": "Apache-2.0",
8
8
  "homepage": "https://github.com/fiidim/homebridge-arctic-spas#readme",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git@github.com:fiidim/homebridge-arctic-spas.git"
11
+ "url": "https://github.com/fiidim/homebridge-arctic-spas.git"
12
12
  },
13
13
  "bugs": {
14
14
  "url": "https://github.com/fiidim/homebridge-arctic-spas/issues"
@@ -43,10 +43,7 @@
43
43
  "LICENSE"
44
44
  ],
45
45
  "types": "dist/index.d.ts",
46
- "dependencies": {
47
- "homebridge-lib": "^7.1.12",
48
- "axios": "^1.13.0"
49
- },
46
+ "dependencies": {},
50
47
  "devDependencies": {
51
48
  "@eslint/js": "^9.39.1",
52
49
  "@types/node": "^24.10.1",
@@ -1,23 +0,0 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { ArcticSpasPlatform } from './platform.js';
3
- import { SpaClient } from './spaClient.js';
4
- export declare class ArcticSpaAccessory {
5
- private readonly platform;
6
- private readonly accessory;
7
- private readonly client;
8
- private thermostatService;
9
- private lightService;
10
- private pump1Service;
11
- private blower1Service;
12
- private currentStatus;
13
- private readonly minTempC;
14
- private readonly maxTempC;
15
- constructor(platform: ArcticSpasPlatform, accessory: PlatformAccessory, client: SpaClient, pollIntervalMs: number);
16
- private fToC;
17
- private cToF;
18
- private pollStatus;
19
- private handleSetTargetTemperature;
20
- private handleSetLights;
21
- private handleSetPump1;
22
- private handleSetBlower1;
23
- }
@@ -1,155 +0,0 @@
1
- export class ArcticSpaAccessory {
2
- platform;
3
- accessory;
4
- client;
5
- thermostatService;
6
- lightService;
7
- pump1Service;
8
- blower1Service;
9
- currentStatus = null;
10
- minTempC = 10;
11
- maxTempC = 40;
12
- constructor(platform, accessory, client, pollIntervalMs) {
13
- this.platform = platform;
14
- this.accessory = accessory;
15
- this.client = client;
16
- const { Service, Characteristic } = this.platform;
17
- // Accessory information
18
- this.accessory
19
- .getService(Service.AccessoryInformation)
20
- .setCharacteristic(Characteristic.Manufacturer, 'Arctic Spas')
21
- .setCharacteristic(Characteristic.Model, 'Arctic Spas (API)')
22
- .setCharacteristic(Characteristic.SerialNumber, 'ArcticSpa-1');
23
- // Thermostat
24
- this.thermostatService =
25
- this.accessory.getService(Service.Thermostat) ||
26
- this.accessory.addService(Service.Thermostat, 'Spa Temperature');
27
- this.thermostatService
28
- .getCharacteristic(Characteristic.CurrentTemperature)
29
- .setProps({ minValue: this.minTempC, maxValue: this.maxTempC });
30
- this.thermostatService
31
- .getCharacteristic(Characteristic.TargetTemperature)
32
- .setProps({ minValue: this.minTempC, maxValue: this.maxTempC })
33
- .onSet(this.handleSetTargetTemperature.bind(this));
34
- this.thermostatService
35
- .getCharacteristic(Characteristic.TemperatureDisplayUnits)
36
- .updateValue(Characteristic.TemperatureDisplayUnits.CELSIUS);
37
- // Lights
38
- this.lightService =
39
- this.accessory.getService(Service.Lightbulb) ||
40
- this.accessory.addService(Service.Lightbulb, 'Spa Lights');
41
- this.lightService
42
- .getCharacteristic(Characteristic.On)
43
- .onSet(this.handleSetLights.bind(this));
44
- // Pump 1 as a Switch (simple on/off → high/off)
45
- this.pump1Service =
46
- this.accessory.getService('Pump 1') ||
47
- this.accessory.addService(Service.Switch, 'Pump 1', 'Pump1');
48
- this.pump1Service
49
- .getCharacteristic(Characteristic.On)
50
- .onSet(this.handleSetPump1.bind(this));
51
- // Blower 1 as a Switch
52
- this.blower1Service =
53
- this.accessory.getService('Blower 1') ||
54
- this.accessory.addService(Service.Switch, 'Blower 1', 'Blower1');
55
- this.blower1Service
56
- .getCharacteristic(Characteristic.On)
57
- .onSet(this.handleSetBlower1.bind(this));
58
- // Start polling
59
- this.pollStatus();
60
- setInterval(() => this.pollStatus(), pollIntervalMs);
61
- }
62
- fToC(f) {
63
- if (f == null) {
64
- return null;
65
- }
66
- return (f - 32) * 5 / 9;
67
- }
68
- cToF(c) {
69
- return Math.round(c * 9 / 5 + 32);
70
- }
71
- async pollStatus() {
72
- try {
73
- const status = await this.client.getStatus();
74
- this.currentStatus = status;
75
- const { Characteristic } = this.platform;
76
- // Thermostat
77
- const currentC = this.fToC(status.temperatureF);
78
- const targetC = this.fToC(status.setpointF);
79
- if (currentC != null) {
80
- this.thermostatService.updateCharacteristic(Characteristic.CurrentTemperature, currentC);
81
- }
82
- if (targetC != null) {
83
- this.thermostatService.updateCharacteristic(Characteristic.TargetTemperature, targetC);
84
- }
85
- const heatingState = currentC != null && targetC != null && currentC < targetC
86
- ? Characteristic.CurrentHeatingCoolingState.HEAT
87
- : Characteristic.CurrentHeatingCoolingState.OFF;
88
- this.thermostatService.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, heatingState);
89
- this.thermostatService.updateCharacteristic(Characteristic.TargetHeatingCoolingState, Characteristic.TargetHeatingCoolingState.HEAT);
90
- // Lights
91
- if (status.lights) {
92
- this.lightService.updateCharacteristic(Characteristic.On, status.lights === 'on');
93
- }
94
- // Pump 1
95
- if (status.pump1) {
96
- this.pump1Service.updateCharacteristic(Characteristic.On, status.pump1 !== 'off');
97
- }
98
- // Blower 1
99
- if (status.blower1) {
100
- this.blower1Service.updateCharacteristic(Characteristic.On, status.blower1 === 'on');
101
- }
102
- this.platform.log.debug('Updated spa status:', JSON.stringify(status));
103
- }
104
- catch (err) {
105
- this.platform.log.error('Failed to poll Arctic Spas status:', err.message);
106
- }
107
- }
108
- async handleSetTargetTemperature(value) {
109
- const c = Number(value);
110
- const f = this.cToF(c);
111
- this.platform.log.info(`Setting spa temperature to ${c.toFixed(1)}°C (${f}°F)`);
112
- try {
113
- await this.client.setTemperatureF(f);
114
- // After changing, we rely on next poll to reconcile actual state
115
- }
116
- catch (err) {
117
- this.platform.log.error('Failed to set spa temperature:', err.message);
118
- throw err;
119
- }
120
- }
121
- async handleSetLights(value) {
122
- const on = !!value;
123
- this.platform.log.info(`Setting spa lights: ${on ? 'on' : 'off'}`);
124
- try {
125
- await this.client.setLights(on);
126
- }
127
- catch (err) {
128
- this.platform.log.error('Failed to set spa lights:', err.message);
129
- throw err;
130
- }
131
- }
132
- async handleSetPump1(value) {
133
- const on = !!value;
134
- this.platform.log.info(`Setting pump 1: ${on ? 'on/high' : 'off'}`);
135
- try {
136
- await this.client.setPump('1', on ? 'high' : 'off');
137
- }
138
- catch (err) {
139
- this.platform.log.error('Failed to set pump 1:', err.message);
140
- throw err;
141
- }
142
- }
143
- async handleSetBlower1(value) {
144
- const on = !!value;
145
- this.platform.log.info(`Setting blower 1: ${on ? 'on' : 'off'}`);
146
- try {
147
- await this.client.setBlower('1', on ? 'on' : 'off');
148
- }
149
- catch (err) {
150
- this.platform.log.error('Failed to set blower 1:', err.message);
151
- throw err;
152
- }
153
- }
154
- }
155
- //# sourceMappingURL=spaAccessory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaAccessory.js","sourceRoot":"","sources":["../src/spaAccessory.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,kBAAkB;IAWV;IACA;IACA;IAZX,iBAAiB,CAAU;IAC3B,YAAY,CAAU;IACtB,YAAY,CAAU;IACtB,cAAc,CAAU;IAExB,aAAa,GAAqB,IAAI,CAAC;IAC9B,QAAQ,GAAG,EAAE,CAAC;IACd,QAAQ,GAAG,EAAE,CAAC;IAE/B,YACmB,QAA4B,EAC5B,SAA4B,EAC5B,MAAiB,EAClC,cAAsB;QAHL,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,cAAS,GAAT,SAAS,CAAmB;QAC5B,WAAM,GAAN,MAAM,CAAW;QAGlC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,wBAAwB;QACxB,IAAI,CAAC,SAAS;aACX,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACzC,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC;aAC7D,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,CAAC;aAC5D,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAEjE,aAAa;QACb,IAAI,CAAC,iBAAiB;YACpB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEnE,IAAI,CAAC,iBAAiB;aACnB,iBAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC;aACpD,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB;aACnB,iBAAiB,CAAC,cAAc,CAAC,iBAAiB,CAAC;aACnD,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC9D,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,iBAAiB;aACnB,iBAAiB,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACzD,WAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE/D,SAAS;QACT,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY;aACd,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;aACpC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1C,gDAAgD;QAChD,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACnC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC,YAAY;aACd,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;aACpC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,uBAAuB;QACvB,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;gBACrC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnE,IAAI,CAAC,cAAc;aAChB,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;aACpC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,gBAAgB;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAEO,IAAI,CAAC,CAAU;QACrB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,IAAI,CAAC,CAAS;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAE5B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEzC,aAAa;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACzF,CAAC;YAED,MAAM,YAAY,GAChB,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,GAAG,OAAO;gBACvD,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI;gBAChD,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC;YAEpD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CACzC,cAAc,CAAC,0BAA0B,EACzC,YAAY,CACb,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CACzC,cAAc,CAAC,yBAAyB,EACxC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAC9C,CAAC;YAEF,SAAS;YACT,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACpC,cAAc,CAAC,EAAE,EACjB,MAAM,CAAC,MAAM,KAAK,IAAI,CACvB,CAAC;YACJ,CAAC;YAED,SAAS;YACT,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACpC,cAAc,CAAC,EAAE,EACjB,MAAM,CAAC,KAAK,KAAK,KAAK,CACvB,CAAC;YACJ,CAAC;YAED,WAAW;YACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CACtC,cAAc,CAAC,EAAE,EACjB,MAAM,CAAC,OAAO,KAAK,IAAI,CACxB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,KAAc;QACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrC,iEAAiE;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAClF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAc;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC7E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAc;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAc;QAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}