matterbridge-zigbee2mqtt 2.2.1 → 2.2.3-dev.5

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,49 @@ If you like this project and find it useful, please consider giving it a star on
4
4
 
5
5
  All notable changes to this project will be documented in this file.
6
6
 
7
+ ## [2.2.3] - 2024-11-XX
8
+
9
+ ### Added
10
+
11
+ - [matterbridge]: Preliminary update to support Matterbridge edge (matter.js new API).
12
+ - [zigbeeEntity]: Add create async to ZigbeeDevice and ZigbeeGroup.
13
+
14
+ ### Changed
15
+
16
+ - [package]: Updated dependencies.
17
+
18
+ ### Fixed
19
+
20
+ <a href="https://www.buymeacoffee.com/luligugithub">
21
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
22
+ </a>
23
+
24
+ ## [2.2.2] - 2024-11-26
25
+
26
+ ### Added
27
+
28
+ - [thermostat]: Added min_temperature_limit and max_temperature_limit converter to thermostats.
29
+ - [thermostat]: Added min_heat_setpoint_limit and max_heat_setpoint_limit converter to thermostats.
30
+ - [thermostat]: Added configuration for heat only and cool only thermostats.
31
+ - [matter]: Added tagList to child endpoints.
32
+
33
+ ### Changed
34
+
35
+ - [mqtt]: Username and password are passed like undefined unless set.
36
+ - [readme]: Updated install script.
37
+ - [readme]: Updated build script.
38
+ - [package]: Updated dependencies.
39
+ - [plugin]: Requires Matterbridge 1.6.2.
40
+
41
+ ### Fixed
42
+
43
+ - [thermostat]: Fixed the case when instead of current_heating_setpoint the property is occupied_heating_setpoint.
44
+ - [thermostat]: Fixed the case when instead of current_cooling_setpoint the property is occupied_cooling_setpoint.
45
+
46
+ <a href="https://www.buymeacoffee.com/luligugithub">
47
+ <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
48
+ </a>
49
+
7
50
  ## [2.2.1] - 2024-10-11
8
51
 
9
52
  ### Fixed
package/README.md CHANGED
@@ -28,13 +28,13 @@ Follow these steps to install or update Matterbridge if it is not already instal
28
28
  on Windows:
29
29
 
30
30
  ```
31
- npm install -g matterbridge
31
+ npm install -g matterbridge --omit=dev
32
32
  ```
33
33
 
34
34
  on Linux (you need the necessary permissions):
35
35
 
36
36
  ```
37
- sudo npm install -g matterbridge
37
+ sudo npm install -g matterbridge --omit=dev
38
38
  ```
39
39
 
40
40
  See the complete guidelines on [Matterbridge](https://github.com/Luligu/matterbridge/blob/main/README.md) for more information.
@@ -57,7 +57,7 @@ On windows:
57
57
 
58
58
  ```
59
59
  cd $HOME\Matterbridge
60
- npm install -g matterbridge-zigbee2mqtt
60
+ npm install -g matterbridge-zigbee2mqtt --omit=dev
61
61
  matterbridge -add matterbridge-zigbee2mqtt
62
62
  ```
63
63
 
@@ -65,7 +65,7 @@ On linux:
65
65
 
66
66
  ```
67
67
  cd ~/Matterbridge
68
- sudo npm install -g matterbridge-zigbee2mqtt
68
+ sudo npm install -g matterbridge-zigbee2mqtt --omit=dev
69
69
  matterbridge -add matterbridge-zigbee2mqtt
70
70
  ```
71
71
 
@@ -83,7 +83,8 @@ On windows:
83
83
  cd $HOME\Matterbridge
84
84
  git clone https://github.com/Luligu/matterbridge-zigbee2mqtt
85
85
  cd matterbridge-zigbee2mqtt
86
- npm install
86
+ npm ci
87
+ npm run dev:link
87
88
  npm run build
88
89
  matterbridge -add .\
89
90
  ```
@@ -94,7 +95,8 @@ On linux:
94
95
  cd ~/Matterbridge
95
96
  git clone https://github.com/Luligu/matterbridge-zigbee2mqtt
96
97
  cd matterbridge-zigbee2mqtt
97
- npm install
98
+ npm ci
99
+ npm run dev:link
98
100
  npm run build
99
101
  matterbridge -add ./
100
102
  ```
package/dist/entity.d.ts CHANGED
@@ -4,9 +4,9 @@
4
4
  * @file entity.ts
5
5
  * @author Luca Liguori
6
6
  * @date 2023-12-29
7
- * @version 3.0.1
7
+ * @version 3.1.0
8
8
  *
9
- * Copyright 2023, 2024 Luca Liguori.
9
+ * Copyright 2023, 2024, 2025 Luca Liguori.
10
10
  *
11
11
  * Licensed under the Apache License, Version 2.0 (the "License");
12
12
  * you may not use this file except in compliance with the License.
@@ -20,12 +20,18 @@
20
20
  * See the License for the specific language governing permissions and
21
21
  * limitations under the License. *
22
22
  */
23
- import { DeviceTypeDefinition, MatterbridgeDevice, ClusterId, Endpoint, AtLeastOne } from 'matterbridge';
23
+ import { DeviceTypeDefinition, MatterbridgeDevice, ClusterId, BridgedDeviceBasicInformation, Endpoint, EndpointOptions, ClusterServerObj, ClusterClientObj, Semtag, AtLeastOne } from 'matterbridge';
24
24
  import { AnsiLogger } from 'matterbridge/logger';
25
25
  import EventEmitter from 'events';
26
26
  import { ZigbeePlatform } from './platform.js';
27
27
  import { BridgeDevice, BridgeGroup } from './zigbee2mqttTypes.js';
28
28
  import { Payload, PayloadValue } from './payloadTypes.js';
29
+ /**
30
+ * Represents a Zigbee entity: a group or a device.
31
+ *
32
+ * @class
33
+ * @extends {EventEmitter}
34
+ */
29
35
  export declare class ZigbeeEntity extends EventEmitter {
30
36
  log: AnsiLogger;
31
37
  serial: string;
@@ -38,7 +44,7 @@ export declare class ZigbeeEntity extends EventEmitter {
38
44
  actions: string[];
39
45
  protected en: string;
40
46
  protected ien: string;
41
- bridgedDevice: BridgedBaseDevice | undefined;
47
+ bridgedDevice: MatterbridgeDevice | undefined;
42
48
  eidn: string;
43
49
  private lastPayload;
44
50
  private lastSeen;
@@ -48,15 +54,154 @@ export declare class ZigbeeEntity extends EventEmitter {
48
54
  name: string;
49
55
  type: string;
50
56
  endpoint: string;
57
+ values?: string;
58
+ value_min?: number;
59
+ value_max?: number;
51
60
  unit?: string;
61
+ category?: string;
62
+ description?: string;
63
+ label?: string;
52
64
  action?: string;
53
65
  }>;
66
+ protected readonly mutableDevice: Map<string, {
67
+ tagList: Semtag[];
68
+ deviceTypes: DeviceTypeDefinition[];
69
+ clusterServersIds: ClusterId[];
70
+ clusterServersObjs: ClusterServerObj[];
71
+ clusterClientsIds: ClusterId[];
72
+ clusterClientsObjs: ClusterClientObj[];
73
+ }>;
74
+ colorTimeout: NodeJS.Timeout | undefined;
75
+ thermostatTimeout: NodeJS.Timeout | undefined;
76
+ protected composedType: string;
77
+ protected hasEndpoints: boolean;
78
+ isRouter: boolean;
79
+ protected noUpdate: boolean;
80
+ /**
81
+ * Creates an instance of ZigbeeEntity.
82
+ *
83
+ * @param {ZigbeePlatform} platform - The Zigbee platform instance.
84
+ * @param {BridgeDevice | BridgeGroup} entity - The bridge device or group instance received from zigbee2mqtt.
85
+ */
54
86
  constructor(platform: ZigbeePlatform, entity: BridgeDevice | BridgeGroup);
55
- protected updateAttributeIfChanged(rootEndpoint: Endpoint, endpointName: string | undefined, clusterId: number, attributeName: string, value: PayloadValue, lookup?: string[]): void;
87
+ /**
88
+ * Destroys the ZigbeeEntity instance by clearing any active timeouts.
89
+ *
90
+ * @remarks
91
+ * This method is used to clean up the ZigbeeEntity instance by clearing any active timeouts for color and thermostat operations.
92
+ * It ensures that no further actions are taken on these timeouts after the entity is destroyed.
93
+ */
94
+ destroy(): void;
95
+ /**
96
+ * Creates a mutable device with the specified definition and includes the specified server list.
97
+ *
98
+ * @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The device type definition.
99
+ * @param {ClusterId[]} [includeServerList=[]] - The list of server clusters to include.
100
+ * @param {EndpointOptions} [options] - Optional endpoint options.
101
+ * @param {boolean} [debug] - Optional debug flag.
102
+ * @returns {MatterbridgeDevice} The created mutable device.
103
+ *
104
+ * @remarks
105
+ * This method creates a mutable device based on the provided definition. It adds the specified server clusters
106
+ * to the device and configures the device with basic information and power source clusters. If the device is a
107
+ * coordinator, it sets up the basic information cluster with coordinator-specific details. If the device is a
108
+ * group, it sets up the basic information cluster with group-specific details. The method also configures the
109
+ * power source cluster based on the device's power source.
110
+ */
111
+ protected createMutableDevice(definition: DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>, options?: EndpointOptions, debug?: boolean): Promise<MatterbridgeDevice>;
112
+ protected getBridgedDeviceBasicInformation(): ClusterServerObj<BridgedDeviceBasicInformation.Cluster>;
113
+ protected addBridgedDeviceBasicInformation(): MatterbridgeDevice;
114
+ protected getPowerSource(): ClusterServerObj<any>;
115
+ protected addPowerSource(): MatterbridgeDevice;
116
+ /**
117
+ * Verifies that all required server clusters are present on the main endpoint and child endpoints.
118
+ *
119
+ * @param {MatterbridgeDevice} endpoint - The device endpoint to verify.
120
+ * @returns {boolean} True if all required server clusters are present, false otherwise.
121
+ *
122
+ * @remarks
123
+ * This method checks if all required server clusters are present on the main endpoint and its child endpoints.
124
+ * It logs an error message if any required server cluster is missing and returns false. If all required server
125
+ * clusters are present, it returns true.
126
+ */
127
+ protected verifyMutableDevice(endpoint: MatterbridgeDevice): boolean;
128
+ /**
129
+ * Configures the device by setting up the WindowCovering and DoorLock clusters if they are present.
130
+ *
131
+ * @returns {Promise<void>} A promise that resolves when the configuration is complete.
132
+ *
133
+ * @remarks
134
+ * This method configures the device by checking for the presence of the WindowCovering and DoorLock clusters.
135
+ * If the WindowCovering cluster is present, it sets the target as the current position and stops any ongoing
136
+ * movement. If the DoorLock cluster is present, it retrieves the lock state and triggers the appropriate lock
137
+ * operation event based on the current state.
138
+ */
139
+ configure(): Promise<void>;
140
+ /**
141
+ * Updates the attribute of a cluster on a device endpoint if the value has changed.
142
+ *
143
+ * @param {Endpoint} deviceEndpoint - The device endpoint to update.
144
+ * @param {string | undefined} childEndpointName - The name of the child endpoint, if any.
145
+ * @param {number} clusterId - The ID of the cluster to update.
146
+ * @param {string} attributeName - The name of the attribute to update.
147
+ * @param {PayloadValue} value - The new value of the attribute.
148
+ * @param {string[]} [lookup] - Optional lookup array for converting string values to indices.
149
+ *
150
+ * @remarks
151
+ * This method checks if the specified attribute of a cluster on a device endpoint has changed. If the attribute
152
+ * has changed, it updates the attribute with the new value. If a lookup array is provided, it converts string
153
+ * values to their corresponding indices in the lookup array. The method logs the update process and handles any
154
+ * errors that occur during the update.
155
+ */
156
+ protected updateAttributeIfChanged(deviceEndpoint: Endpoint, childEndpointName: string | undefined, clusterId: number, attributeName: string, value: PayloadValue, lookup?: string[]): void;
157
+ /**
158
+ * Publishes a command to the specified entity with the given payload.
159
+ *
160
+ * @param {string} command - The command to execute.
161
+ * @param {string} entityName - The name of the entity to publish the command to.
162
+ * @param {Payload} payload - The payload of the command.
163
+ *
164
+ * @remarks
165
+ * This method logs the execution of the command and publishes the command to the specified entity.
166
+ * If the entity name starts with 'bridge/request', it publishes the payload without a 'set' suffix.
167
+ * Otherwise, it publishes the payload with a 'set' suffix.
168
+ */
56
169
  protected publishCommand(command: string, entityName: string, payload: Payload): void;
170
+ /**
171
+ * Logs the property map of the Zigbee entity.
172
+ *
173
+ * @remarks
174
+ * This method iterates over the property map of the Zigbee entity and logs each property's details,
175
+ * including its name, type, values, minimum and maximum values, unit, and endpoint.
176
+ */
177
+ protected logPropertyMap(): void;
57
178
  }
179
+ /**
180
+ * Represents a Zigbee group entity.
181
+ *
182
+ * @class
183
+ * @extends {ZigbeeEntity}
184
+ */
58
185
  export declare class ZigbeeGroup extends ZigbeeEntity {
59
- constructor(platform: ZigbeePlatform, group: BridgeGroup);
186
+ /**
187
+ * Creates an instance of ZigbeeGroup.
188
+ *
189
+ * @param {ZigbeePlatform} platform - The Zigbee platform instance.
190
+ * @param {BridgeGroup} group - The bridge group instance.
191
+ */
192
+ private constructor();
193
+ /**
194
+ * Creates a new ZigbeeGroup instance.
195
+ *
196
+ * @param {ZigbeePlatform} platform - The Zigbee platform instance.
197
+ * @param {BridgeGroup} group - The bridge group instance.
198
+ * @returns {Promise<ZigbeeGroup>} A promise that resolves to the created ZigbeeGroup instance.
199
+ *
200
+ * @remarks
201
+ * This method initializes a new ZigbeeGroup instance, sets up its properties, and configures the device
202
+ * based on the group members. It also adds command handlers for the group.
203
+ */
204
+ static create(platform: ZigbeePlatform, group: BridgeGroup): Promise<ZigbeeGroup>;
60
205
  }
61
206
  export interface ZigbeeToMatter {
62
207
  type: string;
@@ -69,14 +214,31 @@ export interface ZigbeeToMatter {
69
214
  valueLookup?: string[];
70
215
  }
71
216
  export declare const z2ms: ZigbeeToMatter[];
217
+ /**
218
+ * Represents a Zigbee device entity.
219
+ *
220
+ * @class
221
+ * @extends {ZigbeeEntity}
222
+ */
72
223
  export declare class ZigbeeDevice extends ZigbeeEntity {
73
- constructor(platform: ZigbeePlatform, device: BridgeDevice);
74
- }
75
- export declare class BridgedBaseDevice extends MatterbridgeDevice {
76
- hasEndpoints: boolean;
77
- isRouter: boolean;
78
- noUpdate: boolean;
79
- constructor(entity: ZigbeeEntity, definition: AtLeastOne<DeviceTypeDefinition>, includeServerList?: ClusterId[], includeClientList?: ClusterId[]);
80
- configure(): void;
224
+ /**
225
+ * Represents a Zigbee device entity.
226
+ *
227
+ * @class
228
+ * @extends {ZigbeeEntity}
229
+ */
230
+ private constructor();
231
+ /**
232
+ * Creates a new ZigbeeDevice instance.
233
+ *
234
+ * @param {ZigbeePlatform} platform - The Zigbee platform instance.
235
+ * @param {BridgeDevice} device - The bridge device instance.
236
+ * @returns {Promise<ZigbeeDevice>} A promise that resolves to the created ZigbeeDevice instance.
237
+ *
238
+ * @remarks
239
+ * This method initializes a new ZigbeeDevice instance, sets up its properties, and configures the device
240
+ * based on the device definition and options. It also adds command handlers for the device.
241
+ */
242
+ static create(platform: ZigbeePlatform, device: BridgeDevice): Promise<ZigbeeDevice>;
81
243
  }
82
244
  //# sourceMappingURL=entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,EAiBlB,SAAS,EAMT,QAAQ,EACR,UAAU,EAoBX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAiG,MAAM,qBAAqB,CAAC;AAIhJ,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,qBAAa,YAAa,SAAQ,YAAY;IACrC,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,SAAM;IACnB,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,UAAU,SAAM;IAChB,QAAQ,UAAS;IACjB,OAAO,UAAS;IAChB,OAAO,EAAE,MAAM,EAAE,CAAM;IAC9B,SAAS,CAAC,EAAE,SAAM;IAClB,SAAS,CAAC,GAAG,SAAM;IACZ,aAAa,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC7C,IAAI,SAAW;IACtB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAK;IACrB,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAM;IACxC,SAAS,CAAC,UAAU,UAAS;IAC7B,SAAS,CAAC,WAAW;cAA2B,MAAM;cAAQ,MAAM;kBAAY,MAAM;eAAS,MAAM;iBAAW,MAAM;OAAM;gBAEhH,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW;IAgKxE,SAAS,CAAC,wBAAwB,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IA2CpL,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAQ/E;AAED,qBAAa,WAAY,SAAQ,YAAY;gBAC/B,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW;CAoRzD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAGD,eAAO,MAAM,IAAI,EAAE,cAAc,EAmDhC,CAAC;AAEF,qBAAa,YAAa,SAAQ,YAAY;gBAChC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY;CA6a3D;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;IAChD,YAAY,UAAS;IACrB,QAAQ,UAAS;IACjB,QAAQ,UAAS;gBAGZ,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,GAAE,SAAS,EAAO,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE;IAwBpJ,SAAS;CAYV"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}