2.3 KiB
Plugins
Plugins are NodeJS packages that can be integrated into Z-Wave JS UI in order to add new awesome features. They have access to all the clients (zwave and mqtt) and express instance.
Usage
A plugin is imported in Z-Wave JS UI using require(pluginName)(context)
where the context provides access to these elements:
zwave
: Z-Wave clientmqtt
: MQTT clientapp
: Express instancelogger
: A logger instance to log things in console/file based on logger general settings
In order to add a plugin you have to specify the absolute/relative path to it or, if it is available as an npm package, you can install it using the command:
npm i my-awesome-plugin
Developing custom Plugins
In order to implement a plugin, you need to create a class with a constructor that accepts a single parameter that is the context we spoke in usage section and a destroy
function that will be called when application is closed or settings updated.
Here is a minimal example of a custom plugin:
function MyPlugin (ctx) {
this.zwave = ctx.zwave
this.mqtt = ctx.mqtt
this.logger = ctx.logger
this.express = ctx.app
// this.express.get('/my-route', function(req, res) {...})
// this.mqtt.publish(...)
// this.zwave.on('valueChanged', onValueChanged)
// ... add all the stuff you need here
}
MyPlugin.prototype.destroy = async function () {
// clean up the state
}
module.export = MyPlugin
Types and interfaces are available here
Available plugins
Here is a list of currently available plugins:
Example usage
For plugins that are not available on npm you could create a plugins
directory on application store
and inside this directory you can install the plugin:
git clone https://github.com/kvaster/zwavejs-prom.git
cd zwavejs-prom
npm install
Now go to UI, Settings tab, General section and under plugins write the path to that folder (better if using a absolute path, for example /usr/app/store/plugins/zwavejs-prom
). Press on SAVE
to store the new settings and your plugin is ready.