Socket
Socket
Sign inDemoInstall

node-red-contrib-sun-position

Package Overview
Dependencies
0
Maintainers
1
Versions
136
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.1.3 to 1.1.4

24

CHANGELOG.md
# node-red-contrib-sun-position
#### 1.1.4: BugFix
- general
- for a property compare implemented `contain`, `containSome` and `comtainAll` #158
- time inject
- maybe fix of #159 by better memory cleanup on change
- added possibility of define which time should be in payload (current or next) #163
- now setup of payload, topic and additional payload is similar to the inject node of th newest Node-Red Version #172
- time-inject label wrong #176
- within-time
- fix bug not usable/visible offset for alternate times #170
- added `withinTimeStart` and `withinTimeEnd` and `withinTime` property to message #156 + #166
- moon-position
- moon-times now available #161
- has now a `isUp` _Boolean_ property which gives the state if the moon is Up #162
- additional properties are `positionAtRise` and `positionAtSet` with position information on rise and set
- clock-time
- fixed not working overrides #171
- fixed not existing blindCtrl property
#### 1.1.3: maintenance

@@ -4,0 +28,0 @@

21

nodes/clock-timer.js

@@ -106,3 +106,3 @@ /********************************************

node.log(`Overwrite is set which expires in ${dExpire}ms = ${node.blindData.overwrite.expireDateISO} (${reason})`);
node.log(`Overwrite is set which expires in ${dExpire}ms = ${node.timeClockData.overwrite.expireDateISO} (${reason})`);
node.timeOutObj = setTimeout(() => {

@@ -133,3 +133,3 @@ node.log(`Overwrite is expired (timeout)`);

if (val) {
if (node.blindData.overwrite && node.blindData.overwrite.active) {
if (node.timeClockData.overwrite && node.timeClockData.overwrite.active) {
node.log(`Overwrite reset by incoming message`);

@@ -198,3 +198,3 @@ }

// if active, the importance must be 0 or given with same or higher as current overwrite otherwise this will not work
node.debug(`do not check any overwrite, importance of message ${nImportance} not matches current overwrite importance ${node.blindData.overwrite.importance}`);
node.debug(`do not check any overwrite, importance of message ${nImportance} not matches current overwrite importance ${node.timeClockData.overwrite.importance}`);
return setOverwriteReason(node);

@@ -557,2 +557,3 @@ }

livingRuleData.importance = ruleSel.importance;
livingRuleData.resetOverwrite = ruleSel.resetOverwrite;
livingRuleData.code = 4;

@@ -604,2 +605,3 @@ livingRuleData.topic = ruleSel.topic;

livingRuleData.importance = 0;
livingRuleData.resetOverwrite = false;
livingRuleData.payloadData = {

@@ -764,6 +766,12 @@ type: node.timeClockData.payloadDefaultType,

// check for manual overwrite
const overwrite = checkTCPosOverwrite(node, msg, dNow);
if (!overwrite || (node.rules.maxImportance > 0 && node.rules.maxImportance > node.timeClockData.overwrite.importance)) {
let overwrite = checkTCPosOverwrite(node, msg, dNow);
if (!overwrite || node.rules.canResetOverwrite || (node.rules.maxImportance > 0 && node.rules.maxImportance > node.timeClockData.overwrite.importance)) {
// calc times:
timeCtrl.rule = checkRules(node, msg, dNow, tempData);
node.debug(`overwrite=${overwrite}, node.rules.maxImportance=${node.rules.maxImportance}, timeClockData.overwrite.importance=${node.timeClockData.overwrite.importance}`);
if (overwrite && timeCtrl.rule.resetOverwrite && timeCtrl.rule.id !== node.previousData.usedRule) {
timePosOverwriteReset(node);
overwrite = false;
}
if (!overwrite || timeCtrl.rule.importance > node.timeClockData.overwrite.importance) {

@@ -909,2 +917,3 @@ ruleId = timeCtrl.rule.id;

node.rules.maxImportance = 0;
node.rules.canResetOverwrite = false;

@@ -915,4 +924,6 @@ for (let i = 0; i < node.rules.count; ++i) {

rule.name = rule.name || 'rule ' + rule.pos;
rule.resetOverwrite = (rule.resetOverwrite === true || rule.resetOverwrite === 'true') ? true : false;
rule.importance = Number(rule.importance) || 0;
node.rules.maxImportance = Math.max(node.rules.maxImportance, rule.importance);
node.rules.canResetOverwrite = node.rules.canResetOverwrite || rule.resetOverwrite;
rule.timeOp = Number(rule.timeOp) || cRuleUntil;

@@ -919,0 +930,0 @@

@@ -34,2 +34,6 @@ {

"ruleBlindLevel": "Rollladenposition",
"ruleResetOverwrite": "manuelle Überschreibung verfällt wenn die Regel aktiv wird",
"ruleTopic": "Topic:",
"ruleImportance":"Wichtung der Regel",
"ruleTimeLimitStart": "nur von",

@@ -103,3 +107,3 @@ "ruleTimeLimitEnd": "bis",

"sunControlMode": "wähle wie die Sonnensteuerung arbeiten soll",
"overwriteExpire": "(opt) Dauer nasch der eine manuelle Einstellung verfällt",
"overwriteExpire": "(opt) Dauer nasch der eine manuelle Einstellung (überschreiben) verfällt",
"sunFloorLength": "das Ausmaß, in dem direktes Sonnenlicht durch das Fenster in den Raum gelangen darf, definiert als Länge am Boden",

@@ -122,3 +126,5 @@ "sunMinAltitude": "(opt) minimaler Höhenwinkel der Sonne",

"level": "Behanghöhe",
"ruleImportance": "definiert eine wichtung der Regel gegenüber manueller Einstellung (überschreiben). Nur Überschreibungen mit gleicher oder höherer Wichtung können diese Regel übersteuern.",
"ruleTopic":"Erlaubt es die topic der ausgesendeten Nachricht speziell für die Regel angepasst werden. Wenn diese leer ist, wird die Standard topic verwendet.",
"resetOverwrite": "Wenn angehakt, wird eine manuelle Einstellung (überschreiben) zurückgesetzt, wenn diese Regel erstmalig aktif geht",
"sunTopic": "Erlaubt es die topic der ausgesendeten Nachricht anzupassen wenn die sonnensteuerung aktiv ist. Wenn diese leer ist, wird die Standard topic verwendet.",

@@ -125,0 +131,0 @@ "oversteerTopic":"Erlaubt es die topic der ausgesendeten Nachricht anzupassen wenn eine Übersteuerung aktiv ist. Wenn diese leer ist, wird die topic der Sonnensteuerung verwendet.",

@@ -28,3 +28,5 @@ {

"rulePayloadND": "Kein Payload",
"ruleResetOverwrite": "manuelle Überschreibung verfällt wenn die Regel aktiv wird",
"ruleTopic": "Topic:",
"ruleImportance":"Wichtung der Regel",
"ruleTimeLimitStart": "only from",

@@ -76,2 +78,5 @@ "ruleTimeLimitEnd": "to",

"level": "Behanghöhe",
"ruleImportance": "definiert eine wichtung der Regel gegenüber manueller Einstellung (überschreiben). Nur Überschreibungen mit gleicher oder höherer Wichtung können diese Regel übersteuern.",
"ruleTopic":"Erlaubt es die topic der ausgesendeten Nachricht speziell für die Regel angepasst werden. Wenn diese leer ist, wird die Standard topic verwendet.",
"resetOverwrite": "Wenn angehakt, wird eine manuelle Einstellung (überschreiben) zurückgesetzt, wenn diese Regel erstmalig aktif geht",
"ruleTimeDays": "Wählen Sie Tage aus, an denen die Regel gültig sein soll",

@@ -78,0 +83,0 @@ "ruleTimeMonths": "Wählen Sie Monate aus, an denen die Regel gültig sein soll",

@@ -35,2 +35,4 @@ {

"ruleTopic": "Topic: ",
"ruleResetOverwrite": "overwrite expire when rule gets active",
"ruleOverwrite": "overwrite",
"ruleImportance":"Override Importance",

@@ -125,2 +127,3 @@ "ruleTimeLimitStart": "only from",

"ruleTopic": "allows to define a seperate topic for outgoing message per rule, if not defined default topic will be used",
"resetOverwrite": "if checked manual overwrite will be reset when this rule becomes active the first time",
"sunTopic": "allows to define a seperate topic for outgoing message if level is set by sun control, if not defined default topic will be used",

@@ -127,0 +130,0 @@ "oversteerTopic":"allows to define a seperate topic for outgoing message if level is set by sun control oversteer, if not defined default topic of sun Control will be used",

@@ -29,2 +29,4 @@ {

"ruleTopic": "Topic: ",
"ruleResetOverwrite": "overwrite expire when rule gets active",
"ruleOverwrite": "overwrite",
"ruleImportance":"Override Importance",

@@ -78,2 +80,3 @@ "ruleTimeLimitStart": "only from",

"ruleTopic": "allows to define a seperate topic for outgoing message per rule, if not defined default topic will be used",
"resetOverwrite": "if checked manual overwrite will be reset when this rule becomes active the first time",
"ruleTimeDays": "select days wherefore it should be valid",

@@ -80,0 +83,0 @@ "ruleTimeMonths": "select months wherefore it should be valid",

@@ -11,10 +11,3 @@ {

"timeEndOffset": "End Offset",
"payloadOffset": "Offset",
"payloadFormat": "Format",
"addPayload1": "set",
"addPayload1Value": "value",
"addPayload1Offset": "Offset",
"addPayload1Next": "occur",
"addPayload1Next2": "next occurrence",
"addPayload1Format": "time format",
"nextOccurrence": "next occurrence",
"on":"on",

@@ -21,0 +14,0 @@ "once": "additional",

@@ -32,3 +32,3 @@ /********************************************

const errorStatus = '';
const now = hlp.getNowTimeStamp(this, msg);
const dNow = hlp.getNowTimeStamp(this, msg);

@@ -45,4 +45,5 @@ if (!this.positionConfig) {

const ports = new Array(this.rules.length);
ports[0] = RED.util.cloneMessage(msg);
ports[0].payload = this.positionConfig.getMoonCalc(now,false, msg.latitude || msg.lat, msg.longitude || msg.lon);
ports[0].payload = this.positionConfig.getMoonCalc(dNow, true, true, msg.latitude || msg.lat, msg.longitude || msg.lon);
ports[0].topic = this.topic;

@@ -52,3 +53,3 @@ if (!ports[0].payload.azimuth) {

send(ports); // this.send(ports);
done(RED._('Azimuth could not calculated!'), msg);
done('Azimuth could not calculated!', msg);
return null;

@@ -55,0 +56,0 @@ }

@@ -182,2 +182,7 @@ /************************************************************************/

},
MsgTopic: {
value: 'msgTopic',
label: 'msg.topic',
hasValue: false
},
MsgPayloadByTopic: {

@@ -1020,2 +1025,4 @@ value: 'PlT',

res = 'msg.payload';
} else if (data.type === 'msgTopic') {
res = 'msg.topic';
} else if (data.type === 'PlT') {

@@ -1022,0 +1029,0 @@ res = 'msg.payload if msg.topic contains "' + data.value + '"';

@@ -56,5 +56,5 @@ /********************************************

}
this.intervalCount = config.intervalCount || 0;
this.intervalCountType = (this.injType === tInj.interval || this.injType === tInj.intervalTime) ? config.intervalCountType || 'num' : 'none';
this.intervalCountMultiplier = config.intervalCountMultiplier || 60000;
this.intervalCount = config.intervalCount ? config.intervalCount : 0;
this.intervalCountType = (this.injType === tInj.interval || this.injType === tInj.intervalTime) ? (config.intervalCountType || 'num') : 'none';
this.intervalCountMultiplier = config.intervalCountMultiplier ? config.intervalCountMultiplier : 60000;

@@ -68,3 +68,3 @@ if (this.injType === tInj.intervalTime ||

offset : config.offset || config.timeOffset || 0,
multiplier : config.offsetMultiplier || config.timeOffsetMultiplier || 60,
multiplier : config.offsetMultiplier ? config.timeOffsetMultiplier : 60,
next : true,

@@ -90,17 +90,33 @@ days : config.timeDays,

}
this.property = config.property || '';
this.propertyType = config.propertyType || 'none';
this.propertyOperator = config.propertyCompare || 'true';
this.propertyThresholdValue = config.propertyThreshold;
this.propertyThresholdType = config.propertyThresholdType;
if (config.propertyType && config.propertyType !== 'none' && config.timeAltType && config.timeAltType !== 'none') {
this.property = {
type: config.propertyType ? config.propertyType : 'none',
value: config.property ? config.property : ''
};
if (this.injType === tInj.timer && config.timeAltType &&
config.timeAltType !== 'none' &&
this.propertyType !== 'none') {
if (this.positionConfig && this.property.type === 'jsonata') {
try {
this.property.expr = this.positionConfig.getJSONataExpression(this.property.value, node);
} catch (err) {
this.error(RED._('inject.errors.invalid-expr', { error:err.message }));
this.property.expr = null;
}
}
if (config.propertyThresholdType && config.propertyThresholdType !== 'none') {
this.propertyThreshold = {
type: config.propertyThresholdType ? config.propertyThresholdType : 'none',
value: config.propertyThreshold ? config.propertyThreshold : ''
};
}
}
this.propertyOperator = config.propertyCompare ? config.propertyCompare : 'true';
if (this.injType === tInj.timer && this.property && config.timeAltType && config.timeAltType !== 'none') {
this.timeStartAltData = {
type: config.timeAltType || 'none',
value : config.timeAlt || '',
type: config.timeAltType ? config.timeAltType : 'none',
value : config.timeAlt ? config.timeAlt : '',
offsetType : config.timeAltOffsetType,
offset : config.timeAltOffset || 0,
multiplier : config.timeAltOffsetMultiplier || 60,
offset : config.timeAltOffset ? config.timeAltOffset : 0,
multiplier : config.timeAltOffsetMultiplier ? config.timeAltOffsetMultiplier : 60,
next : true,

@@ -132,4 +148,4 @@ days : config.timeAltDays,

offsetType : config.timeEndOffsetType,
offset : config.timeEndOffset || 0,
multiplier : config.timeEndOffsetMultiplierr || 60,
offset : config.timeEndOffset ? config.timeEndOffset : 0,
multiplier : config.timeEndOffsetMultiplier ? config.timeEndOffsetMultiplier : 60,
next : true,

@@ -156,77 +172,148 @@ days : config.timeDays,

this.payloadData = {
type: config.payloadType,
value: config.payload,
format: config.payloadTimeFormat,
offsetType: config.payloadOffsetType,
offset: config.payloadOffset,
multiplier: config.payloadOffsetMultiplier,
next: true
};
this.addPayloadData = [];
if (typeof config.addPayload1Type !== 'undefined' &&
typeof config.addPayload1ValueType !== 'undefined' &&
config.addPayload1Type !== 'none' &&
config.addPayload1ValueType !== 'none') {
this.addPayloadData.push({
outType: config.addPayload1Type,
outValue: config.addPayload1,
type: config.addPayload1ValueType,
value: config.addPayload1Value,
format: config.addPayload1Format,
offsetType: config.addPayload1OffsetType,
offset: config.addPayload1Offset,
multiplier: config.addPayload1OffsetMultiplier,
next: config.addPayload1Next,
days: config.addPayload1Days
/* Handle legacy */
if(!Array.isArray(config.props)){
config.props = [];
config.props.push({
p : '',
pt : 'msgPayload',
v : config.payload ? config.payload : '',
vt : config.payloadType ? ((config.payloadType === 'string') ? 'str' : config.payloadType) : (config.payload ? 'str' : 'date'),
o : config.payloadOffset ? config.payloadOffset : 1,
oT : (config.payloadOffset === 0 || config.payloadOffset === '') ? 'none' : (config.payloadOffsetType ? config.payloadOffsetType : 'num'),
oM : config.payloadOffsetMultiplier ? config.payloadOffsetMultiplier : 60000,
f : config.payloadTimeFormat ? config.payloadTimeFormat : 0,
next : true,
days : '*'
});
}
if (typeof config.addPayload2Type !== 'undefined' &&
typeof config.addPayload2ValueType !== 'undefined' &&
config.addPayload2Type !== 'none' &&
config.addPayload2ValueType !== 'none') {
this.addPayloadData.push({
outType: config.addPayload2Type,
outValue: config.addPayload2,
type: config.addPayload2ValueType,
value: config.addPayload2Value,
format: config.addPayload2Format,
offsetType: config.addPayload2OffsetType,
offset: config.addPayload2Offset,
multiplier: config.addPayload2OffsetMultiplier,
next: config.addPayload2Next,
days: config.addPayload2Days
});
}
if (typeof config.addPayload3Type !== 'undefined' &&
typeof config.addPayload3ValueType !== 'undefined' &&
config.addPayload3Type !== 'none' &&
config.addPayload3ValueType !== 'none') {
this.addPayloadData.push({
outType: config.addPayload3Type,
outValue: config.addPayload3,
type: config.addPayload3ValueType,
value: config.addPayload3Value,
format: config.addPayload3Format,
offsetType: config.addPayload3OffsetType,
offset: config.addPayload3Offset,
multiplier: config.addPayload3OffsetMultiplier,
next: config.addPayload3Next,
days: config.addPayload3Days
});
}
for (let i = 0; i < this.addPayloadData.length; i++) {
const el = this.addPayloadData[i];
if (typeof el.next === 'undefined' ||
el.next === null ||
el.next === true ||
el.next === 'true') {
el.next = true;
} else if (el.next === 'false' ||
el.next === false) {
el.next = false;
if (config.topic) {
config.props.push({
p : '',
pt : 'msgTopic',
v : config.topic ? config.topic : '',
vt : 'str',
o : 1,
oT : 'none',
oM : 60000,
f : 0,
next : false,
days : '*'
});
}
if (typeof config.addPayload1Type !== 'undefined' &&
typeof config.addPayload1ValueType !== 'undefined' &&
config.addPayload1Type !== 'none' &&
config.addPayload1ValueType !== 'none') {
config.props.push({
p : config.addPayload1,
pt : config.addPayload1Type,
v : config.addPayload1Value,
vt : config.addPayload1ValueType ? ((config.addPayload1ValueType === 'string') ? 'str' : config.addPayload1ValueType) : (config.addPayload1Value ? 'str' : 'date'),
o : config.addPayload1Offset ? config.addPayload1Offset : 1,
oT : (config.addPayload1Offset === 0 || config.addPayload1Offset === '') ? 'none' : (config.addPayload1OffsetType ? config.addPayload1OffsetType : 'num'),
oM : config.addPayload1OffsetMultiplier ? config.addPayload1OffsetMultiplier : 60000,
f : config.addPayload1Format ? config.addPayload1Format : 0,
next : false,
days : config.addPayload1Days ? config.addPayload1Days : '*'
});
}
if (typeof config.addPayload2Type !== 'undefined' &&
typeof config.addPayload2ValueType !== 'undefined' &&
config.addPayload2Type !== 'none' &&
config.addPayload2ValueType !== 'none') {
config.props.push({
p : config.addPayload2,
pt : config.addPayload2Type,
v : config.addPayload2Value,
vt : config.addPayload2ValueType ? ((config.addPayload2ValueType === 'string') ? 'str' : config.addPayload2ValueType) : (config.addPayload2Value ? 'str' : 'date'),
o : config.addPayload2Offset ? config.addPayload2Offset : 1,
oT : (config.addPayload2Offset === 0 || config.addPayload2Offset === '') ? 'none' : (config.addPayload2OffsetType ? config.addPayload2OffsetType : 'num'),
oM : config.addPayload2OffsetMultiplier ? config.addPayload2OffsetMultiplier : 60000,
f : config.addPayload2Format ? config.addPayload2Format : 0,
next : false,
days : config.addPayload2Days ? config.addPayload2Days : '*'
});
}
if (typeof config.addPayload3Type !== 'undefined' &&
typeof config.addPayload3ValueType !== 'undefined' &&
config.addPayload3Type !== 'none' &&
config.addPayload3ValueType !== 'none') {
config.props.push({
p : config.addPayload3,
pt : config.addPayload3Type,
v : config.addPayload3Value,
vt : config.addPayload3ValueType ? ((config.addPayload3ValueType === 'string') ? 'str' : config.addPayload3ValueType) : (config.addPayload3Value ? 'str' : 'date'),
o : config.addPayload3Offset ? config.addPayload3Offset : 1,
oT : (config.addPayload3Offset === 0 || config.addPayload3Offset === '') ? 'none' : (config.addPayload3OffsetType ? config.addPayload3OffsetType : 'num'),
oM : config.addPayload3OffsetMultiplier ? config.addPayload3OffsetMultiplier : 60000,
f : config.addPayload3Format ? config.addPayload3Format : 0,
next : false,
days : config.addPayload3Days ? config.addPayload3Days : '*'
});
}
delete config.payload;
delete config.payloadType;
delete config.payloadTimeFormat;
delete config.payloadOffset;
delete config.payloadOffsetType;
delete config.payloadOffsetMultiplier;
delete config.topic;
delete config.addPayload1;
delete config.addPayload1Type;
delete config.addPayload1Value;
delete config.addPayload1ValueType;
delete config.addPayload1Format;
delete config.addPayload1Offset;
delete config.addPayload1OffsetType;
delete config.addPayload1OffsetMultiplier;
delete config.addPayload1Next;
delete config.addPayload1Days;
delete config.addPayload2;
delete config.addPayload2Type;
delete config.addPayload2Value;
delete config.addPayload2ValueType;
delete config.addPayload2Format;
delete config.addPayload2Offset;
delete config.addPayload2OffsetType;
delete config.addPayload2OffsetMultiplier;
delete config.addPayload2Next;
delete config.addPayload2Days;
delete config.addPayload3;
delete config.addPayload3Type;
delete config.addPayload3Value;
delete config.addPayload3ValueType;
delete config.addPayload3Format;
delete config.addPayload3Offset;
delete config.addPayload3OffsetType;
delete config.addPayload3OffsetMultiplier;
delete config.addPayload3Next;
delete config.addPayload3Days;
}
this.props = [];
config.props.forEach( prop => {
const propNew = {
outType: prop.pt,
outValue: prop.p,
type: prop.vt,
value: prop.v,
format: prop.f,
offsetType: prop.oT,
offset: prop.o,
multiplier: prop.oM,
next: (typeof prop.next === 'undefined' || prop.next === null || prop.next === true || prop.next === 'true') ? true : false,
days: prop.days
};
if (this.positionConfig && propNew.type === 'jsonata') {
try {
propNew.expr = this.positionConfig.getJSONataExpression(propNew.value, node);
} catch (err) {
this.error(RED._('inject.errors.invalid-expr', { error:err.message }));
propNew.expr = null;
}
}
this.props.push(propNew);
});
this.recalcTime = (config.recalcTime || 2) * 3600000;

@@ -363,15 +450,13 @@

const dNow = new Date();
msg.payload = node.positionConfig.getOutDataProp(node, msg, node.payloadData);
msg.topic = config.topic;
for (let i = 0; i < node.addPayloadData.length; i++) {
node.debug(`prepOutMsg-${i} node.addPayload[${i}]=${util.inspect(node.addPayloadData[i], { colors: true, compact: 10, breakLength: Infinity })}`);
const res = node.positionConfig.getOutDataProp(this, msg, node.addPayloadData[i], dNow);
for (let i = 0; i < node.props.length; i++) {
node.debug(`prepOutMsg-${i} node.props[${i}]=${util.inspect(node.props[i], { colors: true, compact: 10, breakLength: Infinity })}`);
const res = node.positionConfig.getOutDataProp(this, msg, node.props[i], dNow);
if (res === null || (typeof res === 'undefined')) {
this.error('Could not evaluate ' + node.addPayloadData[i].type + '.' + node.addPayloadData[i].value + '. - Maybe settings outdated (open and save again)!');
this.error('Could not evaluate ' + node.props[i].type + '.' + node.props[i].value + '. - Maybe settings outdated (open and save again)!');
} else if (res.error) {
this.error('Error on getting additional payload: "' + res.error + '"');
} else {
node.positionConfig.setMessageProp(this, msg, node.addPayloadData[i].outType, node.addPayloadData[i].outValue, res);
node.positionConfig.setMessageProp(this, msg, node.props[i].outType, node.props[i].outValue, res);
}
node.debug(`prepOutMsg-${i} msg=${util.inspect(msg, { colors: true, compact: 10, breakLength: Infinity })}`);
// node.debug(`prepOutMsg-${i} msg=${util.inspect(msg, { colors: true, compact: 10, breakLength: Infinity })}`);
}

@@ -538,4 +623,3 @@ msg._srcid = node.id;

try {
useAlternateTime = node.positionConfig.comparePropValue(node, msg, { type: node.propertyType, value: node.property},
node.propertyOperator, { type:node.propertyThresholdType, value:node.propertyThresholdValue});
useAlternateTime = node.positionConfig.comparePropValue(node, msg, node.property, node.propertyOperator, node.propertyThreshold);
needsRecalc = (node.timeStartData.isAltFirst && !useAlternateTime) || (!node.timeStartData.isAltFirst && useAlternateTime);

@@ -546,6 +630,3 @@ // node.debug(`timeOutStartObj isAltAvailable=${node.timeStartData.isAltAvailable} isAltFirst=${node.timeStartData.isAltFirst} needsRecalc=${needsRecalc}`);

needsRecalc = node.timeStartData.isAltFirst;
hlp.handleError(node, RED._('time-inject.errors.invalid-property-type', {
type: node.propertyType,
value: node.property
}), err);
hlp.handleError(node, RED._('time-inject.errors.invalid-property-type', node.property), err);
}

@@ -618,15 +699,2 @@

this.on('close', () => {
if (node.timeOutStartObj) {
clearTimeout(node.timeOutStartObj);
node.timeOutStartObj = null;
}
if (node.intervalObj) {
clearInterval(node.intervalObj);
node.intervalObj = null;
}
// tidy up any state
});
this.on('input', (msg, send, done) => { // eslint-disable-line complexity

@@ -686,3 +754,3 @@ // If this is pre-1.0, 'done' will be undefined

config.onceTimeout = setTimeout(() => {
node.onceTimeout = setTimeout(() => {
node.emit('input', {

@@ -695,3 +763,3 @@ type: 'once/startup'

setTimeout(() => {
node.onceTimeout = setTimeout(() => {
try {

@@ -703,3 +771,3 @@ const createTO = node.doCreateStartTimeout(node, true);

}
setTimeout(() => {
node.onceTimeout2 = setTimeout(() => {
try {

@@ -747,5 +815,13 @@ node.doCreateStartTimeout(node);

timeInjectNode.prototype.close = function () {
if (this.timeOutStartObj) {
if (this.onceTimeout) {
clearTimeout(this.onceTimeout);
this.onceTimeout = null;
}
if (this.onceTimeout2) {
clearTimeout(this.onceTimeout2);
this.onceTimeout2 = null;
}
if (this.timeOutStartObj) {
clearTimeout(this.timeOutStartObj);
this.timeOutStartObj = null;
if (RED.settings.verbose) { this.log(RED._('inject.stopped')); }

@@ -758,2 +834,7 @@ }

}
if (this.timeOutEndObj) {
clearTimeout(this.timeOutEndObj);
this.timeOutEndObj = null;
if (RED.settings.verbose) { this.log(RED._('inject.stopped')); }
}
};

@@ -760,0 +841,0 @@

@@ -308,9 +308,13 @@ /********************************************

if (result.valid && result.start.value && result.end.value) {
const startNr = hlp.getTimeNumberUTC(result.start.value);
const endNr = hlp.getTimeNumberUTC(result.end.value);
msg.withinTimeStart = result.start;
msg.withinTimeEnd = result.end;
msg.withinTimeStart.id = hlp.getTimeNumberUTC(result.start.value);
msg.withinTimeEnd.id = hlp.getTimeNumberUTC(result.end.value);
const cmpNow = hlp.getTimeNumberUTC(now);
setstate(this, result);
if (startNr < endNr) {
if (cmpNow >= startNr && cmpNow < endNr) {
this.debug('in time [1] - send msg to first output ' + result.startSuffix + node.positionConfig.toDateTimeString(now) + result.endSuffix + ' (' + startNr + ' - ' + cmpNow + ' - ' + endNr + ')');
if (msg.withinTimeStart.id < msg.withinTimeEnd.id) {
if (cmpNow >= msg.withinTimeStart.id && cmpNow < msg.withinTimeEnd.id) {
msg.withinTime = true;
this.debug('in time [1] - send msg to first output ' + result.startSuffix +
node.positionConfig.toDateTimeString(now) + result.endSuffix + ' (' + msg.withinTimeStart.id + ' - ' + cmpNow + ' - ' + msg.withinTimeEnd.id + ')');
send([msg, null]); // this.send([msg, null]);

@@ -320,4 +324,6 @@ done();

}
} else if (!(cmpNow >= endNr && cmpNow < startNr)) {
this.debug('in time [2] - send msg to first output ' + result.startSuffix + node.positionConfig.toDateTimeString(now) + result.endSuffix + ' (' + startNr + ' - ' + cmpNow + ' - ' + endNr + ')');
} else if (!(cmpNow >= msg.withinTimeEnd.id && cmpNow < msg.withinTimeStart.id)) {
msg.withinTime = true;
this.debug('in time [2] - send msg to first output ' + result.startSuffix +
node.positionConfig.toDateTimeString(now) + result.endSuffix + ' (' + msg.withinTimeStart.id + ' - ' + cmpNow + ' - ' + msg.withinTimeEnd.id + ')');
send([msg, null]); // this.send([msg, null]);

@@ -330,3 +336,3 @@ done();

}
msg.withinTime = false;
this.debug('out of time - send msg to second output ' + result.startSuffix + node.positionConfig.toDateTimeString(now) + result.endSuffix);

@@ -333,0 +339,0 @@ send([null, msg]); // this.send([null, msg]);

{
"name": "node-red-contrib-sun-position",
"version": "1.1.3",
"version": "1.1.4",
"description": "NodeRED nodes to get sun and moon position",

@@ -53,3 +53,2 @@ "keywords": [

"test": "eslint \"./**/*.js\" \"./**/*.html\"",
"camo-purg": "camo-purge; eslint \"./**/*.js\" \"./**/*.html\"",
"lintfix": "eslint --fix \"./**/*.js\" \"./**/*.html\"",

@@ -96,10 +95,9 @@ "lint": "eslint \"./**/*.js\" \"./**/*.html\"",

"devDependencies": {
"camo-purge": "^1.0.2",
"eslint": "^7.1.0",
"eslint-plugin-html": "^6.0.2",
"eslint-plugin-jsdoc": "^25.4.2",
"eslint-plugin-json": "^2.1.1",
"eslint": "^7.7.0",
"eslint-plugin-html": "^6.0.3",
"eslint-plugin-jsdoc": "^30.3.0",
"eslint-plugin-json": "^2.1.2",
"eslint-plugin-node": "^11.1.0",
"minimist": ">=1.2.5",
"yargs-parser": ">=18.1.3"
"yargs-parser": ">=19.0.1"
},

@@ -106,0 +104,0 @@ "disabledSettings": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc