Доброго дня
Рушатся какие-то сервисы связанные с mqtt на wb6
Периодичность - около суток
wb-rules - живое
Перезагрузка помогает.
Сам факт - огорчает…
sibmax, добрый день! В текущем движке есть проблема с таймерами, пока неустраненная. Возможно, вы столкнулись с ней. Остальные ршибки похожи на проявление этого.
wb-init и wb-prepare не должны быть running и на нормально функционирующем контроллере. Вы можете оценить частоту создания/разрушения таймерных объектов в ваших скриптах?
Можете отключить скрипт, активно использующий таймеры?
Чем заменить эти конструкции можно?
Самый безотказный вариант на сегодняшний день — использование системного cron, который будет публиковать в MQTT топики по расписанию. В некоторых случаях без сбоев работает cron движка правил.
У меня контроллер 6.1, wb-rules 1.7
Такая конструкция работает безотказно уже несколько месяцев.
Период срабатывания тикера 150сек.
Внутри этого периода срабатывают таймеры - 2Х6 шт. чтобы имитировать ШИМ для 6-ти каналов.
Если делать период тикера менее 5 сек. возможны зависания.
Конкретные зависания возникали при использовании setTimout и setTimer.
Здесь уже бороться было трудно.
тут 30 и 600 секунд соответственно переменные выставлены…
уже два дня работает стабильно. что с чем связано - хз
ну и как работать без таймеров? Вроде поработало теперь опять зависать стало!!!
это как-то поможет?
Apr 24 22:28:09 wirenboard-AFDB3MCD daemon.info wb-rules[6005]: INFO: [rule info] WatchDogV.stop:Таймер мигания выходом остановлен wb-gpio/V_OUT
Apr 24 22:28:09 wirenboard-AFDB3MCD daemon.info wb-rules[6005]: INFO: [rule info] WatchDogV.initialisation: Инициализация устройства WatchDogV
Apr 24 22:28:09 wirenboard-AFDB3MCD daemon.info wb-rules[6005]: INFO: [rule info] WatchDogV.initialisation: Инициализация окончена, ожидание запускаWatchDogV
Apr 24 22:28:19 wirenboard-AFDB3MCD daemon.info wb-rules[6005]: INFO: [rule info] WatchDogV.initimer_rule:Ватчдог запущен
Apr 24 22:28:41 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: INFO: [rule info] add your rules to /etc/wb-rules/
Apr 24 22:28:41 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: INFO: MQTT connection established
Apr 24 22:28:41 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: ERROR: command ‘/bin/sh -c echo 0 > /sys/class/pwm/pwmchip0/export’ failed with exit status 1
Apr 24 22:28:42 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: INFO: [rule info] WatchDogV.initialisation: Инициализация устройства WatchDogV
Apr 24 22:28:42 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: INFO: [rule info] WatchDogV.initialisation: Инициализация окончена, ожидание запускаWatchDogV
Apr 24 22:28:52 wirenboard-AFDB3MCD daemon.info wb-rules[6289]: INFO: [rule info] WatchDogV.initimer_rule:Ватчдог запущен
Apr 24 22:28:52 wirenboard-AFDB3MCD user.notice wb-mqtt-db[654]: 2019-04-24 22:28:52.513 NOTICE: Bulk processing took 141ms
Apr 24 22:29:01 wirenboard-AFDB3MCD authpriv.info CRON[6369]: pam_unix(cron:session): session opened for user root by (uid=0)
скрипт работает только после ребута, если перезапускаются правила - все останавливается.
Покажите, пожалуйста, пример конструкции, которая работает.
таймер и интервал. Сколько уже можно мыкаться? Вы нашли такой рабочий вариант в вашей системе?
Да, прошу прощения, получается все очень неудобно.
cron-правила работают, но нет четкого понимания, когда они ломаются. То же с интервалами.
Готового примера нет, но я бы использовал команду at (https://en.wikipedia.org/wiki/At_(command))
(apt-get install at), сделал бы для нее функции обертки для интервалов и cron-задач и по расписанию отправлял бы значения в нужные mqtt-топики, на изменения в которых срабатывают правила в движке.
Так же можно поступить с системным кроном: если время выполнения точно известно, отправку сообщения в очередь mqtt можно прописать в crontab.
А вообще какие то прогнозы-планы по решению этой проблемы с таймерами имеются?
Ибо, например, в настоящее время у меня пять производственных проектов,
ядром КИПиА которых планируется WB6. И использовать штатные rules
я категорически запретил. Сейчас колхозим свой софт.
Ибо с существующими проблемами на продакшен
я wb-rules не выпущу по определению…
Нет, прогнозов, к сожалению, нет. Точно не месяц и не два.
очень грустно. проблема реально крайне неприятная.
Скажите, пожалуйста, если не использовать wb-rules, WB можно хотя бы как шлюз в mqtt использовать? И как у него работаете модбас, надежно? Я устал уже искать варианты, как заставить эту железку работать, теперь нужно хоть что есть использовать, а логику я вынесу на другой контроллер. Да, каша, получится, но столько времени потрать сил и нервов… нет слов. А у меня сдача объекта и следом новый подпирает, не могу разбираться больше с их фокусами…
Получается мне надо, чтобы WB имел карту модбас подключенных модулей, чтобы можно было создать вирт девайсы и им присвоить адреса (для математической обработки показаний датчиков - с этой задачей, надеюсь, wb-rules справится?)
Или и с serial начнутся пляски танцы и геморрой?
Wb-rules работает только с MQTT. Драйвер для serial устройств тоже пишет все в mqtt.
Вы можете все правила описать на том же питоне, запустив его на контроллере.
с питоном мало работал, только прикладные программы делал, где питон был вшит в оболочку. Давно это было.
Но я правильно понял, что если я не питоне буду в контроллере писать алгоритмы, то косяков с таймерами не будет? Эту тему сложно поднять, много там чего в ноля если разбираться? А то из одной каши в другую не хотелось бы перелазить…
можете мне объяснить по скайпу, например, как это делается? Условия обговорим, я бы оплатил ваше время. polygon13@yandex.ru
Я питон как пример привёл. Пишите на чем угодно, что запускается под линуксом и умеет в mqtt.
я не программист и с линуксом не работал( Но программирую в средах контроллеров, если есть нормальная документация. Тут, с например, питоном, мне надо будет много чего учесть в работе линукса, или можно будет создать какой-то шаблон операций, которые я произведу, а потом смогу уже писать скрипты и они на этом созданном окружении будут работать?