16 578
правок
(не показано 70 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}} | {{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}} | ||
[[Image: | [[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]] | ||
[[Image: Web-Configs-2.0 logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board]] | |||
== Введение == | == Введение == | ||
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала | Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала. | ||
В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство. | В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство. | ||
Читать журналы можно двумя способами: | Читать журналы можно двумя способами: | ||
* [[# | * из консоли с помощью [[journalctl]]. | ||
* из веб-интерфейса с помощью инструмента [[Wiren Board Web Interface#mqtt-channels | Системный журнал]]. | |||
| | |||
| | Цель диагностики — локализовать и устранить неисправность, общий алгоритм: | ||
# Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д. | |||
# Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы [[#Основы|Основы]] и [[#Примеры типовых неисправностей |Примеры типовых неисправностей]] — это даст вам понимание того, как всё устроено и поможет понять, что именно искать. | |||
# Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на портале техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение. | |||
# Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — [[Wiren_Board_Software#update| обновите прошивку контроллера]]. | |||
В случае, если вы не смогли самостоятельно определить и устранить причину проблемы, создайте тему на [https://support.wirenboard.com форуме техподдержки]: подробно опишите проблему и приложите записи системного журнала или [[Wiren_Board_Web_Interface#diagnostic |архив с диагностической информацией]]. Рекомендуем перед созданием темы прочитать [https://support.wirenboard.com/faq Советы по оформлению сообщений]. | |||
Обмен файлами с контроллером можно организовать по протоколу SFTP(SSH File Transfer Protocol), смотрите инструкцию в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]]. | |||
== | == Основы == | ||
=== Как устроено ПО контроллера === | |||
[[File:DebianLinux.png| thumb | 600px | Через [[MQTT]] работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил]] | |||
В основе программной архитектуры Wiren Board — MQTT-брокер, в который пишут информацию различные сервисы wb: | |||
* wb-mqtt-adc — драйвер аналоговых входов | * wb-mqtt-adc — драйвер аналоговых входов | ||
* wb-mqtt-dac — драйвер аналоговых выходов | * wb-mqtt-dac — драйвер аналоговых выходов | ||
Строка 37: | Строка 42: | ||
* wb-rules — [[wb-rules | движок правил]] | * wb-rules — [[wb-rules | движок правил]] | ||
Подробнее читайте в статье [[Wiren_Board_Software|Программное обеспечение Wiren Board]]. | |||
== | На контроллер Wiren Board можно установить ПО сторонних разработчиков, которое может сбоить и блокировать нормальную работу контроллера — помните об этом. В большинстве случаев стороннее программное обеспечение так же оставляет записи в системном журнале. | ||
=== Полезные команды === | |||
Команды ниже выполняются в консоли контроллера, подключиться к которой можно через [[SSH]] или [[Debug UART | отладочный порт]]. | |||
==== Информация о контроллере ==== | |||
Посмотреть, когда был запущен контроллер: | |||
<syntaxhighlight lang="console"> | |||
# who -b | |||
system boot Nov 4 13:43 | |||
</syntaxhighlight> | |||
Узнать, когда контроллер перезагружался: | |||
<syntaxhighlight lang="console"> | |||
# last -x reboot | |||
reboot system boot 5.10.35-wb6 Thu Nov 4 13:43 still running | |||
reboot system boot 5.10.35-wb6 Thu Nov 4 10:39 still running | |||
</syntaxhighlight> | |||
Посмотреть текущую версию прошивки контроллера: | |||
<syntaxhighlight lang="console"> | |||
# wb-release | |||
Wirenboard release wb-2108 (as stable), target wb6/stretch | |||
</syntaxhighlight> | |||
Узнать версию пакета можно с помощью команды <code>apt policy <имя пакета></code>, например, узнаем версию ''wb-mqtt-serial'': | |||
<syntaxhighlight lang="console" > | <syntaxhighlight lang="console"> | ||
# | # apt policy wb-mqtt-serial | ||
-- | wb-mqtt-serial: | ||
Installed: 2.22.1-wb5 | |||
Candidate: 2.22.1-wb5 | |||
Version table: | |||
*** 2.22.1-wb5 990 | |||
990 http://deb.wirenboard.com/wb6/stretch stable/main armhf Packages | |||
100 /var/lib/dpkg/status | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Узнать, сколько свободного места на eMMC: | |||
<syntaxhighlight lang="console" > | <syntaxhighlight lang="console"> | ||
# | # df -h | ||
Filesystem Size Used Avail Use% Mounted on | |||
/dev/root 976M 581M 329M 64% / | |||
devtmpfs 240M 0 240M 0% /dev | |||
tmpfs 248M 0 248M 0% /dev/shm | |||
tmpfs 248M 584K 248M 1% /run | |||
tmpfs 5.0M 0 5.0M 0% /run/lock | |||
tmpfs 248M 0 248M 0% /sys/fs/cgroup | |||
/dev/mmcblk0p6 4.7G 1.1G 3.4G 24% /mnt/data | |||
tmpfs 50M 0 50M 0% /run/user/0 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
А так можно узнать, сколько занимают места подкаталоги: | |||
<syntaxhighlight lang="console" > | <syntaxhighlight lang="console"> | ||
# | # du -h --max-depth=1 | ||
6.9M ./.cache | |||
12K ./.ssh | |||
46M ./.npm | |||
328M ./zigbee2mqtt | |||
20K ./.config | |||
16K ./.local | |||
4.0K ./.nano | |||
32K ./tmp | |||
381M . | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Посмотреть нагрузку на процессор и оперативную память в разрезе загруженных программ: | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# | # top | ||
top - 08:52:05 up 16:32, 1 user, load average: 0.36, 0.54, 0.60 | |||
Tasks: 96 total, 3 running, 68 sleeping, 0 stopped, 0 zombie | |||
%Cpu(s): 7.9 us, 3.3 sy, 0.0 ni, 88.5 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st | |||
KiB Mem : 507820 total, 33124 free, 130160 used, 344536 buff/cache | |||
KiB Swap: 262140 total, 262140 free, 0 used. 398184 avail Mem | |||
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | |||
1119 root 20 0 913636 22576 11176 S 2.3 4.4 36:08.75 wb-rules | |||
3642 root 20 0 59272 5408 4812 S 1.6 1.1 12:52.91 wb-mqtt-adc | |||
14919 root 20 0 5396 2380 1892 R 1.6 0.5 0:00.55 top | |||
349 mosquit+ 20 0 8176 5008 3912 S 1.3 1.0 11:31.22 mosquitto | |||
1 root 20 0 25728 5060 3704 S 0.7 1.0 3:14.82 systemd | |||
1129 root 20 0 62212 8256 5368 S 0.7 1.6 7:12.36 main | |||
4262 root 20 0 59320 6180 5580 S 0.7 1.2 4:20.00 wb-mqtt-gpio | |||
… | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Посмотреть, | Посмотреть, какое ядро загружено: | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# | # uname -a | ||
Linux wirenboard-AYXIHFQ6 5.10.35-wb6 #1 Thu Sep 30 00:33:57 UTC 2021 armv7l GNU/Linux | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Управление сервисами ==== | |||
Проверить статус сервиса и посмотреть его последние 10 сообщений в системном журнале можно командой <code>systemctl status <имя сервиса></code>: | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# | # systemctl status wb-mqtt-serial | ||
● wb-mqtt-serial.service - MQTT Driver for serial devices | |||
Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled) | |||
Active: active (running) since Mon 2021-11-08 22:21:59 +04; 12h ago | |||
Main PID: 8180 (wb-mqtt-serial) | |||
CGroup: /system.slice/wb-mqtt-serial.service | |||
└─8180 /usr/bin/wb-mqtt-serial | |||
Nov 09 02:29:54 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:241: Serial protocol error: request timed out | |||
Nov 09 02:46:10 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out | |||
Nov 09 02:46:41 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 coil(s) @ 2 of device modbus:58: Serial protocol error: request timed out | |||
Nov 09 02:53:57 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:241: Serial protocol error: request timed out | |||
Nov 09 03:54:33 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:241: Serial protocol error: request timed out | |||
Nov 09 05:39:59 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 3 discrete(s) @ 0 of device modbus:111: Serial protocol error: request timed out | |||
Nov 09 06:50:47 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 holding(s) @ 0 of device modbus:58: Serial protocol error: request timed out | |||
Nov 09 08:47:36 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out | |||
Nov 09 10:11:34 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 discrete(s) @ 4 of device modbus:58: Serial protocol error: request timed out | |||
Nov 09 10:12:15 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out | |||
</syntaxhighlight> | |||
Получить список запущенных сервисов и их статусы: | |||
<syntaxhighlight lang="bash"> | |||
systemctl list-units --type=service | |||
</syntaxhighlight> | |||
Управление сервисом: | |||
<syntaxhighlight lang="bash"> | |||
systemctl start <имя сервиса> | |||
systemctl stop <имя сервиса> | |||
systemctl restart <имя сервиса> | |||
</syntaxhighlight> | |||
Включить или выключить автозапуск сервиса: | |||
<syntaxhighlight lang="bash"> | |||
systemctl disable <имя сервиса> | |||
systemctl enable <имя сервиса> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Примеры типовых неисправностей == | |||
=== Контроллер неожиданно стал вести себя странно === | |||
Надо попытаться точно определить, про происходит и отделить внешние проблемы от внутренних: остановить стороннее ПО, отключить подключённые устройства, проверить стабильность питания. | |||
Ещё бывает, что по каким-то причинам кончилось свободное место на eMMC, проверить можно так: | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
# | # df -HT | ||
Filesystem Type Size Used Avail Use% Mounted on | |||
/dev/root ext4 1.1G 859M 98M 90% / | |||
devtmpfs devtmpfs 251M 0 251M 0% /dev | |||
tmpfs tmpfs 260M 0 260M 0% /dev/shm | |||
tmpfs tmpfs 104M 1.2M 103M 2% /run | |||
tmpfs tmpfs 5.3M 0 5.3M 0% /run/lock | |||
/dev/mmcblk0p6 ext4 5.1G 2.0G 2.8G 42% /mnt/data | |||
tmpfs tmpfs 52M 0 52M 0% /run/user/0 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Загляните в список известных неисправностей, нет ли там проблем с похожими симптомами: [[WB_6:_Errata|Wiren Board 6: Errata]], [[WB_7:_Errata|Wiren Board 7: Errata]]. | |||
=== Serial-устройства работают нестабильно === | |||
Узнать, с каким именно устройством проблемы, можно: | |||
* в веб-интерфейсе контроллера, на вкладке ''Devices'' — каналы такого устройства будут окрашены красным; | |||
* в сообщениях драйвера ''wb-mqtt-serial'' — ищите ошибки обмена error и warning. Если сообщения об ошибках обмена возникают периодически — повод проверить физическое подключение устройств. | |||
Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера [[wb-mqtt-serial#Включение отладки | wb-mqtt-serial]]. | |||
После того как вы определились с проблемным устройством — подключите его коротким проводом на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит. | |||
Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по RS-485. Разница лишь в том, что у вас добавляется ещё одно звено — локальная сеть, через которую подключены устройства. | |||
{| class="wikitable" style="max-width:1200px" | |||
|+ Частые симптомы и методы диагностики | |||
|- | |||
! Порядок проверки | |||
! Симптомы | |||
! Возможная причина | |||
! Диагностика | |||
|- | |||
| 1 | |||
| Устройство не работает или работает нестабильно | |||
| Неверные настройки подключения | |||
| Проверьте, что настройки порта RS-485 и устройства одинаковые. Если устройство работает нестабильно, обратите внимание на стоп-бит | |||
|- | |||
| 2 | |||
| Устройство не работает или работает нестабильно. В системном журнале периодически возникают ошибки обмена | |||
| Проблемы с шиной RS-485: плохой контакт, обрывы или наводки на шине | |||
| Подключите устройство коротким проводом напрямую к контроллеру. Если проблема ушла — проверяйте шину RS-485 на отсутствие физических повреждений и соответствие рекомендациям: [[RS-485:Физическое подключение|RS-485:Физическое подключение]] | |||
|- | |||
| 3 | |||
| Устройство работает нестабильно, в системном журнале есть ошибки таймаута и ''invalid CRC'' | |||
| На шине два устройства с одинаковыми адресами | |||
| | |||
* Физически отключите проблемное устройство от шины, запомните его адрес. | |||
* Считайте с помощью утилиты [[modbus_client]] один из регистров по тому же адресу. Для устройств Wiren Board удобно считывать регистр 128. | |||
* Если ответ пришёл — на линии есть двойник. Смените устройствам адреса на свободные. | |||
|- | |||
| 4 | |||
| Устройство стороннего производителя работает нестабильно | |||
| Проблемы в устройстве | |||
| | |||
* Подключите устройство на отдельный порт и добейтесь стабильной работы. | |||
* Верните устройство на шину к другим устройствам. | |||
* Если проблемы вернулись — производитель устройства не полностью реализовал Modbus-протокол. Решение: использовать устройство на отдельном порту или не использовать его совсем. | |||
|} | |||
=== Не работают модули WBIO === | |||
Сперва проверьте правильность [[IO_modules | подключения и настройки]]. | |||
Если модули правильно подключены и настроены, но не работают: | |||
# В настройках контроллера удалите все модули ввода-вывода. | |||
# Выключите контроллер и физически отключите от него все модули, кроме одного. | |||
# Включите контроллер и настройте оставшийся модуль по инструкции. | |||
# Если модуль появился в веб-интерфейсе на странице ''Devices'' — проверьте его работу. | |||
Если подключённый модуль работает без проблем — добавляйте новые модули по одному и не забывайте конфигурировать их в веб-интерфейсе. Дальше у вас или все модули заработают, или вы найдёте тот, который влияет на работу других. | |||
=== Не открывается страница конфигурации устройств === | |||
Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> или <kbd>Ctrl</kbd>+<kbd>F5</kbd> — комбинация зависит от вашего браузера. | |||
Если это не помогло: | |||
* ищите в логах сообщения от ''wb-mqtt-serial'' и ''wb-mqtt-confed''. Особенно интересны сообщения типов ''error'' и ''warning''. | |||
* проверьте файл конфигурации и шаблоны по [[wb-mqtt-serial#Диагностика неполадок | инструкции]]. | |||
=== Контроллер перезагружается === | |||
Контроллер может перезагружаться по ряду причин: | |||
* Нестабильное питание — просадки напряжения питания ниже допустимого значения могут вызвать перезагрузку. | |||
* Нехватка места на eMMC. | |||
* Зависание программ и сервисов — сработает watchdog, которые перезагрузит контроллер. | |||
* Перезагрузка вызвана пользователем, например, командой <code>shutdown -r now</code>. | |||
Сперва стоит проверить качество питания: уровень напряжения, отсутствие «просадок». Попробуйте подключить контроллер к другому блоку питания. | |||
Если питание стабильно, то причину перезагрузки ищите в сообщениях watchdog и ядра ОС Linux (dmesg). Если контроллер перезагружается в цикле и вы не можете попасть в консоль, попробуйте [[watchdog | отключить watchdog]]. | |||
=== Контроллер не включается === | |||
[[ | Здесь нужно определиться, что происходит — подайте питание на контроллер, включите его кнопкой и следите за индикатором: | ||
[[ | * прошла минута, но индикатор не загорается — аппаратная проблема: нет питания, неисправно «железо» контроллера. Если питание в норме и контроллер на гарантии — обратитесь в техподдержку для замены или ремонта. | ||
* индикатор загорается, но даже через две-три минуты остаётся красного или оранжевого цвета — не загружается ОС: подключитесь к [[Debug UART | отладочному порту]] контроллера, перезагрузите его и смотрите сообщения в консоли. | |||
* индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по [[SSH]]. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику. | |||
Описание состояний индикатора контроллера смотрите в [[Wiren Board#Индикация этапов загрузки | документации]]. Если у вас не получилось выяснить причину поломки, создайте тему на [https://support.wirenboard.com портале технической поддержки] и приложите всю собранную информацию. | |||
[[ | |||
Если | |||
== Полезные ссылки == | |||
* [[Заглавная страница | Документация устройств Wiren Board]] — описание устройств, схемы подключения, инструкции по обновлению и т.п. | |||
* [https://support.wirenboard.com Портал технической поддержки] — техподдержка и помощь сообщества. | |||
* [[WB_FAQ| Ответы на часто задаваемые вопросы (FAQ)]] — сборник полезных советов и ссылок. | |||
* [https://translate.google.ru/ Онлайн-переводчик от Google] — если у вас трудности с переводом сообщений журнала, воспользуйтесь переводчиком. |