node-red-contrib-eztimer
Advanced tools
Comparing version 1.2.3 to 1.2.4
103
index.js
@@ -87,3 +87,6 @@ const util = require('util'); | ||
requiresBootstrap = false; | ||
if (_.isString(msg.payload)) { | ||
if (msg.payload == null) { | ||
node.error("Null or undefined (msg.payload) input.") | ||
// Unsuppored input | ||
} else if (_.isString(msg.payload)) { | ||
if (msg.payload === 'on') { | ||
@@ -120,49 +123,9 @@ // Sends the on event without impacting the scheduled event | ||
handled = true; | ||
var ret = { | ||
name: node.name || 'eztimer', | ||
state: function() { | ||
if (config.timerType == '2') return undefined; // Trigger | ||
if (isSuspended()) return 'suspended'; | ||
if (state) { return 'on' } else { return 'off' } | ||
}() | ||
}; | ||
if (config.timerType == '1') { | ||
// on/off timer | ||
ret.on = { | ||
property: (events.on.propertytype || 'msg') + '.' + events.on.property, | ||
value: getValue(events.on) || "<none>", | ||
nextEvent: function() { | ||
if (isSuspended()) return 'suspended'; | ||
if (events.on.type == '9') return 'manual'; | ||
if (!events.on.moment) return 'error'; | ||
return events.on.moment.toDate().toString() | ||
}() | ||
}; | ||
ret.off = { | ||
property: (events.off.propertytype || 'msg') + '.' + events.off.property, | ||
value: getValue(events.off) || "<none>", | ||
nextEvent: function() { | ||
if (config.timerType == '2') return undefined; // Trigger | ||
if (isSuspended()) return 'suspended'; | ||
if (!events.off.moment) return 'manual'; | ||
return events.off.moment.toDate().toString() | ||
}() | ||
}; | ||
} else { | ||
// trigger | ||
ret.trigger = { | ||
property: (events.on.propertytype || 'msg') + '.' + events.on.property, | ||
value: getValue(events.on) || "<none>", | ||
nextEvent: function() { | ||
if (isSuspended()) return 'suspended'; | ||
if (events.on.type == '9') return 'manual'; | ||
if (!events.on.moment) return 'error'; | ||
return events.on.moment.toDate().toString() | ||
}() | ||
}; | ||
} | ||
var info = getInfo(); | ||
// Info is now sent with every output - continue to send as payload for backward compatibiliy. | ||
node.send({ | ||
topic: 'info', | ||
info: info, | ||
tag: config.tag || 'eztimer', | ||
payload: ret | ||
payload: info | ||
}); | ||
@@ -188,2 +151,3 @@ } else { | ||
}); | ||
node.error("Invalid string (msg.payload) input.") | ||
} | ||
@@ -205,2 +169,3 @@ } else { | ||
}); | ||
node.error("Invalid object (msg.payload) input.") | ||
} | ||
@@ -218,2 +183,49 @@ if (!handled) { | ||
function getInfo() { | ||
var ret = { | ||
name: node.name || 'eztimer', | ||
state: function() { | ||
if (config.timerType == '2') return undefined; // Trigger | ||
if (isSuspended()) return 'suspended'; | ||
if (state) { return 'on' } else { return 'off' } | ||
}() | ||
}; | ||
if (config.timerType == '1') { | ||
// on/off timer type | ||
ret.on = { | ||
property: (events.on.propertytype || 'msg') + '.' + events.on.property, | ||
value: getValue(events.on) || "<none>", | ||
nextEvent: function() { | ||
if (isSuspended()) return 'suspended'; | ||
if (events.on.type == '9') return 'manual'; | ||
if (!events.on.moment) return 'error'; | ||
return events.on.moment.local().toDate() | ||
}() | ||
}; | ||
ret.off = { | ||
property: (events.off.propertytype || 'msg') + '.' + events.off.property, | ||
value: getValue(events.off) || "<none>", | ||
nextEvent: function() { | ||
if (config.timerType == '2') return undefined; // Trigger | ||
if (isSuspended()) return 'suspended'; | ||
if (!events.off.moment) return 'manual'; | ||
return events.off.moment.toDate() | ||
}() | ||
}; | ||
} else { | ||
// trigger timer type | ||
ret.trigger = { | ||
property: (events.on.propertytype || 'msg') + '.' + events.on.property, | ||
value: getValue(events.on) || "<none>", | ||
nextEvent: function() { | ||
if (isSuspended()) return 'suspended'; | ||
if (events.on.type == '9') return 'manual'; | ||
if (!events.on.moment) return 'error'; | ||
return events.on.moment.toDate() | ||
}() | ||
}; | ||
} | ||
return ret; | ||
} | ||
function log(level, message) { | ||
@@ -363,2 +375,3 @@ if (config.debug) level = Math.max(3, level); //Outputs everything in node warn or error. | ||
var msg = {}; | ||
msg.info = getInfo(); | ||
msg.tag = config.tag || 'eztimer'; | ||
@@ -365,0 +378,0 @@ if (event.topic) msg.topic = event.topic; |
{ | ||
"name": "node-red-contrib-eztimer", | ||
"version": "1.2.3", | ||
"version": "1.2.4", | ||
"description": "A simple-yet-flexible timer/scheduler for node-red", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -119,2 +119,7 @@ # eztimer | ||
# Change Log | ||
## 1.2.4 | ||
* Change `info` to be sent with every output (under the `msg.info`). [credit @Fires04](https://github.com/mrgadget/node-red-contrib-eztimer/issues/30). | ||
* Updated on/off/trigger `nextEvent` property `info` to be Date object (rather than a string) - enabling easier programmatic usage (for example `.getDate()` for unix timestamp). This can be turned back in to a string if required using the `.toString()` method. This property _may_ still be a string however, for example, if it is `suspended` or `manual`. | ||
* Improved error when a `null` or `undefined` msg.payload is sent to the node. | ||
## 1.2.3 | ||
@@ -121,0 +126,0 @@ * Fixed `number` output - added `parseFloat()` to ensure output is a number (rather than a string representation of a number). [credit @bemmbix](https://github.com/mrgadget/node-red-contrib-eztimer/issues/28). |
89649
961
213