Skip to content

Commit

Permalink
fix: Log instead of throwing exception when generateDefinition can ha…
Browse files Browse the repository at this point in the history
…ndle only 1 endpoint (#7001)

* Soft fail on multiple Electricity Meter endpoints

Apparently throwing here prevents Z2M from starting.
I set it to assert in the log instead, but I'll let you change if needed @Koenkk since you co-authored the [PR](a1b6c28)

Ref: 
Koenkk/zigbee2mqtt#21170

* fix CI

* updates

---------

Co-authored-by: koenkk <koenkanters94@gmail.com>
  • Loading branch information
Nerivec and Koenkk committed Feb 3, 2024
1 parent e8146b1 commit 6c4475c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import allDefinitions from './devices';
import * as utils from './lib/utils';
import { Definition, Fingerprint, Zh, OnEventData, OnEventType, Configure, Expose, Tz, OtaUpdateAvailableResult, KeyValue, Logger } from './lib/types';
import {generateDefinition} from './lib/generateDefinition';
import * as logger from './lib/logger';

export {
Definition as Definition,
Expand Down Expand Up @@ -398,3 +399,5 @@ export async function onEvent(type: OnEventType, data: OnEventData, device: Zh.D
await device.getEndpoint(1).readResponse('genTime', data.meta.zclTransactionSequenceNumber, {time: secondsLocal});
}
}

export const setLogger = logger.setLogger;
5 changes: 3 additions & 2 deletions src/lib/generateDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as m from './modernExtend';
import * as zh from 'zigbee-herdsman/dist';
import {philipsLight} from './philips';
import {Endpoint} from 'zigbee-herdsman/dist/controller/model';
import {logger} from './logger';

interface GeneratedExtend {
getExtend(): ModernExtend,
Expand Down Expand Up @@ -182,7 +183,7 @@ const outputExtenders: Extender[] = [
async function extenderLock(endpoints: Zh.Endpoint[]): Promise<GeneratedExtend[]> {
// TODO: Support multiple endpoints
if (endpoints.length > 1) {
throw new Error('extenderLock can accept only one endpoint');
logger.warn('extenderLock can accept only one endpoint');
}

const endpoint = endpoints[0];
Expand Down Expand Up @@ -242,7 +243,7 @@ async function extenderOnOffLight(endpoints: Zh.Endpoint[]): Promise<GeneratedEx
async function extenderElectricityMeter(endpoints: Zh.Endpoint[]): Promise<GeneratedExtend[]> {
// TODO: Support multiple endpoints
if (endpoints.length > 1) {
throw new Error('extenderElectricityMeter can accept only one endpoint');
logger.warn('extenderElectricityMeter can accept only one endpoint');
}

const endpoint = endpoints[0];
Expand Down
12 changes: 12 additions & 0 deletions src/lib/logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {Logger} from './types';

export let logger: Logger = {
info: (msg) => console.log(msg),
warn: (msg) => console.warn(msg),
error: (msg) => console.error(msg),
debug: (msg) => console.debug(msg),
};

export function setLogger(l: Logger) {
logger = l;
}

0 comments on commit 6c4475c

Please sign in to comment.