Simplified config parsing
This commit is contained in:
106
src/index.ts
106
src/index.ts
@@ -1,8 +1,9 @@
|
||||
import { ControlUnit } from "./Accessories/ControlUnit";
|
||||
import { Activity } from "./Models/Activity";
|
||||
import { DeviceSetupItem } from "./Models/DeviceSetupItem";
|
||||
import { Input, Output, Matrix } from "./Models/Matrix";
|
||||
import { IActivity } from "./Models/Activity";
|
||||
import { IDeviceSetupItem } from "./Models/DeviceSetupItem";
|
||||
import { IInput, IOutput, IMatrix } from "./Models/Matrix";
|
||||
import HarmonyDataProvider from "./DataProviders/HarmonyDataProvider";
|
||||
import { IConfig, IControlUnit } from "./Models/IConfig";
|
||||
|
||||
let Accessory: any;
|
||||
let Homebridge: any;
|
||||
@@ -24,7 +25,7 @@ export default function (homebridge: any) {
|
||||
|
||||
class HarmonyMatrixPlatform {
|
||||
log: any = {};
|
||||
config: any = {};
|
||||
config: IConfig;
|
||||
api: any;
|
||||
dataProvider: HarmonyDataProvider | null;
|
||||
controlUnits: Array<ControlUnit> = [];
|
||||
@@ -37,7 +38,6 @@ class HarmonyMatrixPlatform {
|
||||
this.api.on('didFinishLaunching', this.didFinishLaunching.bind(this));
|
||||
|
||||
this.dataProvider = null;
|
||||
this.log("This is new");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,7 +51,6 @@ class HarmonyMatrixPlatform {
|
||||
this.controlUnits.forEach((accessory: ControlUnit) => {
|
||||
this.api.publishExternalAccessories("HarmonyMatrixPlatform", [accessory.platformAccessory]);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,103 +58,22 @@ class HarmonyMatrixPlatform {
|
||||
* @param callback
|
||||
*/
|
||||
accessories(callback: (accessories: Array<ControlUnit>) => void) {
|
||||
//Parse ip
|
||||
let hubIp: string = this.config["hubIp"];
|
||||
|
||||
//Parse matrix
|
||||
let configInputs: any = this.config["Matrix"]["Inputs"];
|
||||
let configOutputs: any = this.config["Matrix"]["Outputs"];
|
||||
let matrixName: string = this.config["Matrix"]["DeviceName"];
|
||||
|
||||
let inputs: Array<Input> = [];
|
||||
let outputs: Array<Output> = [];
|
||||
|
||||
configInputs.forEach((configInput: any) => {
|
||||
let inputDevice: string = configInput["InputDevice"];
|
||||
let inputNumber: string = configInput["InputNumber"];
|
||||
|
||||
this.log(`INFO - Added input to matrix '${inputDevice}'`);
|
||||
|
||||
inputs.push({
|
||||
inputDevice: inputDevice,
|
||||
inputNumber: inputNumber
|
||||
});
|
||||
});
|
||||
configOutputs.forEach((configOutput: any) => {
|
||||
let outputDevice: string = configOutput["OutputDevice"];
|
||||
let outputLetter: string = configOutput["OutputLetter"];
|
||||
|
||||
this.log(`INFO - Added output to matrix '${outputDevice}'`);
|
||||
|
||||
outputs.push({
|
||||
outputDevice: outputDevice,
|
||||
outputLetter: outputLetter
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
let matrix = new Matrix({
|
||||
inputs: inputs,
|
||||
outputs: outputs,
|
||||
deviceName: matrixName,
|
||||
});
|
||||
|
||||
//construct data provider
|
||||
this.dataProvider = new HarmonyDataProvider({
|
||||
hubAddress: hubIp,
|
||||
matrix: matrix,
|
||||
hubAddress: this.config.hubIp,
|
||||
matrix: this.config.Matrix,
|
||||
log: this.log
|
||||
});
|
||||
|
||||
//Parse control units
|
||||
let configControlUnits: any = this.config["ControlUnits"];
|
||||
|
||||
configControlUnits.forEach((configControlUnit: any) => {
|
||||
//Parse activities list
|
||||
let configActivities: any = configControlUnit["Activities"];
|
||||
let activities: Array<Activity> = [];
|
||||
configActivities.forEach((configActivity: any) => {
|
||||
//parse devices
|
||||
let configDevices: any = configActivity["DeviceSetupList"];
|
||||
let devices: Array<DeviceSetupItem> = [];
|
||||
configDevices.forEach((configDevice: any) => {
|
||||
//Add device
|
||||
devices.push(new DeviceSetupItem({
|
||||
deviceName: configDevice["DeviceName"],
|
||||
input: configDevice["Input"]
|
||||
}));
|
||||
this.log(`INFO - Added device '${configDevice["DeviceName"]}' for activity '${configActivity["DisplayName"]}'`);
|
||||
});
|
||||
|
||||
//Add activity
|
||||
activities.push(new Activity({
|
||||
volumeDeviceId: configActivity["VolumeDevice"],
|
||||
controlDeviceId: configActivity["ControlDevice"],
|
||||
outputDeviceId: configActivity["OutputDevice"],
|
||||
displayName: configActivity["DisplayName"],
|
||||
useMatrix: configActivity["UseMatrix"] === "true" ? true : false,
|
||||
deviceList: devices
|
||||
}));
|
||||
this.log(`INFO - Added activity '${configActivity["DisplayName"]}'`);
|
||||
});
|
||||
|
||||
let controlUnit: ControlUnit = new ControlUnit({
|
||||
this.config.ControlUnits.forEach((unit: IControlUnit) => {
|
||||
this.controlUnits.push(new ControlUnit({
|
||||
dataProvider: this.dataProvider!,
|
||||
displayName: configControlUnit["DisplayName"],
|
||||
displayName: unit.DisplayName,
|
||||
api: this.api,
|
||||
log: this.log,
|
||||
activities: activities,
|
||||
activities: unit.Activities,
|
||||
homebridge: Homebridge,
|
||||
});
|
||||
|
||||
//@ts-ignore
|
||||
let accessory = controlUnit as homebridge.platformAccessory;
|
||||
//@ts-ignore
|
||||
|
||||
//Add control unit
|
||||
this.controlUnits.push(accessory);
|
||||
|
||||
this.log(`INFO - Added ControlUnit`);
|
||||
}));
|
||||
});
|
||||
callback(this.controlUnits);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user