message: feat: Show node name and location of removed nodes
diff: @@ -265,7 +265,7 @@ function nodeRemoved (nodeid) {
  this.emit('nodeRemoved', node)
  - addEmptyNodes(this.nodes)
  + this.addEmptyNodes()
  this.emitEvent('NODE_REMOVED', this.nodes[nodeid])
  }
  @@ -292,7 +292,7 @@ function nodeAdded (nodeid) {
  lastActive: null,
  status: NODE_STATUS[5] // dead
  }
  - addEmptyNodes(this.nodes)
  + this.addEmptyNodes()
  debug('Node added', nodeid)
  }
  @@ -609,25 +609,6 @@ function getDeviceID (ozwnode) {
  return `${parseInt(ozwnode.manufacturerid)}-${parseInt(ozwnode.productid)}-${parseInt(ozwnode.producttype)}`
  }
  -/**
  - * Used to replace `null` nodes in nodes Array
  - *
  - * @param {Array} nodes the Zwave nodes Array
  - */
  -function addEmptyNodes (nodes) {
  - for (var i = 0; i < nodes.length; i++) {
  - if (!nodes[i]) {
  - nodes[i] = {
  - node_id: i,
  - type: i === 0 ? 'Main controller' : '',
  - status: i === 0 ? '' : 'Removed',
  - failed: true,
  - values: {}
  - }
  - }
  - }
  -}
  -
  /**
  * Used to parse a valueId value based on value type
  *
  @@ -882,6 +863,25 @@ ZwaveClient.prototype.initNode = function (ozwnode, nodeinfo) {
  }
  }
  +/**
  + * Used to replace `null` nodes in nodes Array
  + *
  + */
  +ZwaveClient.prototype.addEmptyNodes = function () {
  + for (var i = 0; i < this.nodes.length; i++) {
  + if (!this.nodes[i]) {
  + this.nodes[i] = {
  + node_id: i,
  + type: i === 0 ? 'Main controller' : '',
  + status: i === 0 ? '' : 'Removed',
  + name: this.zwcfg_nodes[i] ? this.zwcfg_nodes[i].name : '',
  + loc: this.zwcfg_nodes[i] ? this.zwcfg_nodes[i].loc : '',
  + failed: true,
  + values: {}
  + }
  + }
  + }
  +}
  /**
  * Popolate node `groups` property by creating an array of groups `{text: <groupLabel>, value: <groupIndex>}`
  *
  