Внезапно отвалился один из набортных RS485.
Как такое возможно?
Ребут не помог.
root@wirenboard-ADQIUUYW:~# ls -l /dev/ttyRS485*
lrwxrwxrwx 1 root root 7 Jun 10 16:16 /dev/ttyRS485-1 -> ttymxc1
Как следствие, wb-mqtt-serial благополучно падает, несмотря на то, что первый порт жив
А что говориит dmesg после перезагрузки?
можно dmesg |grep tty
Должно показывать три устройства, два порта под 485 и отладочный.
И да, в
/etc/udev/rules.d/99-wb-uart.rules
что?
BrainRoot:
dmesg |grep tty
[ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait ro
[ 0.214784] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 18, base_baud = 5000000) is a IMX
[ 0.794029] console [ttymxc0] enabled
[ 0.799546] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 55, base_baud = 5000000) is a IMX
[ 0.809849] 21fc000.serial: ttymxc5 at MMIO 0x21fc000 (irq = 56, base_baud = 5000000) is a IMX
[ 3.261517] systemd[1]: Created slice system-getty.slice.
root@wirenboard-ADQIUUYW:~# cat /etc/udev/rules.d/99-wb-uart.rules
KERNEL=="ttymxc0", SUBSYSTEM=="tty", SYMLINK+="ttyCONSOLE", GROUP="tty"
KERNEL=="ttymxc1", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-1", GROUP="dialout"
KERNEL=="ttymxc2", SUBSYSTEM=="tty", SYMLINK+="ttyMOD1", GROUP="dialout"
KERNEL=="ttymxc3", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-2", GROUP="dialout"
KERNEL=="ttymxc4", SUBSYSTEM=="tty", SYMLINK+="ttyMOD2", GROUP="dialout"
KERNEL=="ttymxc5", SUBSYSTEM=="tty", SYMLINK+="ttyGSM", GROUP="dialout"
KERNEL=="ttymxc6", SUBSYSTEM=="tty", SYMLINK+="ttyMOD3", GROUP="dialout"
Он с ttymxc5 на ttymxc5 переехал чтоли?
У меня еще в mod1/mod2 воткнуты rs485
Вот мое:
0.214798] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 18, base_baud = 5000000) is a IMX
[ 0.794209] console [ttymxc0] enabled
[ 0.799739] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 55, base_baud = 5000000) is a IMX
[ 0.810039] 21fc000.serial: ttymxc5 at MMIO 0x21fc000 (irq = 56, base_baud = 5000000) is a IMX
[ 3.081707] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 23.658899] 21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 250, base_baud = 5000000) is a IMX
У меня есть ttymxc3.
Так, сейчас подумаю.
Идем в web-интерфейсе по пути: configs / Hardware Modules Configuration / RS485-2/CAN interface config
Что установлено?
Должно быть:
У меня нет такого.
Возможно это связано с тем, что я снес wb-rules, который жрал все CPU:
apt remove wb-rules wb-rules-system
Однако, после того, как я снес, я специально ребутнул контроллер и проверил что все работает.
Нет, в сумме wb-rules, wb-mqtt-serial и wb-mqtt-db загрузили CPU на 100%, поэтому так случилось.
Понял, ок. Надеялся, что все-таки проблема с конфигурацией или в небольшой баге, которую несложно поправить =)
Надеюсь, в будущем движок правил будет оптимизирован.
apt-get install wb-hwconf-manager
установит пакет, которого не хватает.
Ну и в /etc/wb-hardware.conf
правильная секция выглядит так:
{
"id": "wb6-rs485-2",
"name": "RS485-2/CAN interface config",
"compatible": [
"wb6-rs485",
"wb6-can"
],
"module": "wb6-can-rs485",
"options": {
"mode": "enabled"
}
},
Поставил. Он в зависимостях подтянул wb-rules.
RS485 появился.
Как избавиться от wb-rules? Он мне не нужен и один раз уже привел к 100% CPU, хотя правил я не создавал. Я использую WB только как шлюз RS485-MQTT
Отключить?
systemctl disable wb-rules
systemctl stop wb-rules
но вообще при отсутствии скриптов - он не должен работать…
Так я делал, но его вроде какой-то вотчдог заново запускал.
каталог
/mnt/data/etc/wb-rules
пустой?
Если там ничего нет - то и нагружать нечему.
У себя сделал systemctl stop wb-rules - пока не запускается, посмотрю что его может вызывать.
Дополню, есть системные правила в /usr/share/wb-rules-system/
Используйте вместо wb_rules движок Intrahouse и будет вам счастье. Вот скрипт для установки на wb https://github.com/intrahouseio/intraHouse-Cherry/blob/master/install_wb.sh . Там можно и на чистом js сценарии писать и визуально блочные для простых. Ih-systems.com