Диагностика и устранение неисправностей
Типичные проблемы и способы их решения для всех продуктов СПР.
Общая диагностика
Три универсальных шага при любой проблеме:
- Проверить Redis:
redis-cli ping— должен ответитьPONG. Если нет — все сервисы неработоспособны. - Проверить health-эндпоинт:
curl http://localhost:{port}/health— покажет статус Redis и подключённых устройств. - Проверить сетевой доступ к устройству:
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"