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

Материал из Wiren Board
 
(не показано 77 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}}
{{DISPLAYTITLE: Диагностика ошибок в работе контроллера Wiren Board}}
[[Image: System Information.png |400px|thumb|right| Версия ПО в веб-интерфейсе контроллера Wiren Board ]]
[[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]]
{{Draft}}
[[Image: Web-Configs-2.0 logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board]]
== Введение ==
== Введение ==
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала. Так же полезно проверить, что вы используете свежую версию ПО.
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала.


В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство.
В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство.


Читать журналы можно двумя способами:
Читать журналы можно двумя способами:
* [[#В консоли|из консоли]] с помощью journalctl.
* из консоли с помощью [[journalctl]].
{{SupportedSinceRelease
* из веб-интерфейса с помощью инструмента [[Wiren Board Web Interface#mqtt-channels | Системный журнал]].
| release = wb-2110
 
|content=
Цель диагностики — локализовать и устранить неисправность, общий алгоритм:
* [[#В веб-интерфейсе контроллера|из веб-интерфейса]] с помощью инструмента Logs.
# Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д.
}}
# Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы [[#Основы|Основы]] и [[#Примеры типовых неисправностей |Примеры типовых неисправностей]] — это даст вам понимание того, как всё устроено и поможет понять, что именно искать.
# Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на портале техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение.
# Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — [[Wiren_Board_Software#update| обновите прошивку контроллера]].
 
В случае, если вы не смогли самостоятельно определить и устранить причину проблемы, создайте тему на [https://support.wirenboard.com форуме техподдержки]: подробно опишите проблему и приложите записи системного журнала или [[Wiren_Board_Web_Interface#diagnostic |архив с диагностической информацией]]. Рекомендуем перед созданием темы прочитать [https://support.wirenboard.com/faq Советы по оформлению сообщений].


Если вы не смогли самостоятельно определить причину ошибок в работе контроллера, создайте тему на [https://support.wirenboard.com форуме техподдержки], приложите записи системного журнала или [[#Выгрузка данных для отправки в техподдержку | архив с диагностической информацией]] и мы постараемся помочь.
Обмен файлами с контроллером можно организовать по протоколу SFTP(SSH File Transfer Protocol), смотрите инструкцию в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].


== Что искать в журнале ==
== Основы ==
Поиск проблемы — это творческая задача, поэтому универсального рецепта нет, но мы дадим несколько советов.
=== Как устроено ПО контроллера ===
[[File:DebianLinux.png| thumb | 600px | Через [[MQTT]] работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил]]


Сильно поможет понимание [[Wiren_Board_Software|архитектуры ПО контроллера]], где в центре MQTT-брокер, в который пишут информацию различные сервисы wb:
В основе программной архитектуры 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]].
* Контроллер перезагружается без видимых причин, или какой-то из сервисов не запускается  — может помочь анализ сообщений ядра (dmesg).
* Проблемы с serial-устройствами, которые подключены через RS-485 — смотрите сообщения драйвера wb-mqtt-serial. Ошибки обмена драйвер записывает как предупреждения (warning).
* Странно работают правила — будут интересны сообщения wb-rules.


== В консоли ==
На контроллер Wiren Board можно установить ПО сторонних разработчиков, которое может сбоить и блокировать нормальную работу контроллера — помните об этом. В большинстве случаев стороннее программное обеспечение так же оставляет записи в системном журнале.
[[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]]
 
journalctl — это консольный инструмент, поэтому перед вводом команд подключитесь к [[SSH]]. Больше примеров смотрите в статье [[journalctl]].
=== Полезные команды ===
Команды ниже выполняются в консоли контроллера, подключиться к которой можно через [[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>


Посмотреть сообщения ядра (dmesg):
Узнать версию пакета можно с помощью команды <code>apt policy <имя пакета></code>, например, узнаем версию ''wb-mqtt-serial'':
<syntaxhighlight lang="console" >
<syntaxhighlight lang="console">
# journalctl -k
# apt policy wb-mqtt-serial
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:37:49 +04. --
wb-mqtt-serial:
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: Booting Linux on physical CPU 0x0
  Installed: 2.22.1-wb5
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: Linux version 5.10.35-wb6 (jenkins@wbdevenv) (arm-linux-gnueabihf-gcc (Debian 6.3.0-1
  Candidate: 2.22.1-wb5
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
  Version table:
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: div instructions available: patching division code
*** 2.22.1-wb5 990
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
        990 http://deb.wirenboard.com/wb6/stretch stable/main armhf Packages
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: OF: fdt: Machine model: Wiren Board rev. 6.7.0 (i.MX6UL/ULL)
        100 /var/lib/dpkg/status
</syntaxhighlight>
</syntaxhighlight>
Здесь видно, что ОС контроллера начала загрузку 4 ноября в 13:43:31, используется ядро 5.10.35-wb6 и ниже идёт лог загрузки.


Вывести на экран журнал драйвера wb-mqtt-serial:
Узнать, сколько свободного места на eMMC:
<syntaxhighlight lang="console" >
<syntaxhighlight lang="console">
# journalctl -u wb-mqtt-serial
# df -h
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:38:20 +04. --
Filesystem      Size  Used Avail Use% Mounted on
Nov 01 14:36:33 wirenboard-AYXIHFQ6 wb-mqtt-serial[25318]: WARNING: [modbus] failed to read 1 discrete(s) @ 1 of device modbus:58: Serial protocol error: request timed out
/dev/root      976M  581M  329M  64% /
Nov 01 15:29:19 wirenboard-AYXIHFQ6 wb-mqtt-serial[25318]: WARNING: [modbus] failed to read 3 input(s) @ 6 of device modbus:87: Serial protocol error: malformed response: invalid crc
devtmpfs        240M    0  240M  0% /dev
Nov 01 15:51:07 wirenboard-AYXIHFQ6 wb-mqtt-serial[25318]: INFO: [signal handling] Received signal 15
tmpfs          248M    0  248M  0% /dev/shm
Nov 01 15:51:07 wirenboard-AYXIHFQ6 systemd[1]: Stopping MQTT Driver for serial devices...
tmpfs          248M  584K  248M  1% /run
Nov 01 15:51:15 wirenboard-AYXIHFQ6 systemd[1]: Stopped MQTT Driver for serial devices.
tmpfs          5.0M    0  5.0M  0% /run/lock
Nov 01 15:56:42 wirenboard-AYXIHFQ6 systemd[1]: Started MQTT Driver for serial devices.
tmpfs          248M    0  248M  0% /sys/fs/cgroup
Nov 01 15:56:49 wirenboard-AYXIHFQ6 wb-mqtt-serial[30608]: INFO: [serial config] "WB-MSW v.3 22" channel "CO2 Force Calibration" override property "enabled"
/dev/mmcblk0p6  4.7G  1.1G  3.4G  24% /mnt/data
tmpfs            50M    0  50M  0% /run/user/0
</syntaxhighlight>
</syntaxhighlight>
В журнале есть ошибки чтения регистров из Modbus-устройств с адресами 58 и 87, потом драйвер был перезапущен и сразу после перезапуска началась отправка параметров датчику WB-MSW v.3 с адресом 22.


Показать предупреждения (<code>-p 4</code>), записанные драйвером wb-mqtt-serial с момента последней загрузки (<code>-b 0</code>):
А так можно узнать, сколько занимают места подкаталоги:
<syntaxhighlight lang="console" >
<syntaxhighlight lang="console">
# journalctl -b 0 -p 4 -u wb-mqtt-serial
# du -h --max-depth=1
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:39:29 +04. --
6.9M    ./.cache
Nov 04 13:44:48 wirenboard-AYXIHFQ6 systemd[1]: wb-mqtt-serial.service: Main process exited, code=killed, status=4/ILL
12K    ./.ssh
Nov 04 13:44:48 wirenboard-AYXIHFQ6 systemd[1]: wb-mqtt-serial.service: Failed with result 'signal'.
46M    ./.npm
Nov 04 13:45:23 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] Register <modbus:87:input: 7> is not supported
328M    ./zigbee2mqtt
Nov 04 13:45:23 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] Register <modbus:87:input: 8> is not supported
20K    ./.config
Nov 04 14:41:30 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] failed to read 3 input(s) @ 32 of device modbus:111: Serial protocol error: request timed out
16K    ./.local
Nov 04 14:49:09 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] failed to read 3 coil(s) @ 0 of device modbus:111: Serial protocol error: request timed out
4.0K    ./.nano
32K    ./tmp
381M    .
</syntaxhighlight>
</syntaxhighlight>
Драйвер был перезапущен, а дальше у нас идут ошибки чтения регистров из Modbus-устройств с адресами 87 и 111.


Сохранить журнал сервиса wb-rules в файл:
Посмотреть нагрузку на процессор и оперативную память в разрезе загруженных программ:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# journalctl -u wb-rules >> /tmp/log-file.txt
# 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>
О том, как скопировать файл с контроллера на компьютер, читайте в статье [[View controller files from your computer|Просмотр файлов контроллера с компьютера]].


Посмотреть, когда был запущен контроллер, можно командой:
Посмотреть, какое ядро загружено:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# who -b
# uname -a
        system boot  Nov  4 10:39
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">
# last -x reboot
# systemctl status wb-mqtt-serial
reboot  system boot 5.10.35-wb6      Thu Nov 4 13:43  still running
● wb-mqtt-serial.service - MQTT Driver for serial devices
reboot  system boot  5.10.35-wb6      Thu Nov 4 10:39  still running
  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">
# wb-release
# df -HT
Wirenboard release wb-2108 (as stable), target wb6/stretch
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>


Подробнее о версиях ПО можно почитать в статье [[Wiren Board Firmware Update| Обновление прошивки контроллера Wiren Board 6]].
Загляните в список известных неисправностей, нет ли там проблем с похожими симптомами: [[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>.


== В веб-интерфейсе контроллера ==
Сперва стоит проверить качество питания: уровень напряжения, отсутствие «просадок». Попробуйте подключить контроллер к другому блоку питания.
{{SupportedSinceRelease
| release = wb-2110
|content=
[[Image: WebUI 2.0 — logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board]]
Для просмотра системного журнала из веб-интерфейса контроллера, используйте [[Wiren Board Web Interface#logs | инструмент Logs]].


Узнать, сколько времени работает контроллер и текущую версию ПО можно на вкладке ''Devices'', в устройстве ''System''. Подробнее о версиях ПО можно почитать в статье [[Wiren Board Firmware Update| Обновление прошивки контроллера Wiren Board 6]].
Если питание стабильно, то причину перезагрузки ищите в сообщениях watchdog и ядра ОС Linux (dmesg). Если контроллер перезагружается в цикле и вы не можете попасть в консоль, попробуйте [[watchdog | отключить watchdog]].


[[Image: WebUI Logs dmesg.png |700px|thumb|none| Просмотр системных сообщений ядра ОС. <br> В сообщениях ядра можно найти полезную информацию: версию ядра, версию контроллера, как происходила загрузка контроллера]]
=== Контроллер не включается ===
[[Image: WebUI Logs wb-mqtt-serial.png |700px|thumb|none| Просмотр сообщений драйвера wb-mqtt-serial. <br>Здесь видно, что есть ошибки при обращении к регистрам Modbus-устройства с адресом 87, потом драйвер был перезапущен и началась отправка параметров в датчик WB-MSW v.3 с адресом 22]]
Здесь нужно определиться, что происходит — подайте питание на контроллер, включите его кнопкой и следите за индикатором:
[[Image: WebUI Logs wb-mqtt-serial + date.png |700px|thumb|none| Просмотр сообщений драйвера wb-mqtt-serial с 3 ноября. <br>Видно, что иногда возникают ошибки при обращении к регистрам Modbus-устройств — повод проверить физическое подключение шины RS-485]]
* прошла минута, но индикатор не загорается — аппаратная проблема: нет питания, неисправно «железо» контроллера. Если питание в норме и контроллер на гарантии — обратитесь в техподдержку для замены или ремонта.
}}
* индикатор загорается, но даже через две-три минуты остаётся красного или оранжевого цвета — не загружается ОС: подключитесь к [[Debug UART | отладочному порту]] контроллера, перезагрузите его и смотрите сообщения в консоли.
* индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по [[SSH]]. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.


== Выгрузка данных для отправки в техподдержку ==
Описание состояний индикатора контроллера смотрите в [[Wiren Board#Индикация этапов загрузки | документации]]. Если у вас не получилось выяснить причину поломки, создайте тему на [https://support.wirenboard.com портале технической поддержки] и приложите всю собранную информацию.
{{SupportedSinceRelease
| release = wb-2110
|content=
[[Image: Web-Settings_System-2.0.png |400px|thumb|right| Страница сбора данных для диагностики]]
Если вы не смогли самостоятельно найти причину неисправности и хотите обратиться в техническую поддержку — будет полезно приложить к сообщению архив с диагностической информацией.


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

Текущая версия на 12:26, 21 декабря 2023

Просмотр системного журнала с помощью journalctl
Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board

Введение

Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала.

В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство.

Читать журналы можно двумя способами:

Цель диагностики — локализовать и устранить неисправность, общий алгоритм:

  1. Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д.
  2. Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы Основы и Примеры типовых неисправностей — это даст вам понимание того, как всё устроено и поможет понять, что именно искать.
  3. Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на портале техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение.
  4. Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — обновите прошивку контроллера.

В случае, если вы не смогли самостоятельно определить и устранить причину проблемы, создайте тему на форуме техподдержки: подробно опишите проблему и приложите записи системного журнала или архив с диагностической информацией. Рекомендуем перед созданием темы прочитать Советы по оформлению сообщений.

Обмен файлами с контроллером можно организовать по протоколу SFTP(SSH File Transfer Protocol), смотрите инструкцию в статье Просмотр файлов контроллера с компьютера.

Основы

Как устроено ПО контроллера

Через MQTT работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил

В основе программной архитектуры Wiren Board — MQTT-брокер, в который пишут информацию различные сервисы wb:

  • wb-mqtt-adc — драйвер аналоговых входов
  • wb-mqtt-dac — драйвер аналоговых выходов
  • wb-mqtt-confed — конфигуратор в WebUI
  • wb-mqtt-db — хранение архива данных
  • wb-mqtt-gpio — драйвер для работы с GPIO
  • wb-mqtt-knx — мост KNX
  • wb-mqtt-mbgate — шлюз MQTT-ModbusRTU/TCP
  • wb-mqtt-opcua — шлюз MQTT-OPC UA
  • wb-mqtt-serial — драйвер для serial-устройств
  • wb-mqtt-w1 — драйвер для 1-Wire

Кроме этого, есть сервисы, которые реализуют дополнительные функции:

Подробнее читайте в статье Программное обеспечение Wiren Board.

На контроллер Wiren Board можно установить ПО сторонних разработчиков, которое может сбоить и блокировать нормальную работу контроллера — помните об этом. В большинстве случаев стороннее программное обеспечение так же оставляет записи в системном журнале.

Полезные команды

Команды ниже выполняются в консоли контроллера, подключиться к которой можно через SSH или отладочный порт.

Информация о контроллере

Посмотреть, когда был запущен контроллер:

# who -b
         system boot  Nov  4 13:43

Узнать, когда контроллер перезагружался:

# 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

Посмотреть текущую версию прошивки контроллера:

# wb-release
Wirenboard release wb-2108 (as stable), target wb6/stretch

Узнать версию пакета можно с помощью команды apt policy <имя пакета>, например, узнаем версию wb-mqtt-serial:

# 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

Узнать, сколько свободного места на eMMC:

# 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

А так можно узнать, сколько занимают места подкаталоги:

# du -h --max-depth=1
6.9M    ./.cache
12K     ./.ssh
46M     ./.npm
328M    ./zigbee2mqtt
20K     ./.config
16K     ./.local
4.0K    ./.nano
32K     ./tmp
381M    .

Посмотреть нагрузку на процессор и оперативную память в разрезе загруженных программ:

# 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

Посмотреть, какое ядро загружено:

# uname -a
Linux wirenboard-AYXIHFQ6 5.10.35-wb6 #1 Thu Sep 30 00:33:57 UTC 2021 armv7l GNU/Linux

Управление сервисами

Проверить статус сервиса и посмотреть его последние 10 сообщений в системном журнале можно командой systemctl status <имя сервиса>:

# 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

Получить список запущенных сервисов и их статусы:

systemctl list-units --type=service

Управление сервисом:

systemctl start <имя сервиса>
systemctl stop <имя сервиса>
systemctl restart <имя сервиса>

Включить или выключить автозапуск сервиса:

systemctl disable <имя сервиса>
systemctl enable <имя сервиса>

Примеры типовых неисправностей

Контроллер неожиданно стал вести себя странно

Надо попытаться точно определить, про происходит и отделить внешние проблемы от внутренних: остановить стороннее ПО, отключить подключённые устройства, проверить стабильность питания.

Ещё бывает, что по каким-то причинам кончилось свободное место на eMMC, проверить можно так:

#  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

Загляните в список известных неисправностей, нет ли там проблем с похожими симптомами: Wiren Board 6: Errata, Wiren Board 7: Errata.

Serial-устройства работают нестабильно

Узнать, с каким именно устройством проблемы, можно:

  • в веб-интерфейсе контроллера, на вкладке Devices — каналы такого устройства будут окрашены красным;
  • в сообщениях драйвера wb-mqtt-serial — ищите ошибки обмена error и warning. Если сообщения об ошибках обмена возникают периодически — повод проверить физическое подключение устройств.

Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера wb-mqtt-serial.

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

Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по RS-485. Разница лишь в том, что у вас добавляется ещё одно звено — локальная сеть, через которую подключены устройства.

Частые симптомы и методы диагностики
Порядок проверки Симптомы Возможная причина Диагностика
1 Устройство не работает или работает нестабильно Неверные настройки подключения Проверьте, что настройки порта RS-485 и устройства одинаковые. Если устройство работает нестабильно, обратите внимание на стоп-бит
2 Устройство не работает или работает нестабильно. В системном журнале периодически возникают ошибки обмена Проблемы с шиной RS-485: плохой контакт, обрывы или наводки на шине Подключите устройство коротким проводом напрямую к контроллеру. Если проблема ушла — проверяйте шину RS-485 на отсутствие физических повреждений и соответствие рекомендациям: RS-485:Физическое подключение
3 Устройство работает нестабильно, в системном журнале есть ошибки таймаута и invalid CRC На шине два устройства с одинаковыми адресами
  • Физически отключите проблемное устройство от шины, запомните его адрес.
  • Считайте с помощью утилиты modbus_client один из регистров по тому же адресу. Для устройств Wiren Board удобно считывать регистр 128.
  • Если ответ пришёл — на линии есть двойник. Смените устройствам адреса на свободные.
4 Устройство стороннего производителя работает нестабильно Проблемы в устройстве
  • Подключите устройство на отдельный порт и добейтесь стабильной работы.
  • Верните устройство на шину к другим устройствам.
  • Если проблемы вернулись — производитель устройства не полностью реализовал Modbus-протокол. Решение: использовать устройство на отдельном порту или не использовать его совсем.

Не работают модули WBIO

Сперва проверьте правильность подключения и настройки.

Если модули правильно подключены и настроены, но не работают:

  1. В настройках контроллера удалите все модули ввода-вывода.
  2. Выключите контроллер и физически отключите от него все модули, кроме одного.
  3. Включите контроллер и настройте оставшийся модуль по инструкции.
  4. Если модуль появился в веб-интерфейсе на странице Devices — проверьте его работу.

Если подключённый модуль работает без проблем — добавляйте новые модули по одному и не забывайте конфигурировать их в веб-интерфейсе. Дальше у вас или все модули заработают, или вы найдёте тот, который влияет на работу других.

Не открывается страница конфигурации устройств

Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш Ctrl+Shift+R или Ctrl+F5 — комбинация зависит от вашего браузера.

Если это не помогло:

  • ищите в логах сообщения от wb-mqtt-serial и wb-mqtt-confed. Особенно интересны сообщения типов error и warning.
  • проверьте файл конфигурации и шаблоны по инструкции.

Контроллер перезагружается

Контроллер может перезагружаться по ряду причин:

  • Нестабильное питание — просадки напряжения питания ниже допустимого значения могут вызвать перезагрузку.
  • Нехватка места на eMMC.
  • Зависание программ и сервисов — сработает watchdog, которые перезагрузит контроллер.
  • Перезагрузка вызвана пользователем, например, командой shutdown -r now.

Сперва стоит проверить качество питания: уровень напряжения, отсутствие «просадок». Попробуйте подключить контроллер к другому блоку питания.

Если питание стабильно, то причину перезагрузки ищите в сообщениях watchdog и ядра ОС Linux (dmesg). Если контроллер перезагружается в цикле и вы не можете попасть в консоль, попробуйте отключить watchdog.

Контроллер не включается

Здесь нужно определиться, что происходит — подайте питание на контроллер, включите его кнопкой и следите за индикатором:

  • прошла минута, но индикатор не загорается — аппаратная проблема: нет питания, неисправно «железо» контроллера. Если питание в норме и контроллер на гарантии — обратитесь в техподдержку для замены или ремонта.
  • индикатор загорается, но даже через две-три минуты остаётся красного или оранжевого цвета — не загружается ОС: подключитесь к отладочному порту контроллера, перезагрузите его и смотрите сообщения в консоли.
  • индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по SSH. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.

Описание состояний индикатора контроллера смотрите в документации. Если у вас не получилось выяснить причину поломки, создайте тему на портале технической поддержки и приложите всю собранную информацию.

Полезные ссылки