В системе имеется несколько диммеров MDM. На каждый канал было подключено по 2 выключателя. Через скрипт настроили управление:
function RulesForLight(relay,channel,inputup,inputdown,downlevel,uplevel) {
defineRule({
whenChanged: inputdown + " Single Press Counter",
then: function (newValue, devName, cellName) {
if (dev[relay] == true && dev[channel] == downlevel) {
dev[relay] = false;
} else {
dev[channel] = downlevel;
dev[relay] = true;
}
log(channel,"level - ", dev[channel] = downlevel, dev[relay] ) // Вывод в лог состояние каналов
}
});
defineRule({
whenChanged: inputup + " Single Press Counter",
then: function (newValue, devName, cellName) {
if (dev[relay] == true && dev[channel] == uplevel) {
dev[relay] = false;
} else {
dev[channel] = uplevel;
dev[relay] = true;
}
log(channel,"level - ", dev[channel] = uplevel, dev[relay] ) // Вывод в лог состояние каналов
}
});
RulesForLight("wb-mdm3_162/K1","wb-mdm3_162/Channel 1","wb-mdm3_162/Input 1","wb-mdm3_162/Input 2",100,20);
RulesForLight("wb-mdm3_162/K2","wb-mdm3_162/Channel 2","wb-mdm3_162/Input 3","wb-mdm3_162/Input 4",100,20);
RulesForLight("wb-mdm3_162/K3","wb-mdm3_162/Channel 3","wb-mdm3_162/Input 5","wb-mdm3_162/Input 6",100,20);
RulesForLight("wb-mdm3_205/K1","wb-mdm3_205/Channel 1","wb-mdm3_205/Input 1","wb-mdm3_205/Input 2",100,20);
RulesForLight("wb-mdm3_205/K2","wb-mdm3_205/Channel 2","wb-mdm3_205/Input 3","wb-mdm3_205/Input 4",100,20);
RulesForLight("wb-mdm3_205/K3","wb-mdm3_205/Channel 3","wb-mdm3_205/Input 5","wb-mdm3_205/Input 6",100,20);
Работало так:
Исходное состояние свет выключен.
При нажатии на “верхний” выключатель (положение выключателя в помещении) загорался свет на 100%.
Если свет горит на 100% и нажали на “верхний” выключатель свет выключался.
Если свет выключен и нажали на “нижний” выключатель свет загорался на 20%.
Если свет горит на 20% и нажали на “нижний” выключатель свет выключался.
Если свет уже горел на 100% и нажали на “нижний” выключатель свет переключается на 20% и на оборот если горел на 20% и нажали на “верхний” выключатель свет загорится на 100%.
Диммирование удержанием в нажатом состоянии кнопок так же работало. Реализовано через штатные “зашитые” в диммер алгоритмы.
Логика управления светом с учетом диммирования такая: при коротком нажатии на на кнопку проверялось стояние света (вкл или выкл) если свет вкл проверялось значение яркости. если оно не соответствовало значению кнопки (верхняя -100%, нижняя- 20%) свет переключался на эту яркость. Если яркость соответствовала, то свет выключался.
Так и работало на прошивках диммера 2.7.1. а на контроллере 7 версии стояла прошивка четвертый квартал 2023 года. Точную версию уже сказать не могу.
После обновления контроллера пару дней назад на версию wb-2401 начались странные вещи:
При нажатии на “верхнюю” кнопку свет не включался. Если нажать на “нижнюю” кнопку свет включался и после этого действия “верхняя” кнопка начинает “работать” Иногда кнопки переставали работать. Не включали не не выключали горящий свет. Через логи вижу, что состояние (
log(channel,"level - ", dev[channel] = downlevel, dev[relay]
реле меняется (dev[relay]) но при этом сам свет не переключается. Через несколько нажатий свет переключался.
За это время конфигурация системы не менялась, писал скрипты для других устройств, но они не затрагивали логику этих диммеров.
Прошу помощи победить это проблему!