homebridge-awattar
Version:
Plugin exposes virtual (switch, light, presence, temperature) accessories and enables HomeKit automation by aWattar electricity pricing in Austria.
137 lines • 5.04 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultAreaTimezone = exports.defaultService = exports.pricing = exports.devices = exports.PLATFORM_SERIAL_NUMBER = exports.PLATFORM_MODEL = exports.PLATFORM_VERSION = exports.PLATFORM_MANUFACTURER = exports.PLUGIN_NAME = exports.PLATFORM_NAME = void 0;
exports.defaultPricesCache = defaultPricesCache;
exports.fnc_todayKey = fnc_todayKey;
exports.fnc_tomorrowKey = fnc_tomorrowKey;
exports.fnc_currentHour = fnc_currentHour;
const Path = __importStar(require("path"));
const fs = __importStar(require("fs"));
const luxon_1 = require("luxon");
const file_system_cache_1 = require("file-system-cache");
const console_1 = require("console");
/* eslint @typescript-eslint/no-var-requires: "off" */
const pkg = require('../package.json');
exports.PLATFORM_NAME = 'aWATTar';
exports.PLUGIN_NAME = pkg.name;
exports.PLATFORM_MANUFACTURER = pkg.author.name;
exports.PLATFORM_VERSION = pkg.version;
exports.PLATFORM_MODEL = 'Electricity price sensors';
exports.PLATFORM_SERIAL_NUMBER = 'UN783GU921Y0';
// main device(s)
exports.devices = [
{
UniqueId: 'JKGhJH654*87pDE',
displayName: 'aWATTar',
},
];
// eslint-disable-next-line prefer-const
exports.pricing = {
today: [],
currently: 0.0001,
currentlyNeg: 0.0001,
currentHour: 0,
cheapestHour: [],
cheapest2Hours: [],
cheapest3Hours: [],
cheapest4Hours: [],
cheapest5Hours: [],
cheapest5HoursConsec: [],
cheapest5HoursConsec2days: [],
cheapest6Hours: [],
cheapest7Hours: [],
cheapest8Hours: [],
cheapest9Hours: [],
cheapest10Hours: [],
cheapest11Hours: [],
cheapest12Hours: [],
priciestHour: [],
median: 0,
median2days: 0,
};
exports.defaultService = {
currently: null,
currentlyNeg: null,
cheapestHour: null,
cheapest2Hours: null,
cheapest3Hours: null,
cheapest4Hours: null,
cheapest5Hours: null,
cheapest5HoursConsec: null,
cheapest6Hours: null,
cheapest7Hours: null,
cheapest8Hours: null,
cheapest9Hours: null,
cheapest10Hours: null,
cheapest11Hours: null,
cheapest12Hours: null,
priciestHour: null,
hourlyTickerSwitch: null,
};
function defaultPricesCache(api) {
const ns = 'homebridge-nordpool-baltics';
const nsHash = 'b162cf22c8adb8fa829628b261839cad18dc3994';
const storagePath = api.user.storagePath();
const cacheDirectory = Path.join(storagePath, '.cache');
// check if directory .cache exists
if (!fs.existsSync(cacheDirectory)) {
fs.mkdirSync(cacheDirectory, { recursive: true });
(0, console_1.log)('New Directory created successfully !!');
}
else {
(0, console_1.log)('Given Directory already exists !!');
}
// auto-cleanup of old cached files on init
const files = fs.readdirSync(cacheDirectory);
const now = Date.now();
files.filter(file => file.startsWith(`${nsHash}-`)).forEach(file => {
const filePath = Path.join(cacheDirectory, file);
const stats = fs.statSync(filePath);
const fileAge = now - stats.mtimeMs;
// Check if file is older than 2 days
if (fileAge >= 172800 * 1000 * 2) {
try {
fs.unlinkSync(filePath);
}
catch (error) {
// Ignore any error
}
}
});
return new file_system_cache_1.Cache({ basePath: cacheDirectory, ns: ns, ttl: 172800 });
}
// same timezone applies to all Nordpool zones: LT, LV, EE, FI
exports.defaultAreaTimezone = 'Europe/Vienna';
function fnc_todayKey() {
return luxon_1.DateTime.local().setZone(exports.defaultAreaTimezone).toFormat('yyyy-MM-dd');
}
function fnc_tomorrowKey() {
return luxon_1.DateTime.local().plus({ day: 1 }).setZone(exports.defaultAreaTimezone).toFormat('yyyy-MM-dd');
}
function fnc_currentHour() {
return luxon_1.DateTime.local().setZone(exports.defaultAreaTimezone).hour;
}
//# sourceMappingURL=settings.js.map