homebridge-philips-hue-sync-box
Version:
Homebridge plugin for the Philips Hue Sync Box.
59 lines • 2.19 kB
JavaScript
import { BaseTvDevice } from './baseTv.js';
export class TvDevice extends BaseTvDevice {
platform;
accessory;
state;
mainAccessory;
constructor(platform, accessory, state, mainAccessory) {
super(platform, accessory, state, mainAccessory);
this.platform = platform;
this.accessory = accessory;
this.state = state;
this.mainAccessory = mainAccessory;
this.service
.getCharacteristic(this.platform.api.hap.Characteristic.ActiveIdentifier)
.onSet(value => {
return this.updateExecution({
hdmiSource: 'input' + value,
});
});
}
updateTv() {
this.platform.log.debug('Updated HDMI input to ' + this.state.execution.hdmiSource);
this.service.updateCharacteristic(this.platform.api.hap.Characteristic.ActiveIdentifier, parseInt(this.state.execution.hdmiSource.replace('input', '')));
}
getSuffix() {
return '-T';
}
getServiceSubType() {
return 'TV';
}
getServiceName() {
return 'TV';
}
getConfiguredNamePropertyName() {
return 'tvAccessoryConfiguredName';
}
isLightbulbEnabled() {
return this.platform.config.tvAccessoryLightbulb;
}
createInputServices() {
const services = [];
for (let i = 1; i <= 4; i++) {
// Sets the TV name
const hdmiState = this.state.hdmi[`input${i}`];
const hdmiPosition = 'HDMI ' + i;
const hdmiName = hdmiState.name ?? hdmiPosition;
const hdmiInputService = this.getInputService(hdmiName, hdmiPosition);
hdmiInputService
.getCharacteristic(this.platform.api.hap.Characteristic.TargetVisibilityState)
.onSet(this.setVisibility(hdmiInputService));
// Adds the input as a linked service, which is important so that the input is properly displayed in the Home app
this.service.addLinkedService(hdmiInputService);
services.push(hdmiInputService);
}
this.inputServices = services;
this.updateSources(services);
}
}
//# sourceMappingURL=tv.js.map