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.
Files changed (137) hide show
  1. package/.matterbridge/history.html +741 -0
  2. package/.matterbridge/matterbridge-plugin-lightwaverf/.endpointNumbers/d5f2123da1d74aca3d92becc86a19e3801b42e9c02634c7d4b37dbb2c5a8e9aa +1 -1
  3. package/.matterbridge/matterbridge-plugin-lightwaverf/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -1
  4. package/.matterbridge/matterbridge-plugin-lightwaverf.config.json +2 -2
  5. package/.matterbridge/matterbridge-xiaomi-roborock/.endpointNumbers/d5f2123da1d74aca3d92becc86a19e3801b42e9c02634c7d4b37dbb2c5a8e9aa +1 -0
  6. package/.matterbridge/matterbridge-xiaomi-roborock/.selectDevice/3385b8752965077f9e52e27c413425a5f84ed89078acebbc1964f21d80c74bc9 +1 -0
  7. package/.matterbridge/matterbridge-xiaomi-roborock/.selectEntity/969dcec331a5f15e8672c8833573cff0aad3831a586ec33e8290d84c80a2dc2d +1 -0
  8. package/.matterbridge/matterbridge-xiaomi-roborock/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -0
  9. package/.matterbridge/matterbridge-xiaomi-roborock.config.json +15 -0
  10. package/.matterbridge/matterstorage/Matterbridge/events.lastEventNumber +1 -1
  11. package/.matterbridge/matterstorage/Matterbridge/fabrics.fabrics +1 -1
  12. package/.matterbridge/matterstorage/Matterbridge/fabrics.nextFabricIndex +1 -1
  13. package/.matterbridge/matterstorage/Matterbridge/persist.serialNumber +1 -1
  14. package/.matterbridge/matterstorage/Matterbridge/persist.uniqueId +1 -1
  15. package/.matterbridge/matterstorage/Matterbridge/root.__nextNumber__ +1 -1
  16. package/.matterbridge/matterstorage/Matterbridge/root.accessControl.acl +1 -1
  17. package/.matterbridge/matterstorage/Matterbridge/root.generalDiagnostics.rebootCount +1 -1
  18. package/.matterbridge/matterstorage/Matterbridge/root.generalDiagnostics.totalOperationalHoursCounter +1 -1
  19. package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.commissionedFabrics +1 -1
  20. package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.fabrics +1 -1
  21. package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.nocs +1 -1
  22. package/.matterbridge/matterstorage/Matterbridge/root.operationalCredentials.trustedRootCertificates +1 -1
  23. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-1.__number__ +1 -1
  24. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-2.__number__ +1 -1
  25. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.1-4.__number__ +1 -1
  26. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.10-1.__number__ +1 -1
  27. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.11-1.__number__ +1 -1
  28. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-2.__number__ +1 -1
  29. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-3.__number__ +1 -1
  30. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-1.__number__ +1 -1
  31. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-1.onOff.onOff +1 -1
  32. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.__number__ +1 -1
  33. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.__number__ +1 -1
  34. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.__number__ +1 -1
  35. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-1.__number__ +1 -1
  36. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.__number__ +1 -1
  37. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.5-1.__number__ +1 -1
  38. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.6-1.__number__ +1 -1
  39. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.7-1.__number__ +1 -1
  40. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.__number__ +1 -1
  41. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.__number__ +1 -1
  42. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-3.__number__ +1 -1
  43. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.__number__ +1 -1
  44. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.RestartMatterbridge%3Aoutlet.bridgedDeviceBasicInformation.uniqueId +1 -1
  45. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.bridgedDeviceBasicInformation.uniqueId +1 -1
  46. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.part2.__number__ +1 -0
  47. package/.matterbridge/matterstorage/Matterbridge/root.subscription.subscriptions +1 -1
  48. package/.matterbridge/matterstorage/Matterbridge/sessions.resumptionRecords +1 -1
  49. package/.matterbridge/matterstorage/Roborock/events.lastEventNumber +1 -0
  50. package/.matterbridge/matterstorage/Roborock/fabrics.fabrics +1 -0
  51. package/.matterbridge/matterstorage/Roborock/fabrics.nextFabricIndex +1 -0
  52. package/.matterbridge/matterstorage/Roborock/persist.deviceName +1 -0
  53. package/.matterbridge/matterstorage/Roborock/persist.deviceType +1 -0
  54. package/.matterbridge/matterstorage/Roborock/persist.hardwareVersion +1 -0
  55. package/.matterbridge/matterstorage/Roborock/persist.hardwareVersionString +1 -0
  56. package/.matterbridge/matterstorage/Roborock/persist.nodeLabel +1 -0
  57. package/.matterbridge/matterstorage/Roborock/persist.productId +1 -0
  58. package/.matterbridge/matterstorage/Roborock/persist.productLabel +1 -0
  59. package/.matterbridge/matterstorage/Roborock/persist.productName +1 -0
  60. package/.matterbridge/matterstorage/Roborock/persist.serialNumber +1 -0
  61. package/.matterbridge/matterstorage/Roborock/persist.softwareVersion +1 -0
  62. package/.matterbridge/matterstorage/Roborock/persist.softwareVersionString +1 -0
  63. package/.matterbridge/matterstorage/Roborock/persist.storeId +1 -0
  64. package/.matterbridge/matterstorage/Roborock/persist.uniqueId +1 -0
  65. package/.matterbridge/matterstorage/Roborock/persist.vendorId +1 -0
  66. package/.matterbridge/matterstorage/Roborock/persist.vendorName +1 -0
  67. package/.matterbridge/matterstorage/Roborock/root.__nextNumber__ +1 -0
  68. package/.matterbridge/matterstorage/Roborock/root.__number__ +1 -0
  69. package/.matterbridge/matterstorage/Roborock/root.accessControl.__features__ +1 -0
  70. package/.matterbridge/matterstorage/Roborock/root.accessControl.acl +1 -0
  71. package/.matterbridge/matterstorage/Roborock/root.basicInformation.location +1 -0
  72. package/.matterbridge/matterstorage/Roborock/root.generalCommissioning.__features__ +1 -0
  73. package/.matterbridge/matterstorage/Roborock/root.generalCommissioning.breadcrumb +1 -0
  74. package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.__features__ +1 -0
  75. package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.rebootCount +1 -0
  76. package/.matterbridge/matterstorage/Roborock/root.generalDiagnostics.totalOperationalHoursCounter +1 -0
  77. package/.matterbridge/matterstorage/Roborock/root.network.operationalPort +1 -0
  78. package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.commissionedFabrics +1 -0
  79. package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.fabrics +1 -0
  80. package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.nocs +1 -0
  81. package/.matterbridge/matterstorage/Roborock/root.operationalCredentials.trustedRootCertificates +1 -0
  82. package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.__number__ +1 -0
  83. package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.identify.identifyTime +1 -0
  84. package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.rvcRunMode.__features__ +1 -0
  85. package/.matterbridge/matterstorage/Roborock/root.parts.Roborock-R0514S03600279.rvcRunMode.currentMode +1 -0
  86. package/.matterbridge/matterstorage/Roborock/root.productDescription.productId +1 -0
  87. package/.matterbridge/matterstorage/Roborock/root.productDescription.vendorId +1 -0
  88. package/.matterbridge/matterstorage/Roborock/root.subscription.subscriptions +1 -0
  89. package/.matterbridge/matterstorage/Roborock/sessions.resumptionRecords +1 -0
  90. package/.matterbridge/storage/.matterbridge/92cd10e6b8b068a931196d1d73a032543d5ca1a5bf445e27a1af74258254517c +1 -1
  91. package/.matterbridge/storage/.matterbridge/e3e931e87ead058805e8517be81328fbf7b0e04c5d78abdd4ca713df24d773fb +1 -1
  92. package/.matterbridge/storage/.matterbridge/e8f5b65c0535f90fae75a1c5e080593fdc2a490e22d5e21ea67a88cea7c1d794 +1 -1
  93. package/.matterbridge/storage/.matterbridge-plugin-lightwaverf/5ca4f3850ccc331aaf8a257d6086e526a3b42a63e18cb11d020847985b31d188 +1 -1
  94. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/1303c06b0b014d0ce7b988ab173a13f31227d417058ff4bbe6f8c222b4ad913c +1 -0
  95. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/5ca4f3850ccc331aaf8a257d6086e526a3b42a63e18cb11d020847985b31d188 +1 -0
  96. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/636485868971eac5aca33c4a0e1800a8a11d980bcf0e3776b31002e2c5db91b2 +1 -0
  97. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/82a3537ff0dbce7eec35d69edc3a189ee6f17d82f353a553f9aa96cb0be3ce89 +1 -0
  98. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/a0af9f865bf637e6736817f4ce552e4cdf7b8c36ea75bc254c1d1f0af744b5bf +1 -0
  99. package/.matterbridge/storage/.matterbridge-xiaomi-roborock/c9046f7a37ad0ea7cee73355984fa5428982f8b37c8f7bcec91f7ac71a7cd104 +1 -0
  100. package/.matterbridge/storage/0d0a2ac6163e36f3f2349c77671004edfe3d5e1abbef93cbb583acec8d01481b +1 -1
  101. package/README.md +192 -56
  102. package/dist/module.d.ts.map +1 -0
  103. package/dist/module.js +70 -17
  104. package/dist/module.js.map +1 -0
  105. package/matterbridge-plugin-lightwaverf.schema.json +36 -0
  106. package/package.json +6 -6
  107. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.2-2.onOff.__features__ +0 -1
  108. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.levelControl.__features__ +0 -1
  109. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.levelControl.currentLevel +0 -1
  110. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-2.onOff.__features__ +0 -1
  111. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.levelControl.__features__ +0 -1
  112. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.levelControl.currentLevel +0 -1
  113. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-3.onOff.__features__ +0 -1
  114. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.onOff.__features__ +0 -1
  115. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.3-4.onOff.onOff +0 -1
  116. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.onOff.__features__ +0 -1
  117. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.4-2.onOff.onOff +0 -1
  118. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.onOff.__features__ +0 -1
  119. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-1.onOff.onOff +0 -1
  120. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.onOff.__features__ +0 -1
  121. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.8-2.onOff.onOff +0 -1
  122. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.onOff.__features__ +0 -1
  123. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.9-1.onOff.onOff +0 -1
  124. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.onOff.__features__ +0 -1
  125. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.UpdateMatterbridge%3Aoutlet.onOff.onOff +0 -1
  126. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.__number__ +0 -1
  127. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.levelControl.__features__ +0 -1
  128. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.levelControl.currentLevel +0 -1
  129. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.onOff.__features__ +0 -1
  130. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.dimmer1.onOff.onOff +0 -1
  131. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.outlet1.__number__ +0 -1
  132. package/.matterbridge/matterstorage/Matterbridge/root.parts.Matterbridge.parts.registerButton1.__number__ +0 -1
  133. /package/.matterbridge/matterstorage/Matterbridge/{root.parts.Matterbridge.parts.11-1.onOff.__features__ → root.parts.Matterbridge.parts.2-3.onOff.__features__} +0 -0
  134. /package/.matterbridge/matterstorage/Matterbridge/{root.parts.Matterbridge.parts.11-1.onOff.onOff → root.parts.Matterbridge.parts.2-3.onOff.onOff} +0 -0
  135. /package/.matterbridge/matterstorage/{Matterbridge/root.parts.Matterbridge.parts.3-3.onOff.onOff → Roborock/root.commissioning.commissioned} +0 -0
  136. /package/.matterbridge/matterstorage/{Matterbridge/root.parts.Matterbridge.parts.2-2.onOff.onOff → Roborock/root.network.ble} +0 -0
  137. /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">&nbsp;&nbsp;&nbsp;Matterbridge Plugin Template
1
+ # <img src="matterbridge.svg" alt="Matterbridge Logo" width="64px" height="64px">&nbsp;&nbsp;&nbsp;Matterbridge LightWaveRF Plugin
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
4
- [![npm downloads](https://img.shields.io/npm/dt/matterbridge.svg)](https://www.npmjs.com/package/matterbridge)
5
- [![Docker Version](https://img.shields.io/docker/v/luligu/matterbridge?label=docker%20version&sort=semver)](https://hub.docker.com/r/luligu/matterbridge)
6
- [![Docker Pulls](https://img.shields.io/docker/pulls/luligu/matterbridge.svg)](https://hub.docker.com/r/luligu/matterbridge)
7
- ![Node.js CI](https://github.com/Luligu/matterbridge-plugin-template/actions/workflows/build-matterbridge-plugin.yml/badge.svg)
8
- ![CodeQL](https://github.com/Luligu/matterbridge-plugin-template/actions/workflows/codeql.yml/badge.svg)
9
- [![codecov](https://codecov.io/gh/Luligu/matterbridge-plugin-template/branch/main/graph/badge.svg)](https://codecov.io/gh/Luligu/matterbridge-plugin-template)
3
+ [![npm version](https://img.shields.io/npm/v/matterbridge-plugin-lightwaverf.svg)](https://www.npmjs.com/package/matterbridge-plugin-lightwaverf)
4
+ [![npm downloads](https://img.shields.io/npm/dt/matterbridge-plugin-lightwaverf.svg)](https://www.npmjs.com/package/matterbridge-plugin-lightwaverf)
10
5
 
11
6
  [![powered by](https://img.shields.io/badge/powered%20by-matterbridge-blue)](https://www.npmjs.com/package/matterbridge)
12
- [![powered by](https://img.shields.io/badge/powered%20by-matter--history-blue)](https://www.npmjs.com/package/matter-history)
7
+ [![powered by](https://img.shields.io/badge/powered%20by-@evops/lightwaverf-blue)](https://www.npmjs.com/package/@evops/lightwaverf)
13
8
  [![powered by](https://img.shields.io/badge/powered%20by-node--ansi--logger-blue)](https://www.npmjs.com/package/node-ansi-logger)
14
9
  [![powered by](https://img.shields.io/badge/powered%20by-node--persist--manager-blue)](https://www.npmjs.com/package/node-persist-manager)
15
10
 
16
- This repository provides a default template for developing Matterbridge plugins.
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 [Matterbridge Plugin Template](https://github.com/Luligu/matterbridge-plugin-template) and sponsoring it.
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/luligugithub">
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
- ## Features
19
+ ## What This Plugin Does
25
20
 
26
- - **Dev Container support for instant development environment**.
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
- ## Available workflows
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
- The project has the following already configured workflows:
29
+ ## How It Works
35
30
 
36
- - build-matterbridge-plugin.yml: run on push and pull request and build, lint and test the plugin on node 20, 22 and 24 with ubuntu, macOS and windows.
37
- - publish-matterbridge-plugin.yml: publish on npm when you create a new release in GitHub. Add your NPM_TOKEN to the repository secrets.
38
- - publish-matterbridge-plugin-dev-daily-from-dev.yml: publish a dev on npm from main branch every day at midnight UTC if there is a new commit. Add your NPM_TOKEN to the repository secrets.
39
- - publish-matterbridge-plugin-dev-daily-from-main.yml: publish a dev on npm from dev branch every day at midnight UTC if there is a new commit. Add your NPM_TOKEN to the repository secrets.
40
- - codeql.yml: run CodeQL from the main branch on each push and pull request.
41
- - codecov.yml: run CodeCov from the main branch on each push and pull request. You need a codecov account and add your CODECOV_TOKEN to the repository secrets.
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
- ## ⚠️ Warning: GitHub Actions Costs for Private Repositories
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
- **Important**: If you plan to use this template in a **private repository**, be aware that GitHub Actions usage may incur costs:
47
+ ## Requirements
46
48
 
47
- - **Free tier limits**: Private repositories have limited free GitHub Actions minutes per month (2,000 minutes for free accounts).
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
- **Recommendations for private repos**:
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
- - Monitor your GitHub Actions usage in your account settings
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
- ## Getting Started
59
+ ### 1. Install via Matterbridge UI
60
60
 
61
- 1. Create a repository from this template using the [template feature of GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template).
62
- 2. Clone it locally and open the cloned folder project with [VS Code](https://code.visualstudio.com/). If you have docker or docker desktop, just run `code .`.
63
- 3. When prompted, reopen in the devcontainer. VS Code will automatically build and start the development environment with all dependencies installed.
64
- 4. Update the code and configuration files as needed for your plugin.
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
- ## Using the Dev Container
66
+ ### 2. Install via Command Line
68
67
 
69
- - Docker Desktop or Docker Engine are required to use the Dev Container.
70
- - Devcontainer works correctly on Linux, macOS, Windows, WSL2.
71
- - The devcontainer provides Node.js, npm, TypeScript, ESLint, Prettier, Jest, Vitest and other tools and extensions pre-installed and configured.
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
- ## Documentation
72
+ ## Configuration
81
73
 
82
- Refer to the Matterbridge documentation for other guidelines.
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
- if (!isRegistered) {
51
- const registerButton = new MatterbridgeEndpoint(onOffOutlet, { uniqueStorageKey: 'registerButton1' })
52
- .createDefaultBridgedDeviceBasicInformationClusterServer('Register Button', 'SN000002', this.matterbridge.aggregatorVendorId, 'Matterbridge', 'Matterbridge Register Button', 10000, '1.0.0')
53
- .createDefaultPowerSourceWiredClusterServer()
54
- .addRequiredClusterServers()
55
- .addCommandHandler('on', async (data) => {
56
- this.log.info(`Command on called on cluster ${data.cluster}`);
57
- await this.client.ensureRegistration();
58
- this.log.info('Registered with LightwaveRF');
59
- registerButton.updateAttribute(data.cluster, 'onOff', false, this.log);
60
- })
61
- .addCommandHandler('off', (data) => {
62
- this.log.info(`Command off called on cluster ${data.cluster}`);
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
- await this.registerDevice(registerButton);
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, 'Matterbridge', 'Matterbridge Dimmer', 10000, '1.0.0')
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, 'Matterbridge', 'Matterbridge Dimmer', 10000, '1.0.0')
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.0",
3
+ "version": "1.0.2",
4
4
  "description": "Matterbridge LightwaveRF Plugin",
5
- "author": "https://github.com/sponte",
6
- "homepage": "https://github.com/sponte/matterbridge-plugin-lightwaverf/blob/main/README.md",
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/sponte/matterbridge-plugin-lightwaverf.git"
15
+ "url": "git+https://github.com/eu-evops/matterbridge-plugin-lightwaverf.git"
16
16
  },
17
17
  "bugs": {
18
- "url": "https://github.com/sponte/matterbridge-plugin-lightwaverf/issues"
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
+ }