Баг с событиями на обработку изменений на входе

Всем привет.

Откопал очень интересный баг, судя по всему относящийся к rule-engine, но если что поправьте меня.

История следующая:

  1. Есть первый Js файл, в котором есть обработка событий на изменение значения на входах EXT2_IN1 … EX2_IN11
    function presenceSwitchLight(name, msw_control, switch_control, relays_array_day, relays_array_night, night_mode, msw_treshold) {
    defineRule(name, { // Функция обработки события движения с обычного потолочного датчика
    whenChanged: “wb-gpio/” + switch_control,
    then: function(newValue, devName, cellName) {
    Код обработчика…
    }
    });
    }

это входы 220V sensing, к которым подключены датчики движения 220V, Значения boolean.
Все работает как по маслу.

  1. Есть второй файл JS
    function setupPresenceDetector(name, switch_control) {
    defineRule(name, { // Функция обработки события движения с обычного потолочного датчика
    whenChanged: “wb-gpio/” + switch_control,
    then: function(newValue, devName, cellName) {
    Код обработчика…
    }
    });

Те же самые правила, на эти же самые входы, но с другими именами естественно:

И вот что интересно, при срабатывании во втором файле любого из событий, вот что получается - cellName в этом событии будет всегда EXT2_IN1. Хотя по логам смотрю что триггером был другой вход, сделал вывод в лог:

Dec 9 18:36:45 wirenboard-ALWR73U7 daemon.info wb-rules[3667]: INFO: [rule info] [Presence] EXT2_IN1 triggered true from EXT2_IN8
Dec 9 18:36:53 wirenboard-ALWR73U7 daemon.info wb-rules[3667]: INFO: [rule info] [Presence] EXT2_IN1 triggered false from EXT2_IN8
Dec 9 18:37:04 wirenboard-ALWR73U7 daemon.info wb-rules[3667]: INFO: [rule info] [Presence] EXT2_IN1 triggered true from EXT2_IN1
Dec 9 18:37:13 wirenboard-ALWR73U7 daemon.info wb-rules[3667]: INFO: [rule info] [Presence] EXT2_IN1 triggered false from EXT2_IN1

Сможете прогнать у себя на стенде?

P.S. все пакеты обновил из репозитория до последней версии на 09.12.2020

Благодарю. Воспроизведу конечно, то есть разные правила в разных скриптах (хотя пространства имен в 2.х разделены) и в “втором” скрипте в качестве cellName в функцию передается не то.

Стоп! Похоже нашел багу все же у себя в скрипте)))) Неправильно делал проверку cellName = … вместо cellName == …

Знание большого количества языков программирования играет злую шутку!

Пардон, что озадачил зря!

Не то слово, недаром говорят: “Сравниваешь - ставь константу слева, меньшее шанс на ошибку.” :wink: Рад.