Wb-rules долго отрабатывают

у правил задержка порядка 2-5 секунд

Добрый день. Задержка между какими событиями?
То есть, к примеру - значение в топике изменилось. Через какое время подписанное на этот топик правило выдаст в лог/запишет в другой контрол?

defineRule(“holl_on_off”, {
whenChanged: “wb-mr6c-nc_22/Input 0 Single Press Counter”,
then: function (newValue, devName, cellName) {
if (!(dev[“wb-mr6c-nc_22/K5”] && dev[“wb-mr6c-nc_22/K6”])){
dev[“wb-mr6c-nc_22/K5”] = true;
dev[“wb-mr6c-nc_22/K6”] = true;
dev[“wb-led_40/CCT2”] = true;
} else {
dev[“wb-led_40/CCT2”] = !dev[“wb-led_40/CCT2”];
}
}
});

вот правило, которое выполняет и задержка идет от момента нажатия кнопки до самого действия

WB-MR6C - это Modbus устройство. Какая скорость на том порту, к которому оно подключено? Много ли устройств еще подключено к этому порту? Что пишет в логи wb-mqtt-serial? Задержка всегда в пределах 2-5 с, или бывает по другому?

1 Like

Скорость устройств стандартная, еще подключено 3 wb_led, задержка постоянная, логи сейчас не могу посмотреть

Как быстро меняется состояние топика входа после нажатия кнопки?
Как настроен опрос счетчика “Input 0 Single Press Counter” в драйвере wb-mqtt-serial?
Нет ли ошибок опроса по этому каналу и по остальным каналам шины?
Ну и как быстро срабатывает правило после изменения состояния топика входа?
То есть вы описываете прохождение нескольких подсистем одним определением, что неверно. Каждый

Как быстро меняется состояние топика входа после нажатия кнопки ? (если отслеживать по GUI то около 2 секунд)
Как настроен опрос счетчика “Input 0 Single Press Counter” в драйвере wb-mqtt-serial?

Нет ли ошибок опроса по этому каналу и по остальным каналам шины? (где смотреть?)
Ну и как быстро срабатывает правило после изменения состояния топика входа? (если смотреть состояние по GUI то одновременно)
То есть вы описываете прохождение нескольких подсистем одним определением, что неверно. Каждый

То есть вы описываете прохождение нескольких подсистем одним определением, что неверно. Каждый (как тогда правильно промерить состояние других устройств, приведите пример пожалуйста)

Вижу что настроено чтение в порядке очереди…

В логах wb-mqtt-serial, логи все читаются с помощью journalctl — утилита просмотра системного журнала — Wiren Board или в веб-интерфейсе.

В любом логе есть отметки времени, с точностью, как правило в тысячные секунды. Достаточно сопоставить время записи в лог - чтобы увидеть задержки.

wb-mqtt-serial_20221221T020751.log (271.8 КБ)
вот лог перевел канал в debug

wb-mqtt-serial_20221221T021319.log (13.5 КБ)

Вариант для определения времени задержки. Введите команду:

mosquitto_sub -F '@M:@S:@N : %t : %p' -t '/devices/wb-mr6c-nc_22/controls/Input 0 Single Press Counter' -t '/devices/wb-mr6c-nc_22/controls/K5' -v

и пощелкайте выключателем. Будете видеть время с миллисекундами. И нам покажите.

1 Like

Проверьте, правильно ли введено, коллега верно сформировал команду.

Не вижу тут событий нажатия/изменения счетчика.

Тут тоже. В какой момент лога было?


от момента поступления сообщения до момента отработки правила проходит около 10 … 100 микросекунд, но от момента нажатия кнопки до момента появления сообщения около 2…5 секунд

mosquitto_sub -t ‘/devices/wb-mr6c-nc_22/controls/Input 3 Single Press Counter’ -t ‘/devices/wb-led_40/controls/CCT2’ -v | ts “[%b %d %H:%M:%.S]” можно еще пайпом передать ts

Ну то есть проблема возникает по пути кнопка - wb-mr6c - драйвер - mqtt. Проблемы на пути mqtt - драйвер - wb-led нет, поскольку за миллисекунды драйвер отправляет команду, получает подтверждение от устройства и публикует новое значение в mqtt. Покажите лог за период времени 22:56:26 - 22:56:42.

1 Like

log.txt (14.7 КБ)

В этом логе вижу какие-то сообщения Node-red… Ни строчки про опрос устройств.
По теме советую почитать
Ну и GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver

так я не понял почему задержка от нажатия кнопки до момента отправки сообщения в очередь?