1
0
This repository has been archived on 2025-01-10. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openhab-js-automation-old/utils/lib.js
2023-08-14 19:34:20 +02:00

105 lines
3.1 KiB
JavaScript

console.loggerName = 'js.lib';
console.log('Load lib module');
function compare(a, b, operator) {
// Hint: a = currentState, b = targetState
let logMsg = a + ', ' + b + ' with operator ' + operator;
let returnValue = undefined;
try {
logMsg = 'Quantity comparison of ' + logMsg;
switch (operator) {
case '==':
returnValue = a.equal(b);
break;
case '!=':
returnValue = !a.equal(b);
break;
case '<' :
returnValue = a.lessThan(b);
break;
case '<=':
returnValue = a.lessThanOrEqual(b);
break;
case '>' :
returnValue = a.greaterThan(b);
break;
case '>=':
returnValue = a.greaterThanOrEqual(b);
break;
}
} catch(e) {
logMsg = 'Standard comparison of ' + logMsg;
switch (operator) {
case '==':
returnValue = (a == b);
break;
case '!=':
returnValue = !(a == b);
break;
case '<' :
returnValue = (a < b);
break;
case '<=':
returnValue = (a <= b);
break;
case '>' :
returnValue = (a > b);
break;
case '>=':
returnValue = (a >= b);
break;
}
}
if (returnValue == undefined) {
console.error('No valid operator provided');
} else {
console.debug(logMsg);
}
return returnValue;
}
function convertValue(value) {
console.debug('Converting value ' + value + ' of type ' + typeof value);
if(typeof value === 'string') {
if(value.includes(' ')) {
let logMsg = '';
let returnValue;
try {
logMsg = 'Quantity: ' + value;
returnValue = Quantity(value);
} catch(e) {
logMsg = 'Not a Quantity but has a space, leaving as a string: ' + value;
returnValue = value;
} finally {
console.debug(logMsg);
return returnValue;
}
} else if(!isNaN(value)) {
console.debug('Number: ' + value)
return Number.parseFloat(value);
} else if(value == 'UnDefType' || value == 'NULL' || value == 'UNDEF') {
console.debug('UnDefType: ' + value);
return 'UnDefType';
}
console.debug('String: ' + value);
return value;
} else if(value instanceof DecimalType || value instanceof PercentType) {
console.debug('DecimalType or PercentType: ' + value);
return value.floatValue();
} else if(value instanceof QuantityType) {
console.debug('QuantityType: ' + value);
return Quantity(value);
} else {
console.debug('String: ' + value);
return value.toString();
}
}
module.exports = {
compare,
convertValue
};