При перезагрузке, отваливаются все датчики, подключенные к RS-485. Сервис wb-mqtt-serial запущен, но в логах пишет: wirenboard user.notice serial: TModbusDevice::ReadRegisterRange(): failed to read 1 input(s) @ 32 of device modbus:4. И так для всех устройств. Если перезапустить wb-mqtt-serial, то все начинает нормально работать.
Как это исправить?
Добрый день.
-
В логах эта строчка повторяется постоянно, пока не остановите сервис?
-
Покажите вывод команды
dpkg -l wb-mqtt-serial
-
Покажите пожалуйста целиком содержимое
/etc/wb-mqtt-serial.conf
- Какая модель и ревизия (или серийник) контроллера?
- Да, постоянно.
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii wb-mqtt-serial 1.22 armel Wiren Board Smart Home MQTT seria
{
"debug": false,
"ports": [
{
"path": "/dev/ttyAPP1",
"baud_rate": 19200,
"parity": "N",
"data_bits": 8,
"stop_bits": 1,
"poll_interval": 10,
"enabled": true,
"devices": [
{
"slave_id": "1",
"enabled": true,
"name": "Floor1",
"channels": [
{
"name": "Flooor1_TRef",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
]
},
{
"slave_id": "6",
"name": "Box3",
"channels": [
{
"name": "Box3_Hum",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
]
},
{
"slave_id": "4",
"name": "Box2",
"channels": [
{
"name": "Box2_Hum",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
]
},
{
"slave_id": "7",
"name": "Box1",
"channels": [
{
"name": "Box1_Hum",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
]
},
{
"slave_id": "2",
"name": "Floor2",
"channels": [
{
"name": "Floor2_Hum",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
]
},
{
"slave_id": "3",
"name": "Floor1",
"channels": [
{
"name": "Floor1_Hum",
"type": "value",
"reg_type": "input",
"address": "32",
"format": "s16",
"scale": 0.1
}
],
"enabled": true
},
{
"slave_id": "11",
"name": "Floor1",
"channels": [],
"enabled": false
}
]
},
{
"path": "/dev/ttyAPP4",
"baud_rate": 19200,
"parity": "N",
"data_bits": 8,
"stop_bits": 1,
"poll_interval": 10,
"enabled": false,
"devices": []
},
{
"path": "/dev/ttyAPP2",
"baud_rate": 9600,
"parity": "N",
"data_bits": 8,
"stop_bits": 2,
"poll_interval": 10,
"enabled": false,
"devices": []
},
{
"path": "/dev/ttyAPP3",
"baud_rate": 9600,
"parity": "N",
"data_bits": 8,
"stop_bits": 2,
"poll_interval": 10,
"enabled": false,
"devices": []
}
]
}
4)WirenBoard5 последней ревизии. Покупали неделю назад. После покупки была сразу обновлена прошивка через ЛК на последнюю и обновлен весь софт.
Можете организовать удалённый доступ по ssh на контроллер или через team viewer на машину с доступом к контроллеру?
сейчас отвечу на почту
Починили в wb-utils 1.70.4
Обновить пакет можно так:
apt-get update && apt-get install wb-utils
Проблема проявилась из-за того, что вы использовали скорость 19200 на порту.
Похоже проблема не решилась до конца. После обновления перезапуск сервиса больше не нужен. Но, похоже, выплыла другая проблема:
У нас по RS485 подключены 6 датчиков и после обновления нормально работают только 2. Сразу не обратили внимания, так-как показания не краснеют как раньше, но данные не приходят. И на графиках творится что-то странное: вроде, согласно настройкам, в историю должны подать значения максимум через 20 минут. Но на графиках встречаются провалы и по часу и по дню. вот пример:
понятно, что датчик не шлет данные с 22 апреля, но почему он не краснеет, или почему в историю занеслось только два значения за 4 дня?
Попробуйте поставить max_unchanged_interval для датчиков в настройках wb-mqtt-serial. Может быть просто данные не меняются.
ну в этом и проблема. Значения не меняются, но почему не понятно. Какова вероятность, что вдруг 4 из 6 датчиков вышли из строя. max_unchanged_interval он же к wb-mqtt-db прописывается или к устройствам rs485 тоже можно прописывать? если да, то куда, к устройству, показателю, или вообще к порту?
Разве в историю, где стоит параметр max_unchanged_interval = 1200 не должны попадать значения, даже если они и не меняются, каждые 20 минут?
Ещё раз повторю: Попробуйте зайти в веб-интерфейс в Serial Devices Configuration, на самом верхнем уровне нажать Properties, выбрать “Unchanged value posting interval”, и поставить какое-нибудь осмысленное значение, например 30 секунд.
По-умолчанию, драйвер wb-mqtt-serial шлёт сообщения в шину только при измении значения, полученного от физического устройства.