homebridge-musiccast-bnetqc
Version:
Homebridge Yamaha MusicCast Multiroom Plugin with precise volume control
74 lines • 2.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
const Cache_1 = require("./Cache");
const YamahaAPI_1 = require("./YamahaAPI");
const YamahaDevice_1 = require("./YamahaDevice");
const crypto_1 = __importDefault(require("crypto"));
const PLUGIN_NAME = "homebridge-musiccast-bnetqc";
const PLATFORM_NAME = "MusiccastMultiroom";
class MusiccastMultiroom {
constructor(log, platformConfig, api) {
const config = platformConfig;
const cache = new Cache_1.Cache(log);
var presetInfoRegex;
if (config.server.presetInfoRegex !== undefined) {
try {
presetInfoRegex = new RegExp(config.server.presetInfoRegex, 'g');
}
catch (error) {
log.info('invalid regex', error);
}
}
const devices = [];
try {
var serverConfig = {
host: config.server.host,
inputs: config.server.inputs,
volumeMin: config.server.volumeMin,
volumeMax: config.server.volumeMax
};
// MODIFIÉ : Logique simplifiée pour gérer les clients
if (config.clients) {
serverConfig.clients = config.clients.map(item => item.host);
}
else {
serverConfig.clients = [];
}
}
catch (error) {
log.error("invalid config", error);
return;
}
const groupId = crypto_1.default.createHash('md5').update(config.server.host).digest("hex");
const yamahaApi = new YamahaAPI_1.YamahaAPI(log, groupId, presetInfoRegex);
const serverDevice = new YamahaDevice_1.YamahaDevice(serverConfig, api, cache, log, yamahaApi);
devices.push(serverDevice);
// MODIFIÉ : Logique simplifiée pour créer les appareils clients
if (config.clients) {
try {
for (let client of config.clients) {
var clientConfig = {
host: client.host,
serverDevice: serverDevice,
volumeMin: client.volumeMin,
volumeMax: client.volumeMax,
};
devices.push(new YamahaDevice_1.YamahaDevice(clientConfig, api, cache, log, yamahaApi));
}
}
catch (error) {
log.error("invalid config", error);
return;
}
}
for (let device of devices) {
device.publishAccessory(PLUGIN_NAME);
}
}
}
module.exports = (api) => {
api.registerPlatform(PLATFORM_NAME, MusiccastMultiroom);
};
//# sourceMappingURL=main.js.map