Давно не занимался скриптами на WB, но тут решил кое-что переделать. Ну и столкнулся с довольно странным поведением serial… Чтобы не писать много слов, лучше приведу несколько примеров скриптов (сильно упрощенных для отладки), на которых как раз видно все это. Нажимается виртуальная кнопка, по которой отрабатываются простые действия. Брались два условия и два устройства в разной комбинации. Итак:
- отрабатывается нормально
defineRule("Door_button_open", {
whenChanged: ["Door_open/Open"],
then: function () {
if ( dev["517F_4/DI_10"] = 1) {
// if ( dev["WP8026_6/DI_01"] == 0) {
// dev["517F_4/DO_04"] = 1;
dev["wb-gpio/EXT3_HS5_Gong"] = 1;
}
}
});
- отрабатывается нормально
defineRule("Door_button_open", {
whenChanged: ["Door_open/Open"],
then: function () {
// if ( dev["517F_4/DI_10"] = 1) {
if ( dev["WP8026_6/DI_01"] == 0) {
dev["517F_4/DO_04"] = 1;
// dev["wb-gpio/EXT3_HS5_Gong"] = 1;
}
}
});
- не отрабатывает и вешает serial
defineRule("Door_button_open", {
whenChanged: ["Door_open/Open"],
then: function () {
if ( dev["517F_4/DI_10"] = 1) {
// if ( dev["WP8026_6/DI_01"] == 0) {
dev["517F_4/DO_04"] = 1;
// dev["wb-gpio/EXT3_HS5_Gong"] = 1;
}
}
});
то есть, когда в одном блоке скрипта сталкиваются два значения с одного modbus устройства (в данном случае 518F) - serial отваливается напрочь… как выше видно - по одному работает…
вообще это очень и очень странно, даже если бы и были какие-то ошибки в скрипте (в данном случае трудно ошибиться) - по идее не должны приводить к краху опроса оборудования через serial