Ошибки на порту при добавлении через веб

  1. WB7 на testing
  2. Настраиваю 2й порт 485 на стандартные 9600-8n1
  3. Подключаю к 2му rs485 единственный датчик температуры и влажности. У него тоже 9600-8n1
  4. Проверяю
modbus_client -mrtu /dev/ttyRS485-2 --debug -a10 -t3 -pnone -r0
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[0A][03][00][00][00][01][85][71]
Waiting for a confirmation...
<0A><03><02><00><F6><9D><C3>
SUCCESS: read 1 of elements:
	Data: 0x00f6 
modbus_client -mrtu /dev/ttyRS485-2 --debug -a10 -t3 -pnone -r1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[0A][03][00][01][00][01][D4][B1]
Waiting for a confirmation...
<0A><03><02><02><70><1D><01>
SUCCESS: read 1 of elements:
	Data: 0x0270 

Оба канала работают, отдают значения.

  1. Проверяю много раз, часто и как можно быстрее.
 for i in {1..100}; do modbus_client -mrtu /dev/ttyRS485-2 --debug -a10 -t3 -pnone -r1; done

ошибок нет. Все ровно. Повторюсь, ошибок нет. 100 запросов проходят за 5 секунд.
5. Делаю шаблон

{
    "device_type": "DVT-05-RS-H1-I",
    "group": "g-climate-sensor",
    "device": {
        "name": "DVT-05-RS-H1-I",
        "id": "dvt05rs",
        "channels": [
            {
                "name": "Temperature",
                "reg_type": "input",
                "address": "0x00",
                "scale": 0.1,
                "type": "temperature"
            },
            {
                "name": "Humidity",
                "reg_type": "input",
                "address": "0x01",
                "scale": 0.1,
                "type": "rel_humidity"
            }
        ]
    }
}
  1. кладу его в /mnt/data/etc/wb-mqtt-serial.conf.d/templates и перезагружаю systemctl restart wb-mqtt-serial.service
  2. Пытаюсь через веб добавить устройство

Тут же получаю в логах

Jun 30 11:12:53 wirenboard-AG4LVLTQ wb-mqtt-serial[4602]: WARNING: </dev/ttyRS485-2 9600 8 N 1>: closed due to repetitive errors

Ну и в вебе “The device is not responding…”

Кажется, где-то есть проблемы. Но где? :slight_smile:

Проблема решилась сменой типов регистров.

{
    "device_type": "DVT-05-RS-H1-I",
    "group": "g-climate-sensor",
    "device": {
        "name": "DVT-05-RS-H1-I",
        "id": "dvt05rs",
        "channels": [
            {
                "name": "Temperature",
                "reg_type": "holding",
                "address": 0,
                "scale": 0.1,
                "readonly": true,
                "type": "temperature"
            },
            {
                "name": "Humidity",
                "reg_type": "holding",
                "address": 1,
                "scale": 0.1,
                "readonly": true,
                "type": "rel_humidity"
            }
        ]
    }
}

Выглядит, как 100% баг. input от holding должны отличаться только тем, что вторые можно записать. На чтение они должны быть одинаковые как по командам, так и по функционалу

Ткнулся на шину. выглядит, как чтение input и holding делается разными командами. Надо бы это где-нибудь подсветить.

Так что по идее я сам виноват :slight_smile:

Подскажите, в какой документации ожидали увидеть эту информацию?
Вот тут написано про разные команды чтения input и holding регистров.