matterbridge-zigbee2mqtt 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAiB,YAAY,EAAsB,2BAA2B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5H,OAAO,EAAE,UAAU,EAA4C,MAAM,kBAAkB,CAAC;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAA4B,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI9E,qBAAa,cAAe,SAAQ,2BAA2B;IAE7D,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,eAAe,CAAsB;IAG7C,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAgB;IAG1B,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,UAAS;IACnB,oBAAoB,UAAS;IAC7B,mBAAmB,UAAS;IACnC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAA4B;gBAEvC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAwBhE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAuDvB,WAAW;IAsBX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;YAO3B,mBAAmB;YAqBnB,kBAAkB;IASzB,sBAAsB,CAAC,UAAU,EAAE,MAAM;YAYlC,oBAAoB;IAcrB,mBAAmB,CAAC,KAAK,EAAE,WAAW;IAgC5C,kBAAkB,CAAC,SAAS,EAAE,OAAO;CAM7C"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAiB,YAAY,EAAsB,2BAA2B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5H,OAAO,EAAE,UAAU,EAA4C,MAAM,kBAAkB,CAAC;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAA4B,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI9E,qBAAa,cAAe,SAAQ,2BAA2B;IAE7D,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,eAAe,CAAsB;IAG7C,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAgB;IAG1B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,GAAG,EAAE,WAAW,CAAC;IACjB,oBAAoB,UAAS;IAC7B,mBAAmB,UAAS;IACnC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAA4B;gBAEvC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAkGhE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IA2BvB,WAAW;IAkBX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;YAO3B,mBAAmB;YAsBnB,kBAAkB;IAUzB,sBAAsB,CAAC,UAAU,EAAE,MAAM;YAYlC,oBAAoB;IAcrB,mBAAmB,CAAC,KAAK,EAAE,WAAW;IAgC5C,kBAAkB,CAAC,SAAS,EAAE,OAAO;CAM7C"}
package/dist/platform.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * @file platform.ts
5
5
  * @author Luca Liguori
6
6
  * @date 2023-12-29
7
- * @version 2.0.0
7
+ * @version 2.0.3
8
8
  *
9
9
  * Copyright 2023, 2024 Luca Liguori.
10
10
  *
@@ -33,12 +33,15 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
33
33
  mqttHost = 'localhost';
34
34
  mqttPort = 1883;
35
35
  mqttTopic = 'zigbee2mqtt';
36
+ mqttUsername = '';
37
+ mqttPassword = '';
36
38
  whiteList = [];
37
39
  blackList = [];
38
40
  // zigbee2Mqtt
39
41
  debugEnabled;
42
+ shouldStart;
43
+ shouldConfigure;
40
44
  z2m;
41
- z2mStarted = false;
42
45
  z2mDevicesRegistered = false;
43
46
  z2mGroupsRegistered = false;
44
47
  z2mBridgeInfo;
@@ -47,12 +50,18 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
47
50
  constructor(matterbridge, log, config) {
48
51
  super(matterbridge, log, config);
49
52
  this.debugEnabled = matterbridge.debugEnabled;
53
+ this.shouldStart = false;
54
+ this.shouldConfigure = false;
50
55
  if (config.host)
51
56
  this.mqttHost = config.host;
52
57
  if (config.port)
53
58
  this.mqttPort = config.port;
54
59
  if (config.topic)
55
60
  this.mqttTopic = config.topic;
61
+ if (config.username)
62
+ this.mqttUsername = config.username;
63
+ if (config.password)
64
+ this.mqttPassword = config.password;
56
65
  if (config.whiteList)
57
66
  this.whiteList = config.whiteList;
58
67
  if (config.blackList)
@@ -61,17 +70,14 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
61
70
  config.host = this.mqttHost;
62
71
  config.port = this.mqttPort;
63
72
  config.topic = this.mqttTopic;
73
+ config.username = this.mqttUsername;
74
+ config.password = this.mqttPassword;
64
75
  config.whiteList = this.whiteList;
65
76
  config.blackList = this.blackList;
66
- this.log.info(`Loaded zigbee2mqtt parameters from config.json:\n${rs}`, config);
67
- this.z2m = new Zigbee2MQTT(this.mqttHost, this.mqttPort, this.mqttTopic);
77
+ this.log.info(`Loaded zigbee2mqtt parameters from ${path.join(matterbridge.matterbridgeDirectory, 'matterbridge-zigbee2mqtt.config.json')}:\n${rs}` /*, config*/);
78
+ this.z2m = new Zigbee2MQTT(this.mqttHost, this.mqttPort, this.mqttTopic, this.mqttUsername, this.mqttPassword);
68
79
  this.z2m.setDataPath(path.join(matterbridge.matterbridgePluginDirectory, 'matterbridge-zigbee2mqtt'));
69
- this.log.debug('Created zigbee2mqtt dynamic platform');
70
- }
71
- async onStart(reason) {
72
- this.log.debug('Starting zigbee2mqtt dynamic platform: ' + reason);
73
80
  this.z2m.start();
74
- this.z2mStarted = true;
75
81
  this.z2m.on('mqtt_connect', () => {
76
82
  this.log.debug(`zigbee2MQTT connected to MQTT server ${this.z2m.mqttHost}:${this.z2m.mqttPort}`);
77
83
  this.z2m.subscribe(this.z2m.mqttTopic + '/#');
@@ -86,71 +92,106 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
86
92
  // TODO check single availability
87
93
  //this.updateAvailability(false);
88
94
  });
89
- this.z2m.on('bridge-info', (bridgeInfo) => {
95
+ this.z2m.on('bridge-info', async (bridgeInfo) => {
90
96
  this.z2mBridgeInfo = bridgeInfo;
91
97
  this.log.debug(`zigbee2MQTT sent bridge-info version: ${this.z2mBridgeInfo.version}`);
92
98
  });
93
- this.z2m.on('bridge-devices', (devices) => {
94
- if (this.debugEnabled)
95
- Logger.defaultLogLevel = Level.INFO;
99
+ this.z2m.on('bridge-devices', async (devices) => {
96
100
  this.z2mBridgeDevices = devices;
101
+ if (this.shouldStart) {
102
+ if (!this.z2mDevicesRegistered && this.z2mBridgeDevices) {
103
+ for (const device of this.z2mBridgeDevices) {
104
+ await this.registerZigbeeDevice(device);
105
+ }
106
+ this.z2mDevicesRegistered = true;
107
+ }
108
+ }
109
+ if (this.shouldConfigure) {
110
+ this.log.info(`Configuring ${this.bridgedEntities.length} zigbee entities.`);
111
+ for (const bridgedEntity of this.bridgedEntities) {
112
+ if (bridgedEntity.isDevice && bridgedEntity.device)
113
+ await this.requestDeviceUpdate(bridgedEntity.device);
114
+ }
115
+ for (const device of this.bridgedDevices) {
116
+ device.configure();
117
+ }
118
+ }
97
119
  this.log.debug(`zigbee2MQTT sent ${devices.length} devices ${this.z2mDevicesRegistered ? 'already registered' : ''}`);
98
- if (this.z2mDevicesRegistered)
99
- return;
100
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
101
- Object.entries(this.z2mBridgeDevices).forEach(async ([key, device], index) => {
102
- await this.registerZigbeeDevice(device);
103
- });
104
- this.z2mDevicesRegistered = true;
105
- if (this.debugEnabled)
106
- Logger.defaultLogLevel = Level.DEBUG;
107
120
  });
108
- this.z2m.on('bridge-groups', (groups) => {
109
- if (this.debugEnabled)
110
- Logger.defaultLogLevel = Level.INFO;
121
+ this.z2m.on('bridge-groups', async (groups) => {
111
122
  this.z2mBridgeGroups = groups;
112
- this.log.debug(`zigbee2MQTT sent ${groups.length} groups ${this.z2mGroupsRegistered ? 'already registered' : ''}`);
113
- if (this.z2mGroupsRegistered)
114
- return;
115
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
116
- Object.entries(this.z2mBridgeGroups).forEach(async ([key, group], index) => {
117
- await this.registerZigbeeGroup(group);
118
- });
119
- this.z2mGroupsRegistered = true;
120
- if (this.debugEnabled)
121
- Logger.defaultLogLevel = Level.DEBUG;
122
- });
123
- }
124
- async onConfigure() {
125
- this.log.info('Configuring zigbee2mqtt platform: setting timeout for device configuration.');
126
- setTimeout(async () => {
127
- if (this.z2mBridgeDevices) {
128
- this.log.info(`Configuring ${this.z2mBridgeDevices.length} zigbee devices.`);
129
- for (const device of this.z2mBridgeDevices) {
130
- await this.requestDeviceUpdate(device);
123
+ if (this.shouldStart) {
124
+ if (!this.z2mGroupsRegistered && this.z2mBridgeGroups) {
125
+ for (const group of this.z2mBridgeGroups) {
126
+ await this.registerZigbeeGroup(group);
127
+ }
128
+ this.z2mGroupsRegistered = true;
131
129
  }
132
130
  }
133
- if (this.z2mBridgeGroups) {
134
- this.log.info(`Configuring ${this.z2mBridgeGroups.length} zigbee groups.`);
135
- for (const group of this.z2mBridgeGroups) {
136
- await this.requestGroupUpdate(group);
131
+ if (this.shouldConfigure) {
132
+ this.log.info(`Configuring ${this.bridgedEntities.length} zigbee entities.`);
133
+ for (const bridgedEntity of this.bridgedEntities) {
134
+ if (bridgedEntity.isGroup && bridgedEntity.group)
135
+ await this.requestGroupUpdate(bridgedEntity.group);
136
+ }
137
+ for (const device of this.bridgedDevices) {
138
+ device.configure();
137
139
  }
138
140
  }
139
- this.log.info(`Configuring ${this.bridgedDevices.length} matter devices.`);
140
- for (const device of this.bridgedDevices) {
141
- device.configure();
141
+ this.log.debug(`zigbee2MQTT sent ${groups.length} groups ${this.z2mGroupsRegistered ? 'already registered' : ''}`);
142
+ });
143
+ this.log.debug('Created zigbee2mqtt dynamic platform');
144
+ }
145
+ async onStart(reason) {
146
+ this.log.debug('Starting zigbee2mqtt dynamic platform: ' + reason);
147
+ if (!this.z2mDevicesRegistered || !this.z2mGroupsRegistered) {
148
+ this.shouldStart = true;
149
+ this.log.warn('Setting should start zigbee2mqtt dynamic platform: ', reason);
150
+ }
151
+ if (this.debugEnabled)
152
+ Logger.defaultLogLevel = Level.INFO;
153
+ if (!this.z2mDevicesRegistered && this.z2mBridgeDevices) {
154
+ for (const device of this.z2mBridgeDevices) {
155
+ await this.registerZigbeeDevice(device);
142
156
  }
143
- }, 10000);
157
+ this.z2mDevicesRegistered = true;
158
+ }
159
+ if (!this.z2mGroupsRegistered && this.z2mBridgeGroups) {
160
+ for (const group of this.z2mBridgeGroups) {
161
+ await this.registerZigbeeGroup(group);
162
+ }
163
+ this.z2mGroupsRegistered = true;
164
+ }
165
+ if (this.debugEnabled)
166
+ Logger.defaultLogLevel = Level.DEBUG;
167
+ }
168
+ async onConfigure() {
169
+ if (!this.z2mDevicesRegistered || !this.z2mGroupsRegistered) {
170
+ this.shouldConfigure = true;
171
+ this.log.warn('Setting should configure zigbee2mqtt dynamic platform');
172
+ }
173
+ this.log.info(`Configuring ${this.bridgedEntities.length} zigbee entities.`);
174
+ for (const bridgedEntity of this.bridgedEntities) {
175
+ if (bridgedEntity.isDevice && bridgedEntity.device)
176
+ await this.requestDeviceUpdate(bridgedEntity.device);
177
+ if (bridgedEntity.isGroup && bridgedEntity.group)
178
+ await this.requestGroupUpdate(bridgedEntity.group);
179
+ }
180
+ this.log.info(`Configuring ${this.bridgedDevices.length} matter devices.`);
181
+ for (const device of this.bridgedDevices) {
182
+ device.configure();
183
+ }
144
184
  }
145
185
  async onShutdown(reason) {
146
186
  this.log.debug('Shutting down zigbee2mqtt platform: ' + reason);
147
187
  //this.updateAvailability(false);
148
- await this.unregisterAllDevices();
188
+ //await this.unregisterAllDevices();
149
189
  this.z2m.stop();
150
190
  }
151
191
  async requestDeviceUpdate(device) {
192
+ this.log.debug(`Requesting update for ${device.friendly_name} model_id: ${device.model_id} manufacturer: ${device.manufacturer}`);
152
193
  const payload = {};
153
- if (!device.definition || !device.definition.exposes)
194
+ if (device.power_source === 'Battery' || !device.definition || !device.definition.exposes)
154
195
  return;
155
196
  for (const feature of device.definition.exposes) {
156
197
  if (feature.features) {
@@ -170,6 +211,7 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
170
211
  }
171
212
  }
172
213
  async requestGroupUpdate(group) {
214
+ this.log.debug(`Requesting update for ${group.friendly_name}`);
173
215
  const payload = {};
174
216
  payload['state'] = '';
175
217
  if (payload && Object.keys(payload).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * @file zigbee2mqtt.ts
5
5
  * @author Luca Liguori
6
6
  * @date 2023-06-30
7
- * @version 2.2.12
7
+ * @version 2.2.15
8
8
  *
9
9
  * Copyright 2023, 2024 Luca Liguori.
10
10
  *
@@ -123,6 +123,8 @@ export declare class Zigbee2MQTT extends EventEmitter {
123
123
  mqttHost: string;
124
124
  mqttPort: number;
125
125
  mqttTopic: string;
126
+ mqttUsername: string | undefined;
127
+ mqttPassword: string | undefined;
126
128
  private mqttClient;
127
129
  private mqttIsConnected;
128
130
  private mqttIsReconnecting;
@@ -139,7 +141,7 @@ export declare class Zigbee2MQTT extends EventEmitter {
139
141
  z2mDevices: z2mDevice[];
140
142
  z2mGroups: z2mGroup[];
141
143
  private options;
142
- constructor(mqttHost: string, mqttPort: number, mqttTopic: string);
144
+ constructor(mqttHost: string, mqttPort: number, mqttTopic: string, mqttUsername?: string, mqttPassword?: string);
143
145
  setDataPath(dataPath: string): Promise<void>;
144
146
  private getUrl;
145
147
  start(): Promise<void>;
@@ -148,6 +150,7 @@ export declare class Zigbee2MQTT extends EventEmitter {
148
150
  publish(topic: string, message: string, queue?: boolean): Promise<void>;
149
151
  private writeBufferJSON;
150
152
  private writeFile;
153
+ private tryJsonParse;
151
154
  private messageHandler;
152
155
  getDevice(name: string): z2mDevice | undefined;
153
156
  getGroup(name: string): z2mGroup | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"zigbee2mqtt.d.ts","sourceRoot":"","sources":["../src/zigbee2mqtt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAmB,QAAQ,EAAY,MAAM,uBAAuB,CAAC;AAY5E,UAAU,MAAM;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAoDD,UAAU,MAAM;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAsBD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAOD,qBAAa,WAAY,SAAQ,YAAY;IAE3C,OAAO,CAAC,GAAG,CAAa;IAGjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,uBAAuB,CAAyC;IACxE,OAAO,CAAC,oBAAoB,CAAa;IAEzC,OAAO,CAAC,wBAAwB,CAAU;IAC1C,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,UAAU,CAAS;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IAG7B,OAAO,CAAC,OAAO,CAUb;gBAGU,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAmBpD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzD,OAAO,CAAC,MAAM;IAID,KAAK;IAgFL,IAAI;IAsBJ,SAAS,CAAC,KAAK,EAAE,MAAM;IAkBvB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe;YAmE7D,eAAe;YAsBf,SAAS;IAavB,OAAO,CAAC,cAAc;IA+Of,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAInD,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,wBAAwB;IAyHhC,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,WAAW;IAmEnB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAqFnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"zigbee2mqtt.d.ts","sourceRoot":"","sources":["../src/zigbee2mqtt.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * @file zigbee2mqtt.ts
5
5
  * @author Luca Liguori
6
6
  * @date 2023-06-30
7
- * @version 2.2.12
7
+ * @version 2.2.15
8
8
  *
9
9
  * Copyright 2023, 2024 Luca Liguori.
10
10
  *
@@ -36,6 +36,8 @@ export class Zigbee2MQTT extends EventEmitter {
36
36
  mqttHost;
37
37
  mqttPort;
38
38
  mqttTopic;
39
+ mqttUsername;
40
+ mqttPassword;
39
41
  mqttClient;
40
42
  mqttIsConnected = false;
41
43
  mqttIsReconnecting = false;
@@ -64,11 +66,17 @@ export class Zigbee2MQTT extends EventEmitter {
64
66
  clean: true,
65
67
  };
66
68
  // Constructor
67
- constructor(mqttHost, mqttPort, mqttTopic) {
69
+ constructor(mqttHost, mqttPort, mqttTopic, mqttUsername = '', mqttPassword = '') {
68
70
  super();
69
71
  this.mqttHost = mqttHost;
70
72
  this.mqttPort = mqttPort;
71
73
  this.mqttTopic = mqttTopic;
74
+ this.mqttUsername = mqttUsername;
75
+ this.mqttPassword = mqttPassword;
76
+ if (mqttUsername !== '' && mqttPassword !== '') {
77
+ this.options.username = mqttUsername;
78
+ this.options.password = mqttPassword;
79
+ }
72
80
  this.z2mIsAvailabilityEnabled = false;
73
81
  this.z2mIsOnline = false;
74
82
  this.z2mPermitJoin = false;
@@ -77,7 +85,7 @@ export class Zigbee2MQTT extends EventEmitter {
77
85
  this.z2mDevices = [];
78
86
  this.z2mGroups = [];
79
87
  this.log = new AnsiLogger({ logName: 'Zigbee2MQTT', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */ });
80
- this.log.debug(`Created new instance with host: ${mqttHost} port: ${mqttPort} topic: ${mqttTopic}`);
88
+ this.log.debug(`Created new instance with host: ${mqttHost} port: ${mqttPort} topic: ${mqttTopic} username: ${mqttUsername} password: ${mqttPassword !== '' ? '*****' : ''}`);
81
89
  }
82
90
  async setDataPath(dataPath) {
83
91
  try {
@@ -273,7 +281,7 @@ export class Zigbee2MQTT extends EventEmitter {
273
281
  let jsonData;
274
282
  // Parse the buffer to JSON
275
283
  try {
276
- jsonData = JSON.parse(buffer.toString());
284
+ jsonData = this.tryJsonParse(buffer.toString());
277
285
  }
278
286
  catch (error) {
279
287
  this.log.error('writeBufferJSON: parsing error:', error);
@@ -299,9 +307,27 @@ export class Zigbee2MQTT extends EventEmitter {
299
307
  this.log.error(`Error writing to ${filePath}:`, error);
300
308
  });
301
309
  }
310
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
311
+ tryJsonParse(text) {
312
+ try {
313
+ return JSON.parse(text);
314
+ }
315
+ catch (error) {
316
+ this.log.debug(`tryJsonParse: parsing error from ${text}`);
317
+ this.log.error('tryJsonParse: parsing error:', error);
318
+ return {};
319
+ }
320
+ }
302
321
  messageHandler(topic, payload) {
303
322
  if (topic.startsWith(this.mqttTopic + '/bridge/state')) {
304
- const data = JSON.parse(payload.toString());
323
+ const payloadString = payload.toString();
324
+ let data = {};
325
+ if (payloadString.startsWith('{') && payloadString.endsWith('}')) {
326
+ data = this.tryJsonParse(payload.toString());
327
+ }
328
+ else {
329
+ data = { state: payloadString };
330
+ }
305
331
  //this.log.debug('classZigbee2MQTT=>Message bridge/state', data);
306
332
  if (data.state === 'online') {
307
333
  this.z2mIsOnline = true;
@@ -314,7 +340,7 @@ export class Zigbee2MQTT extends EventEmitter {
314
340
  this.log.debug(`Message bridge/state online => ${this.z2mIsOnline}`);
315
341
  }
316
342
  else if (topic.startsWith(this.mqttTopic + '/bridge/info')) {
317
- const data = JSON.parse(payload.toString());
343
+ const data = this.tryJsonParse(payload.toString());
318
344
  //this.log.debug('classZigbee2MQTT=>Message bridge/info', data);
319
345
  this.z2mPermitJoin = data.permit_join ? data.permit_join : false;
320
346
  this.z2mPermitJoinTimeout = data.permit_join_timeout ? data.permit_join_timeout : 0;
@@ -329,8 +355,8 @@ export class Zigbee2MQTT extends EventEmitter {
329
355
  }
330
356
  else if (topic.startsWith(this.mqttTopic + '/bridge/devices')) {
331
357
  this.z2mDevices.splice(0, this.z2mDevices.length);
332
- const devices = JSON.parse(payload.toString());
333
- const data = JSON.parse(payload.toString());
358
+ const devices = this.tryJsonParse(payload.toString());
359
+ const data = this.tryJsonParse(payload.toString());
334
360
  this.writeBufferJSON('bridge-devices', payload);
335
361
  this.emit('bridge-devices', data);
336
362
  let index = 1;
@@ -427,8 +453,8 @@ export class Zigbee2MQTT extends EventEmitter {
427
453
  }
428
454
  else if (topic.startsWith(this.mqttTopic + '/bridge/groups')) {
429
455
  this.z2mGroups.splice(0, this.z2mGroups.length);
430
- const groups = JSON.parse(payload.toString());
431
- const data = JSON.parse(payload.toString());
456
+ const groups = this.tryJsonParse(payload.toString());
457
+ const data = this.tryJsonParse(payload.toString());
432
458
  this.writeBufferJSON('bridge-groups', payload);
433
459
  this.emit('bridge-groups', data);
434
460
  let index = 1;
@@ -457,7 +483,7 @@ export class Zigbee2MQTT extends EventEmitter {
457
483
  //this.printGroups();
458
484
  }
459
485
  else if (topic.startsWith(this.mqttTopic + '/bridge/extensions')) {
460
- const extensions = JSON.parse(payload.toString());
486
+ const extensions = this.tryJsonParse(payload.toString());
461
487
  for (const extension of extensions) {
462
488
  this.log.warn(`Message topic: ${topic} extension: ${extension.name}`);
463
489
  }
@@ -466,7 +492,7 @@ export class Zigbee2MQTT extends EventEmitter {
466
492
  this.handleEvent(payload);
467
493
  }
468
494
  else if (topic.startsWith(this.mqttTopic + '/bridge/request')) {
469
- const data = JSON.parse(payload.toString());
495
+ const data = this.tryJsonParse(payload.toString());
470
496
  this.log.warn(`Message topic: ${topic} payload:${rs}`, data);
471
497
  }
472
498
  else if (topic.startsWith(this.mqttTopic + '/bridge/response')) {
@@ -482,7 +508,7 @@ export class Zigbee2MQTT extends EventEmitter {
482
508
  this.handleResponseDeviceRename(payload);
483
509
  return;
484
510
  }
485
- const data = JSON.parse(payload.toString());
511
+ const data = this.tryJsonParse(payload.toString());
486
512
  this.log.warn(`Message topic: ${topic} payload:${rs}`, data);
487
513
  /*
488
514
  [05/09/2023, 20:35:26] [z2m] classZigbee2MQTT=>Message bridge/response zigbee2mqtt/bridge/response/group/add {
@@ -512,7 +538,7 @@ export class Zigbee2MQTT extends EventEmitter {
512
538
  service = parts[1];
513
539
  }
514
540
  if (entity === 'Coordinator') {
515
- const data = JSON.parse(payload.toString()); // TODO crash on device rename
541
+ const data = this.tryJsonParse(payload.toString()); // TODO crash on device rename
516
542
  if (service === 'availability') {
517
543
  if (data.state === 'online') {
518
544
  this.log.debug(`Received ONLINE for ${id}Coordinator${rs}`, data);
@@ -539,7 +565,7 @@ export class Zigbee2MQTT extends EventEmitter {
539
565
  }
540
566
  else {
541
567
  try {
542
- const data = JSON.parse(payload.toString());
568
+ const data = this.tryJsonParse(payload.toString());
543
569
  this.log.warn('Message for ***unknown*** entity:', entity, 'service:', service, 'payload:', data);
544
570
  }
545
571
  catch {
@@ -561,7 +587,14 @@ export class Zigbee2MQTT extends EventEmitter {
561
587
  this.log.warn(`handleDeviceMessage ${id}#${deviceIndex + 1}${rs} entity ${dn}${entity}${rs} service ${zb}${service}${rs} payload null`);
562
588
  return;
563
589
  }
564
- const data = JSON.parse(payload.toString()); // TODO crash on device rename
590
+ const payloadString = payload.toString();
591
+ let data = {};
592
+ if (payloadString.startsWith('{') && payloadString.endsWith('}')) {
593
+ data = this.tryJsonParse(payload.toString());
594
+ }
595
+ else {
596
+ data = { state: payloadString };
597
+ }
565
598
  if (service === 'availability') {
566
599
  if (data.state === 'online') {
567
600
  this.z2mDevices[deviceIndex].isAvailabilityEnabled = true;
@@ -592,7 +625,14 @@ export class Zigbee2MQTT extends EventEmitter {
592
625
  this.log.warn(`handleGroupMessage ${id}#${groupIndex + 1}${rs} entity ${gn}${entity}${rs} service ${zb}${service}${rs} payload null`);
593
626
  return;
594
627
  }
595
- const data = JSON.parse(payload.toString());
628
+ const payloadString = payload.toString();
629
+ let data = {};
630
+ if (payloadString.startsWith('{') && payloadString.endsWith('}')) {
631
+ data = this.tryJsonParse(payload.toString());
632
+ }
633
+ else {
634
+ data = { state: payloadString };
635
+ }
596
636
  data['last_seen'] = new Date().toISOString();
597
637
  if (service === 'availability') {
598
638
  if (data.state === 'online') {
@@ -626,7 +666,7 @@ export class Zigbee2MQTT extends EventEmitter {
626
666
  }
627
667
  ],
628
668
  */
629
- const data = JSON.parse(payload.toString());
669
+ const data = this.tryJsonParse(payload.toString());
630
670
  const topology = data.data.value;
631
671
  const lqi = (lqi) => {
632
672
  if (lqi < 50) {
@@ -748,7 +788,7 @@ export class Zigbee2MQTT extends EventEmitter {
748
788
  transaction: 'smeo0-8'
749
789
  }
750
790
  */
751
- const json = JSON.parse(payload.toString());
791
+ const json = this.tryJsonParse(payload.toString());
752
792
  this.log.warn(`handleResponseDeviceRename from ${json.data.from} to ${json.data.to} status ${json.status}`);
753
793
  const device = this.z2mDevices.find((device) => device.friendly_name === json.data.to);
754
794
  if (device && json.status === 'ok') {
@@ -763,7 +803,7 @@ export class Zigbee2MQTT extends EventEmitter {
763
803
  transaction: 'adeis-5'
764
804
  }
765
805
  */
766
- const json = JSON.parse(payload.toString());
806
+ const json = this.tryJsonParse(payload.toString());
767
807
  this.log.warn(`handleResponsePermitJoin() device: ${json.data.device ? json.data.device : 'All'} time: ${json.data.time} value: ${json.data.value} status: ${json.status}`);
768
808
  if (json.status === 'ok') {
769
809
  this.emit('permit_join', json.data.device, json.data.time, json.data.value);
@@ -815,7 +855,7 @@ export class Zigbee2MQTT extends EventEmitter {
815
855
  type: 'device_interview'
816
856
  }
817
857
  */
818
- const json = JSON.parse(payload.toString());
858
+ const json = this.tryJsonParse(payload.toString());
819
859
  switch (json.type) {
820
860
  case undefined:
821
861
  this.log.error('handleEvent() undefined type', json);
@@ -838,7 +878,7 @@ export class Zigbee2MQTT extends EventEmitter {
838
878
  readConfig(filename) {
839
879
  try {
840
880
  const rawdata = fs.readFileSync(filename, 'utf-8');
841
- const data = JSON.parse(rawdata);
881
+ const data = this.tryJsonParse(rawdata);
842
882
  return data;
843
883
  }
844
884
  catch (err) {