Skip to content

Commit 6928928

Browse files
script0803Script Zhu
and
Script Zhu
authored
feat(add): SPM01V2.5, SPM02V2.5, SPM02V3, SDM01V1.5, SDM02V1 (#8033)
Co-authored-by: Script Zhu <[email protected]>
1 parent ab5bc53 commit 6928928

File tree

1 file changed

+258
-3
lines changed

1 file changed

+258
-3
lines changed

src/devices/tuya.ts

+258-3
Original file line numberDiff line numberDiff line change
@@ -8932,13 +8932,152 @@ const definitions: DefinitionWithExtend[] = [
89328932
],
89338933
},
89348934
},
8935+
{
8936+
fingerprint: [
8937+
{modelID: 'TS0601', manufacturerName: '_TZE200_iwn0gpzz'},
8938+
{modelID: 'TS0601', manufacturerName: '_TZE204_iwn0gpzz'},
8939+
],
8940+
model: 'SPM01V2.5',
8941+
vendor: 'Tuya',
8942+
description: 'Smart energy monitor for 1P+N system',
8943+
fromZigbee: [tuya.fz.datapoints],
8944+
toZigbee: [tuya.tz.datapoints],
8945+
configure: tuya.configureMagicPacket,
8946+
exposes: [
8947+
e.voltage(),
8948+
e.power(),
8949+
e.current(),
8950+
e.energy().withDescription('Total forward active energy'),
8951+
e.produced_energy().withDescription('Total reverse active energy'),
8952+
e.power_factor().withUnit('%'),
8953+
e.ac_frequency(),
8954+
],
8955+
meta: {
8956+
tuyaDatapoints: [
8957+
[1, 'energy', tuya.valueConverter.divideBy100],
8958+
[23, 'produced_energy', tuya.valueConverter.divideBy100],
8959+
[32, 'ac_frequency', tuya.valueConverter.divideBy100],
8960+
[50, 'power_factor', tuya.valueConverter.raw],
8961+
[102, 'voltage', tuya.valueConverter.divideBy10],
8962+
[103, 'current', tuya.valueConverter.divideBy1000],
8963+
[104, 'power', tuya.valueConverter.raw],
8964+
],
8965+
},
8966+
},
8967+
{
8968+
fingerprint: [
8969+
{modelID: 'TS0601', manufacturerName: '_TZE204_ny94onlb'},
8970+
{modelID: 'TS0601', manufacturerName: '_TZE200_ny94onlb'},
8971+
],
8972+
model: 'SPM02V2.5',
8973+
vendor: 'Tuya',
8974+
description: 'Smart energy monitor for 3P+N system',
8975+
fromZigbee: [tuya.fz.datapoints],
8976+
toZigbee: [tuya.tz.datapoints],
8977+
configure: tuya.configureMagicPacket,
8978+
exposes: [
8979+
tuya.exposes.voltageWithPhase('a'),
8980+
tuya.exposes.voltageWithPhase('b'),
8981+
tuya.exposes.voltageWithPhase('c'),
8982+
tuya.exposes.powerWithPhase('a'),
8983+
tuya.exposes.powerWithPhase('b'),
8984+
tuya.exposes.powerWithPhase('c'),
8985+
tuya.exposes.currentWithPhase('a'),
8986+
tuya.exposes.currentWithPhase('b'),
8987+
tuya.exposes.currentWithPhase('c'),
8988+
e.energy().withDescription('Total forward active energy'),
8989+
e.produced_energy().withDescription('Total reverse active energy'),
8990+
e.power_factor().withUnit('%').withDescription('Total power factor'),
8991+
e.power(),
8992+
e.ac_frequency(),
8993+
],
8994+
meta: {
8995+
tuyaDatapoints: [
8996+
[1, 'energy', tuya.valueConverter.divideBy100],
8997+
[23, 'produced_energy', tuya.valueConverter.divideBy100],
8998+
[29, 'power', tuya.valueConverter.raw],
8999+
[32, 'ac_frequency', tuya.valueConverter.divideBy100],
9000+
[50, 'power_factor', tuya.valueConverter.raw],
9001+
[102, 'voltage_a', tuya.valueConverter.divideBy10],
9002+
[103, 'current_a', tuya.valueConverter.divideBy1000],
9003+
[104, 'power_a', tuya.valueConverter.raw],
9004+
[105, 'voltage_b', tuya.valueConverter.divideBy10],
9005+
[106, 'current_b', tuya.valueConverter.divideBy1000],
9006+
[107, 'power_b', tuya.valueConverter.raw],
9007+
[108, 'voltage_c', tuya.valueConverter.divideBy10],
9008+
[109, 'current_c', tuya.valueConverter.divideBy1000],
9009+
[110, 'power_c', tuya.valueConverter.raw],
9010+
],
9011+
},
9012+
},
9013+
{
9014+
fingerprint: [
9015+
{modelID: 'TS0601', manufacturerName: '_TZE200_dikb3dp6'},
9016+
{modelID: 'TS0601', manufacturerName: '_TZE204_dikb3dp6'},
9017+
],
9018+
model: 'SPM02V3',
9019+
vendor: 'Tuya',
9020+
description: 'Smart energy monitor for 3P+N system',
9021+
fromZigbee: [tuya.fz.datapoints],
9022+
toZigbee: [tuya.tz.datapoints],
9023+
configure: tuya.configureMagicPacket,
9024+
exposes: [
9025+
tuya.exposes.voltageWithPhase('a'),
9026+
tuya.exposes.voltageWithPhase('b'),
9027+
tuya.exposes.voltageWithPhase('c'),
9028+
tuya.exposes.powerWithPhase('a'),
9029+
tuya.exposes.powerWithPhase('b'),
9030+
tuya.exposes.powerWithPhase('c'),
9031+
tuya.exposes.currentWithPhase('a'),
9032+
tuya.exposes.currentWithPhase('b'),
9033+
tuya.exposes.currentWithPhase('c'),
9034+
e.energy().withDescription('Total forward active energy'),
9035+
e.produced_energy().withDescription('Total reverse active energy'),
9036+
e.power_factor().withUnit('%').withDescription('Total power factor'),
9037+
e.power().withDescription('Total active power'),
9038+
e.ac_frequency(),
9039+
tuya.exposes.energyWithPhase('a'),
9040+
tuya.exposes.energyWithPhase('b'),
9041+
tuya.exposes.energyWithPhase('c'),
9042+
tuya.exposes.energyProducedWithPhase('a'),
9043+
tuya.exposes.energyProducedWithPhase('b'),
9044+
tuya.exposes.energyProducedWithPhase('c'),
9045+
tuya.exposes.powerFactorWithPhase('a'),
9046+
tuya.exposes.powerFactorWithPhase('b'),
9047+
tuya.exposes.powerFactorWithPhase('c'),
9048+
],
9049+
meta: {
9050+
tuyaDatapoints: [
9051+
[1, 'energy', tuya.valueConverter.divideBy100],
9052+
[23, 'produced_energy', tuya.valueConverter.divideBy100],
9053+
[29, 'power', tuya.valueConverter.raw],
9054+
[32, 'ac_frequency', tuya.valueConverter.divideBy100],
9055+
[50, 'power_factor', tuya.valueConverter.raw],
9056+
[103, 'voltage_a', tuya.valueConverter.divideBy10],
9057+
[104, 'current_a', tuya.valueConverter.divideBy1000],
9058+
[105, 'power_a', tuya.valueConverter.raw],
9059+
[108, 'power_factor_a', tuya.valueConverter.raw],
9060+
[109, 'energy_a', tuya.valueConverter.divideBy100],
9061+
[110, 'energy_produced_a', tuya.valueConverter.divideBy100],
9062+
[112, 'voltage_b', tuya.valueConverter.divideBy10],
9063+
[113, 'current_b', tuya.valueConverter.divideBy1000],
9064+
[114, 'power_b', tuya.valueConverter.raw],
9065+
[117, 'power_factor_b', tuya.valueConverter.raw],
9066+
[118, 'energy_b', tuya.valueConverter.divideBy100],
9067+
[119, 'energy_produced_b', tuya.valueConverter.divideBy100],
9068+
[121, 'voltage_c', tuya.valueConverter.divideBy10],
9069+
[122, 'current_c', tuya.valueConverter.divideBy1000],
9070+
[123, 'power_c', tuya.valueConverter.raw],
9071+
[126, 'power_factor_c', tuya.valueConverter.raw],
9072+
[127, 'energy_c', tuya.valueConverter.divideBy100],
9073+
[128, 'energy_produced_c', tuya.valueConverter.divideBy100],
9074+
],
9075+
},
9076+
},
89359077
{
89369078
fingerprint: [
89379079
{modelID: 'TS0601', manufacturerName: '_TZE204_ugekduaj'},
89389080
{modelID: 'TS0601', manufacturerName: '_TZE200_ugekduaj'},
8939-
{modelID: 'TS0601', manufacturerName: '_TZE204_iwn0gpzz'},
8940-
{modelID: 'TS0601', manufacturerName: '_TZE200_iwn0gpzz'},
8941-
{modelID: 'TS0601', manufacturerName: '_TZE204_loejka0i'},
89429081
],
89439082
model: 'SDM01',
89449083
vendor: 'Tuya',
@@ -9000,6 +9139,122 @@ const definitions: DefinitionWithExtend[] = [
90009139
],
90019140
},
90029141
},
9142+
{
9143+
fingerprint: [
9144+
{modelID: 'TS0601', manufacturerName: '_TZE204_gomuk3dc'},
9145+
{modelID: 'TS0601', manufacturerName: '_TZE200_gomuk3dc'},
9146+
],
9147+
model: 'SDM01V1.5',
9148+
vendor: 'Tuya',
9149+
description: 'Smart energy monitor for 3P+N system',
9150+
fromZigbee: [tuya.fz.datapoints],
9151+
toZigbee: [tuya.tz.datapoints],
9152+
configure: tuya.configureMagicPacket,
9153+
exposes: [
9154+
tuya.exposes.voltageWithPhase('a'),
9155+
tuya.exposes.voltageWithPhase('b'),
9156+
tuya.exposes.voltageWithPhase('c'),
9157+
tuya.exposes.powerWithPhase('a'),
9158+
tuya.exposes.powerWithPhase('b'),
9159+
tuya.exposes.powerWithPhase('c'),
9160+
tuya.exposes.currentWithPhase('a'),
9161+
tuya.exposes.currentWithPhase('b'),
9162+
tuya.exposes.currentWithPhase('c'),
9163+
e.energy().withDescription('Total forward active energy'),
9164+
e.produced_energy().withDescription('Total reverse active energy'),
9165+
e.power_factor().withUnit('%').withDescription('Total power factor'),
9166+
e.power().withDescription('Total active power'),
9167+
e.ac_frequency(),
9168+
tuya.exposes.energyWithPhase('a'),
9169+
tuya.exposes.energyWithPhase('b'),
9170+
tuya.exposes.energyWithPhase('c'),
9171+
tuya.exposes.energyProducedWithPhase('a'),
9172+
tuya.exposes.energyProducedWithPhase('b'),
9173+
tuya.exposes.energyProducedWithPhase('c'),
9174+
tuya.exposes.powerFactorWithPhase('a'),
9175+
tuya.exposes.powerFactorWithPhase('b'),
9176+
tuya.exposes.powerFactorWithPhase('c'),
9177+
],
9178+
meta: {
9179+
tuyaDatapoints: [
9180+
[1, 'energy', tuya.valueConverter.divideBy100],
9181+
[23, 'produced_energy', tuya.valueConverter.divideBy100],
9182+
[29, 'power', tuya.valueConverter.raw],
9183+
[32, 'ac_frequency', tuya.valueConverter.divideBy100],
9184+
[50, 'power_factor', tuya.valueConverter.raw],
9185+
[103, 'voltage_a', tuya.valueConverter.divideBy10],
9186+
[104, 'current_a', tuya.valueConverter.divideBy1000],
9187+
[105, 'power_a', tuya.valueConverter.raw],
9188+
[108, 'power_factor_a', tuya.valueConverter.raw],
9189+
[109, 'energy_a', tuya.valueConverter.divideBy100],
9190+
[110, 'energy_produced_a', tuya.valueConverter.divideBy100],
9191+
[112, 'voltage_b', tuya.valueConverter.divideBy10],
9192+
[113, 'current_b', tuya.valueConverter.divideBy1000],
9193+
[114, 'power_b', tuya.valueConverter.raw],
9194+
[117, 'power_factor_b', tuya.valueConverter.raw],
9195+
[118, 'energy_b', tuya.valueConverter.divideBy100],
9196+
[119, 'energy_produced_b', tuya.valueConverter.divideBy100],
9197+
[121, 'voltage_c', tuya.valueConverter.divideBy10],
9198+
[122, 'current_c', tuya.valueConverter.divideBy1000],
9199+
[123, 'power_c', tuya.valueConverter.raw],
9200+
[126, 'power_factor_c', tuya.valueConverter.raw],
9201+
[127, 'energy_c', tuya.valueConverter.divideBy100],
9202+
[128, 'energy_produced_c', tuya.valueConverter.divideBy100],
9203+
],
9204+
},
9205+
},
9206+
{
9207+
fingerprint: [
9208+
{modelID: 'TS0601', manufacturerName: '_TZE204_78ioiaml'},
9209+
{modelID: 'TS0601', manufacturerName: '_TZE200_78ioiaml'},
9210+
],
9211+
model: 'SDM02V1',
9212+
vendor: 'Tuya',
9213+
description: 'Smart energy monitor for 2P+N system',
9214+
fromZigbee: [tuya.fz.datapoints],
9215+
toZigbee: [tuya.tz.datapoints],
9216+
configure: tuya.configureMagicPacket,
9217+
exposes: [
9218+
tuya.exposes.voltageWithPhase('l1'),
9219+
tuya.exposes.voltageWithPhase('l2'),
9220+
tuya.exposes.powerWithPhase('l1'),
9221+
tuya.exposes.powerWithPhase('l2'),
9222+
tuya.exposes.currentWithPhase('l1'),
9223+
tuya.exposes.currentWithPhase('l2'),
9224+
e.energy().withDescription('Total forward active energy'),
9225+
e.produced_energy().withDescription('Total reverse active energy'),
9226+
e.power_factor().withUnit('%').withDescription('Total power factor'),
9227+
e.power().withDescription('Total active power'),
9228+
e.ac_frequency(),
9229+
tuya.exposes.energyWithPhase('l1'),
9230+
tuya.exposes.energyWithPhase('l2'),
9231+
tuya.exposes.energyProducedWithPhase('l1'),
9232+
tuya.exposes.energyProducedWithPhase('l2'),
9233+
tuya.exposes.powerFactorWithPhase('l1'),
9234+
tuya.exposes.powerFactorWithPhase('l2'),
9235+
],
9236+
meta: {
9237+
tuyaDatapoints: [
9238+
[1, 'energy', tuya.valueConverter.divideBy100],
9239+
[23, 'produced_energy', tuya.valueConverter.divideBy100],
9240+
[29, 'power', tuya.valueConverter.raw],
9241+
[32, 'ac_frequency', tuya.valueConverter.divideBy100],
9242+
[50, 'power_factor', tuya.valueConverter.raw],
9243+
[103, 'voltage_l1', tuya.valueConverter.divideBy10],
9244+
[104, 'current_l1', tuya.valueConverter.divideBy1000],
9245+
[105, 'power_l1', tuya.valueConverter.raw],
9246+
[108, 'power_factor_l1', tuya.valueConverter.raw],
9247+
[109, 'energy_l1', tuya.valueConverter.divideBy100],
9248+
[110, 'energy_produced_l1', tuya.valueConverter.divideBy100],
9249+
[112, 'voltage_l2', tuya.valueConverter.divideBy10],
9250+
[113, 'current_l2', tuya.valueConverter.divideBy1000],
9251+
[114, 'power_l2', tuya.valueConverter.raw],
9252+
[117, 'power_factor_l2', tuya.valueConverter.raw],
9253+
[118, 'energy_l2', tuya.valueConverter.divideBy100],
9254+
[119, 'energy_produced_l2', tuya.valueConverter.divideBy100],
9255+
],
9256+
},
9257+
},
90039258
{
90049259
fingerprint: tuya.fingerprint('TS0601', ['_TZE204_ac0fhfiq']),
90059260
model: 'TS0601_bidirectional_energy meter',

0 commit comments

Comments
 (0)