matterbridge-daikin-ac
Version:
Daikin AC Matterbridge plugin
61 lines • 2.35 kB
JavaScript
import { MatterbridgeDynamicPlatform } from 'matterbridge';
import { GIT_BRANCH, GIT_COMMIT } from './gitInfo.js';
import { DaikinMatterDevice } from './DaikinMatterDevice.js';
export class DaikinAcPlatform extends MatterbridgeDynamicPlatform {
debugEnabled;
isPluginConfigured = false;
isConfigValid = false;
daikinIPs = [];
devices = [];
constructor(matterbridge, log, config) {
super(matterbridge, log, config);
this.log.info('Initializing Daikin AC platform');
this.log.info(`Code build from branch '${GIT_BRANCH}', commit '${GIT_COMMIT}'`);
this.debugEnabled = config.debug;
if (config.daikinIPs)
this.daikinIPs = config.daikinIPs;
this.isConfigValid = true;
}
async onStart(reason) {
if (!this.isConfigValid) {
throw new Error('Plugin not configured yet, configure first, then restart.');
}
this.log.info(`Starting Daikin AC dynamic platform v${this.version}: ` + reason);
await this.createDevices();
await this.ready;
await this.clearSelect();
}
async onConfigure() {
await super.onConfigure();
this.log.info(`Running onConfigure`);
await this.restoreState();
this.isPluginConfigured = true;
}
async createDevices() {
for (const daikinIP of this.daikinIPs) {
const parts = daikinIP.split(',');
const ip = parts[0];
let options = {};
if (parts.length > 1 && parts[1] === 'useGetToPost') {
options = { useGetToPost: true };
}
this.log.info(`Creating Daikin AC device at IP: ${ip} with options: ${JSON.stringify(options)}`);
const device = new DaikinMatterDevice(this, ip, options);
await device.connect();
await device.createEndpoint();
this.devices.push(device);
device.registerWithPlatform();
}
}
async restoreState() {
this.log.info('Restoring state for Daikin AC platform');
for (const device of this.devices) {
await device.restoreState();
}
}
async onShutdown(reason) {
await super.onShutdown(reason);
this.log.info('Shutting down Daikin AC platform: ' + reason);
}
}
//# sourceMappingURL=platform.js.map