homebridge-tasmota-control 1.6.1-beta.1 → 1.6.1-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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/sensors.js +99 -109
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.1",
4
+ "version": "1.6.1-beta.3",
5
5
  "description": "Homebridge plugin to control Tasmota flashed devices.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/sensors.js CHANGED
@@ -94,14 +94,14 @@ class Sensors extends EventEmitter {
94
94
  return obj;
95
95
  }, {});
96
96
 
97
+ let i = 0;
97
98
  for (const [key, value] of Object.entries(sensorData)) {
98
99
  const sensorData = value;
99
100
 
100
- //sensor
101
101
  const obj = {
102
102
  name: key,
103
103
  time: statusSns.Time,
104
- tempUnit: statusSns.TempUnit,
104
+ tempUnit: statusSns.TempUnit === 'C' ? '°C' : statusSns.TempUnit,
105
105
  pressureUnit: statusSns.PressureUnit,
106
106
  temperature: sensorData.Temperature,
107
107
  referenceTemperature: sensorData.ReferenceTemperature,
@@ -115,12 +115,8 @@ class Sensors extends EventEmitter {
115
115
  ambientLight: sensorData.Ambient,
116
116
  motion: sensorData.Motion
117
117
  };
118
- if (obj.tempUnit === 'C') {
119
- obj.tempUnit = '°C';
120
- }
121
118
 
122
- //energy
123
- const obj1 = {
119
+ const energy = {
124
120
  power: sensorData.Power,
125
121
  apparentPower: sensorData.ApparentPower,
126
122
  reactivePower: sensorData.ReactivePower,
@@ -135,73 +131,66 @@ class Sensors extends EventEmitter {
135
131
  frequency: sensorData.Frequency,
136
132
  load: sensorData.Load,
137
133
  };
138
- const sensor = key === 'ENERGY' ? { ...obj, ...obj1 } : obj;
134
+
135
+ const sensor = key === 'ENERGY' ? { ...obj, ...energy } : obj;
139
136
  const debug1 = this.enableDebugMode ? this.emit('debug', `Sensor: ${JSON.stringify(sensor, null, 2)}`) : false;
140
137
 
141
- //push to array
142
138
  this.sensors.push(sensor);
143
- }
144
- this.sensorsCount = this.sensors.length;
145
-
146
- //update characteristics
147
- if (this.sensorsCount > 0) {
148
- for (let i = 0; i < this.sensorsCount; i++) {
149
- const sensor = this.sensors[i];
150
-
151
- const update = (service, charName, value) => {
152
- const characteristic = service?.[i]?.Characteristic?.[charName];
153
- if (characteristic && Characteristic?.[charName]) {
154
- characteristic.updateCharacteristic(Characteristic[charName], value);
155
- }
156
- };
157
-
158
- //temperature
159
- update(this.sensorTemperatureServices, 'CurrentTemperature', sensor.temperature);
160
- update(this.sensorReferenceTemperatureServices, 'CurrentTemperature', sensor.referenceTemperature);
161
- update(this.sensorObjTemperatureServices, 'CurrentTemperature', sensor.objTemperature);
162
- update(this.sensorAmbTemperatureServices, 'CurrentTemperature', sensor.ambTemperature);
163
- update(this.sensorDewPointTemperatureServices, 'CurrentTemperature', sensor.dewPointTemperature);
164
-
165
- //humidity
166
- update(this.sensorHumidityServices, 'CurrentRelativeHumidity', sensor.humidity);
167
-
168
- //co₂
169
- const co2Service = this.sensorCarbonDioxydeServices?.[i];
170
- update(this.sensorCarbonDioxydeServices, 'CarbonDioxideDetected', sensor.carbonDioxyde > 1000);
171
- update(this.sensorCarbonDioxydeServices, 'CarbonDioxideLevel', sensor.carbonDioxyde);
172
- update(this.sensorCarbonDioxydeServices, 'CarbonDioxidePeakLevel', sensor.carbonDioxyde);
173
-
174
- //ambient light
175
- update(this.sensorAmbientLightServices, 'CurrentAmbientLightLevel', sensor.ambientLight);
176
-
177
- //motion
178
- update(this.sensorMotionServices, 'MotionDetected', sensor.motion);
179
-
180
- //energy
181
- const energyFields = {
182
- Power: 'power',
183
- ApparentPower: 'apparentpower',
184
- ReactivePower: 'reactivepower',
185
- EnergyToday: 'energytoday',
186
- EnergyLastDay: 'energylastday',
187
- EnergyLifetime: 'energylifetime',
188
- Current: 'current',
189
- Voltage: 'voltage',
190
- Factor: 'factor',
191
- Frequency: 'frequency',
192
- ReadingTime: 'readingtime'
193
- };
194
-
195
- const energyService = this.sensorEnergyServices?.[i]?.Characteristic;
196
- for (const [charName, sensorKey] of Object.entries(energyFields)) {
197
- const value = sensor[sensorKey];
198
- if (energyService?.[charName] && Characteristic?.[charName] !== undefined) {
199
- energyService[charName].updateCharacteristic(Characteristic[charName], value);
200
- }
139
+
140
+ //update characteristics
141
+ const update = (servicesArray, expectedDisplayName, charName, value) => {
142
+ const service = servicesArray?.[i];
143
+ const characteristic = service?.Characteristic?.[charName];
144
+ if (service?.displayName === expectedDisplayName && characteristic && Characteristic?.[charName]) {
145
+ characteristic.updateCharacteristic(Characteristic[charName], value);
201
146
  }
147
+ };
148
+
149
+ const updates = [
150
+ // Temperature
151
+ { service: 'sensorTemperatureService', char: 'CurrentTemperature', key: 'temperature' },
152
+ { service: 'sensorReferenceTemperatureService', char: 'CurrentTemperature', key: 'referenceTemperature' },
153
+ { service: 'sensorObjTemperatureService', char: 'CurrentTemperature', key: 'objTemperature' },
154
+ { service: 'sensorAmbTemperatureService', char: 'CurrentTemperature', key: 'ambTemperature' },
155
+ { service: 'sensorDewPointTemperatureService', char: 'CurrentTemperature', key: 'dewPointTemperature' },
156
+
157
+ // Humidity
158
+ { service: 'sensorHumidityService', char: 'CurrentRelativeHumidity', key: 'humidity' },
159
+
160
+ // CO₂
161
+ { service: 'sensorCarbonDioxydeService', char: 'CarbonDioxideDetected', key: 'carbonDioxyde', transform: v => v > 1000 },
162
+ { service: 'sensorCarbonDioxydeService', char: 'CarbonDioxideLevel', key: 'carbonDioxyde' },
163
+ { service: 'sensorCarbonDioxydeService', char: 'CarbonDioxidePeakLevel', key: 'carbonDioxyde' },
164
+
165
+ // Ambient Light
166
+ { service: 'sensorAmbientLightService', char: 'CurrentAmbientLightLevel', key: 'ambientLight' },
167
+
168
+ // Motion
169
+ { service: 'sensorMotionService', char: 'MotionDetected', key: 'motion' },
170
+
171
+ // Energy
172
+ { service: 'sensorEnergyService', char: 'Power', key: 'power' },
173
+ { service: 'sensorEnergyService', char: 'ApparentPower', key: 'apparentPower' },
174
+ { service: 'sensorEnergyService', char: 'ReactivePower', key: 'reactivePower' },
175
+ { service: 'sensorEnergyService', char: 'EnergyToday', key: 'energyToday' },
176
+ { service: 'sensorEnergyService', char: 'EnergyLastDay', key: 'energyLastDay' },
177
+ { service: 'sensorEnergyService', char: 'EnergyLifetime', key: 'energyLifetime' },
178
+ { service: 'sensorEnergyService', char: 'Current', key: 'current' },
179
+ { service: 'sensorEnergyService', char: 'Voltage', key: 'voltage' },
180
+ { service: 'sensorEnergyService', char: 'Factor', key: 'factor' },
181
+ { service: 'sensorEnergyService', char: 'Frequency', key: 'frequency' },
182
+ { service: 'sensorEnergyService', char: 'ReadingTime', key: 'time' },
183
+ ];
184
+
185
+ for (const { service, char, key, transform } of updates) {
186
+ const value = transform ? transform(sensor[key]) : sensor[key];
187
+ update(this.sensorServices, `${service}${i}`, char, value);
202
188
  }
189
+
190
+ i++;
203
191
  }
204
192
  }
193
+ this.sensorsCount = this.sensors.length;
205
194
 
206
195
  return true;
207
196
  } catch (error) {
@@ -251,6 +240,14 @@ class Sensors extends EventEmitter {
251
240
  return;
252
241
  }
253
242
 
243
+ createSensorService({ accessory, serviceType, serviceName, characteristicType, getValue }) {
244
+ const service = accessory.addService(serviceType, serviceName, serviceName);
245
+ service.addOptionalCharacteristic(Characteristic.ConfiguredName);
246
+ service.setCharacteristic(Characteristic.ConfiguredName, serviceName);
247
+ service.getCharacteristic(characteristicType).onGet(getValue);
248
+ return service;
249
+ }
250
+
254
251
  //prepare accessory
255
252
  async prepareAccessory() {
256
253
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Accessory`) : false;
@@ -274,25 +271,17 @@ class Sensors extends EventEmitter {
274
271
  //Prepare services
275
272
  if (this.sensorsCount > 0) {
276
273
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Sensor Services`) : false;
277
- this.sensorTemperatureServices = [];
278
- this.sensorReferenceTemperatureServices = [];
279
- this.sensorObjTemperatureServices = [];
280
- this.sensorAmbTemperatureServices = [];
281
- this.sensorDewPointTemperatureServices = [];
282
- this.sensorHumidityServices = [];
283
- this.sensorCarbonDioxydeServices = [];
284
- this.sensorAmbientLightServices = [];
285
- this.sensorMotionServices = [];
286
- this.sensorEnergyServices = [];
274
+ this.sensorServices = [];
287
275
 
288
276
  //temperature
289
277
  let i = 0;
290
278
  for (const sensor of this.sensors) {
291
279
  const sensorName = sensor.name;
280
+ const service = {};
292
281
  if (sensor.temperature) {
293
282
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Temperature Sensor Services`) : false;
294
283
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Temperature` : `${sensorName} Temperature`;
295
- const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Temperature Sensor ${i}`);
284
+ const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorTemperatureService${i}`);
296
285
  sensorTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
297
286
  sensorTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
298
287
  sensorTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -301,14 +290,14 @@ class Sensors extends EventEmitter {
301
290
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} temperature: ${value} °${sensor.tempUnit}`);
302
291
  return value;
303
292
  });
304
- this.sensorTemperatureServices.push(sensorTemperatureService);
293
+ service.sensorTemperatureService = sensorTemperatureService;
305
294
  }
306
295
 
307
296
  //reference temperature
308
297
  if (sensor.referenceTemperature) {
309
298
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Reference Temperature Sensor Services`) : false;
310
299
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Reference Temperature` : `${sensorName} Reference Temperature`;
311
- const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Reference Temperature Sensor ${i}`);
300
+ const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorReferenceTemperatureService${i}`);
312
301
  sensorReferenceTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
313
302
  sensorReferenceTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
314
303
  sensorReferenceTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -317,14 +306,14 @@ class Sensors extends EventEmitter {
317
306
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reference temperature: ${value} °${sensor.tempUnit}`);
318
307
  return value;
319
308
  });
320
- this.sensorReferenceTemperatureServices.push(sensorReferenceTemperatureService);
309
+ service.sensorReferenceTemperatureService = sensorReferenceTemperatureService;
321
310
  }
322
311
 
323
312
  //object temperature
324
313
  if (sensor.objTemperature) {
325
314
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Obj Temperature Sensor Services`) : false;
326
315
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Obj Temperature` : `${sensorName} Obj Temperature`;
327
- const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Obj Temperature Sensor ${i}`);
316
+ const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorObjTemperatureService${i}`);
328
317
  sensorObjTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
329
318
  sensorObjTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
330
319
  sensorObjTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -333,14 +322,14 @@ class Sensors extends EventEmitter {
333
322
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} obj temperature: ${value} °${sensor.tempUnit}`);
334
323
  return value;
335
324
  });
336
- this.sensorObjTemperatureServices.push(sensorObjTemperatureService);
325
+ service.sensorObjTemperatureService = sensorObjTemperatureService;
337
326
  }
338
327
 
339
328
  //ambient temperature
340
329
  if (sensor.ambTemperature) {
341
330
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Amb Temperature Sensor Services`) : false;
342
331
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Amb Temperature` : `${sensorName} Amb Temperature`;
343
- const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Amb Temperature Sensor ${i}`);
332
+ const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorAmbTemperatureService${i}`);
344
333
  sensorAmbTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
345
334
  sensorAmbTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
346
335
  sensorAmbTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -349,14 +338,14 @@ class Sensors extends EventEmitter {
349
338
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} amb temperature: ${value} °${sensor.tempUnit}`);
350
339
  return value;
351
340
  });
352
- this.sensorAmbTemperatureServices.push(sensorAmbTemperatureService);
341
+ service.sensorAmbTemperatureService = sensorAmbTemperatureService;
353
342
  }
354
343
 
355
344
  //dew point temperature
356
345
  if (sensor.dewPointTemperature) {
357
346
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Dew Point Temperature Sensor Services`) : false;
358
347
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Dew Point` : `${sensorName} Dew Point`;
359
- const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Dew Point Temperature Sensor ${i}`);
348
+ const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorDewPointTemperatureService${i}`);
360
349
  sensorDewPointTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
361
350
  sensorDewPointTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
362
351
  sensorDewPointTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
@@ -365,14 +354,14 @@ class Sensors extends EventEmitter {
365
354
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} dew point: ${value} °${sensor.tempUnit}`);
366
355
  return value;
367
356
  });
368
- this.sensorDewPointTemperatureServices.push(sensorDewPointTemperatureService);
357
+ service.sensorDewPointTemperatureService = sensorDewPointTemperatureService;
369
358
  }
370
359
 
371
360
  //humidity
372
361
  if (sensor.humidity) {
373
362
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Humidity Sensor Services`) : false;
374
363
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Humidity` : `${sensorName} Humidity`;
375
- const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `Humidity Sensor ${i}`);
364
+ const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `sensorHumidityService${i}`);
376
365
  sensorHumidityService.addOptionalCharacteristic(Characteristic.ConfiguredName);
377
366
  sensorHumidityService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
378
367
  sensorHumidityService.getCharacteristic(Characteristic.CurrentRelativeHumidity)
@@ -381,7 +370,7 @@ class Sensors extends EventEmitter {
381
370
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} humidity: ${value} %`);
382
371
  return value;
383
372
  });
384
- this.sensorHumidityServices.push(sensorHumidityService);
373
+ service.sensorHumidityService = sensorHumidityService;
385
374
  }
386
375
 
387
376
  //pressure
@@ -392,7 +381,7 @@ class Sensors extends EventEmitter {
392
381
  if (sensor.carbonDioxyde) {
393
382
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Carbon Dioxyde Sensor Services`) : false;
394
383
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Carbon Dioxyde` : `${sensorName} Carbon Dioxyde`;
395
- const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `Carbon Dioxyde Sensor ${i}`);
384
+ const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `sensorCarbonDioxydeService${i}`);
396
385
  sensorCarbonDioxydeService.addOptionalCharacteristic(Characteristic.ConfiguredName);
397
386
  sensorCarbonDioxydeService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
398
387
  sensorCarbonDioxydeService.getCharacteristic(Characteristic.CarbonDioxideDetected)
@@ -413,14 +402,14 @@ class Sensors extends EventEmitter {
413
402
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} carbon dioxyde peak level: ${value} ppm`);
414
403
  return value;
415
404
  });
416
- this.sensorCarbonDioxydeServices.push(sensorCarbonDioxydeService);
405
+ service.sensorCarbonDioxydeService = sensorCarbonDioxydeService;
417
406
  }
418
407
 
419
408
  //ambient light
420
409
  if (sensor.ambientLight) {
421
410
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Ambient Light Sensor Services`) : false;
422
411
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Ambient Light` : `${sensorName} Ambient Light`;
423
- const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `Ambient Light Sensor ${i}`);
412
+ const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `sensorAmbientLightService${i}`);
424
413
  sensorAmbientLightService.addOptionalCharacteristic(Characteristic.ConfiguredName);
425
414
  sensorAmbientLightService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
426
415
  sensorAmbientLightService.getCharacteristic(Characteristic.CurrentAmbientLightLevel)
@@ -429,14 +418,14 @@ class Sensors extends EventEmitter {
429
418
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} ambient light: ${value} lx`);
430
419
  return value;
431
420
  });
432
- this.sensorAmbientLightServices.push(sensorAmbientLightService);
421
+ service.sensorAmbientLightService = sensorAmbientLightService;
433
422
  }
434
423
 
435
424
  //motion
436
425
  if (sensor.motion) {
437
426
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Motion Sensor Services`) : false;
438
427
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Motion` : `${sensorName} Motion`;
439
- const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `Motion Sensor ${i}`);
428
+ const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `sensorMotionService${i}`);
440
429
  sensorMotionService.addOptionalCharacteristic(Characteristic.ConfiguredName);
441
430
  sensorMotionService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
442
431
  sensorMotionService.getCharacteristic(Characteristic.MotionDetected)
@@ -445,17 +434,17 @@ class Sensors extends EventEmitter {
445
434
  const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} motion: ${state ? 'ON' : 'OFF'}`);
446
435
  return state;
447
436
  });
448
- this.sensorMotionServices.push(sensorMotionService);
437
+ service.sensorMotionService = sensorMotionService;
449
438
  }
450
439
 
451
440
  //energy
452
441
  if (sensor.name === 'ENERGY') {
453
442
  const debug4 = this.enableDebugMode ? this.emit('debug', `Prepare Power And Energy Service`) : false;
454
443
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName}` : `${sensorName}`;
455
- const energyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `Energy Sensor ${i}`);
456
- energyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
444
+ const sensorEnergyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `sensorEnergyService${i}`);
445
+ sensorEnergyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
457
446
  if (sensor.power) {
458
- energyService.getCharacteristic(Characteristic.Power)
447
+ sensorEnergyService.getCharacteristic(Characteristic.Power)
459
448
  .onGet(async () => {
460
449
  const value = sensor.power;
461
450
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power: ${value} W`);
@@ -463,7 +452,7 @@ class Sensors extends EventEmitter {
463
452
  });
464
453
  }
465
454
  if (sensor.apparentPower) {
466
- energyService.getCharacteristic(Characteristic.ApparentPower)
455
+ sensorEnergyService.getCharacteristic(Characteristic.ApparentPower)
467
456
  .onGet(async () => {
468
457
  const value = sensor.apparentPower;
469
458
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} apparent power: ${value} VA`);
@@ -471,7 +460,7 @@ class Sensors extends EventEmitter {
471
460
  });
472
461
  }
473
462
  if (sensor.reactivePower) {
474
- energyService.getCharacteristic(Characteristic.ReactivePower)
463
+ sensorEnergyService.getCharacteristic(Characteristic.ReactivePower)
475
464
  .onGet(async () => {
476
465
  const value = sensor.reactivePower;
477
466
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reactive power: ${value} VAr`);
@@ -479,7 +468,7 @@ class Sensors extends EventEmitter {
479
468
  });
480
469
  }
481
470
  if (sensor.energyToday) {
482
- energyService.getCharacteristic(Characteristic.EnergyToday)
471
+ sensorEnergyService.getCharacteristic(Characteristic.EnergyToday)
483
472
  .onGet(async () => {
484
473
  const value = sensor.energyToday;
485
474
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy today: ${value} kWh`);
@@ -487,7 +476,7 @@ class Sensors extends EventEmitter {
487
476
  });
488
477
  }
489
478
  if (sensor.energyLastDay) {
490
- energyService.getCharacteristic(Characteristic.EnergyLastDay)
479
+ sensorEnergyService.getCharacteristic(Characteristic.EnergyLastDay)
491
480
  .onGet(async () => {
492
481
  const value = sensor.energyLastDay;
493
482
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy last day: ${value} kWh`);
@@ -495,7 +484,7 @@ class Sensors extends EventEmitter {
495
484
  });
496
485
  }
497
486
  if (sensor.energyLifetime) {
498
- energyService.getCharacteristic(Characteristic.EnergyLifetime)
487
+ sensorEnergyService.getCharacteristic(Characteristic.EnergyLifetime)
499
488
  .onGet(async () => {
500
489
  const value = sensor.energyLifetime;
501
490
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy lifetime: ${value} kWh`);
@@ -503,7 +492,7 @@ class Sensors extends EventEmitter {
503
492
  });
504
493
  }
505
494
  if (sensor.current) {
506
- energyService.getCharacteristic(Characteristic.Current)
495
+ sensorEnergyService.getCharacteristic(Characteristic.Current)
507
496
  .onGet(async () => {
508
497
  const value = sensor.current;
509
498
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} current: ${value} A`);
@@ -511,7 +500,7 @@ class Sensors extends EventEmitter {
511
500
  });
512
501
  }
513
502
  if (sensor.voltage) {
514
- energyService.getCharacteristic(Characteristic.Voltage)
503
+ sensorEnergyService.getCharacteristic(Characteristic.Voltage)
515
504
  .onGet(async () => {
516
505
  const value = sensor.voltage;
517
506
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} voltage: ${value} V`);
@@ -519,7 +508,7 @@ class Sensors extends EventEmitter {
519
508
  });
520
509
  }
521
510
  if (sensor.factor) {
522
- energyService.getCharacteristic(Characteristic.Factor)
511
+ sensorEnergyService.getCharacteristic(Characteristic.Factor)
523
512
  .onGet(async () => {
524
513
  const value = sensor.factor;
525
514
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power factor: ${value} cos φ`);
@@ -527,7 +516,7 @@ class Sensors extends EventEmitter {
527
516
  });
528
517
  }
529
518
  if (sensor.frequency) {
530
- energyService.getCharacteristic(Characteristic.Freqency)
519
+ sensorEnergyService.getCharacteristic(Characteristic.Freqency)
531
520
  .onGet(async () => {
532
521
  const value = sensor.frequency;
533
522
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} frequency: ${value} Hz`);
@@ -535,15 +524,16 @@ class Sensors extends EventEmitter {
535
524
  });
536
525
  }
537
526
  if (sensor.time) {
538
- energyService.getCharacteristic(Characteristic.ReadingTime)
527
+ sensorEnergyService.getCharacteristic(Characteristic.ReadingTime)
539
528
  .onGet(async () => {
540
529
  const value = sensor.time;
541
530
  const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} last report: ${value}`);
542
531
  return value;
543
532
  });
544
533
  }
545
- this.sensorEnergyServices.push(energyService);
534
+ service.sensorEnergyService = sensorEnergyService;
546
535
  }
536
+ this.sensorServices.push(service);
547
537
  i++;
548
538
  }
549
539
  }