Wb-mqtt-serial с новым планировщиком опроса регистров

Предлагаем протестировать wb-mqtt-serial 2.44.0 с новой логикой опроса регистров. Цель была дать возможность настроить опрос так, чтобы регистры опрашивались с заданным периодом или с периодом максимально близким к заданному. Это кнопки или датчики, на изменение значения которых надо отреагировать максимально быстро.

Изменения

  • “Интервал опроса” (poll_interval) теперь задаёт желаемый период опроса, и wb-mqtt-serial будет стараться опросить канал с этим периодом. Раньше это был минимальный период опроса, и реальный период мог существенно отличаться.
  • “Интервал опроса” у порта и у устройства упразднили, теперь можно задавать интервал опроса только каналам.
  • Каналы с заданным интервалом опроса имеют приоритет перед другими каналами. Если придёт время опрашивать более приоритетный канал, опрос менее приоритетного будет остановлен.
  • Если интервал опроса не задан, канал будет опрошен в свободное время. Никаких гарантий на период опроса нет, он будет зависеть от загруженности шины и настроек приоритетных каналов.

При настройке интервалов опроса надо руководствоваться здравым смыслом. Мы исходили из того, что приоритетных каналов в инсталляции не много, и их теоретически можно опросить с заданными интервалами. Если настроить 100 каналов с интервалом опроса 1мс на скорости 9600, то реальные интервалы будут существенно больше желаемого.

Установка

Для установки надо переключиться на testing и установить пакет из экспериментального репозитория:

echo "deb http://deb.wirenboard.com/experimental/14/ stable main" >> /etc/apt/sources.list.d/testing.14.list
apt update
apt install wb-mqtt-serial=2.44.0~exp~feature+42302+new+scheduler~11~g4f9bb13
3 лайка
E: Версия «2.44.0~exp~feature+42302+new+scheduler~11~g4f9bb13» для «wb-mqtt-serial» не найдена

          _                _                         _
__      _(_)_ __ ___ _ __ | |__   ___   __ _ _ __ __| |
\ \ /\ / / | '__/ _ \ '_ \| '_ \ / _ \ / _` | '__/ _` |
 \ V  V /| | | |  __/ | | | |_) | (_) | (_| | | | (_| |
  \_/\_/ |_|_|  \___|_| |_|_.__/ \___/ \__,_|_|  \__,_|

Welcome to Wiren Board 6.6.0 (s/n #########), release staging.02677 (as testing)
Linux wirenboard-AX3WVENQ 5.10.35-wb6 #1 Thu Sep 30 00:33:57 UTC 2021 armv7l GNU/Linux

что я делаю не так?

Экспериментальный репозиторий подключили?

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

Исключительно опрометчивая идея.
Софтина обязана иметь точную (verbatim) обратную совместимость на протяжении минимум нескольких лет (контроллерная - десятилетий), чтобы простой апдейт не развалил сетап. Вы же де-факто меняете архитектуру построения сети устройств.

Кто-то и не заметит этого, а кто-то попадет в волчью яму, коих и сейчас немеряно. Я бы не стал добавлять еще одну или несколько, если бы меня спросили, конечно.

как предлагаете поступить?

Однозначно сохранять совместимость. ВСЕГДА.
Учитывая свежие подвижки с вариативным конфигом устройств - отличная фича, кстати, - заложить ее технически труда не составит.

У меня, например, интервал опроса четко завязан на объем отдаваемого датчиками трафика по Сети, и перепахивать придется много. Но это лично я не был в отпуске/запое/коме и тему прочел, пока она не уехала в небытие. Знаю теперь, чего бояться.
А другой не прочел, развалил всю систему и попал на люли/бабло от заказчика.

Коллеги, я понимаю, что это ваш проект и вы развлекаетесь, как хотите вы, а не я. Но я всё еще надеюсь, что покупаю контроллеры, а не игровые консоли с прикольными нежданными изменениями в геймплее.

3 лайка

подождите, но ведь если вы на настроенной рабочей продакшн-системе зачем-то ставите новый софт, то это вы развлекаетесь, а не мы. Мы же не приходим и не ставим насильно на ваши контроллеры ничего.

Я вижу три сценария обновления:

  1. вы настроили систему, всё работает, вы её больше не планируете трогать. Вы выбираете фиксированный релиз, типа wb-2111 и apt-ом вам прилетают только security-обновления, какие-то сверх-критичные заплатки на наш софт, может быть шаблоны для новых устройств
  2. у вас система находится в обслуживании, проект развивается и доделывается. Вы оставляете stable канал и раз в три-шесть месяцев прилетают обновления, которые в том числе могут добавлять новую функциональность
  3. вы находитесь на этапе проектирования или обкатываете свежий софт. Ставите testing-канал и получаете возможность проверить обновления до того, как они попадут в stable

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

А вы, кажется, предлагаете, чтобы у нас новые устройства с новым софтом вообще никак не менялись и лучше не становились.

Предлагаю абстрактные споры на этом закончить и вернуться к конкректным вещам. Прошу подробно и с техническими деталями написать, как именно wb-mqtt-serial с новым планировщиком осложнит вам жизнь. Мы для того и выложили здесь тестовую сборку, чтобы понять конкретные проблемы и их исправить.

2 лайка

Да, мы с разных сторон смотрим на вопрос, это все больше и больше заметно. Вы в цилиндре видите круг, а я прямоугольник.

Если б было можно зафиксировать «релиз» и он спокойно работал, я б не ходил на этот форум как на службу, а то и чаще.

Если б было можно зафиксировать «релиз» и он спокойно работал,

Зафиксировать релиз можно командой:

wb-release -t wb-2104

тогда вы получите только критические апдейты и не будете получать новое ПО.

Всем доброго времени суток!

Кто-нибудь уже устанавливал себе на контроллеры новую версию WB-MQTT-SERIAL с новым планировщиком опроса регистов? Прошу поделиться мнениями от использования. Как работает система после этого обновления?

Помогло ли данное обновление?

Уменьшилось ли реально время опроса?

Установил, конечно.

Стабильно. Служба не перезапускается, потребление ресурсов такое же.

Измерение именно времени раньше целью не ставил, но суля по логам - работает как и запланировано.

Мой вопрос был в другом, если Вы захотите прочесть его внимательно. :slight_smile:

После обновления службы WB-MQTT-SERIAL, Вы систему оставили на Testing или сразу же перевели обратно на Stable?

На тестинге, конечно. У меня тестовый стенд.
Использовать один пакет из теста и остальные из stable - не пробовал.

А вот у меня реальный объект, на котором есть система работающая сейчас в режиме Stable.
И вот поэтому(что есть реальный объект, а не тестовый стенд) я сильно сомневаюсь и даже побаиваюсь ставить данное обновление и потом всё это дело оставлять в режиме testing.

Как считаете можно ли поставить обновлённую службу на оборудование конкретного объекта и потом оставлять систему на testing или всё-таки не стоит?

1 лайк

На объекте - лучше уже когда текущий релиз станет stable.
Просто потому что тестинг пока не заморожен - и могут быть баги.

Проверил на WB6.6 с 10-ю WB-MR6C на скорости 115200
для каждого из 6 входов опрос в 1ms
Ошибок в log не сыпет, но и ожидаемого эффекта не получилось.
Хотелось сделать быстрый опрос нажатий, чтобы не было пропусков по Input.

Тем не менее разница ощутимая есть в длительности нажатия на кнопку с гарантированным считыванием

Уже близко к желаемому

К сожалению, организовать опрос каждого входа раз в 1мс технически не получится. Если устройство отвечает мгновенно, и контроллер тоже мгновенно шлёт следующий запрос, один цикл опроса входов на одном устройстве занимает не менее 2мс. Дополнительно текущие прошивки MR6C требуют 8мс задержки перед опросом, в результате получаем чуть меньше 10мс на устройство. У вас 10 устройств, т.е. в идеале чаще, чем раз в 100мс, значения входов не получить. В реальности период будет ещё больше, т.к. есть время ответа устройства, время обработки в контроллере и опрос других регистров.

1 лайк