Skip to content

Commit

Permalink
fix: Update frient powermeter led 2 (#8044)
Browse files Browse the repository at this point in the history
* Update frient powermeter led 2

* Small adjustments

* Small adjustments take 2

* Remove unnecessary comments

* Removing unnecessary code

* Convert to modernExtend functions

* Move to modernExtend

* Rename vendor

* Default multiplier/divisorvalues

* Remove config stanza

* Update src/devices/frient.ts

Co-authored-by: Koen Kanters <koenkanters94@gmail.com>

* Use nummeric configuration

* Use numeric() for current_summation

* Refactor fromZigbee metering function to return raw values

---------

Co-authored-by: Thomas Bowman Mørch <thomas.git@bowmo.dk>
Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
  • Loading branch information
3 people authored Oct 16, 2024
1 parent 9445044 commit 6e84179
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 26 deletions.
20 changes: 9 additions & 11 deletions src/converters/fromZigbee.ts
Original file line number Diff line number Diff line change
Expand Up @@ -753,17 +753,15 @@ const converters1 = {
payload[property] = power;
}

if (factor != null && (msg.data.currentSummDelivered !== undefined || msg.data.currentSummReceived !== undefined)) {
if (msg.data.currentSummDelivered !== undefined) {
const value = msg.data['currentSummDelivered'];
const property = postfixWithEndpointName('energy', msg, model, meta);
payload[property] = value * factor;
}
if (msg.data.currentSummReceived !== undefined) {
const value = msg.data['currentSummReceived'];
const property = postfixWithEndpointName('produced_energy', msg, model, meta);
payload[property] = value * factor;
}
if (msg.data.currentSummDelivered !== undefined) {
const value = msg.data['currentSummDelivered'];
const property = postfixWithEndpointName('energy', msg, model, meta);
payload[property] = value * (factor ?? 1);
}
if (msg.data.currentSummReceived !== undefined) {
const value = msg.data['currentSummReceived'];
const property = postfixWithEndpointName('produced_energy', msg, model, meta);
payload[property] = value * (factor ?? 1);
}

return payload;
Expand Down
29 changes: 14 additions & 15 deletions src/devices/frient.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,32 @@
import fz from '../converters/fromZigbee';
import * as exposes from '../lib/exposes';
import {electricityMeter, onOff, ota} from '../lib/modernExtend';
import * as reporting from '../lib/reporting';
import {develcoModernExtend} from '../lib/develco';
import {battery, electricityMeter, onOff, ota} from '../lib/modernExtend';
import {DefinitionWithExtend} from '../lib/types';

const e = exposes.presets;
// NOTE! Develco and Frient is the same company, therefore we use develco specific things in here.

const definitions: DefinitionWithExtend[] = [
{
zigbeeModel: ['EMIZB-141'],
model: 'EMIZB-141',
vendor: 'Frient',
description: 'Smart powermeter Zigbee bridge',
fromZigbee: [fz.metering, fz.battery],
toZigbee: [],
extend: [ota()],
exposes: [e.battery(), e.power(), e.energy()],
configure: async (device, coordinatorEndpoint) => {
const endpoint = device.getEndpoint(2);
await reporting.bind(endpoint, coordinatorEndpoint, ['seMetering', 'genPowerCfg']);
},
description: 'Electricity meter interface 2 LED',
extend: [
ota(),
electricityMeter({cluster: 'metering', power: {divisor: 1000, multiplier: 1}, energy: {divisor: 1000, multiplier: 1}}),
battery(),
develcoModernExtend.addCustomClusterManuSpecificDevelcoGenBasic(),
develcoModernExtend.readGenBasicPrimaryVersions(),
develcoModernExtend.pulseConfiguration(),
develcoModernExtend.currentSummation(),
],
},
{
zigbeeModel: ['SMRZB-153'],
model: 'SMRZB-153',
vendor: 'Frient',
description: 'Smart Cable - Power switch with power measurement',
extend: [onOff({configureReporting: false}), electricityMeter()],
endpoint: (device) => {
endpoint: () => {
return {default: 2};
},
},
Expand Down
22 changes: 22 additions & 0 deletions src/lib/develco.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,26 @@ export const develcoModernExtend = {
valueIgnore: [0xffff, -0x8000],
...args,
}),
currentSummation: (args?: Partial<NumericArgs>) =>
numeric({
name: 'current_summation',
cluster: 'seMetering',
attribute: 'develcoCurrentSummation',
description: 'Current summation value sent to the display. e.g. 570 = 0,570 kWh',
access: 'SET',
valueMin: 0,
valueMax: 268435455,
...args,
}),
pulseConfiguration: (args?: Partial<NumericArgs>) =>
numeric({
name: 'pulse_configuration',
cluster: 'seMetering',
attribute: 'develcoPulseConfiguration',
description: 'Pulses per kwh. Default 1000 imp/kWh. Range 0 to 65535',
access: 'ALL',
valueMin: 0,
valueMax: 65535,
...args,
}),
};

0 comments on commit 6e84179

Please sign in to comment.