Track mqtt

Всем привет!
Есть желание подгружать соответствие каналов и функционалов (устройств) из конфига.
Соответственно, захардкорить whenChanged, например, не выйдет. Очевидный путь - переменные = устройства, в них и подгружаем каналы.
А если трекать mqtt через словарь, так не быстрее будет работать?

Заранее извиняюсь за дурацкий вопрос

Продолжение вопроса:
при старте

var неожиданная_хрень = loadFromConfig(); 

whenChanged(неожиданная_хрень, function(newValue) {

    ........

}); 

булькнуло и что-нить мониторит. Если в процессе я перечитываю конфиг и меняю значение переменной, система продолжить долбить по старому пути до рестарта правила, или отреагирует правильно?

Ещё раз извиняюсь

Добрый день.

По первому вопросу: правило продолжит слушать старый топик. whenChanged получает значение переменной в момент вызова defineRule — то есть строку, а не саму переменную. Потом переменная меняется, а правило про это не знает. Чтобы подхватилось новое — надо пересоздать правило: перезаписать (или touch) файл правила, движок сам перечитает скрипт и пересоберёт правила.

По второму: словарь через trackMqtt быстрее не будет, скорее чуть медленнее — там каждое сообщение по маске уезжает в ваш JS-колбэк, тогда как whenChanged фильтруется внутри движка. Но словарь удобнее для вашей задачи: при смене конфига пересобираете только словарь, правила пересоздавать не надо. Так что выбирайте по удобству, разницу в скорости на обычном объекте вы не увидите.

Описание обоих механизмов и примеры: Движок правил wb-rules, готовый пример trackMqtt + словарь + виртуальное устройство — Подключение сторонних устройств по MQTT.