Skip to content

Commit

Permalink
Merge pull request #45 from zwave-js/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
marcus-j-davies authored Apr 25, 2021
2 parents 8f263f8 + c5f9f77 commit 8a57e9d
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 7 deletions.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ if this isn't your setup, then please refer to the below guide to install into t

- Do not attempt to install this node, via the palette menu - it will likely not install some serial port stuff.
- Edit the Node Red add-on configuration as below (specifically **system_packages** and **npm_packages**)
- Restart the add-on/Node Red - and you should be ready to go.
- Restart the add-on/Node Red - and you should be ready to go.

```yaml
system_packages:
- make
Expand Down Expand Up @@ -204,6 +205,12 @@ return Message

## Version History

- 3.2.3
- Added **nodeName** and **nodeLocation** to incoming z-wave events, if they are set. ([#44](https://github.com/zwave-js/node-red-contrib-zwave-js/issues/44))
- Added ability to set Node Location in the UI.
- Bump Z-Wave JS
- Fixed read me compatibility with **flows.nodered.org**

- 3.2.2
- Bump Z-Wave JS

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "node-red-contrib-zwave-js",
"version": "3.2.2",
"version": "3.2.3",
"license": "MIT",
"description": "An extremely easy to use, zero dependency and feature rich Z-Wave node for Node Red, based on Z-Wave JS.",
"dependencies": {
"serialport": "9.0.7",
"zwave-js":"7.2.3",
"zwave-js":"7.2.4",
"winston": "3.3.3"
},
"keywords": [
Expand Down
34 changes: 34 additions & 0 deletions zwave-js/ui/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ let ZwaveJsUI = (function () {

$('<span id="zwave-js-selected-node-id">').appendTo(nodeHeader)
$('<span id="zwave-js-selected-node-name">').appendTo(nodeHeader)
$('<span id="zwave-js-selected-node-location">').appendTo(nodeHeader)

$('<button>')
.addClass('red-ui-button red-ui-button-small')
Expand Down Expand Up @@ -239,6 +240,33 @@ let ZwaveJsUI = (function () {
})
.appendTo(rename)

// -- -- -- -- Set location

let relocation = $('<div>').appendTo(nodeOpts)
$('<input>').addClass('red-ui-searchBox-input').hide().appendTo(relocation)
$('<button id="zwave-js-set-node-location">')
.addClass('red-ui-button red-ui-button-small')
.html('Set Location')
.click(function () {
let input = $(this).prev()
if (input.is(':visible')) {
controllerRequest({
class: 'Controller',
operation: 'SetNodeLocation',
params: [selectedNode, input.val()]
}).then(({ node, object }) => {
if (node == selectedNode) $('#zwave-js-selected-node-location').text("("+object+")")
})
input.hide()
$(this).html('Set Location')
} else {
input.show()
input.val($('#zwave-js-selected-node-location').text().replace(/\(/g,'').replace(/\)/g,''))
$(this).html('Go')
}
})
.appendTo(relocation)

// -- -- -- -- Interview node

let optInterview = $('<div>').appendTo(nodeOpts)
Expand Down Expand Up @@ -511,6 +539,12 @@ let ZwaveJsUI = (function () {
$('#zwave-js-selected-node-id').text(selectedNode)
let info = selectedEl.data('info')
$('#zwave-js-selected-node-name').text(info.name)
if(info.location !== undefined && info.location.length > 0){
$('#zwave-js-selected-node-location').text("("+info.location+")")
}
else{
$('#zwave-js-selected-node-location').text("")
}
makeInfo('#zwave-js-selected-node-info', info.deviceConfig)
getProperties()
RED.comms.subscribe(`/zwave-js/${selectedController}/${selectedNode}`, handleNodeEvent)
Expand Down
4 changes: 2 additions & 2 deletions zwave-js/zwave-device.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ module.exports = function (RED) {
node.on('input', Input);
async function Input(msg, send, done) {

if(msg.payload.class === "Controller"){
if(msg.payload.class === "Controller" || msg.payload.class === "Driver"){

let ErrorMSG = "Controller commands must be sent directly to the Controller Node.";
let ErrorMSG = "Controller and Driver commands must be sent directly to the Controller Node.";
let Err = new Error(ErrorMSG);

if (done) {
Expand Down
22 changes: 20 additions & 2 deletions zwave-js/zwave-js.js
Original file line number Diff line number Diff line change
Expand Up @@ -712,10 +712,28 @@ module.exports = function (RED) {
}


function getNodeInfoForPayload(NodeID, Property){
let Prop = Driver.controller.nodes.get(parseInt(NodeID))[Property];
return Prop
}

function Send(Node, Subject, Value, send) {

let PL = { "node": Node.id, "event": Subject, "timestamp": new Date().toJSON() }
let PL = {"node": Node.id}
if(Node.id !== 'N/A' && Node.id !== 'Controller'){

let N = getNodeInfoForPayload(Node.id,'name');
if(N !== undefined){
PL.nodeName = N;
}

let L = getNodeInfoForPayload(Node.id,'location')
if(L !== undefined){
PL.nodeLocation = L
}
}
PL.event = Subject,
PL.timestamp = new Date().toJSON()
if (Value !== undefined) {
PL.object = Value;
}
Expand All @@ -730,7 +748,7 @@ module.exports = function (RED) {
}

// Allow passing event to filter nodes
if (Node.id !== "Controller") {
if (Node.id !== "Controller" && Node.id !== "N/A" ) {
RED.events.emit("zwjs:node:event:" + Node.id, { "payload": PL })
}
}
Expand Down

0 comments on commit 8a57e9d

Please sign in to comment.