src/configuration-optimizers/resol-deltatherm-hc-xxx-configuration-optimizer.js
/*! resol-vbus | Copyright (c) 2013-present, Daniel Wippermann | MIT license */
const configurationData = require('./resol-deltatherm-hc-xxx-data');
const BaseConfigurationOptimizer = require('../base-configuration-optimizer');
class ResolDeltaThermHcXxxConfigurationOptimizer extends BaseConfigurationOptimizer {
optimizeConfiguration($) {
this.optimizeModuleConfiguration($);
// TODO?
this.optimizeAnlageWfConfiguration($);
this.optimizeHeizungWfConfiguration($);
this.optimizeHeizungHeizkreisConfiguration($);
this.optimizeWmzConfiguration($);
}
optimizeModuleConfiguration($) {
$(/^Modul([0-9]+)_Aktiviert$/).isFalse((value) => {
$('^(Sensor|Relais)[^_]*_Modul' + value.md [1] + '_.*$').ignore();
});
}
optimizeAnlageWfConfiguration($) {
$(/^(Anlage_Wf[0-9]+)_Type$/).forEach((value) => {
const prefix = '^' + value.md [1] + '_';
value.eql('#Frei', () => {
$(prefix + '(?!Type).*').ignore();
});
$(prefix + 'OSchaltuhr').isFalse(() => {
$(prefix + 'Schaltuhr_.*').ignore();
});
const wfTypes = Object.getOwnPropertyNames(value.values [0].valueTextById);
for (const wfType of wfTypes) {
if ((wfType !== 'Frei') && (wfType !== 'Fehlerrelais')) {
value.notEql('#' + wfType, () => {
$(prefix + wfType + '_.*').ignore();
});
}
}
});
}
optimizeHeizungWfConfiguration($) {
$(/^(Heizung_Wf[0-9]+)_Type$/).forEach((value) => {
const prefix = '^' + value.md [1] + '_';
value.eql('#Frei', () => {
$(prefix + '(?!Type).*').ignore();
});
$(prefix + 'OSchaltuhr').isFalse(() => {
$(prefix + 'Schaltuhr_.*').ignore();
});
const wfTypes = Object.getOwnPropertyNames(value.values [0].valueTextById);
for (const wfType of wfTypes) {
if (wfType !== 'Frei') {
value.notEql('#' + wfType, () => {
$(prefix + wfType + '_.*').ignore();
});
}
}
});
}
optimizeHeizungHeizkreisConfiguration($) {
$(/^(Heizung_Heizkreis[0-9]+)_Type$/).forEach((value) => {
const prefix = '^' + value.md [1] + '_';
value.eql('#Frei', () => {
$(prefix + '(?!Type).*').ignore();
});
$(prefix + 'OSchaltuhr').isFalse(() => {
$(prefix + 'Schaltuhr_.*').ignore();
});
$(prefix + '(Raumthermostat[0-9]+)_Option$').forEach((value) => {
const rthPrefix = prefix + value.md [1] + '_';
value.eql(0, () => {
$(rthPrefix + '(?!Option).*').ignore();
});
$(rthPrefix + 'OSchaltuhr').isFalse(() => {
$(rthPrefix + 'Schaltuhr_.*').ignore();
});
});
});
}
optimizeWmzConfiguration($) {
$(/^(Wmz[0-9]+)_Type$/).forEach((value) => {
const prefix = '^' + value.md [1] + '_';
value.eql(0, () => {
$(prefix + '(?!Type).*').ignore();
});
});
}
}
Object.assign(ResolDeltaThermHcXxxConfigurationOptimizer, /** @lends ResolDeltaThermHcXxxConfigurationOptimizer */ {
deviceAddress: 0x5400,
configurationData,
});
module.exports = ResolDeltaThermHcXxxConfigurationOptimizer;