From d76d0b3f2ef2d54c9954cc86e79ee6e3b16438cf Mon Sep 17 00:00:00 2001 From: Daniel Lando Date: Wed, 13 May 2020 11:13:42 +0200 Subject: [PATCH] feat: disable discovery #405 --- app.js | 3 +++ lib/Gateway.js | 17 +++++++++++++++++ src/components/ControlPanel.vue | 16 ++++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 0b2f34a2..76c1d131 100644 --- a/app.js +++ b/app.js @@ -85,6 +85,9 @@ app.startSocket = function (server) { case 'rediscoverNode': gw.rediscoverNode(data.node_id) break; + case 'disableDiscovery': + gw.disableDiscovery(data.node_id) + break; case 'update': gw.zwave.updateDevice(data.device, data.node_id) break; diff --git a/lib/Gateway.js b/lib/Gateway.js index e3c71ba3..729c7c48 100755 --- a/lib/Gateway.js +++ b/lib/Gateway.js @@ -658,8 +658,25 @@ Gateway.prototype.rediscoverNode = function (nodeID) { } } +Gateway.prototype.disableDiscovery = function (nodeID) { + var node = this.zwave.nodes[nodeID] + if (node && node.hassDevices) { + for (const id in node.hassDevices) { + node.hassDevices[id].ignoreDiscovery = true + } + + this.zwave.emitEvent('NODE_UPDATED', node) + } +} + Gateway.prototype.publishDiscovery = function (hassDevice, nodeId, deleteDevice, update) { try { + if (hassDevice.ignoreDiscovery) { + return + } else { + hassDevice.ignoreDiscovery = false + } + // set values as discovered for (let k = 0; k < hassDevice.values.length; k++) { this.discovered[nodeId + '-' + hassDevice.values[k]] = hassDevice diff --git a/src/components/ControlPanel.vue b/src/components/ControlPanel.vue index eccef451..9524658d 100644 --- a/src/components/ControlPanel.vue +++ b/src/components/ControlPanel.vue @@ -92,7 +92,7 @@ - + Store Remove Store Rediscover Node + Disable Discovery @@ -608,7 +610,8 @@ export default { { text: 'Id', value: 'id' }, { text: 'Type', value: 'type' }, { text: 'Object id', value: 'object_id' }, - { text: 'Persistent', value: 'persistent' } + { text: 'Persistent', value: 'persistent' }, + { text: 'Discovery', value: 'ignoreDiscovery' } ], selectedDevice: null, errorDevice: false, @@ -927,6 +930,15 @@ export default { }) } }, + async disableDiscovery () { + var node = this.selectedNode + if (node && await this.confirm('Rediscover node', 'Are you sure you want to disable discovery of all values? In order to make this persistent remember to click on Store')) { + this.socket.emit(this.socketActions.hass, { + apiName: 'disableDiscovery', + node_id: this.selectedNode.node_id + }) + } + }, async rediscoverDevice () { var device = this.selectedDevice if (device && await this.confirm('Are you sure you want to re-discover selected device?')) {