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

Материал из Wiren Board
Строка 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: WebUI 2.0 — logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board {{SupportedSinceRelease|release=wb-2110|nobanner=true}}]]
== Введение ==
== Введение ==
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала. Так же полезно проверить, что вы используете [[Wiren Board Firmware Update| свежую версию ПО]].
Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала. Так же полезно проверить, что вы используете [[Wiren Board Firmware Update| свежую версию ПО]].
Строка 8: Строка 8:


Читать журналы можно двумя способами:
Читать журналы можно двумя способами:
* [[#В консоли|из консоли]] с помощью journalctl.
* из консоли с помощью [[journalctl]].
{{SupportedSinceRelease
{{SupportedSinceRelease
| release = wb-2110
| release = wb-2110
|content=
|content=
* [[#В веб-интерфейсе контроллера|из веб-интерфейса]] с помощью инструмента Logs.
* из веб-интерфейса с помощью [[Wiren Board Web Interface#logs | инструмента Logs]].
}}
}}


Если вы не смогли самостоятельно определить причину ошибок в работе контроллера, создайте тему на [https://support.wirenboard.com форуме техподдержки], приложите записи системного журнала или [[#Выгрузка данных для отправки в техподдержку | архив с диагностической информацией]] и мы постараемся помочь.
Если вы не смогли самостоятельно определить причину ошибок в работе контроллера, создайте тему на [https://support.wirenboard.com форуме техподдержки], приложите записи системного журнала или [[Wiren_Board_Web_Interface#Settings -> System (Настройки -> Системные) |архив с диагностической информацией]] и мы постараемся помочь.


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


Сильно поможет понимание [[Wiren_Board_Software|архитектуры ПО контроллера]], где в центре MQTT-брокер, в который пишут информацию различные сервисы wb:
Сильно поможет понимание [[Wiren_Board_Software|архитектуры ПО контроллера]], где в центре MQTT-брокер, в который пишут информацию различные сервисы wb:
Строка 38: Строка 38:
* wb-rules — [[wb-rules | движок правил]]
* wb-rules — [[wb-rules | движок правил]]


Примеры типовых ситуаций:
=== Полезные команды ===
* Контроллер перезагружается без видимых причин — может помочь анализ сообщений от watchdog и ядра ОС Linux (dmesg).
Команды ниже выполняются в консоли контроллера, подключиться к которой можно через [[SSH]] или через [[Debug UART | Debug-порт]].
* Проблемы с serial-устройствами, которые подключены через RS-485 или TCP-порт — смотрите сообщения драйвера wb-mqtt-serial. Ошибки обмена драйвер записывает как предупреждения (warning). Если сообщения об ошибках обмена возникают периодически, повод проверить [[RS-485:Физическое подключение|физику шины RS-485]].
* Странно работают правила — будут интересны сообщения wb-rules.
 
== В консоли ==
[[Image: journalctl — logs.png |400px|thumb|right| Просмотр системного журнала с помощью journalctl]]
'''journalctl''' — это консольный инструмент, поэтому перед вводом команд подключитесь к [[SSH]]. Смотрите больше примеров в статье [[journalctl]].
 
Посмотреть сообщения ядра (dmesg):
<syntaxhighlight lang="console" >
# journalctl -k
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:37:49 +04. --
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: Booting Linux on physical CPU 0x0
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
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: div instructions available: patching division code
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Nov 04 13:43:31 wirenboard-AYXIHFQ6 kernel: OF: fdt: Machine model: Wiren Board rev. 6.7.0 (i.MX6UL/ULL)
</syntaxhighlight>
Здесь видно, что ОС контроллера начала загрузку 4 ноября в 13:43:31, используется ядро 5.10.35-wb6 и ниже идёт лог загрузки.
 
Вывести на экран журнал драйвера wb-mqtt-serial:
<syntaxhighlight lang="console" >
# journalctl -u wb-mqtt-serial
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:38:20 +04. --
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
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
Nov 01 15:51:07 wirenboard-AYXIHFQ6 wb-mqtt-serial[25318]: INFO: [signal handling] Received signal 15
Nov 01 15:51:07 wirenboard-AYXIHFQ6 systemd[1]: Stopping MQTT Driver for serial devices...
Nov 01 15:51:15 wirenboard-AYXIHFQ6 systemd[1]: Stopped MQTT Driver for serial devices.
Nov 01 15:56:42 wirenboard-AYXIHFQ6 systemd[1]: Started MQTT Driver for serial devices.
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"
</syntaxhighlight>
В журнале есть ошибки чтения регистров из Modbus-устройств с адресами 58 и 87, потом драйвер был перезапущен и сразу после перезапуска началась отправка параметров датчику WB-MSW v.3 с адресом 22.
 
Показать предупреждения (<code>-p 4</code>), записанные драйвером wb-mqtt-serial с момента последней загрузки (<code>-b 0</code>):
<syntaxhighlight lang="console" >
# journalctl -b 0 -p 4 -u wb-mqtt-serial
-- Logs begin at Sat 2021-10-30 10:25:03 +04, end at Thu 2021-11-04 18:39:29 +04. --
Nov 04 13:44:48 wirenboard-AYXIHFQ6 systemd[1]: wb-mqtt-serial.service: Main process exited, code=killed, status=4/ILL
Nov 04 13:44:48 wirenboard-AYXIHFQ6 systemd[1]: wb-mqtt-serial.service: Failed with result 'signal'.
Nov 04 13:45:23 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] Register <modbus:87:input: 7> is not supported
Nov 04 13:45:23 wirenboard-AYXIHFQ6 wb-mqtt-serial[3227]: WARNING: [modbus] Register <modbus:87:input: 8> is not supported
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
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
</syntaxhighlight>
В записях дравера видны ошибки чтения регистров из Modbus-устройств с адресами 87 и 111.


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


Можно узнать, когда контроллер перезагружался:
Узнать, когда контроллер перезагружался:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# last -x reboot
# last -x reboot
Строка 130: Строка 74:
</syntaxhighlight>
</syntaxhighlight>


== В веб-интерфейсе контроллера ==
Посмотреть, какое ядро загружено:
{{SupportedSinceRelease
<syntaxhighlight lang="console">
| release = wb-2110
# uname -a
|content=
Linux wirenboard-AYXIHFQ6 5.10.35-wb6 #1 Thu Sep 30 00:33:57 UTC 2021 armv7l GNU/Linux
[[Image: WebUI 2.0 logs.png |400px|thumb|right| Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board]]
</syntaxhighlight>
Для просмотра системного журнала из веб-интерфейса контроллера, используйте [[Wiren Board Web Interface#logs | инструмент Logs]].
 
== Примеры типовых неисправностей ==
=== Контроллер перезагружается ===
Контроллер может перезагружаться по ряду причин:
* Нестабильное питание — просадки напряжения питания ниже допустимого значения могут вызвать перезагрузку.
* Нехватка места на eMMC.
* Зависание программ и сервисов — сработает watchdog, которые перезагрузит контроллер.
* Перезагрузка вызвана пользователем, например, командой <code>shutdown -r now</code>.
 
Сперва стоит проверить качество питания: уровень напряжения, отсутствие «просадок». Попробуйте подключить контроллер к другому блоку питания.
 
Если питание стабильно, то причину перезагрузки ищите в сообщениях watchdog и ядра ОС Linux (dmesg). Если контроллер перезагружается в цикле и вы не можете попасть в консоль, попробуйте [[watchdog | отключить watchdog]].
 
=== Проблемы с serial-устройствами ===
Если устройства, подключённые к портам RS-485 работают нестабильно — проверьте физическое подключение. Несоблюдение рекомендаций по организации шины RS-485 и плохой контакт в клеммах частые причины проблем.
 
Узнать, с каким именно устройством проблемы, можно:
* в веб-интерфейсе контроллера, на вкладке Devices — каналы такого устройства будут окрашены красным;
* в сообщениях драйвера wb-mqtt-serial — ищите ошибки обмена error и warning. Если сообщения об ошибках обмена возникают периодически — повод проверить физическое подключение устройств.


Узнать, сколько времени работает контроллер и текущую версию ПО можно на вкладке ''Devices'', в устройстве ''System''.
Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера [[wb-mqtt-serial]].


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


== Выгрузка данных для отправки в техподдержку ==
=== Не открывается страница конфигурации устройств ===
{{SupportedSinceRelease
Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> или <kbd>Ctrl</kbd>+<kbd>F5</kbd> комбинация зависит от вашего браузера.
| release = wb-2110
|content=
[[Image: Web-Settings_System-2.0.png |400px|thumb|right| Страница сбора данных для диагностики]]
Если вы не смогли самостоятельно найти причину неисправности и хотите обратиться в техническую поддержку будет полезно приложить к сообщению архив с диагностической информацией.


Файл с данными представляет собой zip-архив, который содержит текстовые файлы с записями из системного журнала и служебной информацией о контроллере. Архив можно подготовить и загрузить с помощью инструмента [[Wiren_Board_Web_Interface#Settings -> System (Настройки -> Системные) |Diagnostic collector]].  
Если это не помогло — ищите в логах сообщения от wb-mqtt-serial и wb-mqtt-confed. Особенно интересны сообщения типов ''error'' и ''warning''.
}}

Версия 21:42, 8 ноября 2021

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

Введение

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

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

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


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

Основы

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

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

Сильно поможет понимание архитектуры ПО контроллера, где в центре 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

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

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

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

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

# 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

Узнать, сколько свободного места на 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

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

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

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

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

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

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

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

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

Проблемы с serial-устройствами

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

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

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

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

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

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

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

Если это не помогло — ищите в логах сообщения от wb-mqtt-serial и wb-mqtt-confed. Особенно интересны сообщения типов error и warning.