Apcupsd на Debian Stretch 9 нет соединения с ИБП?

Вопрос или проблема

Я пытаюсь заставить apcupsd работать с моим ИБП (APC Back-UPS 700VA) на моем сервере с установленным Debian 9 stretch, но не могу подключиться к ИБП и получаю это, когда запускаю:

rene@odroidxu4-share:~$ sudo apcaccess status
[sudo] пароль для rene:
APC      : 001,018,0453
ДАТА    : 2019-01-13 18:44:10 +0000
ИМЯ ХОСТА : odroidxu4-share
ВЕРСИЯ  : 3.14.14 (31 мая 2016) debian
ИМЯ ИБП  : smartups750
КАБЕЛЬ   : USB-кабель
ДРАЙВЕР  : USB UPS Драйвер
РЕЖИМ ИБП : Автономный
ВРЕМЯ НАЧАЛА: 2019-01-13 18:44:00 +0000
СТАТУС   : COMMLOST
MBATTCHG : 5 процентов
MINTIMEL : 3 минуты
MAXTIME  : 0 секунд
NUMXFERS : 0
TONBATT  : 0 секунд
CUMONBATT: 0 секунд
XOFFBATT : Н/Д
STATFLAG : 0x05000100
КОНЕЦ APC  : 2019-01-13 19:53:54 +0000

Проблема заключается в следующем:

СТАТУС: COMMLOST – (Нет соединения с ИБП)

Несмотря на это, я вижу, что он подключен:

rene@odroidxu4-share:~$ lsusb
Шина 006 Устройство 002: ID 0bda:8153 Realtek Semiconductor Corp.
Шина 006 Устройство 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Шина 005 Устройство 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Шина 004 Устройство 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp.
Шина 004 Устройство 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Шина 003 Устройство 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Шина 002 Устройство 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Шина 002 Устройство 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Шина 001 Устройство 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

(Шина 002 Устройство 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply)

Вывод конфигурационного файла:

sudo nano /etc/apcupsd/apcupsd.conf
## apcupsd.conf v1.1 ##
# 
# "apcupsd" POSIX конфигурационный файл

#
# Обратите внимание, что демон apcupsd должен быть перезапущен, чтобы изменения в этом конфигурационном файле вступили в силу.
#

#
# ========= Общие параметры настройки ============
#

# ИМЯ ИБП xxx
#   Используйте это, чтобы дать вашему ИБП имя в журналах и подобных местах. Это
#   особенно полезно, если у вас несколько ИБП. Это не
#   сохраняется в EEPROM. Оно должно быть длиной 8 и менее символов.
UPSNAME smartups750

# UPSCABLE 
#   Определяет тип кабеля, соединяющего ИБП с вашим компьютером.
#
#   Возможные общие варианты для :
#     simple, smart, ether, usb
#
#   Также может использоваться конкретный номер модели кабеля:
#     940-0119A, 940-0127A, 940-0128A, 940-0020B,
#     940-0020C, 940-0023A, 940-0024B, 940-0024C,
#     940-1524C, 940-0024G, 940-0095A, 940-0095B,
#     940-0095C, 940-0625A, M-04-02-2000
#
UPSCABLE usb

# Чтобы apcupsd заработал, помимо определения вышеуказанного кабеля
# вы также должны определить UPSTYPE, который соответствует
# типу вашего ИБП (см. Описание для получения дополнительных сведений).
# Вы также должны указать УСТРОЙСТВО, иногда называемое портом.
# Для USB ИБП оставьте директиву УСТРОЙСТВО пустой. Для
# других типов ИБП вы должны указать соответствующий порт или адрес.
#
# UPSTYPE   DEVICE           Описание
# apcsmart  /dev/tty**       Новое серийное устройство, подходящее для
#                            моделей SmartUPS, использующих серийный кабель (не USB).
#
# usb                 Большинство новых ИБП являются USB. Пустое значение
#                            для УСТРОЙСТВА включает автоматическое определение,
#                            что является лучшим выбором для большинства установок.
#
# net       hostname:port    Сетевое соединение с главным apcupsd через
#                            Сетевой информационный сервер apcupsd. Это используется, если
#                            ИБП, питающий ваш компьютер, подключен к другому
#                            компьютеру для мониторинга.
#
# snmp      hostname:port:vendor:community
#                            Сетевое соединение SNMP с устройством ИБП, поддерживающим SNMP.
#                            Имя хоста - это IP-адрес или имя хоста ИБП
#                            в сети. Поставщик может быть "APC" или
#                            "APC_NOTRAP". "APC_NOTRAP" отключит прием SNMP
#                            ловушек; обычно вы хотите использовать "APC". Порт обычно 
#                            161. Сообщество обычно "private".
#
# netsnmp   hostname:port:vendor:community
#                            УСТАРЕЛО
#                            То же, что и SNMP выше, но требует использования 
#                            библиотеки net-snmp. Если у вас нет конкретной необходимости
#                            в этом старом драйвере, вам следует использовать 'snmp' вместо него.
#
# dumb      /dev/tty**       Старое серийное устройство, используемое с 
#                            простыми ИБП.
#
# pcnet     ipaddr:username:passphrase:port
#                            Протокол PowerChute Network Shutdown, который может быть
#                            использован как альтернатива SNMP с AP9617
#                            семейством смарт-карт. ipaddr - это IP 
#                            адрес карты управления ИБП. Имя пользователя и 
#                            пароль - это учетные данные, с которыми настроена карта.
#                            Порт - это номер порта, на котором нужно прослушивать
#                            сообщения от ИБП, обычно 3052. Если этот параметр пустой или отсутствует,
#                            используется значение по умолчанию 3052.
#
# modbus    /dev/tty**       Серийное устройство для использования с новейшими моделями SmartUPS
#                            поддерживающими протокол MODBUS.
# modbus              Оставьте значение DEVICE пустым для MODBUS через USB
#                            или установите на серийный номер ИБП, чтобы убедиться,
#                            что apcupsd подключается к именно этому устройству
#                            (полезно, если у вас более одного USB ИБП).
#
UPSTYPE usb
DEVICE

# POLLTIME 
#   Интервал (в секундах), в течение которого apcupsd опрашивает ИБП для получения статуса. Этот
#   параметр применяется как к непосредственно подключенным ИБП (UPSTYPE apcsmart, usb,
#   dumb), так и к сетевым ИБП (UPSTYPE net, snmp). Снижение этого параметра
#   улучшит реакцию apcupsd на определенные события за счет
#   увеличенного использования ЦП. Значение по умолчанию 60 подходит для большинства
#   случаев.
POLLTIME 60

# LOCKFILE 
#   Путь к файлу блокировки устройства. Это директория, в которую будет записан файл блокировки.
#   Директория должна уже существовать; apcupsd не создаст ее. Фактическое имя файла блокировки
#   вычисляется из DEVICE.
#   Не используется на Win32.
LOCKFILE /var/lock

# SCRIPTDIR 
#   Директория, в которой находятся скрипты apccontrol и событийные скрипты.
SCRIPTDIR /etc/apcupsd

# PWRFAILDIR 
#   Директория, в которой будет записан файл флага о сбое питания. Этот файл
#   создается, когда apcupsd инициирует отключение системы, и проверяется в скриптах остановки ОС,
#   чтобы определить, требуется ли отключение питания
#   (выключение выходного питания ИБП).
PWRFAILDIR /etc/apcupsd

# NOLOGINDIR 
#   Директория, в которой будет записан файл nologin. Наличие
#   этого файла-флага говорит ОС запретить новые входы.
NOLOGINDIR /etc

#
# ======== Параметры конфигурации, используемые во время отключения питания ==========
#

# ONBATTERYDELAY - это время в секундах с момента обнаружения отключения питания
#   до момента, когда мы реагируем на него событием onbattery.
#
#   Это значит, что apccontrol будет вызван с аргументом powerout
#   немедленно, когда обнаруживается отключение питания. Однако,
#   аргумент onbattery передается apccontrol только после времени
#   ONBATTERYDELAY. Если вы не хотите беспокоить себя короткими
#   отключениями питания, убедитесь, что apccontrol powerout ничего не делает
#   т.е. закомментируйте стену.
ONBATTERYDELAY 6

# 
# Примечание: BATTERYLEVEL, MINUTES и TIMEOUT работают совместно, так что
# первое из них, которое произойдет, вызовет начало выключения системы.
#

# Если во время отключения питания оставшийся процент заряда батареи
# (как сообщает ИБП) составляет меньше или равен BATTERYLEVEL,
# apcupsd инициирует отключение системы.
BATTERYLEVEL 5

# Если во время отключения питания оставшееся время работы в минутах
# (как рассчитывается внутренне ИБП) составляет меньше или равно MINUTES,
# apcupsd инициирует отключение системы.
MINUTES 3

# Если во время отключения питания ИБП работал на батареях в течение TIMEOUT
# многих секунд или дольше, apcupsd инициирует отключение системы.
# Значение 0 отключает этот таймер.
#
# Примечание: если у вас есть Smart UPS, вы, скорее всего, захотите отключить
# этот таймер, установив его в ноль. Таким образом, ваш ИБП будет продолжать
# работать на батареях, пока либо оставшийся процент заряда не упадет до или ниже BATTERYLEVEL,
# либо оставшееся время работы на батареях не упадет до или ниже MINUTES. Конечно,
# если вы тестируете, установка этого значения на 60 приведет к быстрому отключению системы,
# если вы выдернете шнур питания.   
# Если у вас старый простой ИБП, вы захотите установить это значение на меньшее, чем
# время, в течение которого вы знаете, что можете работать на батареях.
TIMEOUT 0

# Время в секундах между беспокойствами пользователей о выходе до
# отключения системы. 0 отключает.
ANNOY 300

# Начальная задержка после отключения питания перед предупреждением пользователей о выходе
# из системы.
ANNOYDELAY 60

# Условие, определяющее, когда пользователям запрещен вход
# во время отключения питания.
# NOLOGON  [ disable | timeout | percent | minutes | always ]
NOLOGON disable

# Если KILLDELAY не равен нулю, apcupsd продолжит работать после
# запроса на отключение и через указанное время в
# секундах попытается отключить питание. Это необходимо на системах,
# где apcupsd не может вернуть контроль после отключения.
# KILLDELAY   0 отключает
KILLDELAY 0

#
# ==== Конфигурационные параметры для Сетевого информационного сервера ====
#

# NETSERVER [ on | off ] включение включает, отключение отключает сетевой
#  информационный сервер. Если netstatus включен, будет запущен процесс сетевого информационного
#  сервера для обслуживания данных STATUS и EVENT по сети (используется CGI-программами).
NETSERVER on

# NISIP 
#  IP-адрес, на котором сервер NIS будет слушать входящие соединения.
#  Это полезно, если ваш сервер имеет несколько интерфейсов (имя хоста),
#  и IP-адресов. Значение по умолчанию - 0.0.0.0, что означает, что любой входящий запрос
#  будет обслуживаться. В качестве альтернативы вы можете настроить
#  эту настройку на любой конкретный IP-адрес вашего сервера, и 
#  NIS будет слушать соединения только на этом интерфейсе. Используйте
#  адрес обратной связи (127.0.0.1), чтобы принимать соединения только от
#  локальной машины.
NISIP 127.0.0.1

# NISPORT  значение по умолчанию 3551 зарегистрировано у IANA
#  порт для отправки данных STATUS и EVENTS по сети.
#  Это не используется, если NETSERVER выключен. Если вы измените этот порт,
#  вам нужно будет изменить соответствующее значение в каталоге cgi
#  и перестроить cgi-программы.
NISPORT 3551

# Если вы хотите, чтобы последние несколько EVENTS были доступны по сети
# через сетевой информационный сервер, вы должны определить EVENTSFILE.
EVENTSFILE /var/log/apcupsd.events

# EVENTSFILEMAX 
#  По умолчанию размер EVENTSFILE не должен превышать
#  10 килобайт. Когда файл превышает этот предел, более старые EVENTS
#  будут удалены из начала файла (first in first out). 
#  Параметр EVENTSFILEMAX может быть установлен на другое значение в килобайтах или установлен
#  на ноль, чтобы позволить EVENTSFILE расти без ограничений.
EVENTSFILEMAX 10

#
# ========== Конфигурационные параметры, используемые при совместном использовании =============
#            одного ИБП с более чем одной машиной

#
# Оставшиеся элементы предназначены только для ShareUPS (карта расширения APC) 
#

# UPSCLASS [ standalone | shareslave | sharemaster ]
#   Обычно автономный, если вы не используете общий ИБП с картой APC ShareUPS.
UPSCLASS standalone

# UPSMODE [ disable | share ]
#   Обычно отключен, если вы не используете общий ИБП с картой APC ShareUPS.
UPSMODE disable

#
# ===== Конфигурационные параметры для управления системным журналом apcupsd ========
#

# Интервал времени в секундах между записью файла STATUS; 0 отключает
STATTIME 0

# Местоположение файла STATUS (записывается только если STATTIME не равно нулю)
STATFILE /var/log/apcupsd.status

# LOGSTATS [ on | off ] включение включает, отключение отключает
# Примечание! Это генерирует много вывода, поэтому если          
#       вы включите это, убедитесь, что файл, определенный в syslog.conf 
#       для LOG_NOTICE, является именованным каналом.
#  Вероятно, вам не захочется это включать.
LOGSTATS off

# Интервал времени в секундах между записью записей DATA в 
#   журнал. 0 отключает.
DATATIME 0

# FACILITY определяет устройство логирования (класс) для записи в syslog. 
#          Если не указано, по умолчанию устанавливается "daemon". Это полезно 
#          если вы хотите отделить данные, записанные apcupsd, от других
#          программ.
#FACILITY DAEMON

#
# ========== Конфигурационные параметры, используемые для обновления EPROM ИБП =========
#

#
# Эти инструкции используются только apctest при выборе "Установить EEPROM с конф
# значениями файла" из меню EEPROM. ЭТИ ЗАЯВЛЕНИЯ НЕ ВЛИЯЮТ НА APCUPSD.
#

# Имя ИБП, максимум 8 символов 
#UPSNAME UPS_IDEN

# Дата батареи - 8 символов
#BATTDATE mm/dd/yy

# Чувствительность к качеству линейного напряжения (H вызывает более быструю передачу на батареи)  
# ЧУВСТВИТЕЛЬНОСТЬ H M L        (по умолчанию = H)
#SENSITIVITY H

# Задержка ИБП после возврата питания (секунды)
# WAKEUP 000 060 180 300   (по умолчанию = 0)
#WAKEUP 60

# Период граace для ИБП после запроса отключения питания (секунды)
# SLEEP 020 180 300 600    (по умолчанию = 20)
#SLEEP 180

# Низкое линейное напряжение, вызывающее переход на батареи
# Разрешенные значения зависят от вашей модели, как определено последней буквой
#  ПО или APCMODEL. Некоторые представительные значения:
#    D 106 103 100 097
#    M 177 172 168 182
#    A 092 090 088 086
#    I 208 204 200 196     (по умолчанию = 0 => не действительное)
#LOTRANSFER  208

# Высокое линейное напряжение, вызывающее переход на батареи
# Разрешенные значения зависят от вашей модели, как определено последней буквой
#  ПО или APCMODEL. Некоторые представительные значения:
#    D 127 130 133 136
#    M 229 234 239 224
#    A 108 110 112 114
#    I 253 257 261 265     (по умолчанию = 0 => не действительное)
#HITRANSFER 253

# Заряд батареи, необходимый для восстановления питания
# RETURNCHARGE 00 15 50 90 (по умолчанию = 15)
#RETURNCHARGE 15

# Задержка сигнала тревоги 
# 0 = нулевая задержка после отключения питания, T = отключение питания + 30 сек, L = низкий заряд батареи, N = никогда
# BEEPSTATE 0 T L N        (по умолчанию = 0)
#BEEPSTATE T

# Задержка предупреждения о низком уровне заряда батареи в минутах
# LOWBATT 02 05 07 10      (по умолчанию = 02)
#LOWBATT 2

# Выходное напряжение ИБП при работе от батареи
# Разрешенные значения зависят от вашей модели, как определено последней буквой
#  ПО или APCMODEL. Некоторые представительные значения:
#    D 115
#    M 208
#    A 100
#    I 230 240 220 225     (по умолчанию = 0 => не действительное)
#OUTPUTVOLTS 230

# Интервал самопроверки в часах 336=2 недели, 168=1 неделя, ВКЛ=при включении питания
# SELFTEST 336 168 ВКЛ ВЫКЛ  (по умолчанию = 336)
# SELFTEST 336

Кто-нибудь может подсказать, почему я не могу подключиться к моему ИБП APC?

У меня была такая же проблема с COMMLOST при USB-соединении, после долгих исследований я случайно выяснил, что с USB-соединением вам нужно изменить DEVICE /dev/ttys0 на DEVICE в /etc/apcupsd/apcupsd.conf с пустым значением после него, таким образом apcupsd ищет повсюду в системе, чтобы найти ИБП и правильно подключиться, больше никаких COMMLOST.

После этого перезапустите apcupsd с помощью:

$ sudo /etc/init.d/apcupsd restart

Гилберт

Вы можете отредактировать /etc/apcupsd/apcupsd.conf:

UPSTYPE usb
DEVICE /dev/ttyS0

на:

UPSTYPE usb
DEVICE

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

systemctl restart apcupsd
systemctl enable apcupsd

Это сработало для моего Smart-UPS_1500.

Ответ или решение

Если вы столкнулись с проблемой подключения к ИБП (APC Back-UPS 700VA) с использованием apcupsd на Debian 9 Stretch и получили сообщение об ошибке STATUS: COMMLOST, то вот несколько шагов, которые могут помочь вам решить эту проблему.

  1. Проверка подключения ИБП:
    Убедитесь, что ИБП действительно правильно подключен к USB-порту вашего сервера. Чтобы проверить это, используйте команду lsusb, которая покажет, распознается ли устройство:

    lsusb

    Ищите строку с вашим ИБП, например:

    Bus 002 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

    Если ваш ИБП отображается в выводе, это значит, что система его видит.

  2. Редактирование конфигурационного файла:
    Откройте конфигурационный файл apcupsd, используя текстовый редактор, например nano:

    sudo nano /etc/apcupsd/apcupsd.conf

    Найдите раздел с настройками UPSTYPE и DEVICE. Убедитесь, что он выглядит следующим образом:

    UPSTYPE usb
    DEVICE

    Важно, чтобы строка DEVICE была пустой, что позволит apcupsd автоматически обнаружить ИБП. Если у вас было указано /dev/ttyS0 или другой порт, удалите это.

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

    sudo systemctl restart apcupsd

    Чтобы убедиться, что служба будет автоматически запускаться при загрузке системы, выполните:

    sudo systemctl enable apcupsd
  4. Проверка статуса:
    После перезапуска службы проверьте статус подключения к ИБП с помощью команды:

    sudo apcaccess status

    Теперь статус должен измениться с COMMLOST на корректные индикаторы работы ИБП, что укажет на успешное соединение.

  5. Дополнительные проверки:

    • Убедитесь, что у вас установлена последняя версия apcupsd. Иногда ошибка может быть связана с устаревшей версией.
    • Проверьте, не заблокирован ли доступ к USB-порту. В этом случае может помочь добавление пользователя в группу dialout:

      sudo usermod -aG dialout $USER

      После этого выполните выход и вход в систему.

  6. Логи и диагностика:
    Если проблема все еще не устранена, вам следует проверить журналы системы и логи apcupsd для выявления дополнительных ошибок:

    sudo cat /var/log/apcupsd.events

Следуя этим шагам, вы должны быть в состоянии устранить проблему с подключением apcupsd к вашему ИБП. Если проблема сохранится, возможно, имеет смысл рассмотреть возможность замены кабеля или обновления прошивки ИБП.

Оцените материал
Добавить комментарий

Капча загружается...