Добрый день.
Являюсь новичком в теме с wb. У меня устройство wirenboard 7.
Хочу подключить сторонний датчик(не поддержанный штатно), работающий по протоколу modbus через rs485.
Есть мануал датчика с описанием команд(зачитать x03, записать x06). Настройки rs485 для работы с датчиком: 9600 no parity 8bits 1 stop bit.
Выключаю сервис wb-mqtt-serial
Через modbus_client опрашиваю датчик для теста:
modbus_client -mrtu /dev/ttyRS485-2 --debug -a241 -t3 -s1 -pnone -r4
Приходит результат измерений, который ±совпадает с реальным значением.
Включаю сервис wb-mqtt-serial
Создаю шаблон нового типа устройств, который сохраняю в /etc/wb-mqtt-serial.conf.d/templates:
В интерфейсе wirenboard захожу в настройки драйвера serial устройств и задаю rs485-2 с параметрами, которые описал выше, помечаю его как активный. Добавляю новое устройство по шаблону, который выше, задаю id устройства, сохраняю.
В панели устройств появилось устройство QDX50APT 241, у которого есть поле pressureValue, подсвеченное красным. Значений никаких нет.
Через mosquitto_sub подписался на топик /devices/QDX50APT_241/#, опрос датчика не происходит, так как значения новые не появляются. Значения появляются только в момент сохранения при изменении настроек драйвера serial устройств. В топике /devices/QDX50APT_241/…/error задано r.
Подскажите, что я делаю неправильно?
Спасибо!
и устройства в веб-интерфейсе, в частности, проверьте, верен ли адрес устройства (241).
Еще в команде modbus_client вы адрес регистра указываете в десятичном виде (-r4), а в шаблоне - в шестнадцатеричном (0x004). Конкретно это значение совпадает, но такой подход приведет к ошибкам в дальнейшем.
Благодарю за ответ. Все проверил, устройство имеет id 241. В интерфейсе устройство отображается с этим id. /dev/ttyRS485-2 имеет настройки:
Скорость обмена:9600
Контроль четности: N
Число бит данных: 8
Стоп биты: 1
Включить порт: галочка стоит.
Спасибо за уточнение, десятичный вид использовал для быстрого ознакомления.
Все настройки выставлены как должны быть.
Датчик точно рабочий, так как он откликается на команды через modbus_client и выдает показания и свои настройки - baud 9600, slaveId 241, показания. В регистре 0x000 slaveId,0x001 baud rate, 0x002 - размерность показаний, 0x003 плавающая точка, 0x004 значение замера.
Может я чего-то упускаю? достаточно ли только добавить шаблон нового устройства и в интерфейсе wirenboard добавить это устройство в список тех, что работает на /dev/ttyRS485-2?
Спасибо
Добрый день. Спасибо большое за активное участие в решении моей проблемы.
Действительно, проблема была в том, что нужно было reg_type выставить в holding.