APCUPSd: Поля о состоянии устройства
На некотрых моделях (наличие зависит от версии прошивки):
Web/SNMP (AP9716) или PowerNet SNMP (AP9605) SmartSlot Card
Share-UPS (AP9270)
UPS Environmental Monitoring SmartSlot Card (AP9612TH)
Back-UPS Pro и Smart-UPS v/s
Back-UPS и Net-UPS
Заголовок: версия формата данных, число записей, длина данных в байтах.
Дата, время получения данных с ИБП .
HOSTNAME
Имя хоста к которому подключён ИБП .
UPSNAME
VERSION
Версия, дата сборки apcupsd , платформа (ОС).
DRIVER
Название драйвера apcupsd
CABLE
Тип кабеля, заданный в поле UPSCABLE файла настройки.
MODEL
UPSMODE
Режим работы apcupsd заданный в поле UPSMODE файла настройки.
STARTTIME
Дата, время запуска apcupsd .
STATUS
Текущее состояние (статус) ИБП .
MASTERUPD
Last time the master sent an update to the slave
END APC
Дата, время когда данные полученные с ИБП были записаны в файл.
LINEV
Напряжение на входе ИБП
LOADPCT
BCHARGE
Уровень заряда батареи (%).
TIMELEFT
Оставшееся время работы от батареи по оценке ИБП .
MBATTCHG
Уровень заряда батареи (BCHARGE) опустится ниже уровня который задан в файле настройки переменной BATTERYLEVEL то тогда будет начато выключение системы.
MINTIMEL
Время работы от батарей (в минутах) перед началом отключения системы. Задаётся в файле настроек, в переменной MINUTES.
MAXTIME
Время работы от батарей (в минутах) перед началом отключения системы. Задаётся в файле настроек, в переменной TIMEOUT.
MAXLINEV
The maximum line voltage since the UPS was started, as reported by the UPS
MINLINEV
The minimum line voltage since the UPS was started, as returned by the UPS
APC PowerChute — UPS runtime calibration
Наверное, многие используют APC PowerChute для своих серверов. В частности, мой вопрос касается Business Edition, ОС Windows 2000 Server и UPS’а APC Smart-UPS 1000.
Раньше проверка (время от времени) времени работы от батарей (runtime calibration) проходила нормально, от начала до конца можно было видеть статус.
Недавно обновил версию до 7.02 и решил сделать в очередной раз «UPS runtime calibration». Но после разрядки батарей до определённого уровня, даже меньше необходимого для корректного завершения работы, APC PowerChute завершает работу системы — не дожидаясь окончания теста!
Пробовал несколько раз, менял настройки, касаюшиеся завершения работы, но тщетно, система вырубается, не дожидаясь окончания теста. Батареи, блин, уже жалко, да и результата теста не имею, а результат важен — знать, на сколько ещё батарей будет хватать.
У меня подозрение, что где-то стоит неправильная настройка, но вот где, не знаю. Старую версию обратно ставить не пробовал, пока думаю, что дело не в ней. С таким тестом много нельзя экспериментировать
- Информация
- Цитата
Сообщение ssony » 23 май 2005, 17:20
APC PowerChute. Windows 2000 Server. В PowerChute’е Device Properties — Diagnostics — UPS Calibration.
Под калибровкой UPS понимается контролируемая разрядка батарей с текущей нагрузкой, чтобы определить время, в течение которого устройства будут работать от батарей. Калибровка контролируется программно. Во времия калибровки, по-нормальному если, PowerChute не должен выключать систему.
Раньше калибровка проходила нормально, т.е. доходила до конца, до полной разрядки батарей и выводился результат, на сколько минут хватит батарей. Система не выключалась ни во время, ни после завершения калибровки.
Теперь же вскоре после начала калибровки посылается несколько сообщений «Insufficient runtime available». Ещё вскоре после этого сообщение «Shutdown procedure started». Так происходит при любом варианте настроек «When power fails, begin a shutdown procedure:» и «When power returns, reboot UPS:» (Device properties — Shutdown — Power failure).
Т.е. посреди калибровки PowerChute начинает процедуру завершения работы, когда батареи разряжены ниже определённого уровня. Он как бы «не замечает», что идёт калибровка и что систему не нужно выключать. При последующем включении системы результат последней калибровки в PowerChite имеет значение «Unknown».
В чём дело, не понимаю.
Программная среда при успешной калибровки и сейчас отличается тем, что система с тех пор переставлялась и что сейчас используется более новая версия APC PowerChute, но хочется надеяться, что дело не в версии программы.
Runtime remaining apc что означает
В общем, настроив и запустив всё это дело я обломался. Ибо apcupsd не мог установить связь через USB. Пришлось разбираться. Установил usbutils:
# yum -y install usbutils
и поглядел на вывод lsusb:
# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Опачки, никаких признаков подключенного по USB бесперебойника. Замена кабеля не дала ничего. Тут я начал подозревать нехорошее.
Пришлось искать альтернативу. К счастью, есть разъем сигнализации, через который бесперебойник можно прицепить к com-порту. И схема элементарная:
Надо только найти доноры разъемов. Когда доноры обнаружились, открылся забавный факт — это и был нужный кабель, изготовленный давным-давно. И рабочий.
Пришлось только прописать, что это кабель этой модели, подключенный к порту COM1 (/dev/ttyS0) в файле /etc/apcupsd/apcupsd.conf:
UPSCABLE 940-0024C
UPSTYPE apcsmart
DEVICE /dev/ttyS0
После перезапуска демона (systemctl restart apcupsd) удалось добраться до бесперебойника. Оказалось, что это какой-то совсем странный, неизвестный науке зверь — Smart-. 2 XL RM.
Пришлось выключить apcupsd и подключаться консолью, для чего понадобится утилита screen (ей проще всего).
# yum -y install screen
# systemctl stop apcupsd
# screen /dev/ttyS0 2400
То есть устанавливаем screen, останавливаем сервис бесперебойника (чтобы не лез в консоль), ну а последняя строка включает виртуальную консоль с подключением к бесперебойнику через порт /dev/ttyS0 (com1) на скорости 2400 бод. Остальные настройки стандартны (один стоп, без четности, 8 бит), поэтому мы их не трогаем.
Общение через консоль возможно текстовыми командами и может осуществляться в двух режимах — просто SMART (включается по послыке Y, ответ бесперебойника SM), либо в режиме PROG, позволяющем менять настройки (включение — посылка двух 1 с интервалом в 3-4 секунды).
Если кратко, то когда я начал глядеть регистры — ужаснулся: бесперебойник не знал кто он, почти все регистры содержали FF (все единицы), то есть на лицо была полная амнезия.
Самый примечательный момент, что бесперебойник думал, что он выпущен для канады (M в конце модели), причем вопреки всем описаниям в нете поменять этот параметр у меня почти не получилось. Но по-порядку.
Идея лечения
Итак, больному был поставлен диагноз «амнезия с последующим навязчивым состоянием», поэтому для лечения были испробованы много методов. Подошли два (ну, или полтора).
Основополагающим документом для лечения было вот это описание команд:
apc -fix.com/?r=attach2&a=dl&id=198
Также полезным оказалось руководство от apcupsd:
http://www.apcupsd.org/manual/manual.pdf,
содержащее на странице 54 информацию о изначальных установках регистров для моей модели бесперебойника (формат изменён, чтобы удобнее было читать):
Модель: SUA1000I
Регистр 4: 07
Регистр 5: B5
Регистр 6: 13
Регистр 0: BC
Firmware: 652.12.I
Регистры 4-6 отвечают за какие-то внутренние процессы, нормального описания что они делают я так и не нашел. Но вот регистр 0 это изначальное состояние «качества» батареи. Если там будет 00, то бесперебойник считает батарею клинически мёртвой. Параметр изменяется в процессе эксплуатации самим бесперебойником (при самотестировании и при калибровке), но при замене батарей надо бы записать его назад, иначе будет не хорошо.
Итак, что прописать я знал, а вот осуществить переписывание.
В общем, при запросе версии прошивки я получал странный ответ «. 3.M«. Эти цифры описывают свойства бесперебойника. Последняя буква — регион. И буква M означает, что этот агрегат выпущен для канады. Вопросики — не отображаемые в данной кодировке консоли символы.
Анализ версии прошивки в старом формате показал, что это вообще стоечный вариант для серверов, а никак не тот «отдельный» бесперебойник, которым он на самом деле является. В общем, навязчивое состояние во всей красе. Судя по региону он считал себя Теренсом и Филлипом в одном флаконе.
- бесперебойник считал, что у него четыре батареи (48в номинального напряжения, вариант же стоечный), а не две. При этом текущий заряд батарей из-за сбросившегося множителя АЦП контроля напряжения был на максимуме, и хотя батареи были при этом разряжены, он показывал их напряжение в 55 с лишним вольт;
- выходное напряжение по мнению бесперебойника было 208в (Канада, серверный вариант);
- входное напряжение также по мнению бесперебойника отличалось от 220в в розетке.
Лечение и его разновидности
Так как пациент считает себя другим человеком, почему бы не создать ему условия для нормальной работы? Считает он себя рыбой? Так убедим в том, что воздух это вода и пусть себе дышит этой «водой».
Напряжение в розетке влияет только на работу стабилизатора и моменты перехода на батарею. Поэтому, его вполне можно поправить как нужно для имеющейся версии с помощью масштабного коэффициента (через настройки).
Напряжение на выходе. Да пусть выдает, сколько ему хочется. Это поправится частично тем же масштабным коэффициентом, а также фактом того, что трансформатор внутри, обеспечивающий выходное напряжение, стоит от правильной модели.
Остаётся проблема с четыремя батареями. Но это не проблема. Берём масштабный коэффициент и меняем его так, чтобы 24в превратились в 48. Подключены 2 свинцово-кислотные батареи, которые в режиме поддержки (используемом в бесперебойнике для постоянного поддержания батарей в заряженном состоянии) требуют напряжение 2.32 В на ячейку, то есть для пары аккумуляторов это 2.32*6*2 = 27,84 В. Это при 20 градусах. А при бОльшей или меньшей температуре напряжение надо уменьшать или увеличивать на 0,025 В на градус. То есть для 27 градусов надо обеспечить примерно 17,6 В. На самом деле можно и чуть больше, лишь бы не превысить 29,5в, так как начнется бурное выделение водорода.
Запускаем консоль и включаем режим программирования, нажав 1, обождав 4 секунды и нажав еще раз 1. Получим ответ PROG.
Для просмотра номера модели надо послать ^A (то есть нажать Ctrl и не отпуская нажать латинскую A). Но в screen эта ^A отвечает за всякие настройки, поэтому там надо жать Ctr+A, отпускать, нажимать просто А, без контрола (маленькую а, без шифта).
У меня это действие вывело невообразимую чушь. Причем, исправить заблуждение через изменение модели бесперебойника (настройка b) мне так и не удалось.
Но оживить удалось, причем в результате двумя способами: убедить как есть и провести сеанс электрошоковой терапии (стереть память) с последующей психотерапией.
Калибруем батарею (точнее, их неправильное количество)
Попытаемся исправить проблему с неправильным количеством батарей путём коррекции измеряемого напряжения. Первым делом надо включить режим PROG. Запускаем консоль, нажимаем 1, ждём чуть больше трех секунд, опять жмём один. Любуемся на ответ PROG.
Жмем shift+b, чтобы послать заглавную B. В ответ я получим цифру вроде 55.74, которую получил я (множитель был задвинут в максимальные FF). Это измеренное сейчас напряжение на батарее с учётом примененного множителя. При таких показаниях мой бесперебойник думал, что батарея заряжена по самое немогу и даже не пытался дозарядить.
А вот вольтметр показывал 26 с копейками, что весьма неприятно. Поэтому первой моей задачей было заставить бесперебойник заряжать батареи. То есть объяснить ему, что сейчас напряжение меньше нужного, а потом обеспечить правильное напряжение заряда.
Кстати, гелевые батареи бесперебойника требуют меньшего напряжения, так что надо обмануть бесперебойник и заставить выдавать столько, сколько надо нам, то есть считать, что он выдаёт МЕНЬШЕ, чем на самом деле.
Так что цепляем параллельно аккумуляторам вольтметр и начинаем крутить множитель следующим образом: после нажатия B беспребойник сообщает текущее измеренное значение, и если следующими посланными символами будут + или -, то он будет корректировать множитель (не так чтобы напрямую на единицу туда или сюда, но все же изменять), увеличивая или уменьшая его значение, что будет отражаться на измеренном напряжении батарей.
После нажатия + , беспербойник ответил 00 (что есть FF + 1, произошел переход через ноль) и я немедленно услышал щелчок реле и гул преобразователя, обеспечивающего заряд батареи. Ну и напряжение на батарее поползло вверх.
Жмём B, смотрим текущее напряжение. У меня было что-то вроде 11 вольт (множитель стал 0), теперь жмём попеременно + (можно несколько раз) и B и подгоняем вывод под нужный нам.
Вольтметр показывал 26,63 В, поэтому я постарался подогнать вывод B поближе к 53.0 (это удвоенные 26.5 В), чтобы бесперебойник не насиловал батарею, и в то же время был ближе к режиму заряда аккумуляторов с классическим электролитом, а не с гелевым (у них напряжение чуть меньше). При перелёте можно послать -, что уменьшит множитель.
После заряда батареи до почти полного состояния этот множитель также должен быть подогнан, чтобы получить 27,6-27,7 в на батареях, но уже не взирая на показания измеренного напряжения бесперебойника. Ну и еще несколько раз потом проконтролировано.
Прописываем начальные настройки.
Прежде всего — надо занести регистры 0 (состояние батареи) и 4, 5, 6. Жмем соответствующую цифру, посылая её бесперебойнику, смотрим на ответ и жмём + или -, чтобы получить нужное значение (см. нужные значения выше).
В таком состоянии уже идёт зарядка батарей, но надо настроить остальные параметры. Ну, удалось занести, настроить напряжения, переходы в тот или иной режим, запустить сервер и, смирившись с некоторыми непонятками в выводе проверить работу.
К сожалению, после приведения бесперебойника в относительно рабочее состояние, оценки связи с apcupsd, мне пришла в голову гениальная идея — вышибить клин клином — провести электрошок, то есть осуществить полный сброс настроек (команда ^Y). Поэтому описание настроек переключения на батареи я опишу в разделе второго метода лечения, так как точно не помню значений, которые были занесены в память и чего я там ему в первый раз накрутил.
Электрошоковая терапия
Итак, терять нечего, с командами разобрался, даже батареи зарядил (обязательная штука). Так почему не попробовать полностью сбросить настройки? Разве что факт, что я не мог быть на 100% уверен, удастся ли мне вообще достучаться до бесперебойника после сброса.
Так что если захотите повторить — вы сделаете это на свой страх и риск, и главное — ДЕЛАЙТЕ ЭТО ПОСЛЕ ЕДЫ, зарядив бесперебойник.
Первым делом запрещаем запуск apcupsd и выключаем сервер:
# systemctl disable apcupsd
# shudown now
После выключения переключаем сервер на питание от сети, а к бесперебойнику подбираем какую-нибудь известную нагрузку (пару ламп на 100 Вт, 220 В, к примеру). Далее включаем сервер (или другой компьютер, куда подключите бесперебойник) и нагрузку.
Если не запретить запуск apcupsd, то после сброса настроек, когда бесперебойник впадёт в маразм, есть шанс самоотключения сервера. Да и вообще, мешается он консоли пока что.
Переходим в консоль, запускаем screen, переходим в режим PROG и сбрасываем настройки, нажав Ctrl и Y. Возможно, надо нажать пару раз. В результате бесперебойник ответит OK и запустит панику (впадёт в кому).
У меня он сразу же вырубился и отказался оживать, цыкая при нажатии на питание и отрубаясь через доли секунды. Пришлось полностью отключить от сети и батарей, подцепить батареи, воткнуть в сеть и прижать кнопку включения и удерживать её. Далее он может включиться и пищать, а может и не включиться и молчать, главное сейчас — прописать множители для батарей и сети. Он думает, что напряжения на входе нет, батареи разряжены и вообще жизнь не удалась.
НО. Хотя бы на батареях, при нагло зажатой кнопке включения можно с ним пообщаться, работа
В консоли запускаем режим PROG и смотрим версию через ^Aa и через b. У меня после сброса он стал считать себя Smart-UPS 500 разновидности D, то есть для рынка США. То есть номинально батареи 24в (как оно и есть), но при этом напряжение сети 110в. То есть сильно не получшело, но хотя бы батареи правильно стали. Хотя, конечно же, хрен редьки не слаще.
Напряжение сети
Итак, мы имеем на руках идиота. Надо научить его хотя бы есть самостоятельно, то есть надо обеспечить включение от сети. Для чего надо хотя бы объяснить, что она есть.
Можно ознакомиться с номинальным выходным напряжением бесперебойника, нажав o (малое латинское O). Он ответит что-то вроде 110, 208 или 230, в зависимости от половой идентификации.
Теперь о напряжении на входе. Жмём L, получаем что-то вроде 210.7, то есть сколько вольт сейчас на входе бесперебойника. У меня после сброса оно было 000.0, то есть сеть не видать (множитель сбросился в ноль).
Пока что оно нам надо только для запуска, то есть в районе номинального выхода. Жмём + и L попеременно, (+ можно по нескольку раз), пытаясь довести до номинального для нашей модели бесперебойника (или сколько он там думает). То есть в моём случае до 110в. Точность рояля не играет, это потом нужно будет. Где-то в районе 100 (измеренного напряжение) в моём случае бесперебойник перешел из аварийного режима в относительно нормальный, перейдя на питание от сети.
Теперь жмём l (малая L), получаем наименьшее напряжение перехода на батареи. Я у себя я установил l, выбирая наименьшее значение (жал попеременно + и l, пока не определил минимум и на следующем цикле не оставил его). Я для своего «псевдоамериканца» поставил 97. Запоминаем это значение, оно далее пригодится.
Жмём u (малая U), это максимальное напряжение перехода на батареи (для защиты оборудования от перенапряжения). Смотрим какие есть варианты (жмём + и u), оставляем максимум (у меня 133). Записываем его.
Теперь надо решить при каких напряжениях должен происходить РЕАЛЬНЫЙ переход на батареи. Для чего надо знать, что обычно творится у вас в сети. И тут уж сами помучайтесь, периодически записывая напряжения в сети.
Но главное, нам надо определиться, какой диапазон нам приблизительно нужен. Например, в моей сети часто бывает меньше 200 В. Обычно это от 195 до 230 В. Меньше бывает редко, больше — крайне редко, хотя 324 В в розетке было, даже фото имеется.
Итак, есть интересующий дипазон [195, 230] , есть диапазон [l,u]=[97,133]. Нам надо определить какой множитель ставить в измеряторе напряжения. Считаем коэффициент a = 97/195=0.5 и b=133/230=0,58. Как видим, имеется очень «вкусный» вариант с коэффициентом 0.5, когда показания будут отличаться от реальных ровно в 2 раза. Надо только установить верхний предел переключения в 230*0,5=115в, хотя на самом деле современные приборы прекрасно будут работать при повышенном напряжении. Я снизил порог до 127в.
Далее, берем вольтметр, измеряем напряжение в розетке и подгоняем показания L к нужному. Для коэффициента 0,5 и напряжении в розетке 210в надо получить 210*0,5=105 в показаниях. Жмём + или — и контролируем нажимая L.
Батареи и их калибровка
Посмотреть номиральное напряжение батарей можно нажав g. До сброса показывало 48, после сброса начало показывать 24.
Как уже описывалось, подгоняем напряжение батарей к состоянию чуть меньше реального. нажимая B и +/-, котнтролируя B. Ну, только в данном случае мне уже можно было прописывать реальные вольты, а не удвоенные.
Прописываем начальные настройки
Регистры 0, 4, 5, 6 — как описано выше. Не забываем про них, особенно про 0, так как это коэффициент емкости батарей, описывает их «живость».
Корректное отображение нагрузки
Вот тут понадобится одна-две (а то и больше) ламп накаливания. Нагружаем бесперебойник и смотрим чего нам скажет про нагрузку, послав ему P (большое латинское p).
Мне изначально сообщило 000.0, так как множитель был сброшен. Жмём — и подгоняем по вкусу. Мне удалось довести до 032.1 при множителе FF для нагрузки примерно в 280 Вт (300Вт лампа при пониженном напряжении в сети). Это примерно соответствует номиналу, так как для лампы 280 Вт это как раз примерно 320-350 ВА, то есть треть от номинальных 1000 ВА бесперебойника).
Настраиваем оставшиеся параметры
1) Версия ПО процессора, получается по b. В руководствах в сети написано, что его можно изменить, нажав после этого + и введя новую версию. Но у меня и до, и после сброса оно принимало только 3 символа. Я прописал 652 и получил после сброса модель 652.3.D.
2) Идентификатор ИБП, получается по c. Жмём + и прописываем 8 символов нового идентификатора. У меня аккурат влезло SUA1000I.
3) Порог возврата питания после разряда батарей, получается по e, может принимать фиксированные значения (00, 15, 50, 90), перебираемые циклически по +/-. Поставил 15 (фактическое значение 01), чтобы после подачи питания он ожидал 15% заряда батарей. В противном случае если выключат свет и бесперебойник выключится, исчерпав заряд, а потом сразу после подачи питания включится, а свет снова выключат, то есть шанс получить аварийное выключение питания до отключения сервера, что не идёт на пользу жестким дискам.
4) Серийный номер ИБП, получается по n. Можно посмотреть на задней панели бесперебойника, под номером модели:
Я прописал свой. Кстати, первые две буквы — модель ИБП, первые две цифры (03) — год производства бесперебойника.
5) Дата производства ИБП, получаем по m, жмём + и прописываем что хотим. Например 01/01/03. Как-то в таком формате. Чисто информационная запись.
6) Дата последней замены батарей, получаем по x, чисто информационная. Аналогично дате производства прописал 01/01/15.
6) Чувствительность ИБП. получается по s, циклически переключается +/-, возможные значение H,M,L,A (высокая, средняя, низкая, авто, и у меня нет A.) Выставил M.
7) Количество подключенных доп. батарей, получаем по >. До сброса было 255, что весьма забавно. После стоял 0, что я и оставил.
Точная калибровка напряжения заряда аккумуляторов и времени работы от батарей
Нам надо обеспечить зарядку корректным напряжением. Для чего до полной зарядки (пока не покажет 100% заряда и даже после этого несколько раз в течение дня-двух) производим контроль напряжения батарей (режиме PROG посылаем B) и производим коррекцию множителя так, чтобы напряжение выдаваемое бесперебойником на батареи не превысило выбранный максимум (напоминаю, для моих батарей это 27,6 В). На цифры возвращаемые B не смотрим, а контролируем вольтметром реальное напряжение на батарее и соответственно корректируем множитель B.
Помним, что если на батарее напряжение больше необходимого, то жмём B, затем + и ждём некоторое время,а если меньше необходимого, то B и — и тоже чутка ждём. Время ожидания тем меньше, чем ближе заряд к 100%.
Для контроля степени заряда из консоли жмём f, получим что-то вроде 085.0 для 85% заряда. Подчёркиваю, что это МНЕНИЕ бесперебойника и оно будет правильным только после КАЛИБРОВКИ ЕМКОСТИ.
Калибровка емкости
Для этого нам снова понадобятся лампочки. В идеале — на половину мощности бесперебойника. То есть для 1000 надо бы надыбать 400 Вт нагрузки. Хотя хватит по идее и 200.
Закрываем консоль связи, для чего открываем новое окно терминала и убиваем screen:
# killall screen
Screen в соседнем окне терминала вылетит в командную строку с криком:
Terminated
[screen is terminating]
Запускаем утилиту apctest, который после некоторого тупления и общения с бесперебойником выдаст меню:
Runtime remaining apc что означает
Status logging consists of periodically logging ALL available information concerning the UPS. Since the volume of data is rather large (over 1000 bytes per status), the STATUS data is not automatically sent to the system log file, instead, it is written as a series of data records to a specific file (normally /etc/apcupsd/apcupsd.status).
After each write, the file is rewound so that the size of the file remains constant. At the current time, this file is 1135 bytes. The format of this file is very similar to the old apcupsd procfs file. The STATUS file is kept for backwards compatibility and will be eliminated in a future version of apcupsd. The preferred method for obtaining this information is from apcaccess status or by using the apcupsd network information server.
SmartUps
STATUS logging
To make reading the status data reliable via a named pipe, the first record written contains a version number, the number of records that follow the first record, and the total number of bytes in those subsequent records. An actual example of such a status file (/etc/apcupsd/apcupsd.status) is:
Consequently, the first record always consists of 24 bytes (23 characters followed by a newline). This record starts with APC and as indicated in the example above is followed by 28 records consisting of 675 bytes. The last record begins with END APC and contains the date and time matching the DATE record.
Documentation of each record needs to be written. In the coming weeks, I plan to add additional records and possibly change the names of some of the fields.
When this data is written to a file, it is written as two records, the first record, and all the other records together. In reading the file, it can be either be read a record at a time, or in one big read.
When this data is written to syslog(), it is written a record at a time. The first record is the first 24 bytes. By having the number of records and the size in the first record, the complete status can be reliably reassembled.
An example of output from an international SmartUPS 1000 follows:
The meaning of the above variables are: APC is the header record indicating the STATUS format revision level, the number of records that follow the APC statement, and the number of bytes that follow the record. DATE is the date and time that the information was last obtained from the UPS. HOSTNAME is the name of the machine that collected the UPS data. RELEASE is the apcupsd release number. CABLE is the cable as specified in the configuration file. MODEL is the UPS model as derived from information from the UPS. UPSMODE is the mode in which apcupsd is operating. STARTTIME is the time/date that apcupsd was started. UPSNAME is the name of the UPS as stored in the EEPROM. STATUS is the current status of the UPS (ONLINE, CHARGING, ONBATT. ) MASTERUPD is the last time the master sent an update to the slave. This value is present only in slave configurations. LINEV is the current line voltage as returned by the UPS. LOADPCT is the percentage of load capacity as estimated by the UPS. BCHARGE is the percentage charge on the batteries. TIMELEFT is the remaining runtime left on batteries as estimated by the UPS. MBATTCHG if the battery charge percentage (BCHARGE) drops below this value, apcupsd will shutdown your system. MINTIMEL apcupsd will shutdown your system if the remaining runtime equals or is below this point. MAXTIME apcupsd will shutdown your system if the time on batteries exceeds this value. A value of zero disables the feature. MAXLINEV is the maximum line voltage since the last STATUS as returned by the UPS. MINLINEV is the minimum line voltage since the last STATUS as returned by the UPS. OUTPUTV is the voltage the UPS is supplying to your equipment. SENSE is the sensitivity level of the UPS to line voltage fluctuations. DWAKE is the amount of time the UPS will wait after a power off condition when the power is restored. DSHUTD is the grace delay that the UPS gives after receiving a power down command from apcupsd before it powers off your equipment. DLOWBATT is the remaining runtime below which the UPS sends the low battery signal. At this point apcupsd will force an immediate emergency shutdown. LOTRANS is the line voltage below which the UPS will switch to batteries. HITRANS is the line voltage above which the UPS will switch to batteries. RETPCT is the percentage charge that the batteries must have after a power off condition before the UPS will restore power to your equipment. STATFLAG is a status flag indicating the UPS status. See STATUS. ITEMP is the internal UPS temperature as supplied by the UPS. ALARMDEL is the delay period for the UPS alarm. BATTV is the battery voltage as supplied by the UPS. LINEFREQ is the line frequency in Hertz as given by the UPS. LASTXFER is the reason for the last transfer to batteries. NUMXFERS the number of transfers to batteries since apcupsd startup. XONBATT time and date of last transfer to batteries, or N/A. TONBATT time in seconds currently on batteries, or 0. CUMONBATT total (cumulative) time on batteries in seconds since apcupsd startup. XOFFBATT time and date of last transfer from batteries, or N/A. SELFTEST is the results of the last self test, and may have the following values: