From 2bd269875a63dc94c3a570467b375214fa469730 Mon Sep 17 00:00:00 2001 From: Joost Loohuis Date: Fri, 16 Aug 2024 15:01:40 +0200 Subject: [PATCH] Neaten scaling calculation --- drivers/heater/device.ts | 24 ++++++++---------------- drivers/socket/device.ts | 14 ++++++-------- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/drivers/heater/device.ts b/drivers/heater/device.ts index 73af7877..c1fe3382 100644 --- a/drivers/heater/device.ts +++ b/drivers/heater/device.ts @@ -30,17 +30,13 @@ module.exports = class TuyaOAuth2DeviceHeater extends TuyaOAuth2Device { } if (typeof status['temp_current'] === 'number') { - const scaleExp = Number.parseInt(this.getSetting('temp_current_scaling') ?? '0', 10); - const scale = 10 ** scaleExp; - const temp_current = status['temp_current'] / scale; - this.setCapabilityValue('measure_temperature', temp_current).catch(this.error); + const scaling = 10.0 ** Number.parseInt(this.getSetting('temp_current_scaling') ?? '0', 10); + this.setCapabilityValue('measure_temperature', status['temp_current'] / scaling).catch(this.error); } if (typeof status['temp_set'] === 'number') { - const scaleExp = Number.parseInt(this.getSetting('temp_set_scaling') ?? '0', 10); - const scale = 10 ** scaleExp; - const temp_set = status['temp_set'] / scale; - this.setCapabilityValue('target_temperature', temp_set).catch(this.error); + const scaling = 10.0 ** Number.parseInt(this.getSetting('temp_set_scaling') ?? '0', 10); + this.setCapabilityValue('target_temperature', status['temp_set'] / scaling).catch(this.error); } if (typeof status['lock'] === 'boolean') { @@ -48,10 +44,8 @@ module.exports = class TuyaOAuth2DeviceHeater extends TuyaOAuth2Device { } if (typeof status['work_power'] === 'number') { - const scaleExp = Number.parseInt(this.getSetting('work_power_scaling') ?? '0', 10); - const scale = 10 ** scaleExp; - const cur_power = status['work_power'] / scale; - this.setCapabilityValue('measure_power', cur_power).catch(this.error); + const scaling = 10.0 ** Number.parseInt(this.getSetting('work_power_scaling') ?? '0', 10); + this.setCapabilityValue('measure_power', status['work_power'] / scaling).catch(this.error); } if (typeof status['mode_eco'] === 'boolean') { @@ -67,12 +61,10 @@ module.exports = class TuyaOAuth2DeviceHeater extends TuyaOAuth2Device { } async targetTemperatureCapabilityListener(value: number): Promise { - const scaleExp = Number.parseInt(this.getSetting('temp_set_scaling') ?? '0', 10); - const scale = 10 ** scaleExp; - const temp_set = value * scale; + const scaling = 10.0 ** Number.parseInt(this.getSetting('temp_set_scaling') ?? '0', 10); await this.sendCommand({ code: 'temp_set', - value: temp_set, + value: value * scaling, }); } diff --git a/drivers/socket/device.ts b/drivers/socket/device.ts index aa6fee4e..34d96c31 100644 --- a/drivers/socket/device.ts +++ b/drivers/socket/device.ts @@ -77,21 +77,19 @@ export default class TuyaOAuth2DeviceSocket extends TuyaOAuth2Device { this.safeSetCapabilityValue('onoff', anySwitchOn).catch(this.error); if (typeof status['cur_power'] === 'number') { - const powerScaling = 10.0 ** parseInt(this.getSetting('power_scaling') ?? '0'); - const cur_power = status['cur_power'] / powerScaling; - this.setCapabilityValue('measure_power', cur_power).catch(this.error); + const scaling = 10.0 ** parseInt(this.getSetting('power_scaling') ?? '0'); + this.setCapabilityValue('measure_power', status['cur_power'] / scaling).catch(this.error); } if (typeof status['cur_voltage'] === 'number') { const scaling = 10.0 ** parseInt(this.getSetting('cur_voltage_scaling') ?? '0'); - const cur_voltage = status['cur_voltage'] / scaling; - this.setCapabilityValue('measure_voltage', cur_voltage).catch(this.error); + this.setCapabilityValue('measure_voltage', status['cur_voltage'] / scaling).catch(this.error); } if (typeof status['cur_current'] === 'number') { - const scaling = 10.0 ** parseInt(this.getSetting('cur_current_scaling') ?? '0'); - const cur_current = status['cur_current'] / scaling / 1000.0; // Additionally convert mA - this.setCapabilityValue('measure_current', cur_current).catch(this.error); + // Additionally convert mA + const scaling = 1000.0 * 10.0 ** parseInt(this.getSetting('cur_current_scaling') ?? '0'); + this.setCapabilityValue('measure_current', status['cur_current'] / scaling).catch(this.error); } if (status['child_lock'] !== undefined) {