homebridge-shelly-energy-meter 0.9.0-beta.0 → 0.9.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,24 @@
27
22
  "ip": {
28
23
  "title": "Device IP Address",
29
24
  "type": "string"
25
+ },
26
+ "monophase": {
27
+ "title": "Use Monophase Mode instead of Triphase",
28
+ "type": "boolean",
29
+ "default": false
30
30
  },
31
31
  "auth": {
32
32
  "title": "Authentication",
33
- "type": "object",
34
- "properties": {
35
- "pw": {
36
- "title": "Password",
37
- "type": "string"
38
- }
39
- },
40
- "additionalProperties": false
33
+ "type": "boolean",
34
+ "default": false
35
+ },
36
+ "pass": {
37
+ "title": "Password",
38
+ "type": "string",
39
+ "required": false,
40
+ "condition": {
41
+ "functionBody": "return model.devices[arrayIndices].auth === true;"
42
+ }
41
43
  },
42
44
  "update_interval": {
43
45
  "title": "Polling Interval (ms)",
@@ -51,6 +53,42 @@
51
53
  "type": "integer",
52
54
  "default": 5000,
53
55
  "minimum": 1000
56
+ },
57
+ "enable_triphase_return": {
58
+ "title": "Enable Return Power/Energy monitoring",
59
+ "description": "Adds additional accessory to display return power/energy in triphase mode.",
60
+ "type": "boolean",
61
+ "default": false,
62
+ "condition": {
63
+ "functionBody": "return model.devices[arrayIndices].monophase === false;"
64
+ }
65
+ },
66
+ "enable_phaseA_return": {
67
+ "title": "Enable Return Power/Energy on phaseA",
68
+ "description": "Displays return power/energy on phaseA (instead of consumed values).",
69
+ "type": "boolean",
70
+ "default": false,
71
+ "condition": {
72
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
73
+ }
74
+ },
75
+ "enable_phaseB_return": {
76
+ "title": "Enable Return Power/Energy on phaseB",
77
+ "description": "Displays return power/energy on phaseB (instead of consumed values).",
78
+ "type": "boolean",
79
+ "default": false,
80
+ "condition": {
81
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
82
+ }
83
+ },
84
+ "enable_phaseC_return": {
85
+ "title": "Enable Return Power/Energy on phaseC",
86
+ "description": "Displays return power/energy on phaseC (instead of consumed values).",
87
+ "type": "boolean",
88
+ "default": false,
89
+ "condition": {
90
+ "functionBody": "return model.devices[arrayIndices].monophase === true;"
91
+ }
54
92
  }
55
93
  },
56
94
  "additionalProperties": false
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,11 +84,21 @@ 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
+ // Compare plugin config with Shelly config
88
+ if (typeof device.monophase === 'boolean' && typeof sysConfig.device.profile === 'string') {
89
+ const isMonophase = device.monophase === true && sysConfig.device.profile === 'monophase';
90
+ const isTriphase = device.monophase === false && sysConfig.device.profile === 'triphase';
91
+ const match = isMonophase || isTriphase;
92
+ if (!match) {
93
+ this.log.error(`Device "${device.name}" config mismatch: Plugin:${device.monophase}, Shelly:${sysConfig.device.profile}. Skipping device.`);
94
+ continue;
95
+ }
96
+ }
87
97
  }
88
98
  catch (err) {
89
99
  const errorMessage = err instanceof Error ? err.message : String(err);
90
100
  if (errorMessage.includes('status: 401')) {
91
- this.log.error(`Device "${device.name}" (${device.ip}) requires authentication. Please add password in config. Skipping device.`);
101
+ this.log.error(`Device "${device.name}" (${device.ip}) requires authentication. Please enable and add password in config. Skipping device.`);
92
102
  continue;
93
103
  }
94
104
  // Log other errors but don't skip the device - it might be temporarily unreachable
@@ -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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"}
@@ -5,22 +5,41 @@ export declare class ShellyEnergyMeterPlatformAccessory {
5
5
  private readonly accessory;
6
6
  private consumptionService;
7
7
  private returnService;
8
- private energyHistoryService;
9
- private returnEnergyHistoryService;
8
+ private consumptionHistoryService;
9
+ private returnHistoryService;
10
10
  private macAddress;
11
11
  private deviceConfig;
12
12
  private total_act_power;
13
- private total_act_energy;
14
- private total_act_return_energy;
13
+ private total_act_ret_power;
14
+ private total_act;
15
+ private total_act_ret;
15
16
  private total_current;
17
+ private avg_voltage;
18
+ private a_act_power;
19
+ private a_act_ret_power;
20
+ private a_total_act_energy;
21
+ private a_total_act_ret_energy;
22
+ private a_current;
23
+ private a_voltage;
24
+ private b_act_power;
25
+ private b_act_ret_power;
26
+ private b_total_act_energy;
27
+ private b_total_act_ret_energy;
28
+ private b_current;
29
+ private b_voltage;
30
+ private c_act_power;
31
+ private c_act_ret_power;
32
+ private c_total_act_energy;
33
+ private c_total_act_ret_energy;
34
+ private c_current;
35
+ private c_voltage;
16
36
  private EvePowerConsumption;
17
37
  private EveTotalConsumption;
18
38
  private EveAmpere;
39
+ private EveVoltage;
19
40
  private PowerMeterService;
20
- private pollingEMStatusInterval?;
21
- private pollingEMDataStatusInterval?;
22
- private isPollingEMStatus;
23
- private isPollingEMDataStatus;
41
+ private pollingInterval?;
42
+ private isUpdating;
24
43
  constructor(platform: ShellyEnergyMeterPlatform, accessory: PlatformAccessory);
25
44
  private registerEveCharacteristics;
26
45
  private createEveCharacteristics;
@@ -28,6 +47,10 @@ export declare class ShellyEnergyMeterPlatformAccessory {
28
47
  private setupService;
29
48
  private startPolling;
30
49
  stopPolling(): void;
31
- private updateEMStatusFromDevice;
32
- private updateEMDataStatusFromDevice;
50
+ private updateFromDevice;
51
+ private handleStatusResult;
52
+ private handleDataStatusResult;
53
+ private calculateAverageVoltage;
54
+ private formatError;
55
+ private updateAllCharacteristics;
33
56
  }
@@ -1,26 +1,47 @@
1
1
  import { getEMStatus, getEMDataStatus } from './shellyAPI.js';
2
2
  const POWER_METER_SERVICE_UUID = '00000001-0000-1777-8000-775D67EC4377';
3
+ const WH_TO_KWH = 1000;
4
+ const DEFAULT_POLL_INTERVAL = 10000;
3
5
  export class ShellyEnergyMeterPlatformAccessory {
4
6
  platform;
5
7
  accessory;
6
8
  consumptionService;
7
9
  returnService;
8
- energyHistoryService;
9
- returnEnergyHistoryService;
10
+ consumptionHistoryService;
11
+ returnHistoryService;
10
12
  macAddress;
11
13
  deviceConfig;
12
14
  total_act_power = 0;
13
- total_act_energy = 0;
14
- total_act_return_energy = 0;
15
+ total_act_ret_power = 0;
16
+ total_act = 0; // energy
17
+ total_act_ret = 0; // energy
15
18
  total_current = 0;
19
+ avg_voltage = 0;
20
+ a_act_power = 0;
21
+ a_act_ret_power = 0;
22
+ a_total_act_energy = 0;
23
+ a_total_act_ret_energy = 0;
24
+ a_current = 0;
25
+ a_voltage = 0;
26
+ b_act_power = 0;
27
+ b_act_ret_power = 0;
28
+ b_total_act_energy = 0;
29
+ b_total_act_ret_energy = 0;
30
+ b_current = 0;
31
+ b_voltage = 0;
32
+ c_act_power = 0;
33
+ c_act_ret_power = 0;
34
+ c_total_act_energy = 0;
35
+ c_total_act_ret_energy = 0;
36
+ c_current = 0;
37
+ c_voltage = 0;
16
38
  EvePowerConsumption;
17
39
  EveTotalConsumption;
18
40
  EveAmpere;
41
+ EveVoltage;
19
42
  PowerMeterService;
20
- pollingEMStatusInterval;
21
- pollingEMDataStatusInterval;
22
- isPollingEMStatus = false;
23
- isPollingEMDataStatus = false;
43
+ pollingInterval;
44
+ isUpdating = false;
24
45
  constructor(platform, accessory) {
25
46
  this.platform = platform;
26
47
  this.accessory = accessory;
@@ -32,10 +53,11 @@ export class ShellyEnergyMeterPlatformAccessory {
32
53
  this.startPolling();
33
54
  }
34
55
  registerEveCharacteristics() {
35
- const { EvePowerConsumption, EveTotalConsumption, EveAmpere, PowerMeterService } = this.createEveCharacteristics(this.platform.api);
56
+ const { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVoltage, PowerMeterService } = this.createEveCharacteristics(this.platform.api);
36
57
  this.EvePowerConsumption = EvePowerConsumption;
37
58
  this.EveTotalConsumption = EveTotalConsumption;
38
59
  this.EveAmpere = EveAmpere;
60
+ this.EveVoltage = EveVoltage;
39
61
  this.PowerMeterService = PowerMeterService;
40
62
  }
41
63
  createEveCharacteristics(api) {
@@ -79,15 +101,29 @@ export class ShellyEnergyMeterPlatformAccessory {
79
101
  });
80
102
  }
81
103
  }
104
+ class EveVoltage extends Characteristic {
105
+ static UUID = 'E863F10A-079E-48FF-8F27-9C2605A29F52';
106
+ constructor() {
107
+ super('Volt', EveVoltage.UUID, {
108
+ format: 'float',
109
+ unit: 'V',
110
+ maxValue: 1000000000,
111
+ minValue: 0,
112
+ minStep: 0.001,
113
+ perms: ["pr" /* Perms.PAIRED_READ */, "ev" /* Perms.NOTIFY */],
114
+ });
115
+ }
116
+ }
82
117
  class PowerMeterService extends Service {
83
118
  constructor(name) {
84
119
  super(name, POWER_METER_SERVICE_UUID);
85
- this.addOptionalCharacteristic(EvePowerConsumption);
120
+ this.addCharacteristic(EvePowerConsumption);
86
121
  this.addOptionalCharacteristic(EveTotalConsumption);
87
122
  this.addOptionalCharacteristic(EveAmpere);
123
+ this.addOptionalCharacteristic(EveVoltage);
88
124
  }
89
125
  }
90
- return { EvePowerConsumption, EveTotalConsumption, EveAmpere, PowerMeterService };
126
+ return { EvePowerConsumption, EveTotalConsumption, EveAmpere, EveVoltage, PowerMeterService };
91
127
  }
92
128
  setupAccessoryInfo() {
93
129
  const info = this.accessory.getService(this.platform.api.hap.Service.AccessoryInformation);
@@ -99,7 +135,6 @@ export class ShellyEnergyMeterPlatformAccessory {
99
135
  setupService() {
100
136
  // Use device MAC address as unique subtype to prevent UUID collisions with multiple accessories
101
137
  const consumptionSubtype = `${this.macAddress}-consumption`;
102
- const returnSubtype = `${this.macAddress}-return`;
103
138
  // Setup consumption power service
104
139
  let existingConsumptionService = this.accessory.services.find(service => service.UUID === POWER_METER_SERVICE_UUID && service.subtype === consumptionSubtype);
105
140
  if (!existingConsumptionService) {
@@ -109,117 +144,169 @@ export class ShellyEnergyMeterPlatformAccessory {
109
144
  }
110
145
  this.consumptionService = existingConsumptionService;
111
146
  this.consumptionService.getCharacteristic(this.EvePowerConsumption).onGet(() => this.total_act_power);
112
- this.consumptionService.getCharacteristic(this.EveTotalConsumption).onGet(() => this.total_act_energy);
147
+ this.consumptionService.getCharacteristic(this.EveTotalConsumption).onGet(() => this.total_act);
113
148
  this.consumptionService.getCharacteristic(this.EveAmpere).onGet(() => this.total_current);
114
- this.energyHistoryService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
115
- log: this.platform.log,
116
- storage: 'fs',
117
- });
118
- // Setup return power service
119
- let existingReturnService = this.accessory.services.find(service => service.UUID === POWER_METER_SERVICE_UUID && service.subtype === returnSubtype);
120
- if (!existingReturnService) {
121
- const service = new this.PowerMeterService(`${this.deviceConfig.name} Return`, POWER_METER_SERVICE_UUID);
122
- service.subtype = returnSubtype;
123
- existingReturnService = this.accessory.addService(service);
124
- }
125
- this.returnService = existingReturnService;
126
- this.returnService.getCharacteristic(this.EveTotalConsumption).onGet(() => this.total_act_return_energy);
127
- this.returnEnergyHistoryService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
149
+ this.consumptionService.getCharacteristic(this.EveVoltage).onGet(() => this.avg_voltage);
150
+ this.consumptionHistoryService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
128
151
  log: this.platform.log,
129
152
  storage: 'fs',
130
153
  });
154
+ // Add additional service for return power/energy if enabled in config
155
+ if (this.deviceConfig.enable_triphase_return === true) {
156
+ const returnSubtype = `${this.macAddress}-return`;
157
+ let existingReturnService = this.accessory.services.find(service => service.UUID === POWER_METER_SERVICE_UUID && service.subtype === returnSubtype);
158
+ if (!existingReturnService) {
159
+ const returnService = new this.PowerMeterService(`${this.deviceConfig.name} Return`, POWER_METER_SERVICE_UUID);
160
+ returnService.subtype = returnSubtype;
161
+ existingReturnService = this.accessory.addService(returnService);
162
+ }
163
+ this.returnService = existingReturnService;
164
+ existingReturnService.getCharacteristic(this.EvePowerConsumption).onGet(() => 0);
165
+ existingReturnService.getCharacteristic(this.EveTotalConsumption).onGet(() => 0);
166
+ existingReturnService.getCharacteristic(this.EveAmpere).onGet(() => 0);
167
+ existingReturnService.getCharacteristic(this.EveVoltage).onGet(() => 0);
168
+ this.returnHistoryService = new this.platform.FakeGatoHistoryService('energy', this.accessory, {
169
+ log: this.platform.log,
170
+ storage: 'fs',
171
+ });
172
+ }
131
173
  }
132
174
  startPolling() {
133
- void this.updateEMStatusFromDevice();
134
- void this.updateEMDataStatusFromDevice();
135
- this.pollingEMStatusInterval = setInterval(() => void this.updateEMStatusFromDevice(), this.deviceConfig.update_interval ?? 10000);
136
- this.pollingEMDataStatusInterval = setInterval(() => void this.updateEMDataStatusFromDevice(), this.deviceConfig.update_interval ?? 10000);
175
+ void this.updateFromDevice();
176
+ this.pollingInterval = setInterval(() => void this.updateFromDevice(), this.deviceConfig.update_interval ?? DEFAULT_POLL_INTERVAL);
137
177
  }
138
178
  stopPolling() {
139
- if (this.pollingEMStatusInterval) {
140
- clearInterval(this.pollingEMStatusInterval);
141
- this.pollingEMStatusInterval = undefined;
142
- this.platform.log.debug(`[${this.deviceConfig.name}] EMStatus polling stopped.`);
143
- }
144
- if (this.pollingEMDataStatusInterval) {
145
- clearInterval(this.pollingEMDataStatusInterval);
146
- this.pollingEMDataStatusInterval = undefined;
147
- this.platform.log.debug(`[${this.deviceConfig.name}] EMDataStatus polling stopped.`);
148
- }
179
+ clearInterval(this.pollingInterval);
180
+ this.pollingInterval = undefined;
181
+ this.platform.log.debug(`[${this.deviceConfig.name}] Data polling stopped.`);
149
182
  }
150
- async updateEMStatusFromDevice() {
151
- if (this.isPollingEMStatus) {
183
+ async updateFromDevice() {
184
+ if (this.isUpdating) {
185
+ this.platform.log.debug(`[${this.deviceConfig.name}] Skipping update - previous update still in progress`);
152
186
  return;
153
187
  }
154
- this.isPollingEMStatus = true;
188
+ this.isUpdating = true;
155
189
  try {
156
- const data = await getEMStatus(this.deviceConfig, this.platform.log);
157
- const phaseAPower = data.a_act_power ?? 0;
158
- const phaseBPower = data.b_act_power ?? 0;
159
- const phaseCPower = data.c_act_power ?? 0;
160
- this.total_act_power = Math.max(0, phaseAPower) + Math.max(0, phaseBPower) + Math.max(0, phaseCPower);
161
- const phaseACurrent = data.a_current ?? 0;
162
- const phaseBCurrent = data.b_current ?? 0;
163
- const phaseCCurrent = data.c_current ?? 0;
164
- this.total_current = Math.max(0, phaseACurrent) + Math.max(0, phaseBCurrent) + Math.max(0, phaseCCurrent);
165
- // Update service
166
- this.consumptionService.getCharacteristic(this.EvePowerConsumption).updateValue(this.total_act_power);
167
- this.consumptionService.getCharacteristic(this.EveAmpere).updateValue(this.total_current);
190
+ // Run both requests in parallel
191
+ const [statusResult, dataResult] = await Promise.allSettled([
192
+ getEMStatus(this.deviceConfig, this.platform.log),
193
+ getEMDataStatus(this.deviceConfig, this.platform.log),
194
+ ]);
195
+ // Process both results (updates internal state)
196
+ this.handleStatusResult(statusResult);
197
+ this.handleDataStatusResult(dataResult);
198
+ // Update all characteristics and history with consistent data
199
+ this.updateAllCharacteristics();
168
200
  }
169
201
  catch (err) {
170
- let message = err instanceof Error ? err.message : String(err);
171
- if (err instanceof Error && err.name === 'AbortError') {
172
- message = 'Request timeout';
173
- }
174
- this.platform.log.error(`[${this.deviceConfig.name}] Request failed:`, message);
175
- // write zero on error
176
- this.total_act_power = 0;
177
- this.total_current = 0;
178
- this.consumptionService.getCharacteristic(this.EvePowerConsumption).updateValue(0);
179
- this.consumptionService.getCharacteristic(this.EveAmpere).updateValue(0);
202
+ // Catches unexpected errors in handlers (not API calls)
203
+ const message = err instanceof Error ? err.message : String(err);
204
+ this.platform.log.error(`[${this.deviceConfig.name}] Unexpected error:`, message);
180
205
  }
181
206
  finally {
182
- this.isPollingEMStatus = false;
207
+ this.isUpdating = false;
183
208
  }
184
209
  }
185
- async updateEMDataStatusFromDevice() {
186
- if (this.isPollingEMDataStatus) {
187
- return;
210
+ handleStatusResult(result) {
211
+ if (result.status === 'fulfilled') {
212
+ const data = result.value;
213
+ this.a_current = data.a_current ?? 0;
214
+ this.a_voltage = data.a_voltage ?? 0;
215
+ this.a_act_power = data.a_act_power && data.a_act_power > 0 ? data.a_act_power : 0;
216
+ this.a_act_ret_power = data.a_act_power && data.a_act_power < 0 ? Math.abs(data.a_act_power) : 0;
217
+ this.b_current = data.b_current ?? 0;
218
+ this.b_voltage = data.b_voltage ?? 0;
219
+ this.b_act_power = data.b_act_power ?? 0;
220
+ this.b_act_power = data.b_act_power && data.b_act_power > 0 ? data.b_act_power : 0;
221
+ this.b_act_ret_power = data.b_act_power && data.b_act_power < 0 ? Math.abs(data.b_act_power) : 0;
222
+ this.c_current = data.c_current ?? 0;
223
+ this.c_voltage = data.c_voltage ?? 0;
224
+ this.c_act_power = data.c_act_power ?? 0;
225
+ this.c_act_power = data.c_act_power && data.c_act_power > 0 ? data.c_act_power : 0;
226
+ this.c_act_ret_power = data.c_act_power && data.c_act_power < 0 ? Math.abs(data.c_act_power) : 0;
227
+ this.total_current = data.total_current ?? 0;
228
+ this.avg_voltage = this.calculateAverageVoltage(data);
229
+ this.total_act_power = data.total_act_power && data.total_act_power > 0 ? data.total_act_power : 0;
230
+ this.total_act_ret_power = data.total_act_power && data.total_act_power < 0 ? Math.abs(data.total_act_power) : 0;
188
231
  }
189
- this.isPollingEMDataStatus = true;
190
- try {
191
- const data = await getEMDataStatus(this.deviceConfig, this.platform.log);
192
- const phaseAConsumption = data.a_total_act_energy ?? 0;
193
- const phaseBConsumption = data.b_total_act_energy ?? 0;
194
- const phaseCConsumption = data.c_total_act_energy ?? 0;
195
- // Sum and convert Wh to kWh
196
- this.total_act_energy = (Math.max(0, phaseAConsumption) + Math.max(0, phaseBConsumption) + Math.max(0, phaseCConsumption)) / 1000;
197
- const phaseAReturn = data.a_total_act_ret_energy ?? 0;
198
- const phaseBReturn = data.b_total_act_ret_energy ?? 0;
199
- const phaseCReturn = data.c_total_act_ret_energy ?? 0;
200
- // Sum and convert Wh to kWh
201
- this.total_act_return_energy = (Math.max(0, phaseAReturn) + Math.max(0, phaseBReturn) + Math.max(0, phaseCReturn)) / 1000;
202
- this.consumptionService.getCharacteristic(this.EveTotalConsumption).updateValue(this.total_act_energy);
203
- this.returnService.getCharacteristic(this.EveTotalConsumption).updateValue(this.total_act_return_energy);
204
- this.energyHistoryService.addEntry({ time: Math.floor(Date.now() / 1000), totalEnergy: this.total_act_energy });
205
- this.returnEnergyHistoryService.addEntry({ time: Math.floor(Date.now() / 1000), totalEnergy: this.total_act_return_energy });
232
+ else {
233
+ this.platform.log.error(`[${this.deviceConfig.name}] Request failed (status):`, this.formatError(result.reason));
234
+ this.a_current = 0;
235
+ this.a_voltage = 0;
236
+ this.a_act_power = 0;
237
+ this.a_act_ret_power = 0;
238
+ this.b_current = 0;
239
+ this.b_voltage = 0;
240
+ this.b_act_power = 0;
241
+ this.b_act_ret_power = 0;
242
+ this.c_current = 0;
243
+ this.c_voltage = 0;
244
+ this.c_act_power = 0;
245
+ this.c_act_ret_power = 0;
246
+ this.total_current = 0;
247
+ this.avg_voltage = 0;
248
+ this.total_act_power = 0;
249
+ this.total_act_ret_power = 0;
206
250
  }
207
- catch (err) {
208
- let message = err instanceof Error ? err.message : String(err);
209
- if (err instanceof Error && err.name === 'AbortError') {
210
- message = 'Request timeout';
211
- }
212
- this.platform.log.error(`[${this.deviceConfig.name}] Request failed:`, message);
213
- // write zero on error
214
- this.total_act_energy = 0;
215
- this.total_act_return_energy = 0;
216
- this.consumptionService.getCharacteristic(this.EveTotalConsumption).updateValue(0);
217
- this.returnService.getCharacteristic(this.EveTotalConsumption).updateValue(0);
218
- this.energyHistoryService.addEntry({ time: Math.floor(Date.now() / 1000), totalEnergy: 0 });
219
- this.returnEnergyHistoryService.addEntry({ time: Math.floor(Date.now() / 1000), totalEnergy: 0 });
251
+ }
252
+ handleDataStatusResult(result) {
253
+ if (result.status === 'fulfilled') {
254
+ const data = result.value;
255
+ this.a_total_act_energy = (data.a_total_act_energy ?? 0) / WH_TO_KWH;
256
+ this.b_total_act_energy = (data.b_total_act_energy ?? 0) / WH_TO_KWH;
257
+ this.c_total_act_energy = (data.c_total_act_energy ?? 0) / WH_TO_KWH;
258
+ this.total_act = (data.total_act ?? 0) / WH_TO_KWH;
259
+ this.a_total_act_ret_energy = (data.a_total_act_ret_energy ?? 0) / WH_TO_KWH;
260
+ this.b_total_act_ret_energy = (data.b_total_act_ret_energy ?? 0) / WH_TO_KWH;
261
+ this.c_total_act_ret_energy = (data.c_total_act_ret_energy ?? 0) / WH_TO_KWH;
262
+ this.total_act_ret = (data.total_act_ret ?? 0) / WH_TO_KWH;
220
263
  }
221
- finally {
222
- this.isPollingEMDataStatus = false;
264
+ else {
265
+ this.platform.log.error(`[${this.deviceConfig.name}] Request failed (data):`, this.formatError(result.reason));
266
+ this.a_total_act_energy = 0;
267
+ this.b_total_act_energy = 0;
268
+ this.c_total_act_energy = 0;
269
+ this.total_act = 0;
270
+ this.a_total_act_ret_energy = 0;
271
+ this.b_total_act_ret_energy = 0;
272
+ this.c_total_act_ret_energy = 0;
273
+ this.total_act_ret = 0;
274
+ }
275
+ }
276
+ calculateAverageVoltage(data) {
277
+ const voltages = [data.a_voltage, data.b_voltage, data.c_voltage];
278
+ const valid = voltages.filter((v) => typeof v === 'number' && v > 0);
279
+ return valid.length > 0 ? valid.reduce((sum, v) => sum + v, 0) / valid.length : 0;
280
+ }
281
+ formatError(err) {
282
+ if (err instanceof Error && err.name === 'AbortError') {
283
+ return 'Request timeout';
284
+ }
285
+ return err instanceof Error ? err.message : String(err);
286
+ }
287
+ updateAllCharacteristics() {
288
+ // Update all status characteristics
289
+ this.consumptionService.getCharacteristic(this.EvePowerConsumption).updateValue(this.total_act_power);
290
+ this.consumptionService.getCharacteristic(this.EveAmpere).updateValue(this.total_current);
291
+ this.consumptionService.getCharacteristic(this.EveVoltage).updateValue(this.avg_voltage);
292
+ this.consumptionService.getCharacteristic(this.EveTotalConsumption).updateValue(this.total_act);
293
+ // Add history entry
294
+ this.consumptionHistoryService.addEntry({
295
+ time: Math.floor(Date.now() / 1000),
296
+ power: this.total_act_power,
297
+ totalEnergy: this.total_act,
298
+ });
299
+ if (this.deviceConfig.enable_triphase_return === true) {
300
+ this.returnService.getCharacteristic(this.EvePowerConsumption).updateValue(this.total_act_ret_power);
301
+ this.returnService.getCharacteristic(this.EveTotalConsumption).updateValue(this.total_act_ret);
302
+ this.returnService.getCharacteristic(this.EveAmpere).updateValue(0);
303
+ this.returnService.getCharacteristic(this.EveVoltage).updateValue(0);
304
+ // Add history entry
305
+ this.returnHistoryService.addEntry({
306
+ time: Math.floor(Date.now() / 1000),
307
+ power: this.total_act_power,
308
+ totalEnergy: this.total_act,
309
+ });
223
310
  }
224
311
  }
225
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
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}`);
@@ -1 +1 @@
1
- {"version":3,"file":"shellyAPI.js","sourceRoot":"","sources":["../src/shellyAPI.ts"],"names":[],"mappings":"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"}
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,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACrF,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,13 +1,16 @@
1
- export interface AuthConfig {
2
- pw: string;
3
- }
4
1
  export interface DeviceConfig {
5
2
  name: string;
6
3
  ip: string;
7
- auth?: AuthConfig;
4
+ auth?: boolean;
5
+ pass?: string;
8
6
  timeout?: number;
9
7
  update_interval?: number;
10
8
  negative_handling_mode?: boolean;
9
+ monophase?: boolean;
10
+ enable_triphase_return?: boolean;
11
+ enable_phaseA_return?: boolean;
12
+ enable_phaseB_return?: boolean;
13
+ enable_phaseC_return?: boolean;
11
14
  }
12
15
  export interface ShellyEMStatus {
13
16
  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.0",
5
+ "version": "0.9.0-beta.2",
6
6
  "description": "A short description about what your plugin does.",
7
7
  "author": "Patrick Probst",
8
8
  "license": "Apache-2.0",