matterbridge-plugin-lightwaverf 1.0.0 → 1.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/.matterbridge/history.html +741 -0
- package/.matterbridge/matterbridge-plugin-lightwaverf/.endpointNumbers/d5f2123da1d74aca3d92becc86a19e3801b42e9c02634c7d4b37dbb2c5a8e9aa +1 -1
- package/.matterbridge/matterbridge-plugin-lightwaverf/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -1
- package/.matterbridge/matterbridge-plugin-lightwaverf.config.json +2 -2
- package/.matterbridge/matterbridge-xiaomi-roborock/.endpointNumbers/d5f2123da1d74aca3d92becc86a19e3801b42e9c02634c7d4b37dbb2c5a8e9aa +1 -0
- package/.matterbridge/matterbridge-xiaomi-roborock/.selectDevice/3385b8752965077f9e52e27c413425a5f84ed89078acebbc1964f21d80c74bc9 +1 -0
- package/.matterbridge/matterbridge-xiaomi-roborock/.selectEntity/969dcec331a5f15e8672c8833573cff0aad3831a586ec33e8290d84c80a2dc2d +1 -0
- package/.matterbridge/matterbridge-xiaomi-roborock/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -0
- package/.matterbridge/matterbridge-xiaomi-roborock.config.json +15 -0
- package/.matterbridge/matterstorage/Matterbridge/events.lastEventNumber +1 -1
- package/.matterbridge/matterstorage/Matterbridge/fabrics.fabrics +1 -1
- package/.matterbridge/matterstorage/Matterbridge/fabrics.nextFabricIndex +1 -1
- package/.matterbridge/matterstorage/Matterbridge/persist.serialNumber +1 -1
- package/.matterbridge/matterstorage/Matterbridge/persist.uniqueId +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.__nextNumber__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.accessControl.acl +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.generalDiagnostics.rebootCount +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.generalDiagnostics.totalOperationalHoursCounter +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.commissionedFabrics +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.fabrics +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.nocs +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.trustedRootCertificates +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-2.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-4.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.10-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.11-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-2.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-3.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-1.onOff.onOff +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.5-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.6-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.7-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-3.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.__number__ +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.RestartMatterbridge%3Aoutlet.bridgedDeviceBasicInformation.uniqueId +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.bridgedDeviceBasicInformation.uniqueId +1 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.part2.__number__ +1 -0
- package/.matterbridge/matterstorage/Matterbridge/root.subscription.subscriptions +1 -1
- package/.matterbridge/matterstorage/Matterbridge/sessions.resumptionRecords +1 -1
- package/.matterbridge/matterstorage/Roborock/events.lastEventNumber +1 -0
- package/.matterbridge/matterstorage/Roborock/fabrics.fabrics +1 -0
- package/.matterbridge/matterstorage/Roborock/fabrics.nextFabricIndex +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.deviceName +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.deviceType +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.hardwareVersion +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.hardwareVersionString +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.nodeLabel +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.productId +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.productLabel +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.productName +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.serialNumber +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.softwareVersion +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.softwareVersionString +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.storeId +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.uniqueId +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.vendorId +1 -0
- package/.matterbridge/matterstorage/Roborock/persist.vendorName +1 -0
- package/.matterbridge/matterstorage/Roborock/root.__nextNumber__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.__number__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.accessControl.__features__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.accessControl.acl +1 -0
- package/.matterbridge/matterstorage/Roborock/root.basicInformation.location +1 -0
- package/.matterbridge/matterstorage/Roborock/root.generalCommissioning.__features__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.generalCommissioning.breadcrumb +1 -0
- package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.__features__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.rebootCount +1 -0
- package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.totalOperationalHoursCounter +1 -0
- package/.matterbridge/matterstorage/Roborock/root.network.operationalPort +1 -0
- package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.commissionedFabrics +1 -0
- package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.fabrics +1 -0
- package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.nocs +1 -0
- package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.trustedRootCertificates +1 -0
- package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.__number__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.identify.identifyTime +1 -0
- package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.rvcRunMode.__features__ +1 -0
- package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.rvcRunMode.currentMode +1 -0
- package/.matterbridge/matterstorage/Roborock/root.productDescription.productId +1 -0
- package/.matterbridge/matterstorage/Roborock/root.productDescription.vendorId +1 -0
- package/.matterbridge/matterstorage/Roborock/root.subscription.subscriptions +1 -0
- package/.matterbridge/matterstorage/Roborock/sessions.resumptionRecords +1 -0
- package/.matterbridge/storage/.matterbridge/92cd10e6b8b068a931196d1d73a032543d5ca1a5bf445e27a1af74258254517c +1 -1
- package/.matterbridge/storage/.matterbridge/e3e931e87ead058805e8517be81328fbf7b0e04c5d78abdd4ca713df24d773fb +1 -1
- package/.matterbridge/storage/.matterbridge/e8f5b65c0535f90fae75a1c5e080593fdc2a490e22d5e21ea67a88cea7c1d794 +1 -1
- package/.matterbridge/storage/.matterbridge-plugin-lightwaverf/5ca4f3850ccc331aaf8a257d6086e526a3b42a63e18cb11d020847985b31d188 +1 -1
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/1303c06b0b014d0ce7b988ab173a13f31227d417058ff4bbe6f8c222b4ad913c +1 -0
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/5ca4f3850ccc331aaf8a257d6086e526a3b42a63e18cb11d020847985b31d188 +1 -0
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/636485868971eac5aca33c4a0e1800a8a11d980bcf0e3776b31002e2c5db91b2 +1 -0
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/82a3537ff0dbce7eec35d69edc3a189ee6f17d82f353a553f9aa96cb0be3ce89 +1 -0
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/a0af9f865bf637e6736817f4ce552e4cdf7b8c36ea75bc254c1d1f0af744b5bf +1 -0
- package/.matterbridge/storage/.matterbridge-xiaomi-roborock/c9046f7a37ad0ea7cee73355984fa5428982f8b37c8f7bcec91f7ac71a7cd104 +1 -0
- package/.matterbridge/storage/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -1
- package/README.md +192 -56
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +70 -17
- package/dist/module.js.map +1 -0
- package/matterbridge-plugin-lightwaverf.schema.json +36 -0
- package/package.json +6 -6
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-2.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.levelControl.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.levelControl.currentLevel +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.levelControl.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.levelControl.currentLevel +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.__number__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.levelControl.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.levelControl.currentLevel +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.onOff.__features__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.onOff.onOff +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.outlet1.__number__ +0 -1
- package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.registerButton1.__number__ +0 -1
- /package/.matterbridge/matterstorage/Matterbridge/{root.parts.Matterbridge.parts.11-1.onOff.__features__ → root.parts.Matterbridge.parts.2-3.onOff.__features__} +0 -0
- /package/.matterbridge/matterstorage/Matterbridge/{root.parts.Matterbridge.parts.11-1.onOff.onOff → root.parts.Matterbridge.parts.2-3.onOff.onOff} +0 -0
- /package/.matterbridge/matterstorage/{Matterbridge/root.parts.Matterbridge.parts.3-3.onOff.onOff → Roborock/root.commissioning.commissioned} +0 -0
- /package/.matterbridge/matterstorage/{Matterbridge/root.parts.Matterbridge.parts.2-2.onOff.onOff → Roborock/root.network.ble} +0 -0
- /package/.matterbridge/matterstorage/{Matterbridge/root.parts.Matterbridge.parts.3-2.onOff.onOff → Roborock/root.parts.Roborock-R0514S03600279.identify.isIdentifying} +0 -0
package/README.md
CHANGED
|
@@ -1,84 +1,220 @@
|
|
|
1
|
-
# <img src="matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px"> Matterbridge Plugin
|
|
1
|
+
# <img src="matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px"> Matterbridge LightWaveRF Plugin
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/matterbridge)
|
|
4
|
-
[](https://www.npmjs.com/package/matterbridge)
|
|
5
|
-
[](https://hub.docker.com/r/luligu/matterbridge)
|
|
6
|
-
[](https://hub.docker.com/r/luligu/matterbridge)
|
|
7
|
-

|
|
8
|
-

|
|
9
|
-
[](https://codecov.io/gh/Luligu/matterbridge-plugin-template)
|
|
3
|
+
[](https://www.npmjs.com/package/matterbridge-plugin-lightwaverf)
|
|
4
|
+
[](https://www.npmjs.com/package/matterbridge-plugin-lightwaverf)
|
|
10
5
|
|
|
11
6
|
[](https://www.npmjs.com/package/matterbridge)
|
|
12
|
-
[](https://www.npmjs.com/package/@evops/lightwaverf)
|
|
13
8
|
[](https://www.npmjs.com/package/node-ansi-logger)
|
|
14
9
|
[](https://www.npmjs.com/package/node-persist-manager)
|
|
15
10
|
|
|
16
|
-
|
|
11
|
+
Connect your LightWaveRF smart home devices to the Matter ecosystem, enabling control via Apple HomeKit, Google Home, Amazon Alexa, Home Assistant, SmartThings, and other Matter-compatible platforms.
|
|
17
12
|
|
|
18
|
-
If you like this project and find it useful, please consider giving it a star on GitHub at [
|
|
13
|
+
If you like this project and find it useful, please consider giving it a star on GitHub at [matterbridge-plugin-lightwaverf](https://github.com/sponte/matterbridge-plugin-lightwaverf).
|
|
19
14
|
|
|
20
|
-
<a href="https://www.buymeacoffee.com/
|
|
15
|
+
<a href="https://www.buymeacoffee.com/evops">
|
|
21
16
|
<img src="bmc-button.svg" alt="Buy me a coffee" width="120">
|
|
22
17
|
</a>
|
|
23
18
|
|
|
24
|
-
##
|
|
19
|
+
## What This Plugin Does
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
- Pre-configured TypeScript, ESLint, Prettier, Jest and Vitest.
|
|
28
|
-
- Example project structure for Accessory and Dynamic platforms.
|
|
29
|
-
- Ready for customization for your own plugin.
|
|
30
|
-
- The project has an already configured Jest / Vitest test unit (with 100% coverage) that you can expand while you add your own plugin logic.
|
|
21
|
+
This Matterbridge plugin bridges LightWaveRF devices to the Matter protocol, allowing you to:
|
|
31
22
|
|
|
32
|
-
|
|
23
|
+
- Control LightWaveRF lights, dimmers, and switches through Matter-compatible apps
|
|
24
|
+
- Use HomeKit/Siri, Google Home, and Alexa voice control
|
|
25
|
+
- Integrate with Home Assistant, SmartThings, and other Matter ecosystems
|
|
26
|
+
- Manage all your LightWaveRF devices from a single interface
|
|
27
|
+
- Maintain local network control while leveraging cloud device discovery
|
|
33
28
|
|
|
34
|
-
|
|
29
|
+
## How It Works
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
```
|
|
32
|
+
LightWaveRF Cloud Account (Email + PIN)
|
|
33
|
+
↓
|
|
34
|
+
LightWaveRF Link/Link Plus Device (Local Network)
|
|
35
|
+
↓
|
|
36
|
+
Your LightWaveRF Devices (Lights, Dimmers, Switches)
|
|
37
|
+
↓
|
|
38
|
+
Matterbridge Plugin (This Plugin)
|
|
39
|
+
↓
|
|
40
|
+
Matter Protocol
|
|
41
|
+
↓
|
|
42
|
+
HomeKit, Google Home, Alexa, etc.
|
|
43
|
+
```
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
The plugin connects to your LightWaveRF Link device on your local network, discovers all paired devices from your LightWaveRF cloud account, and exposes them as Matter devices that can be controlled by any Matter-compatible platform.
|
|
44
46
|
|
|
45
|
-
|
|
47
|
+
## Requirements
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
- **Workflow intensity**: This template includes multiple workflows that run on different operating systems (Ubuntu, macOS, Windows) and Node.js versions (20, 22, 24), which can consume minutes quickly.
|
|
49
|
-
- **Daily automated workflows**: The dev publishing workflows run daily, which can add up over time.
|
|
50
|
-
- **Pricing varies by OS**: macOS runners cost 10x more than Ubuntu runners, Windows runners cost 2x more.
|
|
49
|
+
Before installing this plugin, ensure you have:
|
|
51
50
|
|
|
52
|
-
**
|
|
51
|
+
- **LightWaveRF Link or Link Plus** device on your network
|
|
52
|
+
- **LightWaveRF account** with devices already paired in the LightWaveRF app
|
|
53
|
+
- **Matterbridge** v3.3.0 or later installed and running
|
|
54
|
+
- **Node.js** version 20, 22, or 24
|
|
55
|
+
- Your LightWaveRF account **email** and **PIN**
|
|
53
56
|
|
|
54
|
-
|
|
55
|
-
- Consider disabling some workflows or reducing the OS/Node.js version matrix
|
|
56
|
-
- Review GitHub's [pricing for Actions](https://github.com/pricing) to understand costs
|
|
57
|
-
- For public repositories, GitHub Actions are free with generous limits
|
|
57
|
+
## Installation
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
### 1. Install via Matterbridge UI
|
|
60
60
|
|
|
61
|
-
1.
|
|
62
|
-
2.
|
|
63
|
-
3.
|
|
64
|
-
4.
|
|
65
|
-
5. Follow the instructions in the matterbridge [README-DEV](https://github.com/Luligu/matterbridge/blob/main/README-DEV.md) and comments in module.ts to implement your plugin logic.
|
|
61
|
+
1. Open the Matterbridge web interface
|
|
62
|
+
2. Go to the **Plugins** section
|
|
63
|
+
3. Search for `matterbridge-plugin-lightwaverf`
|
|
64
|
+
4. Click **Install**
|
|
66
65
|
|
|
67
|
-
|
|
66
|
+
### 2. Install via Command Line
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
- The dev branch of Matterbridge is already build and installed into the Dev Container and linked to the plugin.
|
|
73
|
-
- The devcontainer is optimized using named mounts for node_modules and matterbridge.
|
|
74
|
-
- You can run, build, and test your plugin directly inside the container.
|
|
75
|
-
- To open a terminal in the devcontainer, use the VS Code terminal after the container starts.
|
|
76
|
-
- All commands (npm, tsc, matterbridge etc.) will run inside the container environment.
|
|
77
|
-
- All the source files are on host.
|
|
78
|
-
- Since the dev container doesn't have network host and IPV6, is not possible to pair matterbridge from the Devcontainer but you can add your plugin to matterbridge and test it inside the devcontainer.
|
|
68
|
+
```bash
|
|
69
|
+
npm install -g matterbridge-plugin-lightwaverf
|
|
70
|
+
```
|
|
79
71
|
|
|
80
|
-
##
|
|
72
|
+
## Configuration
|
|
81
73
|
|
|
82
|
-
|
|
74
|
+
After installation, configure the plugin with your LightWaveRF credentials:
|
|
75
|
+
|
|
76
|
+
### Required Settings
|
|
77
|
+
|
|
78
|
+
- **Email**: Your LightWaveRF cloud account email address
|
|
79
|
+
- **PIN**: Your LightWaveRF account PIN (the security code you use in the LightWaveRF app)
|
|
80
|
+
|
|
81
|
+
### Optional Settings
|
|
82
|
+
|
|
83
|
+
- **Debug**: Enable detailed logging for troubleshooting (default: `false`)
|
|
84
|
+
- **Unregister on Shutdown**: Remove all devices when Matterbridge stops - useful for development only (default: `false`)
|
|
85
|
+
|
|
86
|
+
### Configuration Example
|
|
87
|
+
|
|
88
|
+
In the Matterbridge UI or configuration file:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"email": "your-email@example.com",
|
|
93
|
+
"pin": "1234",
|
|
94
|
+
"debug": false,
|
|
95
|
+
"unregisterOnShutdown": false
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## First Time Setup & Device Registration
|
|
100
|
+
|
|
101
|
+
The first time you run the plugin, you'll need to register it with your LightWaveRF Link device:
|
|
102
|
+
|
|
103
|
+
1. **Configure the plugin** with your email and PIN (see Configuration above)
|
|
104
|
+
2. **Restart Matterbridge** to load the plugin
|
|
105
|
+
3. A virtual **"Register Button"** device will appear in your Matter controller (HomeKit, Google Home, etc.)
|
|
106
|
+
4. **Simultaneously**:
|
|
107
|
+
- Click/activate the virtual "Register Button" in your Matter app
|
|
108
|
+
- Press the **physical pairing button** on your LightWaveRF Link device
|
|
109
|
+
5. Wait a few seconds for registration to complete
|
|
110
|
+
6. **Restart Matterbridge** again
|
|
111
|
+
7. All your LightWaveRF devices will automatically appear in your Matter controller
|
|
112
|
+
|
|
113
|
+
### Troubleshooting Registration
|
|
114
|
+
|
|
115
|
+
If registration fails:
|
|
116
|
+
|
|
117
|
+
- Ensure your Link device is powered on and connected to the network
|
|
118
|
+
- Check that your email and PIN are correct in the configuration
|
|
119
|
+
- Make sure you press both buttons (virtual and physical) at the same time
|
|
120
|
+
- Try restarting Matterbridge and repeating the process
|
|
121
|
+
- Enable debug logging to see detailed connection information
|
|
122
|
+
|
|
123
|
+
## Supported Devices & Features
|
|
124
|
+
|
|
125
|
+
### Device Types
|
|
126
|
+
|
|
127
|
+
- **Dimmers** (LightWaveRF Type "D")
|
|
128
|
+
|
|
129
|
+
- Full on/off control
|
|
130
|
+
- Brightness adjustment (0-100%)
|
|
131
|
+
- Appears as "Dimmable Light" in Matter apps
|
|
132
|
+
|
|
133
|
+
- **On/Off Devices** (Switches, non-dimmable lights)
|
|
134
|
+
- On/off control
|
|
135
|
+
- Appears as "Light" or "Switch" in Matter apps
|
|
136
|
+
|
|
137
|
+
### Supported Operations
|
|
138
|
+
|
|
139
|
+
- Turn on/off individual devices
|
|
140
|
+
- Adjust brightness for dimmers
|
|
141
|
+
- Control devices via voice (Siri, Google Assistant, Alexa)
|
|
142
|
+
- Create scenes and automations in your Matter controller
|
|
143
|
+
- View device status in real-time
|
|
144
|
+
|
|
145
|
+
### Device Information
|
|
146
|
+
|
|
147
|
+
Each device displays:
|
|
148
|
+
|
|
149
|
+
- Device name (as configured in LightWaveRF app)
|
|
150
|
+
- Room name
|
|
151
|
+
- Unique identifier
|
|
152
|
+
- Power state
|
|
153
|
+
- Brightness level (for dimmers)
|
|
154
|
+
|
|
155
|
+
## Network Requirements
|
|
156
|
+
|
|
157
|
+
The plugin communicates with your LightWaveRF Link device using UDP on ports **9760** and **9761**. Ensure:
|
|
158
|
+
|
|
159
|
+
- Matterbridge and the Link device are on the **same local network**
|
|
160
|
+
- No firewall blocks UDP ports 9760/9761
|
|
161
|
+
- The Link device has a stable network connection
|
|
162
|
+
|
|
163
|
+
The plugin can auto-discover the Link device, or you can specify its IP address if needed.
|
|
164
|
+
|
|
165
|
+
## Compatibility
|
|
166
|
+
|
|
167
|
+
This plugin works with:
|
|
168
|
+
|
|
169
|
+
- **Matter Controllers**: Apple Home, Google Home, Amazon Alexa, SmartThings, Home Assistant
|
|
170
|
+
- **Operating Systems**: Linux, macOS, Windows, WSL2
|
|
171
|
+
- **Node.js Versions**: 20.x, 22.x, 24.x
|
|
172
|
+
- **Matterbridge Versions**: 3.3.0 and later
|
|
173
|
+
|
|
174
|
+
## Troubleshooting
|
|
175
|
+
|
|
176
|
+
### Devices Not Appearing
|
|
177
|
+
|
|
178
|
+
- Verify devices are paired in the LightWaveRF app first
|
|
179
|
+
- Check email and PIN are correct in plugin configuration
|
|
180
|
+
- Ensure Link device is powered on and on the same network
|
|
181
|
+
- Try restarting Matterbridge
|
|
182
|
+
- Enable debug logging to see detailed discovery information
|
|
183
|
+
|
|
184
|
+
### Commands Not Working
|
|
185
|
+
|
|
186
|
+
- Check network connectivity to Link device
|
|
187
|
+
- Verify UDP ports 9760/9761 are not blocked
|
|
188
|
+
- Ensure Link device firmware is up to date
|
|
189
|
+
- Try unpairing and re-pairing the device in LightWaveRF app
|
|
190
|
+
|
|
191
|
+
### Registration Failed
|
|
192
|
+
|
|
193
|
+
- Press both buttons (virtual and physical) simultaneously
|
|
194
|
+
- Ensure Link device is in pairing mode (press physical button)
|
|
195
|
+
- Check Link device is accessible on the network
|
|
196
|
+
- Try the registration process again after restarting Matterbridge
|
|
197
|
+
|
|
198
|
+
### Enable Debug Logging
|
|
199
|
+
|
|
200
|
+
Set `"debug": true` in the plugin configuration and restart Matterbridge to see detailed logs that can help diagnose issues.
|
|
201
|
+
|
|
202
|
+
## Support & Contributing
|
|
203
|
+
|
|
204
|
+
- **Issues**: Report bugs at [GitHub Issues](https://github.com/sponte/matterbridge-plugin-lightwaverf/issues)
|
|
205
|
+
- **Source Code**: [GitHub Repository](https://github.com/sponte/matterbridge-plugin-lightwaverf)
|
|
206
|
+
- **Support**: [Buy me a coffee](https://www.buymeacoffee.com/evops)
|
|
207
|
+
|
|
208
|
+
## Credits
|
|
209
|
+
|
|
210
|
+
- Built with [Matterbridge](https://github.com/Luligu/matterbridge)
|
|
211
|
+
- Uses [@evops/lightwaverf](https://www.npmjs.com/package/@evops/lightwaverf) client library
|
|
212
|
+
- Developed by [@sponte](https://github.com/sponte)
|
|
213
|
+
|
|
214
|
+
## License
|
|
215
|
+
|
|
216
|
+
Apache-2.0
|
|
83
217
|
|
|
84
218
|
---
|
|
219
|
+
|
|
220
|
+
**Note**: This plugin requires physical LightWaveRF hardware (Link/Link Plus device) and a LightWaveRF account with paired devices. The plugin does not work with LightWaveRF RF-only devices that require the separate RF bridge.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAqC,2BAA2B,EAAiD,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnL,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG3D;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,mBAAmB,CAEzI;AAID,qBAAa,mBAAoB,SAAQ,2BAA2B;IAClE,OAAO,CAAC,MAAM,CAA0B;gBAE5B,YAAY,EAAE,oBAAoB,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAkBxE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAavB,WAAW;IAcX,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;IAKtC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;YAQ3B,mBAAmB;YAiDnB,aAAa;CA2D5B"}
|
package/dist/module.js
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the plugin template.
|
|
3
|
+
*
|
|
4
|
+
* @file module.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @created 2025-06-15
|
|
7
|
+
* @version 1.3.0
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
1
24
|
import LightwaveClient from '@evops/lightwaverf';
|
|
2
25
|
import { dimmableLight, MatterbridgeDynamicPlatform, MatterbridgeEndpoint, onOffLight, onOffOutlet } from 'matterbridge';
|
|
26
|
+
/**
|
|
27
|
+
* This is the standard interface for Matterbridge plugins.
|
|
28
|
+
* Each plugin should export a default function that follows this signature.
|
|
29
|
+
*
|
|
30
|
+
* @param {PlatformMatterbridge} matterbridge - An instance of MatterBridge.
|
|
31
|
+
* @param {AnsiLogger} log - An instance of AnsiLogger. This is used for logging messages in a format that can be displayed with ANSI color codes and in the frontend.
|
|
32
|
+
* @param {PlatformConfig} config - The platform configuration.
|
|
33
|
+
* @returns {LightwaveRfPlatform} - An instance of the MatterbridgeAccessory or MatterbridgeDynamicPlatform class. This is the main interface for interacting with the Matterbridge system.
|
|
34
|
+
*/
|
|
3
35
|
export default function initializePlugin(matterbridge, log, config) {
|
|
4
36
|
return new LightwaveRfPlatform(matterbridge, log, config);
|
|
5
37
|
}
|
|
38
|
+
// Here we define the TemplatePlatform class, which extends the MatterbridgeDynamicPlatform.
|
|
39
|
+
// If you want to create an Accessory platform plugin, you should extend the MatterbridgeAccessoryPlatform class instead.
|
|
6
40
|
export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
7
41
|
client;
|
|
8
42
|
constructor(matterbridge, log, config) {
|
|
43
|
+
// Always call super(matterbridge, log, config)
|
|
9
44
|
super(matterbridge, log, config);
|
|
45
|
+
// Verify that Matterbridge is the correct version
|
|
10
46
|
if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.3.0')) {
|
|
11
47
|
throw new Error(`This plugin requires Matterbridge version >= "3.3.0". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend."`);
|
|
12
48
|
}
|
|
@@ -18,21 +54,30 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
18
54
|
}
|
|
19
55
|
async onStart(reason) {
|
|
20
56
|
this.log.info(`onStart called with reason: ${reason ?? 'none'}`);
|
|
57
|
+
// Wait for the platform to fully load the select
|
|
21
58
|
await this.ready;
|
|
59
|
+
// Clean the selectDevice and selectEntity maps, if you want to reset the select.
|
|
22
60
|
await this.clearSelect();
|
|
61
|
+
// Implements your own logic there
|
|
23
62
|
await this.establishConnection();
|
|
24
63
|
}
|
|
25
64
|
async onConfigure() {
|
|
65
|
+
// Always call super.onConfigure()
|
|
26
66
|
await super.onConfigure();
|
|
27
67
|
this.log.info('onConfigure called, what do we do here?');
|
|
68
|
+
// Configure all your devices. The persisted attributes need to be updated.
|
|
28
69
|
for (const device of this.getDevices()) {
|
|
29
70
|
this.log.info(`Configuring device: ${device.uniqueId}`);
|
|
71
|
+
// You can update the device configuration here, for example:
|
|
72
|
+
// device.updateConfiguration({ key: 'value' });
|
|
30
73
|
}
|
|
31
74
|
}
|
|
32
75
|
async onChangeLoggerLevel(logLevel) {
|
|
33
76
|
this.log.info(`onChangeLoggerLevel called with: ${logLevel}`);
|
|
77
|
+
// Change here the logger level of the api you use or of your devices
|
|
34
78
|
}
|
|
35
79
|
async onShutdown(reason) {
|
|
80
|
+
// Always call super.onShutdown(reason)
|
|
36
81
|
await super.onShutdown(reason);
|
|
37
82
|
this.log.info(`onShutdown called with reason: ${reason ?? 'none'}`);
|
|
38
83
|
if (this.config.unregisterOnShutdown === true)
|
|
@@ -40,6 +85,9 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
40
85
|
}
|
|
41
86
|
async establishConnection() {
|
|
42
87
|
this.log.info('Discovering devices...');
|
|
88
|
+
// Implement device discovery logic here.
|
|
89
|
+
// For example, you might fetch devices from an API.
|
|
90
|
+
// and register them with the Matterbridge instance.
|
|
43
91
|
await this.client.connect();
|
|
44
92
|
this.log.info('Connected to LightwaveRF');
|
|
45
93
|
const isRegistered = await this.client.isRegistered();
|
|
@@ -47,22 +95,26 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
47
95
|
this.updateDevices();
|
|
48
96
|
return;
|
|
49
97
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
98
|
+
const registerButton = new MatterbridgeEndpoint(onOffOutlet, { uniqueStorageKey: 'registerButton1' })
|
|
99
|
+
.createDefaultBridgedDeviceBasicInformationClusterServer('Register Button', 'SN000002', this.matterbridge.aggregatorVendorId, 'Matterbridge', 'Matterbridge Register Button', 10000, '1.0.0')
|
|
100
|
+
.createDefaultPowerSourceWiredClusterServer()
|
|
101
|
+
.addRequiredClusterServers()
|
|
102
|
+
.addCommandHandler('on', async (data) => {
|
|
103
|
+
this.log.info(`Command on called on cluster ${data.cluster}`);
|
|
104
|
+
await this.client.ensureRegistration();
|
|
105
|
+
// Fireoff device discovery
|
|
106
|
+
this.updateDevices();
|
|
107
|
+
this.log.info('Registered with LightwaveRF');
|
|
108
|
+
registerButton.updateAttribute(data.cluster, 'onOff', false, this.log);
|
|
109
|
+
setImmediate(() => {
|
|
110
|
+
// Remove button after successful registration
|
|
111
|
+
this.unregisterDevice(registerButton);
|
|
63
112
|
});
|
|
64
|
-
|
|
65
|
-
|
|
113
|
+
})
|
|
114
|
+
.addCommandHandler('off', (data) => {
|
|
115
|
+
this.log.info(`Command off called on cluster ${data.cluster}`);
|
|
116
|
+
});
|
|
117
|
+
await this.registerDevice(registerButton);
|
|
66
118
|
}
|
|
67
119
|
async updateDevices() {
|
|
68
120
|
const devices = await this.client.getDevices();
|
|
@@ -83,7 +135,7 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
83
135
|
};
|
|
84
136
|
if (device.deviceType === 'D') {
|
|
85
137
|
const dimmer = new MatterbridgeEndpoint(dimmableLight, { uniqueStorageKey: uniqueDeviceId })
|
|
86
|
-
.createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, 'SN000001', this.matterbridge.aggregatorVendorId, '
|
|
138
|
+
.createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, this.client.version ?? 'SN000001', this.matterbridge.aggregatorVendorId, 'Lightwave', 'Dimmer', 10000, this.client.version ?? '1.0.0')
|
|
87
139
|
.createDefaultPowerSourceWiredClusterServer()
|
|
88
140
|
.addRequiredClusterServers()
|
|
89
141
|
.addCommandHandler('on', deviceOn)
|
|
@@ -94,7 +146,7 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
94
146
|
}
|
|
95
147
|
else {
|
|
96
148
|
const onOff = new MatterbridgeEndpoint(onOffLight, { uniqueStorageKey: uniqueDeviceId })
|
|
97
|
-
.createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, 'SN000001', this.matterbridge.aggregatorVendorId, '
|
|
149
|
+
.createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, this.client.version ?? 'SN000001', this.matterbridge.aggregatorVendorId, 'Lightwave', 'Light switch', 10000, this.client.version ?? '1.0.0')
|
|
98
150
|
.createDefaultPowerSourceWiredClusterServer()
|
|
99
151
|
.addRequiredClusterServers()
|
|
100
152
|
.addCommandHandler('on', deviceOn)
|
|
@@ -104,3 +156,4 @@ export class LightwaveRfPlatform extends MatterbridgeDynamicPlatform {
|
|
|
104
156
|
}
|
|
105
157
|
}
|
|
106
158
|
}
|
|
159
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Lightwave Matterbridge plugin",
|
|
3
|
+
"description": "Connects to Lightwave connect series cloud and device to control all Lighwave devices in the home",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"description": "Plugin name",
|
|
8
|
+
"type": "string",
|
|
9
|
+
"readOnly": true
|
|
10
|
+
},
|
|
11
|
+
"type": {
|
|
12
|
+
"description": "Plugin type",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"readOnly": true
|
|
15
|
+
},
|
|
16
|
+
"debug": {
|
|
17
|
+
"description": "Enable the debug for the plugin (development only)",
|
|
18
|
+
"type": "boolean",
|
|
19
|
+
"default": false
|
|
20
|
+
},
|
|
21
|
+
"unregisterOnShutdown": {
|
|
22
|
+
"description": "Unregister all devices on shutdown (development only)",
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"default": false
|
|
25
|
+
},
|
|
26
|
+
"email": {
|
|
27
|
+
"description": "Email to use to login to Lightwave cloud",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"format": "email"
|
|
30
|
+
},
|
|
31
|
+
"pin": {
|
|
32
|
+
"description": "PIN to use to login to Lightwave cloud",
|
|
33
|
+
"type": "string"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-plugin-lightwaverf",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Matterbridge LightwaveRF Plugin",
|
|
5
|
-
"author": "https://github.com/
|
|
6
|
-
"homepage": "https://github.com/
|
|
5
|
+
"author": "https://github.com/eu-evops",
|
|
6
|
+
"homepage": "https://github.com/eu-evops/matterbridge-plugin-lightwaverf/blob/main/README.md",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "dist/module.js",
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
},
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/
|
|
15
|
+
"url": "git+https://github.com/eu-evops/matterbridge-plugin-lightwaverf.git"
|
|
16
16
|
},
|
|
17
17
|
"bugs": {
|
|
18
|
-
"url": "https://github.com/
|
|
18
|
+
"url": "https://github.com/eu-evops/matterbridge-plugin-lightwaverf/issues"
|
|
19
19
|
},
|
|
20
20
|
"funding": {
|
|
21
21
|
"type": "buymeacoffee",
|
|
@@ -46,4 +46,4 @@
|
|
|
46
46
|
"node-ansi-logger": "3.1.1",
|
|
47
47
|
"node-persist-manager": "2.0.0"
|
|
48
48
|
}
|
|
49
|
-
}
|
|
49
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"OO,LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
254
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"OO,LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
254
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
true
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
false
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
false
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
false
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
false
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
false
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.__number__
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"OO,LT"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
254
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"LT"
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.onOff.onOff
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
true
|
package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.outlet1.__number__
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|