homebridge-tasmota-control 1.6.1-beta.2 → 1.6.1-beta.4
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 +1 -1
- package/src/sensors.js +266 -170
package/package.json
CHANGED
package/src/sensors.js
CHANGED
|
@@ -146,46 +146,39 @@ class Sensors extends EventEmitter {
|
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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);
|
|
188
|
-
}
|
|
149
|
+
// temperature
|
|
150
|
+
update(this.sensorServices, `sensorTemperatureService${i}`, 'CurrentTemperature', sensor.temperature);
|
|
151
|
+
update(this.sensorServices, `sensorReferenceTemperatureService${i}`, 'CurrentTemperature', sensor.referenceTemperature);
|
|
152
|
+
update(this.sensorServices, `sensorObjTemperatureService${i}`, 'CurrentTemperature', sensor.objTemperature);
|
|
153
|
+
update(this.sensorServices, `sensorAmbTemperatureService${i}`, 'CurrentTemperature', sensor.ambTemperature);
|
|
154
|
+
update(this.sensorServices, `sensorDewPointTemperatureService${i}`, 'CurrentTemperature', sensor.dewPointTemperature);
|
|
155
|
+
|
|
156
|
+
// humidity
|
|
157
|
+
update(this.sensorServices, `sensorHumidityService${i}`, 'CurrentRelativeHumidity', sensor.humidity);
|
|
158
|
+
|
|
159
|
+
// CO₂
|
|
160
|
+
update(this.sensorServices, `sensorCarbonDioxydeService${i}`, 'CarbonDioxideDetected', sensor.carbonDioxyde > 1000);
|
|
161
|
+
update(this.sensorServices, `sensorCarbonDioxydeService${i}`, 'CarbonDioxideLevel', sensor.carbonDioxyde);
|
|
162
|
+
update(this.sensorServices, `sensorCarbonDioxydeService${i}`, 'CarbonDioxidePeakLevel', sensor.carbonDioxyde);
|
|
163
|
+
|
|
164
|
+
// ambient light
|
|
165
|
+
update(this.sensorServices, `sensorAmbientLightService${i}`, 'CurrentAmbientLightLevel', sensor.ambientLight);
|
|
166
|
+
|
|
167
|
+
// motion
|
|
168
|
+
update(this.sensorServices, `sensorMotionService${i}`, 'MotionDetected', sensor.motion);
|
|
169
|
+
|
|
170
|
+
// energy
|
|
171
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'Power', sensor.power);
|
|
172
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'ApparentPower', sensor.apparentPower);
|
|
173
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'ReactivePower', sensor.reactivePower);
|
|
174
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'EnergyToday', sensor.energyToday);
|
|
175
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'EnergyLastDay', sensor.energyLastDay);
|
|
176
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'EnergyLifetime', sensor.energyLifetime);
|
|
177
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'Current', sensor.current);
|
|
178
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'Voltage', sensor.voltage);
|
|
179
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'Factor', sensor.factor);
|
|
180
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'Frequency', sensor.frequency);
|
|
181
|
+
update(this.sensorServices, `sensorEnergyService${i}`, 'ReadingTime', sensor.time);
|
|
189
182
|
|
|
190
183
|
i++;
|
|
191
184
|
}
|
|
@@ -240,14 +233,6 @@ class Sensors extends EventEmitter {
|
|
|
240
233
|
return;
|
|
241
234
|
}
|
|
242
235
|
|
|
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
|
-
|
|
251
236
|
//prepare accessory
|
|
252
237
|
async prepareAccessory() {
|
|
253
238
|
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Accessory`) : false;
|
|
@@ -273,155 +258,266 @@ class Sensors extends EventEmitter {
|
|
|
273
258
|
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Sensor Services`) : false;
|
|
274
259
|
this.sensorServices = [];
|
|
275
260
|
|
|
261
|
+
//temperature
|
|
276
262
|
let i = 0;
|
|
277
263
|
for (const sensor of this.sensors) {
|
|
278
264
|
const sensorName = sensor.name;
|
|
279
265
|
const service = {};
|
|
266
|
+
if (sensor.temperature) {
|
|
267
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Temperature Sensor Services`) : false;
|
|
268
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Temperature` : `${sensorName} Temperature`;
|
|
269
|
+
const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorTemperatureService${i}`);
|
|
270
|
+
sensorTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
271
|
+
sensorTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
272
|
+
sensorTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
273
|
+
.onGet(async () => {
|
|
274
|
+
const value = sensor.temperature;
|
|
275
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} temperature: ${value} °${sensor.tempUnit}`);
|
|
276
|
+
return value;
|
|
277
|
+
});
|
|
278
|
+
service.sensorTemperatureService = sensorTemperatureService;
|
|
279
|
+
}
|
|
280
280
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
if (sensor[key] !== undefined) {
|
|
294
|
-
if (this.enableDebugMode) this.emit('debug', `Prepare ${label} Sensor Services`);
|
|
295
|
-
const value = sensor[key];
|
|
296
|
-
const name = fullName(label);
|
|
297
|
-
const temperatureService = this.createSensorService({
|
|
298
|
-
accessory,
|
|
299
|
-
serviceType: Service.TemperatureSensor,
|
|
300
|
-
serviceName: name,
|
|
301
|
-
characteristicType: Characteristic.CurrentTemperature,
|
|
302
|
-
getValue: async () => {
|
|
303
|
-
if (!this.disableLogInfo) this.emit('info', `sensor: ${sensorName} ${label.toLowerCase()}: ${value} °${sensor.tempUnit}`);
|
|
304
|
-
return value;
|
|
305
|
-
}
|
|
281
|
+
//reference temperature
|
|
282
|
+
if (sensor.referenceTemperature) {
|
|
283
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Reference Temperature Sensor Services`) : false;
|
|
284
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Reference Temperature` : `${sensorName} Reference Temperature`;
|
|
285
|
+
const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorReferenceTemperatureService${i}`);
|
|
286
|
+
sensorReferenceTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
287
|
+
sensorReferenceTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
288
|
+
sensorReferenceTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
289
|
+
.onGet(async () => {
|
|
290
|
+
const value = sensor.referenceTemperature;
|
|
291
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reference temperature: ${value} °${sensor.tempUnit}`);
|
|
292
|
+
return value;
|
|
306
293
|
});
|
|
307
|
-
|
|
308
|
-
|
|
294
|
+
service.sensorReferenceTemperatureService = sensorReferenceTemperatureService;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
//object temperature
|
|
298
|
+
if (sensor.objTemperature) {
|
|
299
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Obj Temperature Sensor Services`) : false;
|
|
300
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Obj Temperature` : `${sensorName} Obj Temperature`;
|
|
301
|
+
const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorObjTemperatureService${i}`);
|
|
302
|
+
sensorObjTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
303
|
+
sensorObjTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
304
|
+
sensorObjTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
305
|
+
.onGet(async () => {
|
|
306
|
+
const value = sensor.objTemperature;
|
|
307
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} obj temperature: ${value} °${sensor.tempUnit}`);
|
|
308
|
+
return value;
|
|
309
|
+
});
|
|
310
|
+
service.sensorObjTemperatureService = sensorObjTemperatureService;
|
|
309
311
|
}
|
|
310
312
|
|
|
311
|
-
//
|
|
312
|
-
if (sensor.
|
|
313
|
-
|
|
314
|
-
const
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
313
|
+
//ambient temperature
|
|
314
|
+
if (sensor.ambTemperature) {
|
|
315
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Amb Temperature Sensor Services`) : false;
|
|
316
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Amb Temperature` : `${sensorName} Amb Temperature`;
|
|
317
|
+
const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorAmbTemperatureService${i}`);
|
|
318
|
+
sensorAmbTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
319
|
+
sensorAmbTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
320
|
+
sensorAmbTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
321
|
+
.onGet(async () => {
|
|
322
|
+
const value = sensor.ambTemperature;
|
|
323
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} amb temperature: ${value} °${sensor.tempUnit}`);
|
|
324
|
+
return value;
|
|
325
|
+
});
|
|
326
|
+
service.sensorAmbTemperatureService = sensorAmbTemperatureService;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
//dew point temperature
|
|
330
|
+
if (sensor.dewPointTemperature) {
|
|
331
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Dew Point Temperature Sensor Services`) : false;
|
|
332
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Dew Point` : `${sensorName} Dew Point`;
|
|
333
|
+
const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `sensorDewPointTemperatureService${i}`);
|
|
334
|
+
sensorDewPointTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
335
|
+
sensorDewPointTemperatureService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
336
|
+
sensorDewPointTemperatureService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
337
|
+
.onGet(async () => {
|
|
338
|
+
const value = sensor.dewPointTemperature;
|
|
339
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} dew point: ${value} °${sensor.tempUnit}`);
|
|
340
|
+
return value;
|
|
341
|
+
});
|
|
342
|
+
service.sensorDewPointTemperatureService = sensorDewPointTemperatureService;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
//humidity
|
|
346
|
+
if (sensor.humidity) {
|
|
347
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Humidity Sensor Services`) : false;
|
|
348
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Humidity` : `${sensorName} Humidity`;
|
|
349
|
+
const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `sensorHumidityService${i}`);
|
|
350
|
+
sensorHumidityService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
351
|
+
sensorHumidityService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
352
|
+
sensorHumidityService.getCharacteristic(Characteristic.CurrentRelativeHumidity)
|
|
353
|
+
.onGet(async () => {
|
|
321
354
|
const value = sensor.humidity;
|
|
322
|
-
|
|
355
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} humidity: ${value} %`);
|
|
323
356
|
return value;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
service.sensorHumidityService = humidityService;
|
|
357
|
+
});
|
|
358
|
+
service.sensorHumidityService = sensorHumidityService;
|
|
327
359
|
}
|
|
328
360
|
|
|
329
|
-
//
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
361
|
+
//pressure
|
|
362
|
+
|
|
363
|
+
//gas
|
|
364
|
+
|
|
365
|
+
//carbon dioxyde
|
|
366
|
+
if (sensor.carbonDioxyde) {
|
|
367
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Carbon Dioxyde Sensor Services`) : false;
|
|
368
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Carbon Dioxyde` : `${sensorName} Carbon Dioxyde`;
|
|
369
|
+
const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `sensorCarbonDioxydeService${i}`);
|
|
370
|
+
sensorCarbonDioxydeService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
371
|
+
sensorCarbonDioxydeService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
372
|
+
sensorCarbonDioxydeService.getCharacteristic(Characteristic.CarbonDioxideDetected)
|
|
373
|
+
.onGet(async () => {
|
|
374
|
+
const state = sensor.carbonDioxyde > 1000;
|
|
375
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} carbon dioxyde detected: ${state ? 'Yes' : 'No'}`);
|
|
376
|
+
return state;
|
|
377
|
+
});
|
|
378
|
+
sensorCarbonDioxydeService.getCharacteristic(Characteristic.CarbonDioxideLevel)
|
|
379
|
+
.onGet(async () => {
|
|
380
|
+
const value = sensor.carbonDioxyde;
|
|
381
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} carbon dioxyde level: ${value} ppm`);
|
|
382
|
+
return value;
|
|
383
|
+
});
|
|
384
|
+
sensorCarbonDioxydeService.getCharacteristic(Characteristic.CarbonDioxidePeakLevel)
|
|
385
|
+
.onGet(async () => {
|
|
386
|
+
const value = sensor.carbonDioxyde;
|
|
387
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} carbon dioxyde peak level: ${value} ppm`);
|
|
388
|
+
return value;
|
|
389
|
+
});
|
|
390
|
+
service.sensorCarbonDioxydeService = sensorCarbonDioxydeService;
|
|
353
391
|
}
|
|
354
392
|
|
|
355
|
-
//
|
|
356
|
-
if (sensor.ambientLight
|
|
357
|
-
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
getValue: async () => {
|
|
393
|
+
//ambient light
|
|
394
|
+
if (sensor.ambientLight) {
|
|
395
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Ambient Light Sensor Services`) : false;
|
|
396
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Ambient Light` : `${sensorName} Ambient Light`;
|
|
397
|
+
const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `sensorAmbientLightService${i}`);
|
|
398
|
+
sensorAmbientLightService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
399
|
+
sensorAmbientLightService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
400
|
+
sensorAmbientLightService.getCharacteristic(Characteristic.CurrentAmbientLightLevel)
|
|
401
|
+
.onGet(async () => {
|
|
365
402
|
const value = sensor.ambientLight;
|
|
366
|
-
|
|
403
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} ambient light: ${value} lx`);
|
|
367
404
|
return value;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
service.sensorAmbientLightService = lightService;
|
|
405
|
+
});
|
|
406
|
+
service.sensorAmbientLightService = sensorAmbientLightService;
|
|
371
407
|
}
|
|
372
408
|
|
|
373
|
-
//
|
|
374
|
-
if (sensor.motion
|
|
375
|
-
|
|
376
|
-
const
|
|
377
|
-
const
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
getValue: async () => {
|
|
409
|
+
//motion
|
|
410
|
+
if (sensor.motion) {
|
|
411
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare Motion Sensor Services`) : false;
|
|
412
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Motion` : `${sensorName} Motion`;
|
|
413
|
+
const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `sensorMotionService${i}`);
|
|
414
|
+
sensorMotionService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
415
|
+
sensorMotionService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
416
|
+
sensorMotionService.getCharacteristic(Characteristic.MotionDetected)
|
|
417
|
+
.onGet(async () => {
|
|
383
418
|
const state = sensor.motion;
|
|
384
|
-
|
|
419
|
+
const logInfo = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} motion: ${state ? 'ON' : 'OFF'}`);
|
|
385
420
|
return state;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
service.sensorMotionService = motionService;
|
|
421
|
+
});
|
|
422
|
+
service.sensorMotionService = sensorMotionService;
|
|
389
423
|
}
|
|
390
424
|
|
|
391
|
-
//
|
|
425
|
+
//energy
|
|
392
426
|
if (sensor.name === 'ENERGY') {
|
|
393
|
-
|
|
394
|
-
const
|
|
395
|
-
const
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
{ key: 'energyToday', type: Characteristic.EnergyToday, label: 'energy today', unit: 'kWh' },
|
|
403
|
-
{ key: 'energyLastDay', type: Characteristic.EnergyLastDay, label: 'energy last day', unit: 'kWh' },
|
|
404
|
-
{ key: 'energyLifetime', type: Characteristic.EnergyLifetime, label: 'energy lifetime', unit: 'kWh' },
|
|
405
|
-
{ key: 'current', type: Characteristic.Current, label: 'current', unit: 'A' },
|
|
406
|
-
{ key: 'voltage', type: Characteristic.Voltage, label: 'voltage', unit: 'V' },
|
|
407
|
-
{ key: 'factor', type: Characteristic.Factor, label: 'power factor', unit: 'cos φ' },
|
|
408
|
-
{ key: 'frequency', type: Characteristic.Freqency, label: 'frequency', unit: 'Hz' },
|
|
409
|
-
{ key: 'time', type: Characteristic.ReadingTime, label: 'last report', unit: '' }
|
|
410
|
-
];
|
|
411
|
-
|
|
412
|
-
for (const { key, type, label, unit } of energyFields) {
|
|
413
|
-
if (sensor[key] !== undefined) {
|
|
414
|
-
energyService.getCharacteristic(type).onGet(async () => {
|
|
415
|
-
const value = sensor[key];
|
|
416
|
-
if (!this.disableLogInfo) this.emit('info', `sensor: ${sensorName} ${label}: ${value} ${unit}`);
|
|
427
|
+
const debug4 = this.enableDebugMode ? this.emit('debug', `Prepare Power And Energy Service`) : false;
|
|
428
|
+
const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName}` : `${sensorName}`;
|
|
429
|
+
const sensorEnergyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `sensorEnergyService${i}`);
|
|
430
|
+
sensorEnergyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
431
|
+
if (sensor.power) {
|
|
432
|
+
sensorEnergyService.getCharacteristic(Characteristic.Power)
|
|
433
|
+
.onGet(async () => {
|
|
434
|
+
const value = sensor.power;
|
|
435
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power: ${value} W`);
|
|
417
436
|
return value;
|
|
418
437
|
});
|
|
419
|
-
}
|
|
420
438
|
}
|
|
421
|
-
|
|
422
|
-
|
|
439
|
+
if (sensor.apparentPower) {
|
|
440
|
+
sensorEnergyService.getCharacteristic(Characteristic.ApparentPower)
|
|
441
|
+
.onGet(async () => {
|
|
442
|
+
const value = sensor.apparentPower;
|
|
443
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} apparent power: ${value} VA`);
|
|
444
|
+
return value;
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
if (sensor.reactivePower) {
|
|
448
|
+
sensorEnergyService.getCharacteristic(Characteristic.ReactivePower)
|
|
449
|
+
.onGet(async () => {
|
|
450
|
+
const value = sensor.reactivePower;
|
|
451
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} reactive power: ${value} VAr`);
|
|
452
|
+
return value;
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
if (sensor.energyToday) {
|
|
456
|
+
sensorEnergyService.getCharacteristic(Characteristic.EnergyToday)
|
|
457
|
+
.onGet(async () => {
|
|
458
|
+
const value = sensor.energyToday;
|
|
459
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy today: ${value} kWh`);
|
|
460
|
+
return value;
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
if (sensor.energyLastDay) {
|
|
464
|
+
sensorEnergyService.getCharacteristic(Characteristic.EnergyLastDay)
|
|
465
|
+
.onGet(async () => {
|
|
466
|
+
const value = sensor.energyLastDay;
|
|
467
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy last day: ${value} kWh`);
|
|
468
|
+
return value;
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
if (sensor.energyLifetime) {
|
|
472
|
+
sensorEnergyService.getCharacteristic(Characteristic.EnergyLifetime)
|
|
473
|
+
.onGet(async () => {
|
|
474
|
+
const value = sensor.energyLifetime;
|
|
475
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} energy lifetime: ${value} kWh`);
|
|
476
|
+
return value;
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
if (sensor.current) {
|
|
480
|
+
sensorEnergyService.getCharacteristic(Characteristic.Current)
|
|
481
|
+
.onGet(async () => {
|
|
482
|
+
const value = sensor.current;
|
|
483
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} current: ${value} A`);
|
|
484
|
+
return value;
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
if (sensor.voltage) {
|
|
488
|
+
sensorEnergyService.getCharacteristic(Characteristic.Voltage)
|
|
489
|
+
.onGet(async () => {
|
|
490
|
+
const value = sensor.voltage;
|
|
491
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} voltage: ${value} V`);
|
|
492
|
+
return value;
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
if (sensor.factor) {
|
|
496
|
+
sensorEnergyService.getCharacteristic(Characteristic.Factor)
|
|
497
|
+
.onGet(async () => {
|
|
498
|
+
const value = sensor.factor;
|
|
499
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} power factor: ${value} cos φ`);
|
|
500
|
+
return value;
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
if (sensor.frequency) {
|
|
504
|
+
sensorEnergyService.getCharacteristic(Characteristic.Freqency)
|
|
505
|
+
.onGet(async () => {
|
|
506
|
+
const value = sensor.frequency;
|
|
507
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} frequency: ${value} Hz`);
|
|
508
|
+
return value;
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
if (sensor.time) {
|
|
512
|
+
sensorEnergyService.getCharacteristic(Characteristic.ReadingTime)
|
|
513
|
+
.onGet(async () => {
|
|
514
|
+
const value = sensor.time;
|
|
515
|
+
const info = this.disableLogInfo ? false : this.emit('info', `sensor: ${sensorName} last report: ${value}`);
|
|
516
|
+
return value;
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
service.sensorEnergyService = sensorEnergyService;
|
|
423
520
|
}
|
|
424
|
-
|
|
425
521
|
this.sensorServices.push(service);
|
|
426
522
|
i++;
|
|
427
523
|
}
|