homebridge-shelly-energy-meter 0.9.0-beta.1 → 0.9.0-beta.3

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.
@@ -5,20 +5,15 @@
5
5
  "strictValidation": false,
6
6
  "schema": {
7
7
  "type": "object",
8
- "required": ["name", "devices"],
8
+ "required": ["devices"],
9
9
  "additionalProperties": false,
10
10
  "properties": {
11
- "name": {
12
- "title": "Name",
13
- "type": "string",
14
- "default": "Shelly Energy Meter"
15
- },
16
11
  "devices": {
17
12
  "title": "Devices",
18
13
  "type": "array",
19
14
  "items": {
20
15
  "type": "object",
21
- "required": ["name", "ip"],
16
+ "required": ["name", "ip", "auth"],
22
17
  "properties": {
23
18
  "name": {
24
19
  "title": "Device Name",
@@ -27,17 +22,25 @@
27
22
  "ip": {
28
23
  "title": "Device IP Address",
29
24
  "type": "string"
25
+ },
26
+ "monophase": {
27
+ "title": "Monophase Mode (default: Triphase)",
28
+ "description": "Enable this option if your Shelly EM is configured in monophase mode.",
29
+ "type": "boolean",
30
+ "default": false
30
31
  },
31
32
  "auth": {
32
33
  "title": "Authentication",
33
- "type": "object",
34
- "properties": {
35
- "pw": {
36
- "title": "Password",
37
- "type": "string"
38
- }
39
- },
40
- "additionalProperties": false
34
+ "type": "boolean",
35
+ "default": false
36
+ },
37
+ "pass": {
38
+ "title": "Password",
39
+ "type": "string",
40
+ "required": false,
41
+ "condition": {
42
+ "functionBody": "return model.devices[arrayIndices].auth === true;"
43
+ }
41
44
  },
42
45
  "update_interval": {
43
46
  "title": "Polling Interval (ms)",
@@ -51,6 +54,42 @@
51
54
  "type": "integer",
52
55
  "default": 5000,
53
56
  "minimum": 1000
57
+ },
58
+ "enable_triphase_return": {
59
+ "title": "Enable Return Power/Energy monitoring",
60
+ "description": "Adds additional accessory to display return power/energy in triphase mode.",
61
+ "type": "boolean",
62
+ "default": false,
63
+ "condition": {
64
+ "functionBody": "return model.devices[arrayIndices].monophase === false;"
65
+ }
66
+ },
67
+ "enable_phaseA_return": {
68
+ "title": "Enable Return Power/Energy on phaseA",
69
+ "description": "Displays return power/energy on phaseA (instead of consumed values).",
70
+ "type": "boolean",
71
+ "default": false,
72
+ "condition": {
73
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
74
+ }
75
+ },
76
+ "enable_phaseB_return": {
77
+ "title": "Enable Return Power/Energy on phaseB",
78
+ "description": "Displays return power/energy on phaseB (instead of consumed values).",
79
+ "type": "boolean",
80
+ "default": false,
81
+ "condition": {
82
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
83
+ }
84
+ },
85
+ "enable_phaseC_return": {
86
+ "title": "Enable Return Power/Energy on phaseC",
87
+ "description": "Displays return power/energy on phaseC (instead of consumed values).",
88
+ "type": "boolean",
89
+ "default": false,
90
+ "condition": {
91
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
92
+ }
54
93
  }
55
94
  },
56
95
  "additionalProperties": false
@@ -24,6 +24,8 @@ export declare class ShellyEnergyMeterPlatform implements DynamicPlatformPlugin
24
24
  * Discover and configure devices from config
25
25
  */
26
26
  discoverDevices(): Promise<void>;
27
+ private determineAccessories;
28
+ private createOrRestoreAccessory;
27
29
  private restoreAccessory;
28
30
  private addAccessory;
29
31
  private removeStaleAccessories;
package/dist/platform.js CHANGED
@@ -26,7 +26,7 @@ export class ShellyEnergyMeterPlatform {
26
26
  this.Service = api.hap.Service;
27
27
  this.Characteristic = api.hap.Characteristic;
28
28
  this.FakeGatoHistoryService = fakegato(this.api);
29
- this.log.debug('Finished initializing platform:', this.config.name);
29
+ this.log.debug('Finished initializing platform: Shelly 3EM plugin');
30
30
  // When this event is fired it means Homebridge has restored all cached accessories from disk.
31
31
  // Dynamic Platform plugins should only register new accessories after this event was fired,
32
32
  // in order to ensure they weren't added to homebridge already. This event can also be used
@@ -84,51 +84,85 @@ export class ShellyEnergyMeterPlatform {
84
84
  profile = sysConfig.device.profile;
85
85
  macAddress = sysConfig.device.mac;
86
86
  this.log.debug(`Device "${device.name}" (${device.ip}) profile: ${profile || 'not set'}`);
87
+ if (!macAddress) {
88
+ this.log.error(`Device "${device.name}" (${device.ip}) does not provide a MAC address. Skipping device.`);
89
+ continue;
90
+ }
91
+ // Compare plugin config with Shelly config
92
+ if (typeof device.monophase === 'boolean' && typeof sysConfig.device.profile === 'string') {
93
+ const isMonophase = device.monophase === true && sysConfig.device.profile === 'monophase';
94
+ const isTriphase = device.monophase === false && sysConfig.device.profile === 'triphase';
95
+ const match = isMonophase || isTriphase;
96
+ if (!match) {
97
+ this.log.error(`Device "${device.name}" config mismatch: Plugin:${device.monophase}, Shelly:${sysConfig.device.profile}. Skipping device.`);
98
+ continue;
99
+ }
100
+ }
87
101
  }
88
102
  catch (err) {
89
103
  const errorMessage = err instanceof Error ? err.message : String(err);
90
104
  if (errorMessage.includes('status: 401')) {
91
- this.log.error(`Device "${device.name}" (${device.ip}) requires authentication. Please add password in config. Skipping device.`);
105
+ this.log.error(`Device "${device.name}" (${device.ip}) requires authentication. Please enable and add password in config. Skipping device.`);
92
106
  continue;
93
107
  }
94
108
  // Log other errors but don't skip the device - it might be temporarily unreachable
95
109
  this.log.warn(`Device "${device.name}" (${device.ip}) validation warning: ${errorMessage}. Will retry during polling.`);
96
110
  }
97
- const uuid = this.api.hap.uuid.generate(macAddress);
98
- const existingAccessory = this.accessories.get(uuid);
99
- if (existingAccessory) {
100
- this.restoreAccessory(existingAccessory, device, profile, macAddress);
111
+ // Create accessories based on config
112
+ const accessoriesToCreate = this.determineAccessories(device);
113
+ for (const { suffix, name } of accessoriesToCreate) {
114
+ this.createOrRestoreAccessory(macAddress + suffix, device, name, macAddress, suffix);
101
115
  }
102
- else {
103
- this.addAccessory(uuid, device, profile, macAddress);
104
- }
105
- this.discoveredCacheUUIDs.push(uuid);
106
116
  }
107
117
  this.removeStaleAccessories();
108
118
  }
109
- restoreAccessory(accessory, device, profile, macAddress) {
110
- this.log.info('Restoring existing accessory from cache:', accessory.displayName);
111
- accessory.context.device = device;
112
- if (profile) {
113
- accessory.context.profile = profile;
119
+ determineAccessories(device) {
120
+ const accessories = [];
121
+ if (device.monophase === false) {
122
+ // Triphase
123
+ accessories.push({ suffix: '', name: device.name });
124
+ // Triphase + return enabled
125
+ if (device.enable_triphase_return === true) {
126
+ accessories.push({ suffix: '-return', name: `${device.name} Return` });
127
+ }
114
128
  }
115
- if (macAddress) {
116
- accessory.context.macAddress = macAddress;
129
+ else if (device.monophase === true) {
130
+ // Monophase: three accessories for A, B, C
131
+ for (const phase of ['A', 'B', 'C']) {
132
+ accessories.push({ suffix: `-phase${phase}`, name: `${device.name} Phase ${phase}` });
133
+ }
134
+ }
135
+ return accessories;
136
+ }
137
+ createOrRestoreAccessory(identifier, device, displayName, macAddress, suffix) {
138
+ const uuid = this.api.hap.uuid.generate(identifier);
139
+ const existingAccessory = this.accessories.get(uuid);
140
+ if (existingAccessory) {
141
+ this.restoreAccessory(existingAccessory, device);
117
142
  }
143
+ else {
144
+ this.addAccessory(uuid, device, displayName, macAddress, suffix);
145
+ }
146
+ this.discoveredCacheUUIDs.push(uuid);
147
+ }
148
+ restoreAccessory(accessory, device) {
149
+ this.log.info('Restoring existing accessory from cache:', accessory.displayName);
150
+ // Update device config in case user changed settings
151
+ accessory.context.device = device;
118
152
  this.api.updatePlatformAccessories([accessory]);
119
153
  const handler = new ShellyEnergyMeterPlatformAccessory(this, accessory);
120
154
  this.accessoryHandlers.set(accessory.UUID, handler);
121
155
  }
122
- addAccessory(uuid, device, profile, macAddress) {
123
- this.log.info('Adding new accessory:', device.name);
124
- const accessory = new this.api.platformAccessory(device.name, uuid);
156
+ addAccessory(uuid, device, displayName, macAddress, suffix) {
157
+ this.log.info('Adding new accessory:', displayName);
158
+ const accessory = new this.api.platformAccessory(displayName, uuid);
125
159
  accessory.context.device = device;
126
- if (profile) {
127
- accessory.context.profile = profile;
128
- }
129
160
  if (macAddress) {
130
161
  accessory.context.macAddress = macAddress;
131
162
  }
163
+ if (suffix !== undefined) {
164
+ accessory.context.suffix = suffix;
165
+ }
132
166
  const handler = new ShellyEnergyMeterPlatformAccessory(this, accessory);
133
167
  this.accessories.set(uuid, accessory);
134
168
  this.accessoryHandlers.set(uuid, handler);
@@ -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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"}
@@ -3,18 +3,19 @@ import type { ShellyEnergyMeterPlatform } from './platform.js';
3
3
  export declare class ShellyEnergyMeterPlatformAccessory {
4
4
  private readonly platform;
5
5
  private readonly accessory;
6
- private consumptionService;
7
- private energyHistoryService;
6
+ private service;
7
+ private historyService;
8
8
  private macAddress;
9
9
  private deviceConfig;
10
- private total_act_power;
11
- private total_act_energy;
12
- private total_current;
13
- private avg_voltage;
10
+ private suffix;
11
+ private act_power;
12
+ private energy;
13
+ private current;
14
+ private voltage;
14
15
  private EvePowerConsumption;
15
16
  private EveTotalConsumption;
16
17
  private EveAmpere;
17
- private EveVolatage;
18
+ private EveVoltage;
18
19
  private PowerMeterService;
19
20
  private pollingInterval?;
20
21
  private isUpdating;
@@ -5,37 +5,39 @@ const DEFAULT_POLL_INTERVAL = 10000;
5
5
  export class ShellyEnergyMeterPlatformAccessory {
6
6
  platform;
7
7
  accessory;
8
- consumptionService;
9
- energyHistoryService;
8
+ service;
9
+ historyService;
10
10
  macAddress;
11
11
  deviceConfig;
12
- total_act_power = 0;
13
- total_act_energy = 0;
14
- total_current = 0;
15
- avg_voltage = 0;
12
+ suffix;
13
+ act_power = 0;
14
+ energy = 0;
15
+ current = 0;
16
+ voltage = 0;
16
17
  EvePowerConsumption;
17
18
  EveTotalConsumption;
18
19
  EveAmpere;
19
- EveVolatage;
20
+ EveVoltage;
20
21
  PowerMeterService;
21
22
  pollingInterval;
22
23
  isUpdating = false;
23
24
  constructor(platform, accessory) {
24
25
  this.platform = platform;
25
26
  this.accessory = accessory;
26
- this.deviceConfig = this.accessory.context.device;
27
27
  this.macAddress = this.accessory.context.macAddress;
28
+ this.suffix = this.accessory.context.suffix;
29
+ this.deviceConfig = this.accessory.context.device;
28
30
  this.registerEveCharacteristics();
29
31
  this.setupAccessoryInfo();
30
32
  this.setupService();
31
33
  this.startPolling();
32
34
  }
33
35
  registerEveCharacteristics() {
34
- const { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVolatage, PowerMeterService } = this.createEveCharacteristics(this.platform.api);
36
+ const { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVoltage, PowerMeterService } = this.createEveCharacteristics(this.platform.api);
35
37
  this.EvePowerConsumption = EvePowerConsumption;
36
38
  this.EveTotalConsumption = EveTotalConsumption;
37
39
  this.EveAmpere = EveAmpere;
38
- this.EveVolatage = EveVolatage;
40
+ this.EveVoltage = EveVoltage;
39
41
  this.PowerMeterService = PowerMeterService;
40
42
  }
41
43
  createEveCharacteristics(api) {
@@ -79,10 +81,10 @@ export class ShellyEnergyMeterPlatformAccessory {
79
81
  });
80
82
  }
81
83
  }
82
- class EveVolatage extends Characteristic {
84
+ class EveVoltage extends Characteristic {
83
85
  static UUID = 'E863F10A-079E-48FF-8F27-9C2605A29F52';
84
86
  constructor() {
85
- super('Volt', EveVolatage.UUID, {
87
+ super('Volt', EveVoltage.UUID, {
86
88
  format: 'float',
87
89
  unit: 'V',
88
90
  maxValue: 1000000000,
@@ -95,16 +97,17 @@ export class ShellyEnergyMeterPlatformAccessory {
95
97
  class PowerMeterService extends Service {
96
98
  constructor(name) {
97
99
  super(name, POWER_METER_SERVICE_UUID);
98
- this.addOptionalCharacteristic(EvePowerConsumption);
100
+ this.addCharacteristic(EvePowerConsumption);
99
101
  this.addOptionalCharacteristic(EveTotalConsumption);
100
102
  this.addOptionalCharacteristic(EveAmpere);
101
- this.addOptionalCharacteristic(EveVolatage);
103
+ this.addOptionalCharacteristic(EveVoltage);
102
104
  }
103
105
  }
104
- return { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVolatage, PowerMeterService };
106
+ return { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVoltage, PowerMeterService };
105
107
  }
106
108
  setupAccessoryInfo() {
107
- const info = this.accessory.getService(this.platform.api.hap.Service.AccessoryInformation);
109
+ const info = this.accessory.getService(this.platform.api.hap.Service.AccessoryInformation)
110
+ ?? this.accessory.addService(this.platform.api.hap.Service.AccessoryInformation);
108
111
  info
109
112
  .setCharacteristic(this.platform.api.hap.Characteristic.Manufacturer, 'Shelly')
110
113
  .setCharacteristic(this.platform.api.hap.Characteristic.Model, '3EM')
@@ -116,16 +119,16 @@ export class ShellyEnergyMeterPlatformAccessory {
116
119
  // Setup consumption power service
117
120
  let existingConsumptionService = this.accessory.services.find(service => service.UUID === POWER_METER_SERVICE_UUID && service.subtype === consumptionSubtype);
118
121
  if (!existingConsumptionService) {
119
- const service = new this.PowerMeterService(`${this.deviceConfig.name} Consumption`, POWER_METER_SERVICE_UUID);
122
+ const service = new this.PowerMeterService(this.accessory.displayName, POWER_METER_SERVICE_UUID);
120
123
  service.subtype = consumptionSubtype;
121
124
  existingConsumptionService = this.accessory.addService(service);
122
125
  }
123
- this.consumptionService = existingConsumptionService;
124
- this.consumptionService.getCharacteristic(this.EvePowerConsumption).onGet(() => this.total_act_power);
125
- this.consumptionService.getCharacteristic(this.EveTotalConsumption).onGet(() => this.total_act_energy);
126
- this.consumptionService.getCharacteristic(this.EveAmpere).onGet(() => this.total_current);
127
- this.consumptionService.getCharacteristic(this.EveVolatage).onGet(() => this.avg_voltage);
128
- this.energyHistoryService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
126
+ this.service = existingConsumptionService;
127
+ this.service.getCharacteristic(this.EvePowerConsumption).onGet(() => this.act_power);
128
+ this.service.getCharacteristic(this.EveTotalConsumption).onGet(() => this.energy);
129
+ this.service.getCharacteristic(this.EveAmpere).onGet(() => this.current);
130
+ this.service.getCharacteristic(this.EveVoltage).onGet(() => this.voltage);
131
+ this.historyService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
129
132
  log: this.platform.log,
130
133
  storage: 'fs',
131
134
  });
@@ -137,11 +140,11 @@ export class ShellyEnergyMeterPlatformAccessory {
137
140
  stopPolling() {
138
141
  clearInterval(this.pollingInterval);
139
142
  this.pollingInterval = undefined;
140
- this.platform.log.debug(`[${this.deviceConfig.name}] Data polling stopped.`);
143
+ this.platform.log.debug(`[${this.accessory.displayName}] Data polling stopped.`);
141
144
  }
142
145
  async updateFromDevice() {
143
146
  if (this.isUpdating) {
144
- this.platform.log.debug(`[${this.deviceConfig.name}] Skipping update - previous update still in progress`);
147
+ this.platform.log.debug(`[${this.accessory.displayName}] Skipping update - previous update still in progress`);
145
148
  return;
146
149
  }
147
150
  this.isUpdating = true;
@@ -160,7 +163,7 @@ export class ShellyEnergyMeterPlatformAccessory {
160
163
  catch (err) {
161
164
  // Catches unexpected errors in handlers (not API calls)
162
165
  const message = err instanceof Error ? err.message : String(err);
163
- this.platform.log.error(`[${this.deviceConfig.name}] Unexpected error:`, message);
166
+ this.platform.log.error(`[${this.accessory.displayName}] Unexpected error:`, message);
164
167
  }
165
168
  finally {
166
169
  this.isUpdating = false;
@@ -169,25 +172,71 @@ export class ShellyEnergyMeterPlatformAccessory {
169
172
  handleStatusResult(result) {
170
173
  if (result.status === 'fulfilled') {
171
174
  const data = result.value;
172
- this.total_act_power = data.total_act_power ?? 0;
173
- this.total_current = data.total_current ?? 0;
174
- this.avg_voltage = this.calculateAverageVoltage(data);
175
+ const phaseMap = {
176
+ '-phaseA': { current: data.a_current, voltage: data.a_voltage, power: data.a_act_power },
177
+ '-phaseB': { current: data.b_current, voltage: data.b_voltage, power: data.b_act_power },
178
+ '-phaseC': { current: data.c_current, voltage: data.c_voltage, power: data.c_act_power },
179
+ };
180
+ if (phaseMap[this.suffix]) {
181
+ const phase = phaseMap[this.suffix];
182
+ this.current = phase.current ?? 0;
183
+ this.voltage = phase.voltage ?? 0;
184
+ this.act_power = phase.power && phase.power > 0 ? Math.abs(phase.power) : 0;
185
+ }
186
+ else if (this.suffix === '-return') {
187
+ this.current = 0;
188
+ this.voltage = 0;
189
+ this.act_power = data.total_act_power && data.total_act_power < 0 ? Math.abs(data.total_act_power) : 0;
190
+ }
191
+ else {
192
+ // Main triphase accessory (suffix === '')
193
+ this.current = data.total_current ?? 0;
194
+ this.voltage = this.calculateAverageVoltage(data);
195
+ this.act_power = data.total_act_power && data.total_act_power > 0 ? Math.abs(data.total_act_power) : 0;
196
+ }
175
197
  }
176
198
  else {
177
- this.platform.log.error(`[${this.deviceConfig.name}] Request failed (status):`, this.formatError(result.reason));
178
- this.total_act_power = 0;
179
- this.total_current = 0;
180
- this.avg_voltage = 0;
199
+ this.platform.log.error(`[${this.accessory.displayName}] Request failed (status):`, this.formatError(result.reason));
200
+ this.current = 0;
201
+ this.voltage = 0;
202
+ this.act_power = 0;
181
203
  }
182
204
  }
183
205
  handleDataStatusResult(result) {
184
206
  if (result.status === 'fulfilled') {
185
207
  const data = result.value;
186
- this.total_act_energy = (data.total_act ?? 0) / WH_TO_KWH;
208
+ const phaseConfigs = {
209
+ '-phaseA': {
210
+ energy: data.a_total_act_energy ?? 0,
211
+ returnEnergy: data.a_total_act_ret_energy ?? 0,
212
+ returnEnabled: this.deviceConfig.enable_phaseA_return,
213
+ },
214
+ '-phaseB': {
215
+ energy: data.b_total_act_energy ?? 0,
216
+ returnEnergy: data.b_total_act_ret_energy ?? 0,
217
+ returnEnabled: this.deviceConfig.enable_phaseB_return,
218
+ },
219
+ '-phaseC': {
220
+ energy: data.c_total_act_energy ?? 0,
221
+ returnEnergy: data.c_total_act_ret_energy ?? 0,
222
+ returnEnabled: this.deviceConfig.enable_phaseC_return,
223
+ },
224
+ };
225
+ if (phaseConfigs[this.suffix]) {
226
+ const config = phaseConfigs[this.suffix];
227
+ this.energy = (config.returnEnabled ? config.returnEnergy : config.energy) / WH_TO_KWH;
228
+ }
229
+ else if (this.suffix === '-return') {
230
+ this.energy = (data.total_act_ret ?? 0) / WH_TO_KWH;
231
+ }
232
+ else {
233
+ // Main triphase accessory (suffix === '')
234
+ this.energy = (data.total_act ?? 0) / WH_TO_KWH;
235
+ }
187
236
  }
188
237
  else {
189
- this.platform.log.error(`[${this.deviceConfig.name}] Request failed (data):`, this.formatError(result.reason));
190
- this.total_act_energy = 0;
238
+ this.platform.log.error(`[${this.accessory.displayName}] Request failed (data):`, this.formatError(result.reason));
239
+ this.energy = 0;
191
240
  }
192
241
  }
193
242
  calculateAverageVoltage(data) {
@@ -203,15 +252,15 @@ export class ShellyEnergyMeterPlatformAccessory {
203
252
  }
204
253
  updateAllCharacteristics() {
205
254
  // Update all status characteristics
206
- this.consumptionService.getCharacteristic(this.EvePowerConsumption).updateValue(this.total_act_power);
207
- this.consumptionService.getCharacteristic(this.EveAmpere).updateValue(this.total_current);
208
- this.consumptionService.getCharacteristic(this.EveVolatage).updateValue(this.avg_voltage);
209
- this.consumptionService.getCharacteristic(this.EveTotalConsumption).updateValue(this.total_act_energy);
210
- // Add history entry with consistent power and energy values
211
- this.energyHistoryService.addEntry({
255
+ this.service.getCharacteristic(this.EvePowerConsumption).updateValue(this.act_power);
256
+ this.service.getCharacteristic(this.EveAmpere).updateValue(this.current);
257
+ this.service.getCharacteristic(this.EveVoltage).updateValue(this.voltage);
258
+ this.service.getCharacteristic(this.EveTotalConsumption).updateValue(this.energy);
259
+ // Add history entry
260
+ this.historyService.addEntry({
212
261
  time: Math.floor(Date.now() / 1000),
213
- power: this.total_act_power,
214
- totalEnergy: this.total_act_energy,
262
+ power: this.act_power,
263
+ totalEnergy: this.energy,
215
264
  });
216
265
  }
217
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI9D,MAAM,wBAAwB,GAAG,sCAAsC,CAAC;AACxE,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAMpC,MAAM,OAAO,kCAAkC;IAsB1B;IACA;IAtBX,kBAAkB,CAAW;IAC7B,oBAAoB,CAA0B;IAC9C,UAAU,CAAS;IAEnB,YAAY,CAAe;IAE3B,eAAe,GAAG,CAAC,CAAC;IACpB,gBAAgB,GAAG,CAAC,CAAC;IACrB,aAAa,GAAG,CAAC,CAAC;IAClB,WAAW,GAAG,CAAC,CAAC;IAEhB,mBAAmB,CAA0B;IAC7C,mBAAmB,CAA0B;IAC7C,SAAS,CAA0B;IACnC,WAAW,CAA0B;IACrC,iBAAiB,CAA0B;IAE3C,eAAe,CAAkB;IACjC,UAAU,GAAG,KAAK,CAAC;IAE3B,YACmB,QAAmC,EACnC,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAA2B;QACnC,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;QAEpD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,0BAA0B;QAChC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjJ,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEO,wBAAwB,CAAC,GAAiB;QAChD,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;QAEnD,MAAM,mBAAoB,SAAQ,cAAc;YAC9C,MAAM,CAAU,IAAI,GAAG,sCAAsC,CAAC;YAC9D;gBACE,KAAK,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,EAAE;oBAC7C,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,GAAG;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uDAAiC;iBACzC,CAAC,CAAC;YACL,CAAC;;QAGH,MAAM,mBAAoB,SAAQ,cAAc;YAC9C,MAAM,CAAU,IAAI,GAAG,sCAAsC,CAAC;YAC9D;gBACE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;oBACxC,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uDAAiC;iBACzC,CAAC,CAAC;YACL,CAAC;;QAGH,MAAM,SAAU,SAAQ,cAAc;YACpC,MAAM,CAAU,IAAI,GAAG,sCAAsC,CAAC;YAC9D;gBACE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE;oBAC9B,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,GAAG;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uDAAiC;iBACzC,CAAC,CAAC;YACL,CAAC;;QAGH,MAAM,WAAY,SAAQ,cAAc;YACtC,MAAM,CAAU,IAAI,GAAG,sCAAsC,CAAC;YAC9D;gBACE,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE;oBAC9B,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,GAAG;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uDAAiC;iBACzC,CAAC,CAAC;YACL,CAAC;;QAGH,MAAM,iBAAkB,SAAQ,OAAO;YACrC,YAAY,IAAY;gBACtB,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;gBACtC,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;gBACpD,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;gBACpD,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAC9C,CAAC;SACF;QAED,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjG,CAAC;IAEO,kBAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAE,CAAC;QAE5F,IAAI;aACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;aAC9E,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;aACpE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3F,CAAC;IAEO,YAAY;QAClB,gGAAgG;QAChG,MAAM,kBAAkB,GAAG,GAAG,IAAI,CAAC,UAAU,cAAc,CAAC;QAC5D,kCAAkC;QAClC,IAAI,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAC3D,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,wBAAwB,IAAI,OAAO,CAAC,OAAO,KAAK,kBAAkB,CAC/F,CAAC;QAEF,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,wBAAwB,CAAC,CAAC;YAC9G,OAAO,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACrC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,0BAA0B,CAAC;QAErD,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1F,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1F,IAAI,CAAC,oBAAoB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAClE,QAAQ,EACR,IAAI,CAAC,SAAS,EACd;YACE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;YACtB,OAAO,EAAE,IAAI;SACd,CACF,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,IAAI,qBAAqB,CAAC,CAAC;IACrI,CAAC;IAED,WAAW;QACT,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,yBAAyB,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,uDAAuD,CAAC,CAAC;YAC3G,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;gBAC1D,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACjD,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;aACtD,CAAC,CAAC;YAEH,gDAAgD;YAChD,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAExC,8DAA8D;YAC9D,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wDAAwD;YACxD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,qBAAqB,EAAE,OAAO,CAAC,CAAC;QACpF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,MAA4C;QACrE,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;YAE1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,4BAA4B,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACjH,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAgD;QAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,0BAA0B,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/G,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,IAAoB;QAClD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAEO,WAAW,CAAC,GAAY;QAC9B,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEO,wBAAwB;QAC9B,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1F,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1F,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEvG,4DAA4D;QAC5D,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,eAAe;YAC3B,WAAW,EAAE,IAAI,CAAC,gBAAgB;SACnC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
package/dist/shellyAPI.js CHANGED
@@ -10,7 +10,7 @@ async function fetchShellyDevice(url, deviceConfig, log) {
10
10
  let response;
11
11
  try {
12
12
  if (deviceConfig.auth) {
13
- const client = new DigestFetch('admin', deviceConfig.auth.pw, { algorithm: 'SHA-256' });
13
+ const client = new DigestFetch('admin', deviceConfig.pass, { algorithm: 'SHA-256' });
14
14
  response = await client.fetch(url, { signal: controller.signal });
15
15
  if (log) {
16
16
  log.debug(`[${deviceConfig.name}] Response status: ${response.status}`);
@@ -39,7 +39,7 @@ async function fetchAndParseJSON(url, deviceConfig, log) {
39
39
  log.debug(`[${deviceConfig.name}] Response headers:`, JSON.stringify(headersObj));
40
40
  }
41
41
  const text = await response.text();
42
- throw new Error(`HTTP ${response.status} for ${url}: ${text}`);
42
+ throw new Error(`[${deviceConfig.name}] HTTP ${response.status} for ${url}: ${text}`);
43
43
  }
44
44
  return response.json();
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shellyAPI.js","sourceRoot":"","sources":["../src/shellyAPI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,YAAY,CAAC;AAC9D,OAAO,WAAW,MAAM,cAAc,CAAC;AAKvC;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,YAA0B,EAAE,GAAY;IACpF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACxF,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAkB,CAAC;YACnF,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAI,GAAW,EAAE,YAA0B,EAAE,GAAY;IACvF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE;YACtD,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAA0B,EAAE,GAAY;IACzE,MAAM,GAAG,GAAG,UAAU,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC1D,OAAO,iBAAiB,CAAkB,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAA0B,EAAE,GAAY;IACxE,MAAM,GAAG,GAAG,UAAU,YAAY,CAAC,EAAE,wBAAwB,CAAC;IAC9D,OAAO,iBAAiB,CAAiB,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,YAA0B,EAAE,GAAY;IAC5E,MAAM,GAAG,GAAG,UAAU,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAClE,OAAO,iBAAiB,CAAqB,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"shellyAPI.js","sourceRoot":"","sources":["../src/shellyAPI.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,22 @@
1
- export interface AuthConfig {
2
- pw: string;
3
- }
1
+ export type AccessorySuffix = '' | '-return' | '-phaseA' | '-phaseB' | '-phaseC';
2
+ export type PhaseConfig = {
3
+ energy: number;
4
+ returnEnergy: number;
5
+ returnEnabled?: boolean;
6
+ };
4
7
  export interface DeviceConfig {
5
8
  name: string;
6
9
  ip: string;
7
- auth?: AuthConfig;
10
+ auth?: boolean;
11
+ pass?: string;
8
12
  timeout?: number;
9
13
  update_interval?: number;
10
14
  negative_handling_mode?: boolean;
15
+ monophase?: boolean;
16
+ enable_triphase_return?: boolean;
17
+ enable_phaseA_return?: boolean;
18
+ enable_phaseB_return?: boolean;
19
+ enable_phaseC_return?: boolean;
11
20
  }
12
21
  export interface ShellyEMStatus {
13
22
  id?: number;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "homebridge-shelly-energy-meter",
3
3
  "displayName": "Shelly (Pro) 3EM Energy Meter",
4
4
  "type": "module",
5
- "version": "0.9.0-beta.1",
5
+ "version": "0.9.0-beta.3",
6
6
  "description": "A short description about what your plugin does.",
7
7
  "author": "Patrick Probst",
8
8
  "license": "Apache-2.0",