homebridge-tasmota-control 1.6.0 → 1.6.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/sensors.js +56 -31
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.0",
4
+ "version": "1.6.1-beta.0",
5
5
  "description": "Homebridge plugin to control Tasmota flashed devices.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/sensors.js CHANGED
@@ -114,7 +114,7 @@ class Sensors extends EventEmitter {
114
114
  carbonDioxyde: sensorData.CarbonDioxyde,
115
115
  ambientLight: sensorData.Ambient,
116
116
  motion: sensorData.Motion
117
- }
117
+ };
118
118
  if (obj.tempUnit === 'C') {
119
119
  obj.tempUnit = '°C';
120
120
  }
@@ -134,7 +134,7 @@ class Sensors extends EventEmitter {
134
134
  factor: sensorData.Factor,
135
135
  frequency: sensorData.Frequency,
136
136
  load: sensorData.Load,
137
- }
137
+ };
138
138
  const sensor = key === 'ENERGY' ? { ...obj, ...obj1 } : obj;
139
139
  const debug1 = this.enableDebugMode ? this.emit('debug', `Sensor: ${JSON.stringify(sensor, null, 2)}`) : false;
140
140
 
@@ -148,32 +148,57 @@ class Sensors extends EventEmitter {
148
148
  for (let i = 0; i < this.sensorsCount; i++) {
149
149
  const sensor = this.sensors[i];
150
150
 
151
- this.sensorTemperatureServices?.[i]?.updateCharacteristic(Characteristic.CurrentTemperature, sensor.temperature);
152
- this.sensorReferenceTemperatureServices?.[i]?.updateCharacteristic(Characteristic.CurrentTemperature, sensor.referenceTemperature);
153
- this.sensorObjTemperatureServices?.[i]?.updateCharacteristic(Characteristic.CurrentTemperature, sensor.objTemperature);
154
- this.sensorAmbTemperatureServices?.[i]?.updateCharacteristic(Characteristic.CurrentTemperature, sensor.ambTemperature);
155
- this.sensorDewPointTemperatureServices?.[i]?.updateCharacteristic(Characteristic.CurrentTemperature, sensor.dewPointTemperature);
156
- this.sensorHumidityServices?.[i]?.updateCharacteristic(Characteristic.CurrentRelativeHumidity, sensor.humidity);
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);
157
164
 
165
+ //humidity
166
+ update(this.sensorHumidityServices, 'CurrentRelativeHumidity', sensor.humidity);
167
+
168
+ //co₂
158
169
  const co2Service = this.sensorCarbonDioxydeServices?.[i];
159
- co2Service?.updateCharacteristic(Characteristic.CarbonDioxideDetected, sensor.carbonDioxyde > 1000);
160
- co2Service?.updateCharacteristic(Characteristic.CarbonDioxideLevel, sensor.carbonDioxyde);
161
- co2Service?.updateCharacteristic(Characteristic.CarbonDioxidePeakLevel, sensor.carbonDioxyde);
170
+ update(this.sensorCarbonDioxydeServices, 'CarbonDioxideDetected', sensor.carbonDioxyde > 1000);
171
+ update(this.sensorCarbonDioxydeServices, 'CarbonDioxideLevel', sensor.carbonDioxyde);
172
+ update(this.sensorCarbonDioxydeServices, 'CarbonDioxidePeakLevel', sensor.carbonDioxyde);
162
173
 
163
- this.sensorAmbientLightServices?.[i]?.updateCharacteristic(Characteristic.CurrentAmbientLightLevel, sensor.ambientLight);
164
- this.sensorMotionServices?.[i]?.updateCharacteristic(Characteristic.MotionDetected, sensor.motion);
174
+ //ambient light
175
+ update(this.sensorAmbientLightServices, 'CurrentAmbientLightLevel', sensor.ambientLight);
165
176
 
177
+ //motion
178
+ update(this.sensorMotionServices, 'MotionDetected', sensor.motion);
166
179
 
167
180
  //energy
168
- const fields = [
169
- 'Power', 'ApparentPower', 'ReactivePower', 'EnergyToday', 'EnergyLastDay',
170
- 'EnergyLifetime', 'Current', 'Voltage', 'Factor', 'Frequency', 'ReadingTime'
171
- ];
172
- const characteristic = this.sensorEnergyServices?.[i]?.Characteristic;
173
- for (const key of fields) {
174
- characteristic?.[key]?.updateCharacteristic(Characteristic[key], sensor[key.toLowerCase()]);
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
+ }
175
201
  }
176
-
177
202
  }
178
203
  }
179
204
  }
@@ -249,6 +274,16 @@ class Sensors extends EventEmitter {
249
274
  //Prepare services
250
275
  if (this.sensorsCount > 0) {
251
276
  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 = [];
252
287
 
253
288
  //temperature
254
289
  let i = 0;
@@ -256,7 +291,6 @@ class Sensors extends EventEmitter {
256
291
  const sensorName = sensor.name;
257
292
  if (sensor.temperature) {
258
293
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Temperature Sensor Services`) : false;
259
- this.sensorTemperatureServices = [];
260
294
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Temperature` : `${sensorName} Temperature`;
261
295
  const sensorTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Temperature Sensor ${i}`);
262
296
  sensorTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -273,7 +307,6 @@ class Sensors extends EventEmitter {
273
307
  //reference temperature
274
308
  if (sensor.referenceTemperature) {
275
309
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Reference Temperature Sensor Services`) : false;
276
- this.sensorReferenceTemperatureServices = [];
277
310
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Reference Temperature` : `${sensorName} Reference Temperature`;
278
311
  const sensorReferenceTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Reference Temperature Sensor ${i}`);
279
312
  sensorReferenceTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -290,7 +323,6 @@ class Sensors extends EventEmitter {
290
323
  //object temperature
291
324
  if (sensor.objTemperature) {
292
325
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Obj Temperature Sensor Services`) : false;
293
- this.sensorObjTemperatureServices = [];
294
326
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Obj Temperature` : `${sensorName} Obj Temperature`;
295
327
  const sensorObjTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Obj Temperature Sensor ${i}`);
296
328
  sensorObjTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -307,7 +339,6 @@ class Sensors extends EventEmitter {
307
339
  //ambient temperature
308
340
  if (sensor.ambTemperature) {
309
341
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Amb Temperature Sensor Services`) : false;
310
- this.sensorAmbTemperatureServices = [];
311
342
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Amb Temperature` : `${sensorName} Amb Temperature`;
312
343
  const sensorAmbTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Amb Temperature Sensor ${i}`);
313
344
  sensorAmbTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -324,7 +355,6 @@ class Sensors extends EventEmitter {
324
355
  //dew point temperature
325
356
  if (sensor.dewPointTemperature) {
326
357
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Dew Point Temperature Sensor Services`) : false;
327
- this.sensorDewPointTemperatureServices = [];
328
358
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Dew Point` : `${sensorName} Dew Point`;
329
359
  const sensorDewPointTemperatureService = accessory.addService(Service.TemperatureSensor, serviceName, `Dew Point Temperature Sensor ${i}`);
330
360
  sensorDewPointTemperatureService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -341,7 +371,6 @@ class Sensors extends EventEmitter {
341
371
  //humidity
342
372
  if (sensor.humidity) {
343
373
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Humidity Sensor Services`) : false;
344
- this.sensorHumidityServices = [];
345
374
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Humidity` : `${sensorName} Humidity`;
346
375
  const sensorHumidityService = accessory.addService(Service.HumiditySensor, serviceName, `Humidity Sensor ${i}`);
347
376
  sensorHumidityService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -362,7 +391,6 @@ class Sensors extends EventEmitter {
362
391
  //carbon dioxyde
363
392
  if (sensor.carbonDioxyde) {
364
393
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Carbon Dioxyde Sensor Services`) : false;
365
- this.sensorCarbonDioxydeServices = [];
366
394
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Carbon Dioxyde` : `${sensorName} Carbon Dioxyde`;
367
395
  const sensorCarbonDioxydeService = accessory.addService(Service.CarbonDioxideSensor, serviceName, `Carbon Dioxyde Sensor ${i}`);
368
396
  sensorCarbonDioxydeService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -391,7 +419,6 @@ class Sensors extends EventEmitter {
391
419
  //ambient light
392
420
  if (sensor.ambientLight) {
393
421
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Ambient Light Sensor Services`) : false;
394
- this.sensorAmbientLightServices = [];
395
422
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Ambient Light` : `${sensorName} Ambient Light`;
396
423
  const sensorAmbientLightService = accessory.addService(Service.LightSensor, serviceName, `Ambient Light Sensor ${i}`);
397
424
  sensorAmbientLightService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -408,7 +435,6 @@ class Sensors extends EventEmitter {
408
435
  //motion
409
436
  if (sensor.motion) {
410
437
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare Motion Sensor Services`) : false;
411
- this.sensorMotionServices = [];
412
438
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName} Motion` : `${sensorName} Motion`;
413
439
  const sensorMotionService = accessory.addService(Service.MotionSensor, serviceName, `Motion Sensor ${i}`);
414
440
  sensorMotionService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -425,7 +451,6 @@ class Sensors extends EventEmitter {
425
451
  //energy
426
452
  if (sensor.name === 'ENERGY') {
427
453
  const debug4 = this.enableDebugMode ? this.emit('debug', `Prepare Power And Energy Service`) : false;
428
- this.sensorEnergyServices = [];
429
454
  const serviceName = this.sensorsNamePrefix ? `${accessoryName} ${sensorName}` : `${sensorName} Sensor`;
430
455
  const energyService = accessory.addService(Service.PowerAndEnergyService, serviceName, `Energy Sensor ${i}`);
431
456
  energyService.setCharacteristic(Characteristic.ConfiguredName, serviceName);