UNPKG

homebridge-nordpool-baltics

Version:

Plugin exposes virtual accessories (switch, light, presence, temperature) and enables HomeKit automation by Nordpool electricity price in Lithuania, Latvia, Estonia, Sweden, Norway, Denmark.

49 lines 2.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.spothinta_convertDataStructure = exports.spothinta_getNordpoolData = void 0; const axios_1 = __importDefault(require("axios")); const luxon_1 = require("luxon"); const settings_1 = require("./settings"); async function spothinta_getNordpoolData(log, config) { const area = config.area.toUpperCase(); // Ensure the area is in uppercase (e.g., SE1, SE2, etc.) const reqDate = luxon_1.DateTime.now().toFormat('yyyy-MM-dd'); try { const response = await axios_1.default.get(`https://d2bgvb23eieffh.cloudfront.net/?reqDate=${reqDate}&region=${area}`); if (response.status !== 200) { log.warn(`WARN: Nordpool API provider 2 returned unusual response status ${response.status}`); return null; } if (!response.data || response.data.length < 23) { log.error(`ERR: Nordpool API provider 2 returned unusual data ${JSON.stringify(response.data)}`); return null; } const convertedData = spothinta_convertDataStructure(response.data, config); return convertedData; } catch (error) { log.error(`ERR: General Nordpool API provider 2 error: ${error}`); return null; } } exports.spothinta_getNordpoolData = spothinta_getNordpoolData; function spothinta_convertDataStructure(data, config) { var _a; const decimalPrecision = (_a = config.decimalPrecision) !== null && _a !== void 0 ? _a : 1; return data .map((item) => { // Convert timestamp from ISO const date = luxon_1.DateTime.fromISO(item['DateTime']).setZone((0, settings_1.defaultAreaTimezone)(config)); // Convert price from EUR to Cents per kWh const price = parseFloat((item['PriceNoTax'] * 100).toFixed(decimalPrecision)); return { day: date.toFormat('yyyy-MM-dd'), hour: parseInt(date.toFormat('HH')), price, }; }); } exports.spothinta_convertDataStructure = spothinta_convertDataStructure; //# sourceMappingURL=funcs_SpotHinta.js.map