From 30e7f05be8edc66c7d7e704fef09ccc34eca9167 Mon Sep 17 00:00:00 2001 From: Phil Hallows Date: Wed, 22 Nov 2017 21:47:24 +0000 Subject: [PATCH] message is a Buffer, so needs toString. also made it a bit more obvious in debug when the message fails to parse --- index.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 7fd8dfb..4db8e11 100755 --- a/index.js +++ b/index.js @@ -128,25 +128,36 @@ if (config.output) { if (config.output.indexOf(id) !== -1) { let val; try { - tmp = JSON.parse(message); + let tmp = JSON.parse(message); if (typeof tmp.val === 'undefined') { throw new TypeError('attribute val missing'); } else { val = Boolean(tmp.val); } } catch (err) { - if (message === 'false') { + log.debug('message does not look like json: ' + err); + } + + if (typeof val === 'undefined') { + let tmp = message.toString(); + if (tmp === 'false') { val = false; - } else if (message === 'true') { + } else if (tmp === 'true') { val = true; - } else if (typeof message === 'string') { - val = parseInt(message, 10) || false; } else { - val = Boolean(message); + let int = parseInt(tmp, 10); + if (!isNaN(int)) + val = int } } - val = val ? 1 : 0; - io[id].writeSync(val); + + if (typeof val !== 'undefined') { + val = val ? 1 : 0; + log.debug('setting gpio ' + id + ' to ' + val); + io[id].writeSync(val); + } else { + log.debug('could not parse gpio value'); + } } } });