Проблема с сохранением правил

Вот завис с одной записью функции проработав пол дня.
Проверил 2 два устройства - через полчаса.
Причем стоит отметить что такое происходит при подключении датчиков движения. Что то с ними не то. На первом порту более 10 реле и ничего не зависает. Стоит подключать датчики движения на 2 порту и на дополнительном зависает контроллер.
Разработчики оборудования вы можете мне объяснить что нужно сделать чтобы контроллер не зависал?

Не удалось прочитать 2 входа @ 0 устройства Modbus: 82: Ошибка последовательного протокола: истекло время ожидания запроса.

Прежде чем писать такое описание нужно сделать вступление что это и с чем его едят. Просто дальнейшее чтение того описания не дает никакого понимания. Что такое шаблон устройства?

Это описание регистров которое подволяет одним щелчком в выпадающем списке добавить это самое устройство в настройках. Грубо говоря для WB-MSW v3 файл шаблона лежит
/usr/share/wb-mqtt-serial/templates/config-wb-msw_v3.json
Ну и остальные рядом.
Не спешите шаблоны менять, вполне возможно что удается воспроизвести глюк

Дело в том, что устройства WB-MSW v3 бывают разные в зависимости от начинки (СО, влажность, качество воздуха, освещение…). Нужно ли под конкретный WB-MSW v3 делать тот шаблон, который содержит нужную начинку?
В пункте 3 описания по ссылке Wiren Board - оптимизация опросов - Sprut.AI информируют о необходимости оптимизации шаблона WB-MSW v3 для повышения скорости его работы. Как считаете стоит это сделать?

Нет. Сейчас вышло обновление serial, где это учтено:

Я как понял в логе я больше не увижу сообщений типа этого?

прием

Поменяйте у себя в скрипте тело функции на:

function TurnOn(name, timeout_ms, detector_control, device_control, value) {
  var timer_id = null;
  defineRule(name, {
      whenChanged: detector_control,                        
      then: function(newValue, devName, cellName) {
          if (newValue>50) {
            //log.info("Rule, newvalue=",newValue);
            //log.info("Timer id0=",timer_id);
              dev[device_control] = value;                  
              if (timer_id) {
                  clearTimeout(timer_id);
              }
			  timer_id = setTimeout(function() {
                 dev[device_control] = false;              
                 timer_id = null;
              }, timeout_ms);
              //log.info("Timer id2=",timer_id);
          }
      }
  });
}

это ничем не отличается от моего варианта
function TurnOn(name, timeout_ms, detector_control, device_control, relay_control, Mvalue) {
var timer_id = null;
defineRule(name, {
whenChanged: detector_control,
then: function(newValue, devName, cellName) {
if (newValue>20) {
dev[device_control][relay_control] = Mvalue;
if (timer_id) {
clearTimeout(timer_id);
}

          timer_id = setTimeout(function() {
              dev[device_control][relay_control] = false;              
              timer_id = null;
          }, timeout_ms);
      }
  }

});
}

Почему в Setting присутствуют 2 вида D82?

Может поэтому в логе такое?

Sep 29 21:36:46 wirenboard-AE3UHZCX user.notice wb-mqtt-db[631]: 2020-09-29 21:36:46.492 NOTICE: Bulk processing took 127ms
Sep 29 21:36:48 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:36:52 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:02 wirenboard-AE3UHZCX authpriv.info CRON[4767]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep 29 21:37:02 wirenboard-AE3UHZCX cron.info CRON[4771]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Sep 29 21:37:02 wirenboard-AE3UHZCX user.notice wb-daemon-watchdogs: /bin/sh: 1: /usr/share/wb-daemon-watchdogs/check_confed.sh: not found
Sep 29 21:37:02 wirenboard-AE3UHZCX authpriv.info CRON[4767]: pam_unix(cron:session): session closed for user root
Sep 29 21:37:07 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:14 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:18 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:19 wirenboard-AE3UHZCX daemon.info ntpd[2123]: 46.17.46.226 local addr 192.168.1.110 ->
Sep 29 21:37:28 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:30 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:41 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 coil(s) @ 10 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:46 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:48 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:55 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:37:56 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:38:00 wirenboard-AE3UHZCX user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 0 of device modbus:82: Serial protocol error: request timed out
Sep 29 21:38:01 wirenboard-AE3UHZCX authpriv.info CRON[4846]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep 29 21:38:01 wirenboard-AE3UHZCX cron.info CRON[4850]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Sep 29 21:38:01 wirenboard-AE3UHZCX user.notice wb-daemon-watchdogs: /bin/sh: 1: /usr/share/wb-daemon-watchdogs/check_confed.sh: not found

Раньше в конфиге именовался в скобках русскими буквами, а сейчас в конфиге называется так

В конфиге сейчас все датчики движения имеют пояснения в скобках латиницей, Почему то в сеттинге нет такой надписи. Может ли это стать причиной ошибок в логе?

Если существует устройство, которое в конфиге есть а физически отсутствует - да, может быть. Если такого устройства нет (было), но в MQTT записи остались - то посмотреть

mosquitto_sub -v -t /# |grep D82

Ну и удалить с помощью mqtt-delete-retained

можно точнее как работать с этой командой

Вот тут написано: https://wirenboard.com/wiki/index.php/MQTT

не нравится ему это слово и в хелпе нет

А как не нравится? Отсутствует? https://ru.wikipedia.org/wiki/Grep

root@wirenboard-AE3UHZCX:~# mosquitto_sub -v -t /# /grep D82
Error: Unknown option ‘/grep’.

Use ‘mosquitto_sub --help’ to see usage.

У меня написано “|grep D82”
У вас:

D82 нет физически, был когда то.

Выдается такая куча символов и что с ними делать?

/devices/D82/controls/Play from ROM5/meta/order 27
/devices/D82/controls/Play from ROM6 0
/devices/D82/controls/Play from ROM6/meta/type pushbutton
/devices/D82/controls/Play from ROM6/meta/order 28
/devices/D82/controls/Play from ROM7 0
/devices/D82/controls/Play from ROM7/meta/type pushbutton
/devices/D82/controls/Play from ROM7/meta/order 29
/devices/D82/controls/Reset all ROM 0
/devices/D82/controls/Reset all ROM/meta/type pushbutton
/devices/D82/controls/Reset all ROM/meta/order 30
/devices/D82/controls/Input Voltage 13.126
/devices/D82/controls/Input Voltage/meta/type voltage
/devices/D82/controls/Input Voltage/meta/readonly 1
/devices/D82/controls/Input Voltage/meta/order 31
/devices/D82/controls/Serial 4266169073
/devices/D82/controls/Serial/meta/type text
/devices/D82/controls/Serial/meta/order 32
/devices/D82 (DD v Kabinete)/controls/CO2 674
/devices/D82 (DD v Kabinete)/controls/CO2/meta/type concentration
/devices/D82 (DD v Kabinete)/controls/CO2/meta/order 4
/devices/D82 (DD v Kabinete)/controls/LED Period (s) 3
/devices/D82 (DD v Kabinete)/controls/LED Period (s)/meta/type range
/devices/D82 (DD v Kabinete)/controls/LED Period (s)/meta/max 10
/devices/D82 (DD v Kabinete)/controls/LED Period (s)/meta/order 12
/devices/D82 (DD v Kabinete)/controls/LED Glow Duration (ms) 30
/devices/D82 (DD v Kabinete)/controls/LED Glow Duration (ms)/meta/type range
/devices/D82 (DD v Kabinete)/controls/LED Glow Duration (ms)/meta/max 50
/devices/D82 (DD v Kabinete)/controls/LED Glow Duration (ms)/meta/order 13

Если что-то лишне, но в mqtt хранится (а забывать он сам не делжен) то с помощью mqtt-delete-retained просто удалить.

как?
вывел хелп и от этого мыслей не появилось
я новичок в линуксе