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.
- package/package.json +1 -1
- package/src/sensors.js +99 -109
package/package.json
CHANGED
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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.
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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
|
|
456
|
-
|
|
444
|
+
const sensorEnergyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `sensorEnergyService${i}`);
|
|
445
|
+
sensorEnergyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
|
|
457
446
|
if (sensor.power) {
|
|
458
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
534
|
+
service.sensorEnergyService = sensorEnergyService;
|
|
546
535
|
}
|
|
536
|
+
this.sensorServices.push(service);
|
|
547
537
|
i++;
|
|
548
538
|
}
|
|
549
539
|
}
|