How to diagnose: различия между версиями

Нет описания правки
 
(не показано 20 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}}
{{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}}
[[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]]
[[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]]
[[Image: WebUI 2.0 logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board {{SupportedSinceRelease|release=wb-2110|nobanner=true}}]]
[[Image: Web-Configs-2.0 logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board]]
== Введение ==
== Введение ==
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала.
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала.
Строка 9: Строка 9:
Читать журналы можно двумя способами:
Читать журналы можно двумя способами:
* из консоли с помощью [[journalctl]].
* из консоли с помощью [[journalctl]].
{{SupportedSinceRelease
* из веб-интерфейса с помощью инструмента [[Wiren Board Web Interface#mqtt-channels | Системный журнал]].
| release = wb-2110
|content=
* из веб-интерфейса с помощью [[Wiren Board Web Interface#logs | инструмента Logs]].
}}


Цель диагностики — локализовать и устранить неисправность, общий алгоритм:
Цель диагностики — локализовать и устранить неисправность, общий алгоритм:
# Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д.
# Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д.
# Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы [[#Основы|Основы]] и [[#Примеры типовых неисправностей |Примеры типовых неисправностей]] — это даст вам понимание того, как всё устроено и поможет понять, что именно искать.
# Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы [[#Основы|Основы]] и [[#Примеры типовых неисправностей |Примеры типовых неисправностей]] — это даст вам понимание того, как всё устроено и поможет понять, что именно искать.
# Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на форуме техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение.
# Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на портале техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение.
# Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — обновите прошивку контроллера. Подробнее читайте в статье [[Wiren Board Firmware Update| Обновление прошивки контроллера]].
# Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — [[Wiren_Board_Software#update| обновите прошивку контроллера]].


В случае, если вы не смогли самостоятельно определить и устранить причину проблемы, создайте тему на [https://support.wirenboard.com форуме техподдержки], подробно опишите проблему и приложите записи системного журнала или [[Wiren_Board_Web_Interface#Settings -> System (Настройки -> Системные) |архив с диагностической информацией]]. Если ошибка связана с serial-устройствами, приложите файл настроек <code>/etc/wb-mqtt-serial.conf</code>.
В случае, если вы не смогли самостоятельно определить и устранить причину проблемы, создайте тему на [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|Просмотр файлов контроллера с компьютера]].
Обмен файлами с контроллером можно организовать по протоколу SFTP(SSH File Transfer Protocol), смотрите инструкцию в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].
Строка 27: Строка 23:
== Основы ==
== Основы ==
=== Как устроено ПО контроллера ===
=== Как устроено ПО контроллера ===
[[File:MQTT.png | thumb | 600px | Через [[MQTT]] работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил]]
[[File:DebianLinux.png| thumb | 600px | Через [[MQTT]] работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил]]


В основе программной архитектуры Wiren Board — MQTT-брокер, в который пишут информацию различные сервисы wb:
В основе программной архитектуры Wiren Board — MQTT-брокер, в который пишут информацию различные сервисы wb:
Строка 52: Строка 48:
=== Полезные команды ===
=== Полезные команды ===
Команды ниже выполняются в консоли контроллера, подключиться к которой можно через [[SSH]] или [[Debug UART | отладочный порт]].
Команды ниже выполняются в консоли контроллера, подключиться к которой можно через [[SSH]] или [[Debug UART | отладочный порт]].
==== Информация о контроллере ====


Посмотреть, когда был запущен контроллер:
Посмотреть, когда был запущен контроллер:
Строка 96: Строка 94:
/dev/mmcblk0p6  4.7G  1.1G  3.4G  24% /mnt/data
/dev/mmcblk0p6  4.7G  1.1G  3.4G  24% /mnt/data
tmpfs            50M    0  50M  0% /run/user/0
tmpfs            50M    0  50M  0% /run/user/0
</syntaxhighlight>
А так можно узнать, сколько занимают места подкаталоги:
<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 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>


Строка 104: Строка 136:
</syntaxhighlight>
</syntaxhighlight>


Проверить статус сервиса и посмотреть его последние 10 сообщений в системном журнале можно командой <code>service <имя сервиса> status</code>:
==== Управление сервисами ====
Проверить статус сервиса и посмотреть его последние 10 сообщений в системном журнале можно командой <code>systemctl status <имя сервиса></code>:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# service wb-mqtt-serial status
# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - MQTT Driver for serial devices
● wb-mqtt-serial.service - MQTT Driver for serial devices
   Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
   Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
Строка 124: Строка 157:
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: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
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">
#  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>
Загляните в список известных неисправностей, нет ли там проблем с похожими симптомами: [[WB_6:_Errata|Wiren Board 6: Errata]], [[WB_7:_Errata|Wiren Board 7: Errata]].
=== Serial-устройства работают нестабильно ===
=== Serial-устройства работают нестабильно ===
Если устройства, подключённые к портам RS-485 работают нестабильно — проверьте [[RS-485:Физическое подключение|физическое подключение]]. Несоблюдение рекомендаций по организации шины RS-485, плохой контакт в клеммах и обрывы на линии — частые причины проблем.
Узнать, с каким именно устройством проблемы, можно:
Узнать, с каким именно устройством проблемы, можно:
* в веб-интерфейсе контроллера, на вкладке ''Devices'' — каналы такого устройства будут окрашены красным;
* в веб-интерфейсе контроллера, на вкладке ''Devices'' — каналы такого устройства будут окрашены красным;
Строка 136: Строка 203:
Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера [[wb-mqtt-serial#Включение отладки | wb-mqtt-serial]].
Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера [[wb-mqtt-serial#Включение отладки | wb-mqtt-serial]].


После того как вы определились с проблемным устройством — подключите его на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит.
После того как вы определились с проблемным устройством — подключите его коротким проводом на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит.


Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по 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 ===
=== Не работают модули WBIO ===
Строка 154: Строка 256:
Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> или <kbd>Ctrl</kbd>+<kbd>F5</kbd> — комбинация зависит от вашего браузера.
Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш <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'' и ''wb-mqtt-confed''. Особенно интересны сообщения типов ''error'' и ''warning''.
* проверьте файл конфигурации и шаблоны по [[wb-mqtt-serial#Диагностика неполадок | инструкции]].


=== Контроллер перезагружается ===
=== Контроллер перезагружается ===
Строка 173: Строка 277:
* индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по [[SSH]]. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.
* индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по [[SSH]]. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.


Описание состояний индикатора контроллера смотрите в [[Wiren Board#Индикация этапов загрузки | документации]].
Описание состояний индикатора контроллера смотрите в [[Wiren Board#Индикация этапов загрузки | документации]]. Если у вас не получилось выяснить причину поломки, создайте тему на [https://support.wirenboard.com портале технической поддержки] и приложите всю собранную информацию.


== Полезные ссылки ==
== Полезные ссылки ==
* [[Заглавная страница | Документация устройств Wiren Board]] — описание устройств, схемы подключения, инструкции по обновлению и т.п.
* [[Заглавная страница | Документация устройств Wiren Board]] — описание устройств, схемы подключения, инструкции по обновлению и т.п.
* [https://support.wirenboard.com Форум технической поддержки] — техподдержка и помощь сообщества.
* [https://support.wirenboard.com Портал технической поддержки] — техподдержка и помощь сообщества.
* [[WB_FAQ| Ответы на часто задаваемые вопросы (FAQ)]] — сборник полезных советов и ссылок.
* [[WB_FAQ| Ответы на часто задаваемые вопросы (FAQ)]] — сборник полезных советов и ссылок.
* [https://translate.google.ru/ Онлайн-переводчик от Google] — если у вас трудности с переводом сообщений журнала, воспользуйтесь переводчиком.
* [https://translate.google.ru/ Онлайн-переводчик от Google] — если у вас трудности с переводом сообщений журнала, воспользуйтесь переводчиком.