From 4c5e93cbea4ef36dc163e86fbfc635b1f6fac3dc Mon Sep 17 00:00:00 2001 From: Ondrej Pecta Date: Wed, 7 Jun 2023 20:24:20 +0200 Subject: [PATCH] fix(ignore): Added descriptions and support 1-3 phase variants of ZJSBL7-100Z Signed-off-by: Ondrej Pecta --- src/devices/tuya.ts | 27 +++++++++++++++------------ src/lib/legacy.ts | 9 +++++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index 698b36ae28c7c..e7beb703c0cdc 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -3868,19 +3868,22 @@ const definitions: Definition[] = [ fromZigbee: [legacy.fromZigbee.hoch_din], toZigbee: [legacy.toZigbee.hoch_din], exposes: [ - e.text('meter_number', ea.STATE), - e.binary('state', ea.STATE_SET, 'ON', 'OFF'), - e.text('alarm', ea.STATE), - e.binary('trip', ea.STATE_SET, 'trip', 'clear'), - e.binary('child_lock', ea.STATE_SET, 'ON', 'OFF'), - e.enum('power_on_behavior', ea.STATE_SET, ['off', 'on', 'previous']), - e.numeric('countdown_timer', ea.STATE_SET).withValueMin(0).withValueMax(86400).withUnit('s'), - e.numeric('voltage_rms', ea.STATE).withUnit('V'), - e.numeric('current', ea.STATE).withUnit('A'), - e.numeric('current_average', ea.STATE).withUnit('A'), + e.text('meter_number', ea.STATE).withDescription('Meter number'), + e.binary('state', ea.STATE_SET, 'ON', 'OFF').withDescription('State'), + e.text('alarm', ea.STATE).withDescription('Alarm text'), + e.binary('trip', ea.STATE_SET, 'trip', 'clear').withDescription('Trip'), + e.binary('child_lock', ea.STATE_SET, 'ON', 'OFF').withDescription('Child lock'), + e.enum('power_on_behavior', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior'), + e.numeric('countdown_timer', ea.STATE_SET).withValueMin(0).withValueMax(86400).withUnit('s').withDescription('Countdown timer'), + e.numeric('voltage_rms', ea.STATE).withUnit('V').withDescription('Voltage RMS'), + e.numeric('current', ea.STATE).withUnit('A').withDescription('Current'), + e.numeric('current_average', ea.STATE).withUnit('A').withDescription('Current average'), e.power(), e.voltage(), e.energy(), e.temperature(), - e.numeric('energy_consumed', ea.STATE).withUnit('kWh'), - e.enum('clear_device_data', ea.SET, ['']), + e.numeric('power_1', ea.STATE).withUnit('W').withDescription('Instantaneous measured power on phase 1'), + e.numeric('power_2', ea.STATE).withUnit('W').withDescription('Instantaneous measured power on phase 2'), + e.numeric('power_3', ea.STATE).withUnit('W').withDescription('Instantaneous measured power on phase 3'), + e.numeric('energy_consumed', ea.STATE).withUnit('kWh').withDescription('Consumed energy'), + e.enum('clear_device_data', ea.SET, ['']).withDescription('Clear device data'), ], }, { diff --git a/src/lib/legacy.ts b/src/lib/legacy.ts index 82aa3045966b1..cf11cc33904af 100644 --- a/src/lib/legacy.ts +++ b/src/lib/legacy.ts @@ -4676,6 +4676,15 @@ const fromZigbee1 = { } if (dp === dataPoints.hochActivePower) { result.power = (value[2] | value[1] << 8) / 10; + if (value.length > 3) { + result.power_1 = (value[5] | value[4] << 8) / 10; + } + if (value.length > 6) { + result.power_2 = (value[8] | value[7] << 8) / 10; + } + if (value.length > 9) { + result.power_3 = (value[11] | value[10] << 8) / 10; + } } if (dp === dataPoints.hochTotalActivePower) { result.energy_consumed = value / 100;