diff --git a/nodes/doorbird-info.js b/nodes/doorbird-info.js index 614c92a..14586df 100644 --- a/nodes/doorbird-info.js +++ b/nodes/doorbird-info.js @@ -1,5 +1,5 @@ -module.exports = function(RED) { - "use strict"; +module.exports = function (RED) { + const statusUtils = require('./utils/status'); function DoorbirdInfoNode(config) { RED.nodes.createNode(this, config); @@ -7,18 +7,33 @@ module.exports = function(RED) { node.station = RED.nodes.getNode(config.station); - node.on('input', function(_msg) { + node.on('input', function (_msg) { var doorbird = node.station.doorbird; + this.status({ + fill: 'blue', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-info.runtime.status.requesting')}` + }); doorbird.getInfo((info) => { + this.status({ + fill: 'green', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-info.runtime.status.success')}` + }); node.send({ payload: info }); }, (error) => { + this.status({ + fill: 'red', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-info.runtime.status.error')}` + }); node.error(RED._('doorbird-info.runtime.error'), error); }); }); - RED.httpAdmin.post('/DoorbirdUltimate/:id/info', RED.auth.needsPermission('DoorbirdUltimate.info'), function(req, res) { + RED.httpAdmin.post('/DoorbirdUltimate/:id/info', RED.auth.needsPermission('DoorbirdUltimate.info'), function (req, res) { var node = RED.nodes.getNode(req.params.id); try { node.receive(); diff --git a/nodes/doorbird-light.js b/nodes/doorbird-light.js index 9a918bc..93b005c 100644 --- a/nodes/doorbird-light.js +++ b/nodes/doorbird-light.js @@ -1,5 +1,5 @@ -module.exports = function(RED) { - "use strict"; +module.exports = function (RED) { + const statusUtils = require('./utils/status'); function DoorbirdLightNode(config) { RED.nodes.createNode(this, config); @@ -7,14 +7,29 @@ module.exports = function(RED) { node.station = RED.nodes.getNode(config.station); - node.on('input', function(_msg) { - + node.on('input', function (_msg) { var doorbird = node.station.doorbird; + + this.status({ + fill: 'blue', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-light.runtime.status.requesting')}` + }); doorbird.lightOn((response) => { + this.status({ + fill: 'green', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-light.runtime.status.success')}` + }); node.send({ payload: response }); }, (err) => { + this.status({ + fill: 'red', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-light.runtime.status.error')}` + }); node.error(RED._('doorbird-light.runtime.error'), err); }); }); diff --git a/nodes/doorbird-open.js b/nodes/doorbird-open.js index d720e13..f7e28cb 100644 --- a/nodes/doorbird-open.js +++ b/nodes/doorbird-open.js @@ -1,5 +1,5 @@ -module.exports = function(RED) { - "use strict"; +module.exports = function (RED) { + const statusUtils = require('./utils/status'); function DoorbirdOpenNode(config) { RED.nodes.createNode(this, config); @@ -8,14 +8,29 @@ module.exports = function(RED) { node.station = RED.nodes.getNode(config.station); node.relay = config.relay; - node.on('input', function(_msg) { - + node.on('input', function (_msg) { var doorbird = node.station.doorbird; + + this.status({ + fill: 'blue', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-open.runtime.status.requesting')}` + }); doorbird.openDoor(node.relay, (response) => { + this.status({ + fill: 'green', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-open.runtime.status.success')}` + }); node.send({ payload: response }); }, (err) => { + this.status({ + fill: 'red', + shape: 'dot', + text: `${statusUtils.statusDateString()}: ${RED._('doorbird-open.runtime.status.error')}` + }); node.error(RED._('doorbird-open.runtime.error'), err); }); }); diff --git a/nodes/locales/en-US/doorbird-info.json b/nodes/locales/en-US/doorbird-info.json index 4955d7a..884e47f 100644 --- a/nodes/locales/en-US/doorbird-info.json +++ b/nodes/locales/en-US/doorbird-info.json @@ -15,6 +15,11 @@ } }, "runtime": { + "status": { + "requesting": "Requesting ...", + "success": "Success", + "error": "Error" + }, "error": "Error in Doorbird communication." } } diff --git a/nodes/locales/en-US/doorbird-light.json b/nodes/locales/en-US/doorbird-light.json index af0fb5b..80a1338 100644 --- a/nodes/locales/en-US/doorbird-light.json +++ b/nodes/locales/en-US/doorbird-light.json @@ -15,6 +15,11 @@ } }, "runtime": { + "status": { + "requesting": "Requesting ...", + "success": "Success", + "error": "Error" + }, "error": "Error in Doorbird communication." } } diff --git a/nodes/locales/en-US/doorbird-open.json b/nodes/locales/en-US/doorbird-open.json index 3f2ddd5..df1f44a 100644 --- a/nodes/locales/en-US/doorbird-open.json +++ b/nodes/locales/en-US/doorbird-open.json @@ -17,6 +17,11 @@ } }, "runtime": { + "status": { + "requesting": "Requesting ...", + "success": "Success", + "error": "Error" + }, "error": "Error in Doorbird communication." } } diff --git a/nodes/utils/status.js b/nodes/utils/status.js new file mode 100644 index 0000000..435921f --- /dev/null +++ b/nodes/utils/status.js @@ -0,0 +1,16 @@ +'use strict'; + +function statusDateString() { + return new Date().toLocaleString(undefined, { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }); +} + +module.exports = { + statusDateString: statusDateString +};