node-red-contrib-zwave-js 6.5.3 → 6.5.4
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 +11 -0
- package/GHImages/ControllerNode.PNG +0 -0
- package/GHImages/Demo.png +0 -0
- package/GHImages/DeviceNode.PNG +0 -0
- package/GHImages/Factory.PNG +0 -0
- package/GHImages/FilterNode.PNG +0 -0
- package/GHImages/GUIscreen.png +0 -0
- package/GHImages/INTRO_CommandFactory.png +0 -0
- package/GHImages/INTRO_ControllerSerialPort.png +0 -0
- package/GHImages/INTRO_DeviceNode.png +0 -0
- package/GHImages/INTRO_EventFilter.gif +0 -0
- package/GHImages/INTRO_UIBottomHalf.png +0 -0
- package/GHImages/INTRO_UITopHalf.png +0 -0
- package/GHImages/ReadMe.png +0 -0
- package/GHImages/ZWUI.gif +0 -0
- package/README.md +3 -3
- package/examples/Full Example.json +1 -0
- package/package.json +9 -8
- package/validation_result.json +18 -0
- package/zwave-js/ui/server.js +2 -5
- package/zwave-js/ui/smartstart/server.js +33 -38
- package/zwave-js/zwave-js.html +56 -14
- package/zwave-js/ui/Exclude.png +0 -0
- package/zwave-js/ui/Include.png +0 -0
- package/zwave-js/ui/NodeAdded.png +0 -0
- package/zwave-js/ui/NodeError.png +0 -0
- package/zwave-js/ui/NodeRemoved.png +0 -0
- package/zwave-js/ui/client.js +0 -2678
- package/zwave-js/ui/handlebars.min.js +0 -29
- package/zwave-js/ui/jquery-steps.css +0 -71
- package/zwave-js/ui/jquery-steps.min.js +0 -8
- package/zwave-js/ui/qrcode.min.js +0 -1
- package/zwave-js/ui/smartstart/certificate.p12 +0 -0
- package/zwave-js/ui/smartstart/ui/Livescan.html +0 -82
- package/zwave-js/ui/smartstart/ui/Scanchoice.html +0 -49
- package/zwave-js/ui/smartstart/ui/Snapscan.html +0 -83
- package/zwave-js/ui/smartstart/ui/jquery-3.6.0.min.js +0 -2
- package/zwave-js/ui/smartstart/ui/jsQR.js +0 -10124
- package/zwave-js/ui/smartstart/ui/scripts.js +0 -219
- package/zwave-js/ui/styles.css +0 -178
- package/zwave-js/ui/vis-network.min.js +0 -49
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# node-red-contrib-zwave-js Change Log
|
|
2
2
|
|
|
3
|
+
- 6.5.4
|
|
4
|
+
|
|
5
|
+
**Changes**
|
|
6
|
+
- Smart Start Web Application, has been moved to use the express instance provided by Node RED
|
|
7
|
+
- Live QR Scanning now requires Node RED to be SSL Enabled - basic QR capture can still be used without SSL.
|
|
8
|
+
- Added Min Node RED Version to package.json
|
|
9
|
+
- Switched static resources to use /resources/ endpoint provided by Node RED
|
|
10
|
+
- Added node examples
|
|
11
|
+
- Bump Zwave JS to 8.11.3
|
|
12
|
+
- Bump ESLint to 8.8.0
|
|
13
|
+
|
|
3
14
|
- 6.5.3
|
|
4
15
|
|
|
5
16
|
**Fixes**
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
3
|
# node-red-contrib-zwave-js
|
|
4
4
|
|
|
@@ -37,13 +37,13 @@ Since `node-red-contrib-zwave-js` is based on [Z-Wave JS](https://zwave-js.githu
|
|
|
37
37
|
|
|
38
38
|
### The User Interface
|
|
39
39
|
|
|
40
|
-

|
|
41
41
|
|
|
42
42
|
Included with the contrib is a [user interface](https://github.com/zwave-js/node-red-contrib-zwave-js/wiki/User-Interface) where Z-Wave network management is handled. The controller side of the UI is used to include/exclude devices, heal the network, update firmware, and view the network map for diagnosing problems. The device side of the UI is used to configure devices, manage associations, and provide setup help for the nodes which will be used in your flows.
|
|
43
43
|
|
|
44
44
|
### The Nodes
|
|
45
45
|
|
|
46
|
-

|
|
47
47
|
|
|
48
48
|
There are 4 node types included with this contrib ([click here](https://github.com/zwave-js/node-red-contrib-zwave-js/wiki/node-types) for full details about these nodes)
|
|
49
49
|
- `zwave-js`: this node is used to set up a connection to your USB Z-Wave controller, set security keys, and manage various advanced controller options
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"id":"2f2f5384cf841491","type":"tab","label":"Full Example","disabled":false,"info":"","env":[]},{"id":"159049e0f35da22b","type":"zwave-js","z":"2f2f5384cf841491","d":true,"serialPort":"Select Port","name":"Z-Wave JS Controller","encryptionKey":"","encryptionKeyS2U":"","encryptionKeyS2A":"","encryptionKeyS2AC":"","ackTimeout":"","controllerTimeout":"","sendResponseTimeout":"","sendDataCallback":"","serialAPIStarted":"","logLevelPin":"none","logLevel":"none","logFile":"","logNodeFilter":"","sendUsageStatistics":true,"valueCacheDiskThrottle":"normal","customConfigPath":"","intvwUserCodes":false,"softResetUSB":false,"outputs":1,"disableOptimisticValueUpdate":false,"x":700,"y":160,"wires":[["21a01062cb3b9839"]]},{"id":"68dc316395696ed4","type":"comment","z":"2f2f5384cf841491","name":"Controller Node (Read Me)","info":"The controller node : **zwave-js** \nis the main node. It is the node that all communication is passed.\n\nThis node supports all commands. \n\nTo set it up, double click and select your serial port, \nand if using security, provide your encryption keys (or generate new ones)\n\n**NOTE:** Only 1 copy of this node can be deployed. \nThis node has been disabled, as to not affect any setup you may have already achieved.","x":710,"y":120,"wires":[]},{"id":"6dcd0dc03e0c3559","type":"zwave-device","z":"2f2f5384cf841491","name":"Some Z-Wave Device","filteredNodeId":"All","multicast":false,"datamode":"Send/Receive","messagesPerMS":1,"messageInterval":250,"isolated":false,"outputs":1,"inputs":1,"showStatus":true,"x":860,"y":380,"wires":[["dbb0e87b15b2fd3c"]]},{"id":"dcd9a6bacdcab86b","type":"comment","z":"2f2f5384cf841491","name":"Zwave Device (Read Me)","info":"A single, or mulitple zwave device : **zwave-device**. \nThis node can represent one or multiple zwave devices. \n\nIt communicates with the main **zwave-js** node.\n\nMany copies of this node can be deployed.","x":870,"y":340,"wires":[]},{"id":"42b77dc6dca017d8","type":"function","z":"2f2f5384cf841491","name":"Command","func":"// Changing a Binary Switch State (to true) on node 5\n// You can obtain a ValueID - by double clicking a value title in the UI\n\nlet ValueID = {\n \"commandClassName\": \"Binary Switch\",\n \"commandClass\": 37,\n \"endpoint\": 0,\n \"property\": \"targetValue\",\n \"propertyName\": \"targetValue\"\n}\nlet Message = {\n \"payload\": {\n \"mode\": \"ValueAPI\",\n \"node\": 5,/* This can be omitted, if your device node is set to Specific Node */\n \"method\": \"setValue\",\n \"params\": [ValueID,true]\n }\n}\nreturn Message","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":380,"wires":[["6dcd0dc03e0c3559","59b4cf7d6f673102"]]},{"id":"80583e90febe9a15","type":"inject","z":"2f2f5384cf841491","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":240,"y":380,"wires":[["42b77dc6dca017d8"]]},{"id":"c09caf2bfa47f0f4","type":"comment","z":"2f2f5384cf841491","name":"Manually constructing commands","info":"","x":320,"y":340,"wires":[]},{"id":"a34dcb38a73f4bc4","type":"comment","z":"2f2f5384cf841491","name":"Commands can be sent directly to the controler","info":"","x":460,"y":240,"wires":[]},{"id":"31396cd9b583e1d7","type":"cmd-factory","z":"2f2f5384cf841491","name":"ZWave CMD Factory","node":"Node","endpoint":"","cc":"Select Command Class","method":"Select Method","params":"payload","noEvent":false,"forceUpdate":"forceUpdate","api":"ValueAPI","vapiMode":"setValue","vapiValue":"Value","vapiValueId":"ValueID","vapiOptions":"","x":660,"y":540,"wires":[["6dcd0dc03e0c3559"]]},{"id":"d4cc366646c4013d","type":"comment","z":"2f2f5384cf841491","name":"Constructing commands with CMD-Factory","info":"","x":350,"y":500,"wires":[]},{"id":"8fb56f9d226bef12","type":"function","z":"2f2f5384cf841491","name":"Command Values","func":"// Node, ValueID and Value are referenced in the CMD Factory.\n// It uses JSONata so can be highly configurable.\n\n\nmsg.Node = 5;\nmsg.ValueID = {\n \"commandClassName\": \"Binary Switch\",\n \"commandClass\": 37,\n \"endpoint\": 0,\n \"property\": \"targetValue\",\n \"propertyName\": \"targetValue\"\n};\nmsg.Value = false;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":540,"wires":[["31396cd9b583e1d7"]]},{"id":"83159be8b5438fc4","type":"inject","z":"2f2f5384cf841491","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":240,"y":540,"wires":[["8fb56f9d226bef12"]]},{"id":"dbb0e87b15b2fd3c","type":"event-filter","z":"2f2f5384cf841491","name":"ZWave Event Filter","filters":[{"index":0,"name":"Temp Changes","valueIds":[{"commandClassName":"Multilevel Sensor","commandClass":49,"endpoint":0,"property":"Air temperature","propertyName":"Air temperature"}],"events":["VALUE_UPDATED"],"strict":false,"id":"210290","_id":0},{"index":1,"name":"Light Level Changes","valueIds":[{"commandClassName":"Multilevel Sensor","commandClass":49,"endpoint":0,"property":"Illuminance","propertyName":"Illuminance"}],"events":["VALUE_UPDATED"],"strict":false,"id":"293826","_id":1}],"outputs":2,"changeDate":"2022-02-01T16:55:32.003Z","showStatus":true,"x":1210,"y":380,"wires":[["899af27929142c45"],["f7d66b6a07aa4868"]]},{"id":"f662f69f25a23e83","type":"comment","z":"2f2f5384cf841491","name":"Event Filter (Read Me)","info":"A node to split/ route events : **event-filter**. \nThis node can direct various events and ValueIDs out to different paths. \n\nEach filter can group 1 or more ValueIDs - you can add them from the UI. \ndouble click a value title and choose 'Add To Filter Set' whilst a filter set is expaned","x":1220,"y":340,"wires":[]},{"id":"59b4cf7d6f673102","type":"change","z":"2f2f5384cf841491","name":"","rules":[],"action":"","property":"","from":"","to":"","reg":false,"x":555,"y":160,"wires":[[]],"l":false},{"id":"899af27929142c45","type":"function","z":"2f2f5384cf841491","name":"Do something with temp change value","func":"const Temp = msg.payload.object.newValue","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":340,"wires":[[]]},{"id":"f7d66b6a07aa4868","type":"function","z":"2f2f5384cf841491","name":"Do something with light level change value","func":"const Lux = msg.payload.object.newValue","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1550,"y":400,"wires":[[]]},{"id":"21a01062cb3b9839","type":"change","z":"2f2f5384cf841491","name":"","rules":[],"action":"","property":"","from":"","to":"","reg":false,"x":1075,"y":360,"wires":[[]],"l":false},{"id":"a13f0bc39b98b13e","type":"comment","z":"2f2f5384cf841491","name":"The controller also emits all events","info":"","x":960,"y":240,"wires":[]}]
|
package/package.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-red-contrib-zwave-js",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "An extremely powerful, easy to use, and feature rich Z-Wave node for Node Red, based on Z-Wave JS.",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"express": "^4.17.2",
|
|
8
7
|
"limiter": "^2.1.0",
|
|
9
8
|
"lodash": "^4.17.21",
|
|
10
9
|
"serialport": "9.2.8",
|
|
11
|
-
"winston": "^3.5.
|
|
10
|
+
"winston": "^3.5.1",
|
|
12
11
|
"winston-transport": "^4.4.2",
|
|
13
|
-
"zwave-js": "^8.11.
|
|
14
|
-
"ip": "^1.1.5"
|
|
12
|
+
"zwave-js": "^8.11.3"
|
|
15
13
|
},
|
|
16
14
|
"devDependencies": {
|
|
17
|
-
"eslint": "^8.
|
|
15
|
+
"eslint": "^8.8.0",
|
|
18
16
|
"prettier": "^2.5.1"
|
|
19
17
|
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"validate": "node-red-dev validate -o validation_result.json"
|
|
20
|
+
},
|
|
20
21
|
"engines": {
|
|
21
|
-
"node": ">=12.22.2"
|
|
22
|
-
"npm": ">=6.14.13"
|
|
22
|
+
"node": ">=12.22.2"
|
|
23
23
|
},
|
|
24
24
|
"keywords": [
|
|
25
25
|
"node-red",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"home"
|
|
33
33
|
],
|
|
34
34
|
"node-red": {
|
|
35
|
+
"version": ">=2.0.0",
|
|
35
36
|
"nodes": {
|
|
36
37
|
"zwave-js": "zwave-js/zwave-js.js",
|
|
37
38
|
"zwave-device": "zwave-js/zwave-device.js",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"package": { "name": "node-red-contrib-zwave-js", "version": "6.5.4" },
|
|
3
|
+
"P01": { "test": true, "license": "MIT" },
|
|
4
|
+
"P03": { "test": true },
|
|
5
|
+
"P04": { "test": true },
|
|
6
|
+
"P08": { "test": true },
|
|
7
|
+
"P05": { "test": true },
|
|
8
|
+
"P06": { "test": true, "versions": ["2.2.0"] },
|
|
9
|
+
"P07": { "test": false, "version": ">=12.22.2" },
|
|
10
|
+
"N01": { "test": true },
|
|
11
|
+
"N02": {
|
|
12
|
+
"test": true,
|
|
13
|
+
"nodes": ["zwave-js", "zwave-device", "event-filter", "cmd-factory"]
|
|
14
|
+
},
|
|
15
|
+
"D01": { "test": true, "total": 6 },
|
|
16
|
+
"D02": { "test": true },
|
|
17
|
+
"D03": { "test": true }
|
|
18
|
+
}
|
package/zwave-js/ui/server.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
1
|
const SP = require('serialport');
|
|
3
2
|
const ModulePackage = require('../../package.json');
|
|
4
3
|
const { CommandClasses } = require('@zwave-js/core');
|
|
@@ -244,9 +243,6 @@ module.exports = {
|
|
|
244
243
|
}
|
|
245
244
|
);
|
|
246
245
|
|
|
247
|
-
/* Res */
|
|
248
|
-
RED.httpAdmin.use('/zwave-js/res', express.static(__dirname));
|
|
249
|
-
|
|
250
246
|
// Frimware
|
|
251
247
|
RED.httpAdmin.post(
|
|
252
248
|
'/zwave-js/firmwareupdate/:code',
|
|
@@ -284,13 +280,14 @@ module.exports = {
|
|
|
284
280
|
);
|
|
285
281
|
|
|
286
282
|
// Smart Start
|
|
283
|
+
SmartStart.Prep(RED.httpAdmin);
|
|
287
284
|
RED.httpAdmin.get(
|
|
288
285
|
'/zwave-js/smartstart/:Method',
|
|
289
286
|
RED.auth.needsPermission('flows.write'),
|
|
290
287
|
async (req, res) => {
|
|
291
288
|
switch (req.params.Method) {
|
|
292
289
|
case 'startserver':
|
|
293
|
-
SmartStart.Start(SmartStartCallback).then((QRCode) => {
|
|
290
|
+
SmartStart.Start(SmartStartCallback, req).then((QRCode) => {
|
|
294
291
|
res.status(200);
|
|
295
292
|
res.end(QRCode);
|
|
296
293
|
});
|
|
@@ -1,60 +1,55 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const https = require('https');
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const ip = require('ip');
|
|
6
|
-
|
|
7
|
-
let App;
|
|
8
|
-
let Server;
|
|
9
1
|
let _Callback;
|
|
2
|
+
let _Enabled = false;
|
|
10
3
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
const Prep = (HTTPAdmin) => {
|
|
5
|
+
HTTPAdmin.get('/zwave-js/smartstart-event/started', SendStarted);
|
|
6
|
+
HTTPAdmin.get('/zwave-js/smartstart-event/code/:Code', ParseCode);
|
|
14
7
|
};
|
|
15
8
|
|
|
16
|
-
const
|
|
9
|
+
const CheckStatus = (res) => {
|
|
10
|
+
if (_Enabled) {
|
|
11
|
+
return true;
|
|
12
|
+
} else {
|
|
13
|
+
res.sendStatus(503).end();
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const Start = (Callback, Req) => {
|
|
17
19
|
_Callback = Callback;
|
|
18
|
-
|
|
19
|
-
App.use(express.static(path.join(__dirname, 'ui')));
|
|
20
|
-
App.get('/event.started', SendStarted);
|
|
21
|
-
App.get('/event.code/:Code', ParseCode);
|
|
22
|
-
Server = https.createServer(Options, App);
|
|
20
|
+
_Enabled = true;
|
|
23
21
|
|
|
22
|
+
const Secure = Req.connection.encrypted !== undefined;
|
|
23
|
+
const Prot = Secure ? 'https://' : 'http://';
|
|
24
24
|
return new Promise((resolve) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
ip.address() +
|
|
29
|
-
':' +
|
|
30
|
-
Server.address().port +
|
|
31
|
-
'/Scanchoice.html'
|
|
32
|
-
);
|
|
33
|
-
});
|
|
25
|
+
resolve(
|
|
26
|
+
`${Prot}${Req.headers.host}/resources/node-red-contrib-zwave-js/SmartStart/Scanchoice.html`
|
|
27
|
+
);
|
|
34
28
|
});
|
|
35
29
|
};
|
|
36
30
|
|
|
37
31
|
function SendStarted(req, res) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
if (CheckStatus(res)) {
|
|
33
|
+
_Callback('Started');
|
|
34
|
+
res.status(200);
|
|
35
|
+
res.end();
|
|
36
|
+
}
|
|
41
37
|
}
|
|
42
38
|
|
|
43
39
|
function ParseCode(req, res) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
if (CheckStatus(res)) {
|
|
41
|
+
const Result = _Callback('Code', req.params.Code);
|
|
42
|
+
res.status(200);
|
|
43
|
+
res.end(Result.toString());
|
|
44
|
+
}
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
const Stop = () => {
|
|
50
|
-
|
|
51
|
-
Server.close();
|
|
52
|
-
Server = undefined;
|
|
53
|
-
App = undefined;
|
|
54
|
-
}
|
|
48
|
+
_Enabled = false;
|
|
55
49
|
};
|
|
56
50
|
|
|
57
51
|
module.exports = {
|
|
58
52
|
Start: Start,
|
|
59
|
-
Stop: Stop
|
|
53
|
+
Stop: Stop,
|
|
54
|
+
Prep: Prep
|
|
60
55
|
};
|
package/zwave-js/zwave-js.html
CHANGED
|
@@ -1,15 +1,36 @@
|
|
|
1
|
-
<script
|
|
1
|
+
<script
|
|
2
|
+
type="text/javascript"
|
|
3
|
+
src="resources/node-red-contrib-zwave-js/UITab/handlebars.min.js"
|
|
4
|
+
></script>
|
|
2
5
|
<script>
|
|
3
6
|
Handlebars.registerHelper('inc', function (value, options) {
|
|
4
7
|
return parseInt(value) + 1;
|
|
5
8
|
});
|
|
6
9
|
</script>
|
|
7
|
-
<script
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
10
|
+
<script
|
|
11
|
+
type="text/javascript"
|
|
12
|
+
src="resources/node-red-contrib-zwave-js/UITab/client.js"
|
|
13
|
+
></script>
|
|
14
|
+
<script
|
|
15
|
+
type="text/javascript"
|
|
16
|
+
src="resources/node-red-contrib-zwave-js/UITab/vis-network.min.js"
|
|
17
|
+
></script>
|
|
18
|
+
<script
|
|
19
|
+
type="text/javascript"
|
|
20
|
+
src="resources/node-red-contrib-zwave-js/UITab/jquery-steps.min.js"
|
|
21
|
+
></script>
|
|
22
|
+
<script
|
|
23
|
+
type="text/javascript"
|
|
24
|
+
src="resources/node-red-contrib-zwave-js/UITab/qrcode.min.js"
|
|
25
|
+
></script>
|
|
26
|
+
<link
|
|
27
|
+
rel="stylesheet"
|
|
28
|
+
href="resources/node-red-contrib-zwave-js/UITab/styles.css"
|
|
29
|
+
/>
|
|
30
|
+
<link
|
|
31
|
+
rel="stylesheet"
|
|
32
|
+
href="resources/node-red-contrib-zwave-js/UITab/jquery-steps.css"
|
|
33
|
+
/>
|
|
13
34
|
|
|
14
35
|
<!-- templates used for modal dialogs *-->
|
|
15
36
|
|
|
@@ -206,7 +227,10 @@
|
|
|
206
227
|
<table style='width: 100%; height: 290px;'>
|
|
207
228
|
<tr>
|
|
208
229
|
<td style='text-align: center;'>
|
|
209
|
-
<img
|
|
230
|
+
<img
|
|
231
|
+
src='resources/node-red-contrib-zwave-js/UITab/Include.png'
|
|
232
|
+
width='200px'
|
|
233
|
+
/>
|
|
210
234
|
</td>
|
|
211
235
|
</tr>
|
|
212
236
|
<tr>
|
|
@@ -230,7 +254,10 @@
|
|
|
230
254
|
<table style='width: 100%; height: 290px;'>
|
|
231
255
|
<tr>
|
|
232
256
|
<td style='text-align: center;'>
|
|
233
|
-
<img
|
|
257
|
+
<img
|
|
258
|
+
src='resources/node-red-contrib-zwave-js/UITab/Exclude.png'
|
|
259
|
+
width='200px'
|
|
260
|
+
/>
|
|
234
261
|
</td>
|
|
235
262
|
</tr>
|
|
236
263
|
<tr>
|
|
@@ -388,7 +415,10 @@
|
|
|
388
415
|
<table style='width: 100%; height: 290px;'>
|
|
389
416
|
<tr>
|
|
390
417
|
<td style='text-align: center;'>
|
|
391
|
-
<img
|
|
418
|
+
<img
|
|
419
|
+
src='resources/node-red-contrib-zwave-js/UITab/NodeAdded.png'
|
|
420
|
+
width='200px'
|
|
421
|
+
/>
|
|
392
422
|
</td>
|
|
393
423
|
</tr>
|
|
394
424
|
<tr>
|
|
@@ -406,7 +436,10 @@
|
|
|
406
436
|
<table style='width: 100%; height: 290px;'>
|
|
407
437
|
<tr>
|
|
408
438
|
<td style='text-align: center;'>
|
|
409
|
-
<img
|
|
439
|
+
<img
|
|
440
|
+
src='resources/node-red-contrib-zwave-js/UITab/NodeError.png'
|
|
441
|
+
width='200px'
|
|
442
|
+
/>
|
|
410
443
|
</td>
|
|
411
444
|
</tr>
|
|
412
445
|
<tr>
|
|
@@ -425,7 +458,10 @@
|
|
|
425
458
|
<table style='width: 100%; height: 290px;'>
|
|
426
459
|
<tr>
|
|
427
460
|
<td style='text-align: center;'>
|
|
428
|
-
<img
|
|
461
|
+
<img
|
|
462
|
+
src='resources/node-red-contrib-zwave-js/UITab/NodeRemoved.png'
|
|
463
|
+
width='200px'
|
|
464
|
+
/>
|
|
429
465
|
</td>
|
|
430
466
|
</tr>
|
|
431
467
|
<tr>
|
|
@@ -479,7 +515,10 @@
|
|
|
479
515
|
<table style='width: 100%; height: 290px;'>
|
|
480
516
|
<tr>
|
|
481
517
|
<td style='text-align: center;'>
|
|
482
|
-
<img
|
|
518
|
+
<img
|
|
519
|
+
src='resources/node-red-contrib-zwave-js/UITab/NodeError.png'
|
|
520
|
+
width='200px'
|
|
521
|
+
/>
|
|
483
522
|
</td>
|
|
484
523
|
</tr>
|
|
485
524
|
<tr>
|
|
@@ -593,7 +632,10 @@
|
|
|
593
632
|
<table style='width: 100%; height: 290px;'>
|
|
594
633
|
<tr>
|
|
595
634
|
<td style='text-align: center;'>
|
|
596
|
-
<img
|
|
635
|
+
<img
|
|
636
|
+
src='resources/node-red-contrib-zwave-js/UITab/NodeError.png'
|
|
637
|
+
width='200px'
|
|
638
|
+
/>
|
|
597
639
|
</td>
|
|
598
640
|
</tr>
|
|
599
641
|
<tr>
|
package/zwave-js/ui/Exclude.png
DELETED
|
Binary file
|
package/zwave-js/ui/Include.png
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|