Здравствуйте. 3й день не могу написать скрипт для кнопочных выключателей без фиксации. Выключатели сидят на WBIO-DI-WD-14
Нагрузки сидят на WBIO-DO-R1G-16
Всякие варианты перебрал, форум читал, сторонние сайты читал, не получается и всё.
Дайте пример такого скрипта, пожалуйста
То что крутится у меня сейчас, оригинал нашел тут на форуме. скрипт
Что пока не понятно для меня - при перезагрузке случайно включаются различные группы освещения. Когда скрипт убираю старт контроллера происходит без включения реле.
Выключатели заведены также на WD14 и HVD16, нагрузка на MRC6
Тут можно или “принудительно” устанавливать реле так:
или поправить скрипт. Где лежит, у меня ссылка не отрабатывает?
Известная проблема, упоминается здесь: Движок правил: примеры кода - #138 от пользователя BrainRoot
Варианты решения:
- Добавить выключение после загрузки, пример указан выше.
- Внутрь defineRule добавить проверку на null, но для начала - проверить, null ли значение при перезапуске serial.
У меня работает первый вариант, тайм-аут 15-20 секунд после запуска.
Именно в класс - не надо. А вот в самом правиле проверять на значение - полезно.
Скорректировал
Я себе так сделал:
function maketoggle(name, detector_control, relay_control) {
defineRule(name, {
whenChanged: "wb-gpio/" + detector_control,
then: function (newValue, devName, cellName) {
if (newValue == true && dev[relay_control] == false) {
dev[relay_control] = true;
}
else
if (newValue == true && dev[relay_control] == true){
dev[relay_control] = false;
}
}
});
}
maketoggle("kitchen_spot", "EXT1_IN2", "wb-mdm3_108/K2");
maketoggle("kitchen_table", "EXT1_IN4", "wb-mr6c_71/K3");
maketoggle("zal_divan", "EXT1_IN3", "wb-mdm3_108/K1");
maketoggle("zal_tv", "EXT1_IN5", "wb-mdm3_108/K3");
maketoggle("kitchen_fartuk_top", "EXT1_IN6", "wb-mr6c_71/K2");
maketoggle("zal_lustra", "EXT1_IN1", "wb-mr6c_71/K6");
Как то все сложно, упрощение:
- Замена whenChanged на when.
- Замена внутренней логики на: dev[relay_control] = !dev[relay_control]
И получить не подписку на событие а постоянную проверку значения?
Не подписку… Просто оставлю работающее “это” здесь:
defineRule({ //B7.Кухня Лоджия
when: function() { return dev["wb-gpio/EXT4_IN5"]; },
then: function (newValue, devName, cellName) {
mFunctions.switchRelay("wb-mr6cu_98","K5"); //10R.Лоджия.Светильники
}
});