matterbridge-zigbee2mqtt 3.0.2-dev-20251202-1eb8ad8 → 3.0.2

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
@@ -12,7 +12,7 @@ If you like this project and find it useful, please consider giving it a star on
12
12
 
13
13
  - [scenes]: Added await for creation.
14
14
  - [mqtt]: Added config for a fixed clientId. If not provided, a random clientId will be generated. (https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/138)
15
- - [mqtt]: Added Unix socket: use unix://<SOCKET_PATH> for Unix socket (e.g. unix:///var/run/mqtt.sock). (https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/133)
15
+ - [mqtt]: Added Unix socket support on Linux: use unix://<SOCKET_PATH> for Unix socket (e.g. unix:///var/run/mqtt.sock). (https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/133)
16
16
  - [zigbee2mqtt]: Added frontend package detection. With the new windfront, link or bookmarks to the specific device page are not possible. (https://github.com/Luligu/matterbridge-zigbee2mqtt/issues/136)
17
17
 
18
18
  ### Changed
@@ -26,7 +26,7 @@ If you like this project and find it useful, please consider giving it a star on
26
26
 
27
27
  ### Fixed
28
28
 
29
- - [cover]: Fixed wrong update with motor reversed.
29
+ - [cover]: Fixed wrong update with motor reversed. Zigbee2MQTT cover: 0 = fully closed, 100 = fully open (with invert_cover = false). Use invert_cover configuration on zigbee2mqtt if your cover has inverted position.
30
30
 
31
31
  <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
32
32
 
package/dist/entity.js CHANGED
@@ -1334,26 +1334,20 @@ export class ZigbeeDevice extends ZigbeeEntity {
1334
1334
  }
1335
1335
  if (zigbeeDevice.bridgedDevice.hasClusterServer(WindowCoveringCluster.id)) {
1336
1336
  zigbeeDevice.bridgedDevice.addCommandHandler('upOrOpen', async () => {
1337
- const reversed = zigbeeDevice.isCoverReversed();
1338
- if (reversed)
1339
- zigbeeDevice.log.debug(`Device ${zigbeeDevice.ien}${device.friendly_name}${rs}${db} has reversed motor direction. Commands will be reversed.`);
1340
1337
  zigbeeDevice.log.debug(`Command upOrOpen called for ${zigbeeDevice.ien}${device.friendly_name}${rs}${db}`);
1341
1338
  if (zigbeeDevice.propertyMap.has('position'))
1342
- await zigbeeDevice.bridgedDevice?.setAttribute(WindowCoveringCluster.id, 'targetPositionLiftPercent100ths', reversed ? 10000 : 0, zigbeeDevice.log);
1339
+ await zigbeeDevice.bridgedDevice?.setAttribute(WindowCoveringCluster.id, 'targetPositionLiftPercent100ths', 0, zigbeeDevice.log);
1343
1340
  else
1344
- await zigbeeDevice.bridgedDevice?.setWindowCoveringTargetAndCurrentPosition(reversed ? 10000 : 0);
1345
- zigbeeDevice.publishCommand('upOrOpen', device.friendly_name, { state: reversed ? 'CLOSE' : 'OPEN' });
1341
+ await zigbeeDevice.bridgedDevice?.setWindowCoveringTargetAndCurrentPosition(0);
1342
+ zigbeeDevice.publishCommand('upOrOpen', device.friendly_name, { state: 'OPEN' });
1346
1343
  });
1347
1344
  zigbeeDevice.bridgedDevice.addCommandHandler('downOrClose', async () => {
1348
- const reversed = zigbeeDevice.isCoverReversed();
1349
- if (reversed)
1350
- zigbeeDevice.log.debug(`Device ${zigbeeDevice.ien}${device.friendly_name}${rs}${db} has reversed motor direction. Commands will be reversed.`);
1351
1345
  zigbeeDevice.log.debug(`Command downOrClose called for ${zigbeeDevice.ien}${device.friendly_name}${rs}${db}`);
1352
1346
  if (zigbeeDevice.propertyMap.has('position'))
1353
- await zigbeeDevice.bridgedDevice?.setAttribute(WindowCoveringCluster.id, 'targetPositionLiftPercent100ths', reversed ? 0 : 10000, zigbeeDevice.log);
1347
+ await zigbeeDevice.bridgedDevice?.setAttribute(WindowCoveringCluster.id, 'targetPositionLiftPercent100ths', 10000, zigbeeDevice.log);
1354
1348
  else
1355
- await zigbeeDevice.bridgedDevice?.setWindowCoveringTargetAndCurrentPosition(reversed ? 0 : 10000);
1356
- zigbeeDevice.publishCommand('downOrClose', device.friendly_name, { state: reversed ? 'OPEN' : 'CLOSE' });
1349
+ await zigbeeDevice.bridgedDevice?.setWindowCoveringTargetAndCurrentPosition(10000);
1350
+ zigbeeDevice.publishCommand('downOrClose', device.friendly_name, { state: 'CLOSE' });
1357
1351
  });
1358
1352
  zigbeeDevice.bridgedDevice.addCommandHandler('stopMotion', async () => {
1359
1353
  zigbeeDevice.log.debug(`Command stopMotion called for ${zigbeeDevice.ien}${device.friendly_name}${rs}${db}`);
@@ -1361,17 +1355,12 @@ export class ZigbeeDevice extends ZigbeeEntity {
1361
1355
  zigbeeDevice.publishCommand('stopMotion', device.friendly_name, { state: 'STOP' });
1362
1356
  });
1363
1357
  zigbeeDevice.bridgedDevice.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue } }) => {
1364
- const reversed = zigbeeDevice.isCoverReversed();
1365
- if (reversed)
1366
- zigbeeDevice.log.debug(`Device ${zigbeeDevice.ien}${device.friendly_name}${rs}${db} has reversed motor direction. Commands will be reversed.`);
1367
- if (reversed)
1368
- liftPercent100thsValue = 10000 - liftPercent100thsValue;
1369
1358
  zigbeeDevice.log.debug(`Command goToLiftPercentage called for ${zigbeeDevice.ien}${device.friendly_name}${rs}${db} request liftPercent100thsValue: ${liftPercent100thsValue}`);
1370
1359
  if (zigbeeDevice.propertyMap.has('position'))
1371
1360
  await zigbeeDevice.bridgedDevice?.setAttribute(WindowCoveringCluster.id, 'targetPositionLiftPercent100ths', liftPercent100thsValue, zigbeeDevice.log);
1372
1361
  else
1373
1362
  await zigbeeDevice.bridgedDevice?.setWindowCoveringTargetAndCurrentPosition(liftPercent100thsValue);
1374
- zigbeeDevice.publishCommand('goToLiftPercentage', device.friendly_name, { position: liftPercent100thsValue / 100 });
1363
+ zigbeeDevice.publishCommand('goToLiftPercentage', device.friendly_name, { position: (10000 - liftPercent100thsValue) / 100 });
1375
1364
  });
1376
1365
  }
1377
1366
  if (zigbeeDevice.bridgedDevice.hasClusterServer(DoorLockCluster.id)) {
@@ -17,7 +17,7 @@
17
17
  "ui:widget": "hidden"
18
18
  },
19
19
  "host": {
20
- "description": "MQTT server host (IP address or hostname with mqtt:// or mqtts:// prefix) or unix://<SOCKET_PATH> for Unix socket (e.g. unix:///var/run/mqtt.sock). For secure connections, use the mqtts:// prefix and ensure your certificates are configured. If you use a hostname, make sure that the hostname is resolvable by the system running matterbridge.",
20
+ "description": "MQTT server host (IP address or hostname with mqtt:// or mqtts:// prefix) or unix://<SOCKET_PATH> for Unix socket on Linux (e.g. unix:///var/run/mqtt.sock). For secure connections, use the mqtts:// prefix and ensure your certificates are configured. If you use a hostname, make sure that the hostname is resolvable by the system running matterbridge.",
21
21
  "type": "string",
22
22
  "default": "mqtt://localhost"
23
23
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-zigbee2mqtt",
3
- "version": "3.0.2-dev-20251202-1eb8ad8",
3
+ "version": "3.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-zigbee2mqtt",
9
- "version": "3.0.2-dev-20251202-1eb8ad8",
9
+ "version": "3.0.2",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "moment": "2.30.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-zigbee2mqtt",
3
- "version": "3.0.2-dev-20251202-1eb8ad8",
3
+ "version": "3.0.2",
4
4
  "description": "Matterbridge zigbee2mqtt plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",