homebridge-tasmota-control 1.6.2-beta.1 → 1.6.2-beta.11

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 +59 -44
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.2-beta.1",
4
+ "version": "1.6.2-beta.11",
5
5
  "description": "Homebridge plugin to control Tasmota flashed devices.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/sensors.js CHANGED
@@ -98,11 +98,10 @@ class Sensors extends EventEmitter {
98
98
  for (const [key, value] of Object.entries(sensorData)) {
99
99
  const sensorData = value;
100
100
 
101
- //sensor
102
101
  const obj = {
103
102
  name: key,
104
103
  time: statusSns.Time,
105
- tempUnit: statusSns.TempUnit,
104
+ tempUnit: statusSns.TempUnit === 'C' ? '°C' : statusSns.TempUnit,
106
105
  pressureUnit: statusSns.PressureUnit,
107
106
  temperature: sensorData.Temperature,
108
107
  referenceTemperature: sensorData.ReferenceTemperature,
@@ -114,29 +113,7 @@ class Sensors extends EventEmitter {
114
113
  gas: sensorData.Gas,
115
114
  carbonDioxyde: sensorData.CarbonDioxyde,
116
115
  ambientLight: sensorData.Ambient,
117
- motion: sensorData.Motion
118
- }
119
- if (obj.tempUnit === 'C') {
120
- obj.tempUnit = '°C';
121
- }
122
-
123
- this.emit('warn', `Sensors status: ${JSON.stringify(obj, null, 2)}`)
124
- //update characteristics
125
- this.sensorTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.temperature);
126
- this.sensorReferenceTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.referenceTemperature);
127
- this.sensorObjTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.objTemperature);
128
- this.sensorAmbTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.ambTemperature);
129
- this.sensorDewPointTemperatureServices?.[i]?.Characteristic?.CurrentTemperature?.updateCharacteristic(Characteristic.CurrentTemperature, obj.dewPointTemperature);
130
- this.sensorHumidityServices?.[i]?.Characteristic?.CurrentRelativeHumidity?.updateCharacteristic(Characteristic.CurrentRelativeHumidity, obj.humidity);
131
- this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxideDetected?.updateCharacteristic(Characteristic.CarbonDioxideDetected, obj.carbonDioxyde > 1000);
132
- this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxideLevel?.updateCharacteristic(Characteristic.CarbonDioxideLevel, obj.carbonDioxyde);
133
- this.sensorCarbonDioxydeServices?.[i]?.Characteristic?.CarbonDioxidePeakLevel?.updateCharacteristic(Characteristic.CarbonDioxidePeakLevel, obj.carbonDioxyde);
134
- this.sensorAmbientLightServices?.[i]?.Characteristic?.CurrentAmbientLightLevel?.updateCharacteristic(Characteristic.CurrentAmbientLightLevel, obj.ambientLight);
135
- this.sensorMotionServices?.[i]?.Characteristic?.MotionDetected?.updateCharacteristic(Characteristic.MotionDetected, obj.motion);
136
-
137
- //energy
138
- const isEnergy = key === 'ENERGY';
139
- const energy = {
116
+ motion: sensorData.Motion,
140
117
  power: sensorData.Power,
141
118
  apparentPower: sensorData.ApparentPower,
142
119
  reactivePower: sensorData.ReactivePower,
@@ -149,33 +126,71 @@ class Sensors extends EventEmitter {
149
126
  voltage: sensorData.Voltage,
150
127
  factor: sensorData.Factor,
151
128
  frequency: sensorData.Frequency,
152
- load: sensorData.Load,
129
+ load: sensorData.Load
130
+ };
131
+
132
+ this.sensors.push(obj);
133
+
134
+ const charMap = [
135
+ [this.sensorTemperatureServices?.[i], Characteristic.CurrentTemperature, obj.temperature],
136
+ [this.sensorReferenceTemperatureServices?.[i], Characteristic.CurrentTemperature, obj.referenceTemperature],
137
+ [this.sensorObjTemperatureServices?.[i], Characteristic.CurrentTemperature, obj.objTemperature],
138
+ [this.sensorAmbTemperatureServices?.[i], Characteristic.CurrentTemperature, obj.ambTemperature],
139
+ [this.sensorDewPointTemperatureServices?.[i], Characteristic.CurrentTemperature, obj.dewPointTemperature],
140
+ [this.sensorHumidityServices?.[i], Characteristic.CurrentRelativeHumidity, obj.humidity],
141
+ [this.sensorCarbonDioxydeServices?.[i], Characteristic.CarbonDioxideDetected, obj.carbonDioxyde > 1000],
142
+ [this.sensorCarbonDioxydeServices?.[i], Characteristic.CarbonDioxideLevel, obj.carbonDioxyde],
143
+ [this.sensorCarbonDioxydeServices?.[i], Characteristic.CarbonDioxidePeakLevel, obj.carbonDioxyde],
144
+ [this.sensorAmbientLightServices?.[i], Characteristic.CurrentAmbientLightLevel, obj.ambientLight],
145
+ [this.sensorMotionServices?.[i], Characteristic.MotionDetected, obj.motion],
146
+ ];
147
+
148
+ for (const [service, charType, value] of charMap) {
149
+ try {
150
+ service?.getCharacteristic(charType)?.updateValue(value);
151
+ } catch (err) {
152
+ this.emit?.('warn', `Failed to update ${charType.displayName}: ${err.message}`);
153
+ }
153
154
  }
154
155
 
156
+ // ENERGY section
157
+ const isEnergy = key === 'ENERGY';
155
158
  if (isEnergy) {
156
- this.emit('warn', `Energy: ${JSON.stringify(energy, null, 2)}`)
157
- //update characteristics
158
- this.sensorEnergyServices?.[i]?.Characteristic?.Power?.updateCharacteristic(Characteristic.Power, energy.power);
159
- this.sensorEnergyServices?.[i]?.Characteristic?.ApparentPower?.updateCharacteristic(Characteristic.ApparentPower, energy.apparentPower);
160
- this.sensorEnergyServices?.[i]?.Characteristic?.ReactivePower?.updateCharacteristic(Characteristic.ReactivePower, energy.reactivePower);
161
- this.sensorEnergyServices?.[i]?.Characteristic?.EnergyToday?.updateCharacteristic(Characteristic.EnergyToday, energy.energyToday);
162
- this.sensorEnergyServices?.[i]?.Characteristic?.EnergyLastDay?.updateCharacteristic(Characteristic.EnergyLastDay, energy.energyLastDay);
163
- this.sensorEnergyServices?.[i]?.Characteristic?.EnergyLifetime?.updateCharacteristic(Characteristic.EnergyLifetime, energy.energyLifetime);
164
- this.sensorEnergyServices?.[i]?.Characteristic?.Current?.updateCharacteristic(Characteristic.Current, energy.current);
165
- this.sensorEnergyServices?.[i]?.Characteristic?.Voltage?.updateCharacteristic(Characteristic.Voltage, energy.voltage);
166
- this.sensorEnergyServices?.[i]?.Characteristic?.Factor?.updateCharacteristic(Characteristic.Factor, energy.factor);
167
- this.sensorEnergyServices?.[i]?.Characteristic?.Frequency?.updateCharacteristic(Characteristic.Frequency, energy.frequency);
168
- this.sensorEnergyServices?.[i]?.Characteristic?.ReadingTime?.updateCharacteristic(Characteristic.ReadingTime, energy.time);
159
+ const energyService = this.sensorEnergyServices?.[i];
160
+
161
+ const energyMap = [
162
+ [Characteristic.Power, obj.power],
163
+ [Characteristic.ApparentPower, obj.apparentPower],
164
+ [Characteristic.ReactivePower, obj.reactivePower],
165
+ [Characteristic.EnergyToday, obj.energyToday],
166
+ [Characteristic.EnergyLastDay, obj.energyLastDay],
167
+ [Characteristic.EnergyLifetime, obj.energyLifetime],
168
+ [Characteristic.Current, obj.current],
169
+ [Characteristic.Voltage, obj.voltage],
170
+ [Characteristic.Factor, obj.factor],
171
+ [Characteristic.Frequency, obj.frequency],
172
+ [Characteristic.ReadingTime, obj.time],
173
+ ];
174
+
175
+ energyMap.forEach(([charType, value]) => {
176
+ try {
177
+ energyService?.getCharacteristic(charType)?.updateValue(value);
178
+ this.emit?.('debug', `Updated ${charType.displayName}: ${value}`);
179
+ } catch (err) {
180
+ this.emit?.('warn', `Failed to update ${charType.displayName}: ${err.message}`);
181
+ }
182
+ });
183
+
184
+ this.emit('warn', `Power: ${JSON.stringify(obj, null, 2)}`);
169
185
  }
170
186
 
171
- const sensor = isEnergy ? { ...obj, ...energy } : obj;
172
- const debug1 = this.enableDebugMode ? this.emit('debug', `Sensor: ${JSON.stringify(sensor, null, 2)}`) : false;
173
- this.emit('warn', `Sensor: ${JSON.stringify(sensor, null, 2)}`)
187
+ if (this.enableDebugMode) {
188
+ this.emit('debug', `Sensor: ${JSON.stringify(obj, null, 2)}`);
189
+ }
174
190
 
175
- //push to array
176
- this.sensors.push(sensor);
177
191
  i++;
178
192
  }
193
+
179
194
  this.sensorsCount = this.sensors.length;
180
195
  }
181
196