Продукты
АКС Комплекс PTL RID Световые маяки
Проекты Документация Сопровождение Связаться
Документация

Диагностика и устранение неисправностей

Типичные проблемы и способы их решения для всех продуктов СПР.

Общая диагностика

Три универсальных шага при любой проблеме:

  1. Проверить Redis: redis-cli ping — должен ответить PONG. Если нет — все сервисы неработоспособны.
  2. Проверить health-эндпоинт: curl http://localhost:{port}/health — покажет статус Redis и подключённых устройств.
  3. Проверить сетевой доступ к устройству: nc -zv {ip} {port} (502 для Modbus, 80 для HTTP-реле).

Логирование. Все сервисы логируют ошибки в Redis Streams. Для просмотра последних событий: redis-cli XRANGE {stream} - + COUNT 20

RID: дисплеи

Дисплей показывает «offline»

Симптом: В интерфейсе или /health дисплей отображается как offline.

Причины: неисправный кабель, дисплей выключен, порт 502 заблокирован, IP-адрес сменился.

Решение:

Диагностика
# Проверить доступность
ping {ip}

# Проверить порт Modbus
nc -zv {ip} 502

Проверить физическое подключение кабеля. Монитор пингует дисплей каждые 2 секунды — при восстановлении связи дисплей вернётся в online автоматически.

Дисплей отвечает медленно

Симптом: Обновления задерживаются, в логах появляется «display slow response».

Причина: Ответ дисплея дольше 300 мс (порог displays_ping_threshold).

Решение: Проверить состояние сети, переподключить кабель, уменьшить нагрузку на сетевой сегмент.

Текст отображается некорректно

Симптом: Кракозябры вместо текста на дисплее.

Причина: Символы вне кодировки CP866 или текст длиннее лимита строки (8/13/13 символов).

Решение: Использовать только кириллицу и латиницу в кодировке CP866, укоротить текст до допустимой длины.

PTL: световые модули

Контроллер offline

Симптом: Все модули на контроллере недоступны.

Причины: неисправный кабель, отсутствует питание, порт 502 заблокирован.

Решение:

Диагностика
# Проверить доступность
ping {ip}

# Проверить порт Modbus
nc -zv {ip} 502

Проверить питание контроллера. Монитор пингует каждые 5 секунд. Вебхук controller_online придёт при восстановлении связи.

Модуль в статусе «degraded»

Симптом: Модуль отвечает через раз, кнопки иногда не срабатывают.

Причина: 5+ последовательных ошибок чтения Modbus.

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

Модуль «unreachable»

Симптом: Модуль полностью не отвечает.

Причина: 30+ последовательных ошибок чтения Modbus.

Решение: Проверить физическое подключение, убедиться что Slave ID уникален, проверить питание модуля. Требуется ручное вмешательство.

Модуль unreachable не восстановится автоматически. После устранения физической проблемы необходимо убедиться, что модуль отвечает на запросы Modbus. Статус обновится при следующем успешном опросе.

Нажатие кнопки не обнаруживается

Симптом: Оператор нажал кнопку, событие не пришло.

Причина: Опрос происходит каждые 250 мс — кнопка должна удерживаться хотя бы одну итерацию опроса.

Решение: Убедиться что модуль в статусе online, нажимать кнопку чётко (не мгновенное касание). Проверить параметр poll_interval_ms.

Маяки: реле

Реле offline

Симптом: Цвета не переключаются, /health показывает offline.

Причины: отсутствует питание, сеть недоступна, порт 80 закрыт.

Решение:

Диагностика
# Проверить доступность
ping {ip}

# Проверить HTTP-ответ реле
curl http://{ip}/

Реле должно ответить на HTTP-запрос. Монитор проверяет доступность каждые 5 секунд.

Цвет не переключается, реле online

Симптом: Реле отвечает, но маяк не меняет цвет.

Причины: неверные учётные данные Basic Auth, неверный номер выхода в конфигурации, CGI-путь не совпадает.

Решение: Проверить параметры relay_auth_user и relay_auth_pass. Выполнить ручную проверку:

Ручная проверка реле
# Включить выход (должен вернуть 200)
curl -u admin:admin "http://{ip}/protect/rb0n.cgi"

# Если ответ 401 — неверные учётные данные

Маяк не гаснет при выключении

Симптом: Отправлена команда DELETE /lighthouses/{id}/state, но маяк продолжает гореть.

Причина: Реле не отработало off-команду, или reconciler не успел выполнить синхронизацию.

Решение: Проверить логи reconciler. Убедиться что маяк физически подключён к правильному выходу реле. Ручная проверка:

Ручное выключение
# Выключить выход реле вручную
curl -u admin:admin "http://{ip}/protect/rb0f.cgi"