homebridge-tasmota-control 1.6.1-beta.9 → 1.6.2-beta.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Tasmota Control",
3
3
  "name": "homebridge-tasmota-control",
4
- "version": "1.6.1-beta.9",
4
+ "version": "1.6.2-beta.0",
5
5
  "description": "Homebridge plugin to control Tasmota flashed devices.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/mielhvac.js CHANGED
@@ -324,7 +324,7 @@ class MiElHvac extends EventEmitter {
324
324
  break;
325
325
  default:
326
326
  this.emit('warn', `Unknown operating mode: ${operationMode}`);
327
- return
327
+ return;
328
328
  }
329
329
 
330
330
  obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
package/src/sensors.js CHANGED
@@ -98,10 +98,11 @@ class Sensors extends EventEmitter {
98
98
  for (const [key, value] of Object.entries(sensorData)) {
99
99
  const sensorData = value;
100
100
 
101
+ //sensor
101
102
  const obj = {
102
103
  name: key,
103
104
  time: statusSns.Time,
104
- tempUnit: statusSns.TempUnit === 'C' ? '°C' : statusSns.TempUnit,
105
+ tempUnit: statusSns.TempUnit,
105
106
  pressureUnit: statusSns.PressureUnit,
106
107
  temperature: sensorData.Temperature,
107
108
  referenceTemperature: sensorData.ReferenceTemperature,
@@ -114,8 +115,27 @@ class Sensors extends EventEmitter {
114
115
  carbonDioxyde: sensorData.CarbonDioxyde,
115
116
  ambientLight: sensorData.Ambient,
116
117
  motion: sensorData.Motion
117
- };
118
+ }
119
+ if (obj.tempUnit === 'C') {
120
+ obj.tempUnit = '°C';
121
+ }
122
+
123
+ this.emit('warn', `Sensors status: ${JSON.stringify(obj, null, 2)}`)
124
+ //update characteristics
125
+ this.sensorTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.temperature);
126
+ this.sensorReferenceTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.referenceTemperature);
127
+ this.sensorObjTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.objTemperature);
128
+ this.sensorAmbTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.ambTemperature);
129
+ this.sensorDewPointTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.dewPointTemperature);
130
+ this.sensorHumidityServices?.[i]?.Characteristic?.CurrentRelativeHumidity?.updateCharacteristic(Characteristic.CurrentRelativeHumidity, obj.humidity);
131
+ this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxideDetected?.updateCharacteristic(Characteristic.CarbonDioxideDetected, obj.carbonDioxyde > 1000);
132
+ this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxideLevel?.updateCharacteristic(Characteristic.CarbonDioxideLevel, obj.carbonDioxyde);
133
+ this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxidePeakLevel?.updateCharacteristic(Characteristic.CarbonDioxidePeakLevel, obj.carbonDioxyde);
134
+ this.sensorAmbientLightServices?.[i]?.Characteristic?.CurrentAmbientLightLevel?.updateCharacteristic(Characteristic.CurrentAmbientLightLevel, obj.ambientLight);
135
+ this.sensorMotionServices?.[i]?.Characteristic?.MotionDetected?.updateCharacteristic(Characteristic.MotionDetected, obj.motion);
118
136
 
137
+ //energy
138
+ const isEnergy = key === 'ENERGY';
119
139
  const energy = {
120
140
  power: sensorData.Power,
121
141
  apparentPower: sensorData.ApparentPower,
@@ -130,60 +150,32 @@ class Sensors extends EventEmitter {
130
150
  factor: sensorData.Factor,
131
151
  frequency: sensorData.Frequency,
132
152
  load: sensorData.Load,
133
- };
153
+ }
134
154
 
135
- const sensor = key === 'ENERGY' ? { ...obj, ...energy } : obj;
155
+ if (isEnergy) {
156
+ //update characteristics
157
+ this.sensorEnergyServices?.[i]?.Characteristic?.Power?.updateCharacteristic(Characteristic.Power, energy.power);
158
+ this.sensorEnergyServices?.[i]?.Characteristic?.ApparentPower?.updateCharacteristic(Characteristic.ApparentPower, energy.apparentPower);
159
+ this.sensorEnergyServices?.[i]?.Characteristic?.ReactivePower?.updateCharacteristic(Characteristic.ReactivePower, energy.reactivePower);
160
+ this.sensorEnergyServices?.[i]?.Characteristic?.EnergyToday?.updateCharacteristic(Characteristic.EnergyToday, energy.energyToday);
161
+ this.sensorEnergyServices?.[i]?.Characteristic?.EnergyLastDay?.updateCharacteristic(Characteristic.EnergyLastDay, energy.energyLastDay);
162
+ this.sensorEnergyServices?.[i]?.Characteristic?.EnergyLifetime?.updateCharacteristic(Characteristic.EnergyLifetime, energy.energyLifetime);
163
+ this.sensorEnergyServices?.[i]?.Characteristic?.Current?.updateCharacteristic(Characteristic.Current, energy.current);
164
+ this.sensorEnergyServices?.[i]?.Characteristic?.Voltage?.updateCharacteristic(Characteristic.Voltage, energy.voltage);
165
+ this.sensorEnergyServices?.[i]?.Characteristic?.Factor?.updateCharacteristic(Characteristic.Factor, energy.factor);
166
+ this.sensorEnergyServices?.[i]?.Characteristic?.Frequency?.updateCharacteristic(Characteristic.Frequency, energy.frequency);
167
+ this.sensorEnergyServices?.[i]?.Characteristic?.ReadingTime?.updateCharacteristic(Characteristic.ReadingTime, energy.time);
168
+ }
169
+
170
+ const sensor = isEnergy ? { ...obj, ...energy } : obj;
136
171
  const debug1 = this.enableDebugMode ? this.emit('debug', `Sensor: ${JSON.stringify(sensor, null, 2)}`) : false;
137
- this.sensors.push(sensor);
138
172
 
139
- //update characteristics
140
- if (this.sensorServices?.[i]) {
141
- const update = (servicesArray, subtype, charName, value) => {
142
- const service = servicesArray.find(s => s.subtype === subtype);
143
- if (service && Characteristic[charName]) {
144
- service.updateCharacteristic(Characteristic[charName], value);
145
- }
146
- };
147
-
148
- // temperature
149
- update(this.sensorServices[i], `sensorTemperatureService${i}`, 'CurrentTemperature', sensor.temperature);
150
- update(this.sensorServices[i], `sensorReferenceTemperatureService${i}`, 'CurrentTemperature', sensor.referenceTemperature);
151
- update(this.sensorServices[i], `sensorObjTemperatureService${i}`, 'CurrentTemperature', sensor.objTemperature);
152
- update(this.sensorServices[i], `sensorAmbTemperatureService${i}`, 'CurrentTemperature', sensor.ambTemperature);
153
- update(this.sensorServices[i], `sensorDewPointTemperatureService${i}`, 'CurrentTemperature', sensor.dewPointTemperature);
154
-
155
- // humidity
156
- update(this.sensorServices[i], `sensorHumidityService${i}`, 'CurrentRelativeHumidity', sensor.humidity);
157
-
158
- // CO₂
159
- update(this.sensorServices[i], `sensorCarbonDioxydeService${i}`, 'CarbonDioxideDetected', sensor.carbonDioxyde > 1000);
160
- update(this.sensorServices[i], `sensorCarbonDioxydeService${i}`, 'CarbonDioxideLevel', sensor.carbonDioxyde);
161
- update(this.sensorServices[i], `sensorCarbonDioxydeService${i}`, 'CarbonDioxidePeakLevel', sensor.carbonDioxyde);
162
-
163
- // ambient light
164
- update(this.sensorServices[i], `sensorAmbientLightService${i}`, 'CurrentAmbientLightLevel', sensor.ambientLight);
165
-
166
- // motion
167
- update(this.sensorServices[i], `sensorMotionService${i}`, 'MotionDetected', sensor.motion);
168
-
169
- // energy
170
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'Power', sensor.power);
171
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'ApparentPower', sensor.apparentPower);
172
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'ReactivePower', sensor.reactivePower);
173
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'EnergyToday', sensor.energyToday);
174
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'EnergyLastDay', sensor.energyLastDay);
175
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'EnergyLifetime', sensor.energyLifetime);
176
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'Current', sensor.current);
177
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'Voltage', sensor.voltage);
178
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'Factor', sensor.factor);
179
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'Frequency', sensor.frequency);
180
- update(this.sensorServices[i], `sensorEnergyService${i}`, 'ReadingTime', sensor.time);
181
-
182
- i++;
183
- }
173
+ //push to array
174
+ this.sensors.push(sensor);
175
+ i++;
184
176
  }
177
+ this.sensorsCount = this.sensors.length;
185
178
  }
186
- this.sensorsCount = this.sensors.length;
187
179
 
188
180
  return true;
189
181
  } catch (error) {
@@ -256,17 +248,25 @@ class Sensors extends EventEmitter {
256
248
  //Prepare services
257
249
  if (this.sensorsCount > 0) {
258
250
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Sensor Services`) : false;
259
- this.sensorServices = [];
251
+ this.sensorTemperatureServices = [];
252
+ this.sensorReferenceTemperatureServices = [];
253
+ this.sensorObjTemperatureServices = [];
254
+ this.sensorAmbTemperatureServices = [];
255
+ this.sensorDewPointTemperatureServices = [];
256
+ this.sensorHumidityServices = [];
257
+ this.sensorCarbonDioxydeServices = [];
258
+ this.sensorAmbientLightServices = [];
259
+ this.sensorMotionServices = [];
260
+ this.sensorEnergyServices = [];
260
261
 
261
262
  //temperature
262
263
  let i = 0;
263
264
  for (const sensor of this.sensors) {
264
265
  const sensorName = sensor.name;
265
- const service = {};
266
266
  if (sensor.temperature) {
267
267
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Temperature Sensor Services`) : false;
268
268
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Temperature` : `${sensorName} Temperature`;
269
- const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorTemperatureService${i}`);
269
+ const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Temperature Sensor ${i}`);
270
270
  sensorTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
271
271
  sensorTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
272
272
  sensorTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -275,14 +275,14 @@ class Sensors extends EventEmitter {
275
275
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} temperature: ${value} °${sensor.tempUnit}`);
276
276
  return value;
277
277
  });
278
- service.sensorTemperatureService = sensorTemperatureService;
278
+ this.sensorTemperatureServices.push(sensorTemperatureService);
279
279
  }
280
280
 
281
281
  //reference temperature
282
282
  if (sensor.referenceTemperature) {
283
283
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Reference Temperature Sensor Services`) : false;
284
284
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Reference Temperature` : `${sensorName} Reference Temperature`;
285
- const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorReferenceTemperatureService${i}`);
285
+ const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Reference Temperature Sensor ${i}`);
286
286
  sensorReferenceTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
287
287
  sensorReferenceTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
288
288
  sensorReferenceTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -291,14 +291,14 @@ class Sensors extends EventEmitter {
291
291
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reference temperature: ${value} °${sensor.tempUnit}`);
292
292
  return value;
293
293
  });
294
- service.sensorReferenceTemperatureService = sensorReferenceTemperatureService;
294
+ this.sensorReferenceTemperatureServices.push(sensorReferenceTemperatureService);
295
295
  }
296
296
 
297
297
  //object temperature
298
298
  if (sensor.objTemperature) {
299
299
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Obj Temperature Sensor Services`) : false;
300
300
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Obj Temperature` : `${sensorName} Obj Temperature`;
301
- const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorObjTemperatureService${i}`);
301
+ const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Obj Temperature Sensor ${i}`);
302
302
  sensorObjTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
303
303
  sensorObjTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
304
304
  sensorObjTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -307,14 +307,14 @@ class Sensors extends EventEmitter {
307
307
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} obj temperature: ${value} °${sensor.tempUnit}`);
308
308
  return value;
309
309
  });
310
- service.sensorObjTemperatureService = sensorObjTemperatureService;
310
+ this.sensorObjTemperatureServices.push(sensorObjTemperatureService);
311
311
  }
312
312
 
313
313
  //ambient temperature
314
314
  if (sensor.ambTemperature) {
315
315
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Amb Temperature Sensor Services`) : false;
316
316
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Amb Temperature` : `${sensorName} Amb Temperature`;
317
- const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorAmbTemperatureService${i}`);
317
+ const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Amb Temperature Sensor ${i}`);
318
318
  sensorAmbTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
319
319
  sensorAmbTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
320
320
  sensorAmbTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -323,14 +323,14 @@ class Sensors extends EventEmitter {
323
323
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} amb temperature: ${value} °${sensor.tempUnit}`);
324
324
  return value;
325
325
  });
326
- service.sensorAmbTemperatureService = sensorAmbTemperatureService;
326
+ this.sensorAmbTemperatureServices.push(sensorAmbTemperatureService);
327
327
  }
328
328
 
329
329
  //dew point temperature
330
330
  if (sensor.dewPointTemperature) {
331
331
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Dew Point Temperature Sensor Services`) : false;
332
332
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Dew Point` : `${sensorName} Dew Point`;
333
- const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorDewPointTemperatureService${i}`);
333
+ const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Dew Point Temperature Sensor ${i}`);
334
334
  sensorDewPointTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
335
335
  sensorDewPointTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
336
336
  sensorDewPointTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -339,14 +339,14 @@ class Sensors extends EventEmitter {
339
339
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} dew point: ${value} °${sensor.tempUnit}`);
340
340
  return value;
341
341
  });
342
- service.sensorDewPointTemperatureService = sensorDewPointTemperatureService;
342
+ this.sensorDewPointTemperatureServices.push(sensorDewPointTemperatureService);
343
343
  }
344
344
 
345
345
  //humidity
346
346
  if (sensor.humidity) {
347
347
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Humidity Sensor Services`) : false;
348
348
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Humidity` : `${sensorName} Humidity`;
349
- const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `sensorHumidityService${i}`);
349
+ const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `Humidity Sensor ${i}`);
350
350
  sensorHumidityService.addOptionalCharacteristic(Characteristic.ConfiguredName);
351
351
  sensorHumidityService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
352
352
  sensorHumidityService.getCharacteristic(Characteristic.CurrentRelativeHumidity)
@@ -355,7 +355,7 @@ class Sensors extends EventEmitter {
355
355
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} humidity: ${value} %`);
356
356
  return value;
357
357
  });
358
- service.sensorHumidityService = sensorHumidityService;
358
+ this.sensorHumidityServices.push(sensorHumidityService);
359
359
  }
360
360
 
361
361
  //pressure
@@ -366,7 +366,7 @@ class Sensors extends EventEmitter {
366
366
  if (sensor.carbonDioxyde) {
367
367
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Carbon Dioxyde Sensor Services`) : false;
368
368
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Carbon Dioxyde` : `${sensorName} Carbon Dioxyde`;
369
- const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `sensorCarbonDioxydeService${i}`);
369
+ const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `Carbon Dioxyde Sensor ${i}`);
370
370
  sensorCarbonDioxydeService.addOptionalCharacteristic(Characteristic.ConfiguredName);
371
371
  sensorCarbonDioxydeService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
372
372
  sensorCarbonDioxydeService.getCharacteristic(Characteristic.CarbonDioxideDetected)
@@ -387,14 +387,14 @@ class Sensors extends EventEmitter {
387
387
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} carbon dioxyde peak level: ${value} ppm`);
388
388
  return value;
389
389
  });
390
- service.sensorCarbonDioxydeService = sensorCarbonDioxydeService;
390
+ this.sensorCarbonDioxydeServices.push(sensorCarbonDioxydeService);
391
391
  }
392
392
 
393
393
  //ambient light
394
394
  if (sensor.ambientLight) {
395
395
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Ambient Light Sensor Services`) : false;
396
396
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Ambient Light` : `${sensorName} Ambient Light`;
397
- const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `sensorAmbientLightService${i}`);
397
+ const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `Ambient Light Sensor ${i}`);
398
398
  sensorAmbientLightService.addOptionalCharacteristic(Characteristic.ConfiguredName);
399
399
  sensorAmbientLightService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
400
400
  sensorAmbientLightService.getCharacteristic(Characteristic.CurrentAmbientLightLevel)
@@ -403,14 +403,14 @@ class Sensors extends EventEmitter {
403
403
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} ambient light: ${value} lx`);
404
404
  return value;
405
405
  });
406
- service.sensorAmbientLightService = sensorAmbientLightService;
406
+ this.sensorAmbientLightServices.push(sensorAmbientLightService);
407
407
  }
408
408
 
409
409
  //motion
410
410
  if (sensor.motion) {
411
411
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Motion Sensor Services`) : false;
412
412
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Motion` : `${sensorName} Motion`;
413
- const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `sensorMotionService${i}`);
413
+ const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `Motion Sensor ${i}`);
414
414
  sensorMotionService.addOptionalCharacteristic(Characteristic.ConfiguredName);
415
415
  sensorMotionService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
416
416
  sensorMotionService.getCharacteristic(Characteristic.MotionDetected)
@@ -419,17 +419,17 @@ class Sensors extends EventEmitter {
419
419
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} motion: ${state ? 'ON' : 'OFF'}`);
420
420
  return state;
421
421
  });
422
- service.sensorMotionService = sensorMotionService;
422
+ this.sensorMotionServices.push(sensorMotionService);
423
423
  }
424
424
 
425
425
  //energy
426
426
  if (sensor.name === 'ENERGY') {
427
427
  const debug4 = this.enableDebugMode ? this.emit('debug', `Prepare Power And Energy Service`) : false;
428
428
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName}` : `${sensorName}`;
429
- const sensorEnergyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `sensorEnergyService${i}`);
430
- sensorEnergyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
429
+ const energyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `Energy Sensor ${i}`);
430
+ energyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
431
431
  if (sensor.power) {
432
- sensorEnergyService.getCharacteristic(Characteristic.Power)
432
+ energyService.getCharacteristic(Characteristic.Power)
433
433
  .onGet(async () => {
434
434
  const value = sensor.power;
435
435
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power: ${value} W`);
@@ -437,7 +437,7 @@ class Sensors extends EventEmitter {
437
437
  });
438
438
  }
439
439
  if (sensor.apparentPower) {
440
- sensorEnergyService.getCharacteristic(Characteristic.ApparentPower)
440
+ energyService.getCharacteristic(Characteristic.ApparentPower)
441
441
  .onGet(async () => {
442
442
  const value = sensor.apparentPower;
443
443
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} apparent power: ${value} VA`);
@@ -445,7 +445,7 @@ class Sensors extends EventEmitter {
445
445
  });
446
446
  }
447
447
  if (sensor.reactivePower) {
448
- sensorEnergyService.getCharacteristic(Characteristic.ReactivePower)
448
+ energyService.getCharacteristic(Characteristic.ReactivePower)
449
449
  .onGet(async () => {
450
450
  const value = sensor.reactivePower;
451
451
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reactive power: ${value} VAr`);
@@ -453,7 +453,7 @@ class Sensors extends EventEmitter {
453
453
  });
454
454
  }
455
455
  if (sensor.energyToday) {
456
- sensorEnergyService.getCharacteristic(Characteristic.EnergyToday)
456
+ energyService.getCharacteristic(Characteristic.EnergyToday)
457
457
  .onGet(async () => {
458
458
  const value = sensor.energyToday;
459
459
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy today: ${value} kWh`);
@@ -461,7 +461,7 @@ class Sensors extends EventEmitter {
461
461
  });
462
462
  }
463
463
  if (sensor.energyLastDay) {
464
- sensorEnergyService.getCharacteristic(Characteristic.EnergyLastDay)
464
+ energyService.getCharacteristic(Characteristic.EnergyLastDay)
465
465
  .onGet(async () => {
466
466
  const value = sensor.energyLastDay;
467
467
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy last day: ${value} kWh`);
@@ -469,7 +469,7 @@ class Sensors extends EventEmitter {
469
469
  });
470
470
  }
471
471
  if (sensor.energyLifetime) {
472
- sensorEnergyService.getCharacteristic(Characteristic.EnergyLifetime)
472
+ energyService.getCharacteristic(Characteristic.EnergyLifetime)
473
473
  .onGet(async () => {
474
474
  const value = sensor.energyLifetime;
475
475
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy lifetime: ${value} kWh`);
@@ -477,7 +477,7 @@ class Sensors extends EventEmitter {
477
477
  });
478
478
  }
479
479
  if (sensor.current) {
480
- sensorEnergyService.getCharacteristic(Characteristic.Current)
480
+ energyService.getCharacteristic(Characteristic.Current)
481
481
  .onGet(async () => {
482
482
  const value = sensor.current;
483
483
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} current: ${value} A`);
@@ -485,7 +485,7 @@ class Sensors extends EventEmitter {
485
485
  });
486
486
  }
487
487
  if (sensor.voltage) {
488
- sensorEnergyService.getCharacteristic(Characteristic.Voltage)
488
+ energyService.getCharacteristic(Characteristic.Voltage)
489
489
  .onGet(async () => {
490
490
  const value = sensor.voltage;
491
491
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} voltage: ${value} V`);
@@ -493,7 +493,7 @@ class Sensors extends EventEmitter {
493
493
  });
494
494
  }
495
495
  if (sensor.factor) {
496
- sensorEnergyService.getCharacteristic(Characteristic.Factor)
496
+ energyService.getCharacteristic(Characteristic.Factor)
497
497
  .onGet(async () => {
498
498
  const value = sensor.factor;
499
499
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power factor: ${value} cos φ`);
@@ -501,7 +501,7 @@ class Sensors extends EventEmitter {
501
501
  });
502
502
  }
503
503
  if (sensor.frequency) {
504
- sensorEnergyService.getCharacteristic(Characteristic.Freqency)
504
+ energyService.getCharacteristic(Characteristic.Freqency)
505
505
  .onGet(async () => {
506
506
  const value = sensor.frequency;
507
507
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} frequency: ${value} Hz`);
@@ -509,16 +509,15 @@ class Sensors extends EventEmitter {
509
509
  });
510
510
  }
511
511
  if (sensor.time) {
512
- sensorEnergyService.getCharacteristic(Characteristic.ReadingTime)
512
+ energyService.getCharacteristic(Characteristic.ReadingTime)
513
513
  .onGet(async () => {
514
514
  const value = sensor.time;
515
515
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} last report: ${value}`);
516
516
  return value;
517
517
  });
518
518
  }
519
- service.sensorEnergyService = sensorEnergyService;
519
+ this.sensorEnergyServices.push(energyService);
520
520
  }
521
- this.sensorServices.push(service);
522
521
  i++;
523
522
  }
524
523
  }