homebridge-awattar
Version:
Plugin exposes virtual (switch, light, presence, temperature) accessories and enables HomeKit automation by aWattar electricity pricing in Austria.
65 lines • 3.09 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.eleringEE_getNordpoolData = eleringEE_getNordpoolData;
exports.eleringEE_convertDataStructure = eleringEE_convertDataStructure;
const luxon_1 = require("luxon");
const settings_1 = require("./settings");
const axios_1 = __importDefault(require("axios"));
// import { map } from 'ramda';
async function eleringEE_getNordpoolData(log, config) {
const start = luxon_1.DateTime.utc().startOf('day').minus({ hours: 2 }).toISO();
const end = luxon_1.DateTime.utc().plus({ days: 1 }).endOf('day').minus({ hours: 2 }).toISO();
const encodedStart = encodeURIComponent(start);
const encodedEnd = encodeURIComponent(end);
try {
const url = `https://api.awattar.at/v1/marketdata?start=${encodedStart}&end=${encodedEnd}`;
const response = await axios_1.default.get(url);
log.warn(`Werte ${JSON.stringify(response.data)}`);
//log.warn(`Werte ${JSON.stringify(response.data.data)}`);
log.info(response.data.data);
//log.info(response.data);
log.info(`${response.status}`);
log.info(response.statusText);
log.info(`${response.headers}`);
log.info(`Config:${response.config}`);
//log.info(`ConvertedData:, ${Array.of.json(eleringEE_convertDataStructure(response.data.data, config)))}`);
if (response.status !== 200) {
log.warn(`WARN: Nordpool API provider Elering returned unusual response status ${response.status}`);
log.warn(`Werte ${JSON.stringify(response.data)}`);
}
if (response.data.data) {
const convertedData = eleringEE_convertDataStructure(response.data.data, config);
log.info(`convertedData: ${convertedData}`);
return convertedData;
}
else {
log.error(`ERR: Nordpool API provider Elering returned unusual data ${JSON.stringify(response.data)}`);
}
}
catch (error) {
log.error(`ERR: General Nordpool API provider Elering error: ${error}`);
}
return null;
}
function eleringEE_convertDataStructure(data, config) {
var _a;
//const area = config.area.toLowerCase();
const decimalPrecision = (_a = config.decimalPrecision) !== null && _a !== void 0 ? _a : 1;
[];
return data.map((item) => {
// convert the timestamp to ISO string, add the '+01:00' timezone offset
const date = luxon_1.DateTime.fromISO(new Date(item.start_timestamp).toISOString()).setZone(settings_1.defaultAreaTimezone);
//const data = useState([]);
// divide by 10 to convert price to cents per kWh
item.marketprice = parseFloat((item.marketprice / 10).toFixed(decimalPrecision));
return {
day: date.toFormat('yyyy-MM-dd'),
hour: parseInt(date.toFormat('HH')),
price: item.marketprice,
};
});
}
//# sourceMappingURL=funcs_Elering.js.map