Читаю описание для различных модулей RS-485 и вижу, что где-то указана скорость только 9600, а где-то вплоть до 115200. Вопрос связан вот с чем: на скорости 9600 по отзывам, входы для кнопок в режиме поллинга обрабатывают нажатие с небольшой, но всё-таки заметной задержкой. Будет ли влиять на это воприятие увеличение скорости на интерфейсе и если да, то как же всё-таки устройства из ныне выпускаемых позволяют это делать?
Добрый день!
Да, увеличение скорости уменьшит задержку при опросе. Ещё поможет уменьшение количества устройств на линии.
Изменение скорости с дефолтной 9600 доступно в тех устройствах, у которых это указано в документации в вики (в частности, на всех модулях реле).
понял, спасибо. Получается, что рекоммендация - разнести устройства реле и модуль счётных входов WB-MCM16, верно?
Кстати, для реле также в документации указаны скорости только 9600: WB-MR6C, WB-MAO4 (хотя это диммер, но идея та же), WB-MRGB, WB-MRGB-D (тоже диммер), WB-MRM2-mini, WB-MR3xV_and_WB-MR6xV. И лишь WB-MD2 в описании содержит весь перечень скоростей…
Да, спасибо, согласен, там об этом упонинается, но довольно поверхностно: “В новых моделях реле поддерживаются дополнительные регистры…”. Я то просто не знаю какие именно модули считаются “новыми”.
Добрый день!
Спасибо за замечание. Действительно, в документации не везде верно, постарался исправить. Если ещё остались вопросы/замечания - пишите, будем рады услышать.
Здравствуйте!
У меня есть 2 реле WB-MR14. Не устраивает скорость включения при управлении по MQTT путем программирования Rules.js в веб-интерфейсе. Причем при щелкании из MQTT клиента скорость мгновенная, а вот правила из Rules.js тормозят. Вы пишете, что можно увеличить скорость реакции изменением скорости MODBUS. К сожалению, в моих реле стоит прошивка 1.5.1, а в документации сказано, что изменение скорости возможно начиная с 1.6.1.
И правда, при попытке прочитать 110 регистр выдает ошибку.
Собственно вопросы:
Можно ли как-то перепрошить реле в домашних условиях? Или может хотя бы вам их привезти на перепрошивку?
Если это невозможно (напр аппаратные ограничения), что еще можно сделать для увеличения быстродействия? Например как-то влезть в драйвер wb-mqtt-serial и управлять прямо по MODBUS, в обход MQTT?
Добрый день!
Устройства перепрошить дома нельзя, перепрошить у нас в офисе можно, если вы заранее договоритесь с менеджерами.
Но сейчас у вас дело не в скорости опроса. Подскажите, пожалуйста:
как вы “щелкаете из MQTT клиента”, когда не видите задержки,
и как управляете из js скрипта, когда задержка видна (проще всего опубликовать весь скрипт).
Просто переключаю канал не связанным через Rules.js выключателем, а из программы.
Пробовал и из web-интерфейса (вкладка Devices) и с Андроид-клиента “MQTT Dash”. По ощущениям если задержка и есть, то очень небольшая.
А вот при щелканьи связанным выключателем задержка по ощущениям может доходить чуть не до секунды.
Скрипт самый стандартный из примера:
var R13 = "wb-mr14_13";
var R15 = "wb-mr14_15";
var s_bathroom_2 = "Input 4";
var l_hallway = "K3";
// place your rules here or add more .js files in this directory
defineRule("Koridor_svet", {
whenChanged: R13+"/"+s_bathroom_2,
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( newValue > 0) {
dev[R15][l_hallway] = 1;
} else {
dev[R15][l_hallway] = 0;
}
}
});
log("add your rules to /etc/wb-rules/");
Возможно, разница во времени реакции чисто психологическая, проверю вечером еще раз.
Еще раз проверил. Нет, не обманулся. При управлении из MQTT Dash задержка присутствует, но невелика, и не раздражает.
При включении связанным Rules.js выключателем задержка явно более чем в 2 раза (что должно быть в норме, как я понимаю) дольше.
Что делать?
Подозреваю, что дело тут в том, что правило у вас срабатывает по нажатию кнопки на модуле, подключенном по Modbus. Соответственно задержка вызвана скоростью опроса каналов по Modbus, а не устройствами и не движком правил. Можете попробовать принудительно задать низкий poll_interval для регистров с кнопками в настройках wb-mqtt-serial
А что значит “Для регистров с кнопками?”
В файле конфигурации вижу только для порта и для каждого устройства на порту.
Поставил в 1. Особых изменений не заметил. Может, чуть побыстрее стало… Но не уверен.
Скорость опроса остальных устройств 115200 poll interval - 20 мс
По ощущениям ничего не изменилось - при нажатии на input 1 скорость реакции также примерно 1000 мс.
Из веб-интерфейса срабатывает примерно в 2 раза быстрее.
Также заметил что счетчик input 1 при разовом замыкании с GND практически всегда добавляет не одну единицу а 2-4.
Добрый день. Огромное просьба помочь разобраться((((
Правило выше работает. НО!!!
При подключенном к контроллере единственному модулю реле при кратковременном замыкании необходимого контакта реле включаются почти без задержек.
Сейчас у меня подключено 8 различных модулей. Опрос настроен на скорость 19200, интервал 10 мс. и по индикации Status приборы опрашиваются поочередно, и на вид это явно не 10 мс.
Соответственно при кратковременном замыкании нужного контактк правило срабатывает только если в этот момент происходил опрос данного модуля, либо удержание замкнутого контакта нужно производить порядка 500 мс.
Я правильно понимаю что единсвенный вариант увеличения скорости работы это обратное включение управления “кнопками без фиксации” и запараллеливание кнопки выключателя на несколько входов?
Если речь про наши модули, то используйте регистры-счётчики нажатий. Т.е. правило должно быть не на “Input стал равен 1”, а на “Input counter поменялся”.
Спасибо. Скорость везде поднял до 115200. добавил “Counter”.
Помогло, но скорости не добавило… Реле включаются с задержкой до 1-2 секунды и не одновременно… При том что в rules только 2 коротких правила типа:
Может есть возможность как-то исключить из опроса ненужные регистры типа питания, неиспользуемых входов/выходов и пр.и оставить опрос только опросы регистров, задействованных в правилах?
нет ли там ошибок от драйвера serial ? Возможно у вас в конфиге есть, например, отсутствующее физически устройство и ожидание ответа от него тормозит опрос.
В правиле у вас кстати написано странное. Надо писать
whenChanged: “wb-mr6c_20/Input 1 counter”,
Ошибок в логах нет.
Задержка так и присутствует порядка одной секунды.
Я так понимаю по 10 мс опрашивается каждый регистр устройства. Отсюда и такие задержки. потому что даже визуально по индикации видно что круг опроса по всем устройства проходит как раз примерно за 1 секунду. Как сделать чтобы опрос проходил только по нужным регистрам??? мне например не нужно знать что вольтаж питания на каждом модуле. и статус неиспользуемых входов.