UNPKG

iobroker.tibberlink

Version:

links tibber API data to be used in ioBroker

198 lines 8.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProjectUtils = exports.enCalcType = void 0; exports.getCalcTypeDescription = getCalcTypeDescription; var enCalcType; (function (enCalcType) { enCalcType[enCalcType["BestCost"] = 1] = "BestCost"; enCalcType[enCalcType["BestSingleHours"] = 2] = "BestSingleHours"; enCalcType[enCalcType["BestHoursBlock"] = 3] = "BestHoursBlock"; enCalcType[enCalcType["BestCostLTF"] = 4] = "BestCostLTF"; enCalcType[enCalcType["BestSingleHoursLTF"] = 5] = "BestSingleHoursLTF"; enCalcType[enCalcType["BestHoursBlockLTF"] = 6] = "BestHoursBlockLTF"; enCalcType[enCalcType["SmartBatteryBuffer"] = 7] = "SmartBatteryBuffer"; enCalcType[enCalcType["BestPercentage"] = 8] = "BestPercentage"; enCalcType[enCalcType["BestPercentageLTF"] = 9] = "BestPercentageLTF"; enCalcType[enCalcType["SmartBatteryBufferLTF"] = 10] = "SmartBatteryBufferLTF"; })(enCalcType || (exports.enCalcType = enCalcType = {})); function getCalcTypeDescription(calcType) { const descriptions = { [enCalcType.BestCost]: `best cost`, [enCalcType.BestSingleHours]: `best single hours`, [enCalcType.BestHoursBlock]: `best hours block`, [enCalcType.BestCostLTF]: `best cost LTF`, [enCalcType.BestSingleHoursLTF]: `best single hours LTF`, [enCalcType.BestHoursBlockLTF]: `best hours block LTF`, [enCalcType.SmartBatteryBuffer]: `smart battery buffer`, [enCalcType.BestPercentage]: `best percentage`, [enCalcType.BestPercentageLTF]: `best percentage LTF`, [enCalcType.SmartBatteryBufferLTF]: `smart battery buffer LTF`, }; return descriptions[calcType] || `Unknown`; } class ProjectUtils { adapter; constructor(adapter) { this.adapter = adapter; } async getStateValue(stateName) { try { const stateObject = await this.getState(stateName); return stateObject?.val ?? null; } catch (error) { this.adapter.log.error(`[getStateValue](${stateName}): ${error}`); return null; } } async getState(stateName) { try { if (await this.verifyStateAvailable(stateName)) { const stateValueObject = await this.adapter.getStateAsync(stateName); if (!this.isLikeEmpty(stateValueObject)) { return stateValueObject; } throw new Error(`Unable to retrieve info from state '${stateName}'.`); } } catch (error) { this.adapter.log.error(`[asyncGetState](${stateName}): ${error}`); return null; } } async verifyStateAvailable(stateName) { const stateObject = await this.adapter.getObjectAsync(stateName); if (!stateObject) { this.adapter.log.debug(`[verifyStateAvailable](${stateName}): State does not exist.`); return false; } return true; } async asyncGetForeignStateVal(stateName) { try { const stateObject = await this.asyncGetForeignState(stateName); if (stateObject == null) { return null; } return stateObject.val; } catch (error) { this.adapter.log.error(`[asyncGetForeignStateValue](${stateName}): ${error}`); return null; } } async asyncGetForeignState(stateName) { try { const stateObject = await this.adapter.getForeignObjectAsync(stateName); if (!stateObject) { throw new Error(`State '${stateName}' does not exist.`); } else { const stateValueObject = await this.adapter.getForeignStateAsync(stateName); if (!this.isLikeEmpty(stateValueObject)) { return stateValueObject; } throw new Error(`Unable to retrieve info from state '${stateName}'.`); } } catch (error) { this.adapter.log.error(`[asyncGetForeignState](${stateName}): ${error}`); return null; } } isLikeEmpty(inputVar) { if (typeof inputVar !== "undefined" && inputVar !== null) { let sTemp = JSON.stringify(inputVar); sTemp = sTemp.replace(/\s+/g, ""); sTemp = sTemp.replace(/"+/g, ""); sTemp = sTemp.replace(/'+/g, ""); sTemp = sTemp.replace(/\[+/g, ""); sTemp = sTemp.replace(/\]+/g, ""); sTemp = sTemp.replace(/\{+/g, ""); sTemp = sTemp.replace(/\}+/g, ""); if (sTemp !== "") { return false; } return true; } return true; } async checkAndSetValue(stateName, value, description = "-", role = "text", writeable = false, dontUpdate = false, forceMode = false) { if (value?.trim()?.length) { const commonObj = { name: stateName.split(".").pop() ?? stateName, type: "string", role: role, desc: description, read: true, write: writeable, }; await (forceMode ? this.adapter.setObject(stateName, { type: "state", common: commonObj, native: {} }) : this.adapter.setObjectNotExistsAsync(stateName, { type: "state", common: commonObj, native: {} })); if (!dontUpdate || !(await this.adapter.getStateAsync(stateName))) { await this.adapter.setState(stateName, { val: value, ack: true }); } } } async checkAndSetValueNumber(stateName, value, description = "-", unit, role = "value", writeable = false, dontUpdate = false, forceMode = false, min, max, step) { if (value !== undefined) { const commonObj = { name: stateName.split(".").pop() ?? stateName, type: "number", role: role, desc: description, read: true, write: writeable, ...((unit ?? undefined) ? { unit } : {}), ...((min ?? undefined) ? { min } : {}), ...((max ?? undefined) ? { max } : {}), ...((step ?? undefined) ? { step } : {}), }; await (forceMode ? this.adapter.setObject(stateName, { type: "state", common: commonObj, native: {} }) : this.adapter.setObjectNotExistsAsync(stateName, { type: "state", common: commonObj, native: {} })); if (!dontUpdate || !(await this.adapter.getStateAsync(stateName))) { await this.adapter.setState(stateName, { val: value, ack: true }); } } } async checkAndSetValueBoolean(stateName, value, description = "-", role = "indicator", writeable = false, dontUpdate = false, forceMode = false) { if (value !== undefined && value !== null) { const commonObj = { name: stateName.split(".").pop() ?? stateName, type: "boolean", role: role, desc: description, read: true, write: writeable, }; await (forceMode ? this.adapter.setObject(stateName, { type: "state", common: commonObj, native: {} }) : this.adapter.setObjectNotExistsAsync(stateName, { type: "state", common: commonObj, native: {} })); if (!dontUpdate || !(await this.adapter.getStateAsync(stateName))) { await this.adapter.setState(stateName, { val: value, ack: true }); } } } generateErrorMessage(error, context) { let errorMessages = ""; if (error.errors && Array.isArray(error.errors)) { for (const err of error.errors) { if (errorMessages) { errorMessages += ", "; } errorMessages += err.message; } } else if (error.message) { errorMessages = error.message; } else { errorMessages = "Unknown error"; } return `Error (${error.statusMessage || error.statusText || "Unknown Status"}) occurred during: -${context}- : ${errorMessages}`; } } exports.ProjectUtils = ProjectUtils; //# sourceMappingURL=projectUtils.js.map