Modifying to publish new external accessory to fix remote problem (untested)
This commit is contained in:
parent
f0eb57e4dc
commit
7638644935
@ -35,6 +35,7 @@ export interface IControlUnitProps {
|
||||
api: any,
|
||||
log: any,
|
||||
homebridge: any,
|
||||
isExternal: boolean,
|
||||
}
|
||||
|
||||
/**
|
||||
@ -47,6 +48,7 @@ export class ControlUnit implements IAccessory {
|
||||
//fields
|
||||
private log: any = {};
|
||||
private displayName: string = "";
|
||||
private isExternal: boolean = false;
|
||||
|
||||
//Service fields
|
||||
private televisionService: HAPNodeJS.Service | undefined;
|
||||
@ -72,6 +74,7 @@ export class ControlUnit implements IAccessory {
|
||||
Characteristic = props.api.hap.Characteristic;
|
||||
this.displayName = props.displayName;
|
||||
this.name = this.displayName;
|
||||
this.isExternal = props.isExternal;
|
||||
|
||||
this.activities = props.activities;
|
||||
|
||||
@ -142,10 +145,12 @@ export class ControlUnit implements IAccessory {
|
||||
* Event handler for SET active characteristic
|
||||
*/
|
||||
private onSetAccessoryActive = async (value: any) => {
|
||||
switch (value) {
|
||||
case 0: this.dataProvider.powerOff(this.name); break;
|
||||
//Turn on with first activity
|
||||
case 1: this.dataProvider.powerOn(this.name, this.activities[0]); break;
|
||||
if (!this.isExternal) {
|
||||
switch (value) {
|
||||
case 0: this.dataProvider.powerOff(this.name); break;
|
||||
//Turn on with first activity
|
||||
case 1: this.dataProvider.powerOn(this.name, this.activities[0]); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,7 +159,7 @@ export class ControlUnit implements IAccessory {
|
||||
*/
|
||||
private onGetAccessoryActive = async () => {
|
||||
//@ts-ignore
|
||||
return this.dataProvider.getIsActive ? Characteristic.Active.Active : Characteristic.Active.Inactive
|
||||
return this.dataProvider.getIsActive() ? Characteristic.Active.Active : Characteristic.Active.Inactive
|
||||
}
|
||||
|
||||
/**
|
||||
|
26
src/index.ts
26
src/index.ts
@ -27,6 +27,7 @@ class HarmonyMatrixPlatform {
|
||||
config: any = {};
|
||||
api: any;
|
||||
externalAccessories: Array<any> = [];
|
||||
dataProvider: HarmonyDataProvider | null;
|
||||
|
||||
constructor(log: any, config: any, api: any) {
|
||||
this.log = log;
|
||||
@ -34,10 +35,13 @@ class HarmonyMatrixPlatform {
|
||||
this.api = api;
|
||||
this.log('INFO - Registering Harmony Matrix Platform');
|
||||
this.api.on('didFinishLaunching', this.didFinishLaunching.bind(this));
|
||||
|
||||
this.dataProvider = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for didFinishLaunching
|
||||
* Happens after constructor
|
||||
*/
|
||||
didFinishLaunching() {
|
||||
this.log(`Publishing external accessories`);
|
||||
@ -96,7 +100,7 @@ class HarmonyMatrixPlatform {
|
||||
});
|
||||
|
||||
//construct data provider
|
||||
let dataProvider = new HarmonyDataProvider({
|
||||
this.dataProvider = new HarmonyDataProvider({
|
||||
hubAddress: hubIp,
|
||||
matrix: matrix,
|
||||
log: this.log
|
||||
@ -135,23 +139,37 @@ class HarmonyMatrixPlatform {
|
||||
});
|
||||
|
||||
let controlUnit: ControlUnit = new ControlUnit({
|
||||
dataProvider: dataProvider,
|
||||
dataProvider: this.dataProvider!,
|
||||
displayName: configControlUnit["DisplayName"],
|
||||
api: this.api,
|
||||
log: this.log,
|
||||
activities: activities,
|
||||
homebridge: Homebridge
|
||||
homebridge: Homebridge,
|
||||
isExternal: false
|
||||
});
|
||||
|
||||
let controlUnitExternal: ControlUnit = new ControlUnit({
|
||||
dataProvider: this.dataProvider!,
|
||||
displayName: `${configControlUnit["DisplayName"]}-Remote`,
|
||||
api: this.api,
|
||||
log: this.log,
|
||||
activities: activities,
|
||||
homebridge: Homebridge,
|
||||
isExternal: true
|
||||
});
|
||||
|
||||
//@ts-ignore
|
||||
let accessory = controlUnit as homebridge.platformAccessory;
|
||||
//@ts-ignore
|
||||
let externalAccessory = controlUnitExternal as homebridge.platformAccessory;
|
||||
|
||||
//Add control unit
|
||||
controlUnits.push(accessory);
|
||||
//Add to list of remotes
|
||||
this.externalAccessories.push(externalAccessory);
|
||||
|
||||
this.log(`INFO - Added ControlUnit`);
|
||||
});
|
||||
this.externalAccessories = controlUnits;
|
||||
callback(controlUnits);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user