Вопрос или проблема
Я пытаюсь заставить 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, то вот несколько шагов, которые могут помочь вам решить эту проблему.
-
Проверка подключения ИБП:
Убедитесь, что ИБП действительно правильно подключен к USB-порту вашего сервера. Чтобы проверить это, используйте командуlsusb
, которая покажет, распознается ли устройство:lsusb
Ищите строку с вашим ИБП, например:
Bus 002 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Если ваш ИБП отображается в выводе, это значит, что система его видит.
-
Редактирование конфигурационного файла:
Откройте конфигурационный файл apcupsd, используя текстовый редактор, напримерnano
:sudo nano /etc/apcupsd/apcupsd.conf
Найдите раздел с настройками
UPSTYPE
иDEVICE
. Убедитесь, что он выглядит следующим образом:UPSTYPE usb DEVICE
Важно, чтобы строка
DEVICE
была пустой, что позволит apcupsd автоматически обнаружить ИБП. Если у вас было указано/dev/ttyS0
или другой порт, удалите это. -
Перезапуск службы:
После внесения изменений в конфигурационный файл вам необходимо перезапустить службу apcupsd, чтобы изменения вступили в силу. Используйте следующую команду:sudo systemctl restart apcupsd
Чтобы убедиться, что служба будет автоматически запускаться при загрузке системы, выполните:
sudo systemctl enable apcupsd
-
Проверка статуса:
После перезапуска службы проверьте статус подключения к ИБП с помощью команды:sudo apcaccess status
Теперь статус должен измениться с
COMMLOST
на корректные индикаторы работы ИБП, что укажет на успешное соединение. -
Дополнительные проверки:
- Убедитесь, что у вас установлена последняя версия apcupsd. Иногда ошибка может быть связана с устаревшей версией.
-
Проверьте, не заблокирован ли доступ к USB-порту. В этом случае может помочь добавление пользователя в группу
dialout
:sudo usermod -aG dialout $USER
После этого выполните выход и вход в систему.
-
Логи и диагностика:
Если проблема все еще не устранена, вам следует проверить журналы системы и логи apcupsd для выявления дополнительных ошибок:sudo cat /var/log/apcupsd.events
Следуя этим шагам, вы должны быть в состоянии устранить проблему с подключением apcupsd к вашему ИБП. Если проблема сохранится, возможно, имеет смысл рассмотреть возможность замены кабеля или обновления прошивки ИБП.