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