UPS Lite Manager – программа для работы с ИБП

Программа для работы с ИБП по протоколам Megatec (его используют многие UPS Ippon, Mustek, Sven и т.п.) и MegaUPS (его используют некоторые UPS DEXP).

Основные возможности UPS LM

Ключевые возможности и отличия от аналогичного софта:
• Потребляет мало ОЗУ и минимум процессорного времени;
• Не требует инсталляции и драйверов;
• Ситуация с выдёргиванием USB-кабеля из ИБП продумана и обрабатывается;
• Возможно управление сразу несколькими ИБП подключенными к одному компьютеру;
• Обработка событий: нет напряжения, запас заряда ниже указанного, батарея села, питание восстановлено, ИБП потерян, ИБП неисправен;
• Уведомления по email (встроенный SMTP-клиент), Вконтакте, Telegram;
• Запуск файлов по событиям, выключение Windows;
• Терминальная консоль для USB интерфейса для ручного управления ИБП – можно самостоятельно различные инженерные команды вводить;
• Из командной строки можно запускать некоторые команды ИБП (тестирование, звук, выгрузка и т.п., подробнее в справке по ups_lm.exe /?)

Поскольку это Beta-версия – её надёжность не гарантируется!

Скриншоты UPS LM

Скриншот - Основной экран UPS Lite Manager v2.0  Скриншот - Настройка оповещений и действий в UPS Lite Manager v2.0

Скриншот - Терминал ручного ввода ИБП-команд в UPS Lite Manager

FAQ

Почему заряд батареи по расчёту достигает не точно 100%, а около 100% (например 95% или 105%)? Но по опросу – 100%.

Потому что ИБП по каким-то своим причинам (может алгоритмы сохранения батарей) в разное время заряжает батареи до немного разного напряжения.
Например SmartWinner 2000 – заряжает от уровня 55V до 58V. Может в зависимости от предшествующего разряда, для сохранения батарей.
А расчёт уровня делается по минимальному и максимальному значению напряжения. Если же максимальное значение плавает – то и расчёт процентов тоже плавает.
Встроенная команда опроса (BL) – очевидно при каждом окончании заряда калибруется на 100%.
Но для самостоятельного расчёта автоматическая калибровка невозможна – ИБП не имеет команд сообщающих о том что он в состоянии заряда.

Как сделать автоматическое включение компьютера после восстановления электричества?

Запрограмировать в Оповещениях: Выключение компьютера при помощи shutdown /s /f,
прикинуть сколько времени это занимает – например 2-3 минуты максимум, активировать функцию «Отключить ИБП через 3 минуты».
Кстати, не все ИБП разрешают себя просто выключить, некоторые требуют обязательно указать и время включения.
Для таких надо ещё активировать «И снова включить ИБП через», указать там какое-нибудь время когда электричество точно дадут
(ну в городе например это минут 300 (5 часов), за городом может 3000 (два дня)).
В терминале ИБП-команд ввести команду AR1 – для активации режима автовключения ИБП после восстановления электричества.
В BIOS поискать опции типа AC Back Function, After Power Failure, PWRON After PWR-Fail и настроить её для включения.
Пароль на вход в Windows – либо убрать, либо настроить в планировщике запуск нужных программ
(однако они будут запущены без доступа к рабочему столу и после входа в Windows реального пользователя – они будут недоступны).
Итак, при разрядке батарей – UPS Lite Manager запрограммирует отключение ИБП и корректно завершит работу Windows, затем отключится ИБП.
После восстановления питания – ИБП включится, и компьютер тоже включится.
Но, следует учесть несколько возможных коллизий в этой схеме:
– если электричество восстановится в интервале между началом завершения работы Windows и запрограммированным (на 3-5 минут) отключением ИБП.
ИБП тогда выключится, и включится только через несколько часов – в запрограммированное время включения.
– если электричество пропадает и восстанавливается несколько раз подряд. ИБП может оказаться критически разряжен в процессе запуска Windows,
и аварийно отключится без программирования включения.

Какие есть другие программы и драйвера для этих ИБП?

Перед тем как написать свою – я пробовал следующее:
WinPower,
UPS Assistant,
Energy Controller 2,
Ippon Monitor.

Какие есть особенности работы программы для ИБП на серверах?

В связи с тем что сервер может работать без входа пользователя, на серверах в этом случае возникает проблема с запуском программы. В идеале надо для сервера делать программу из двух частей – служба (которая работает всегда и без входа пользователя) и конфигуратор (который запускает пользователь). Но, UPS LM создавался совсем не для этого, и у него единая часть. Однако в UPS LM сделан детект – работает ли он от реального пользователя (интерактивный логон – LogonInteractive) или запущен планировщиком от имени пользователя (пакетный логон – LogonBatch). Если на сервере запускать программу Планировщиком, от имени пользовательского логина – то программа (UPS_LM.exe) будет запущена, но, запуск будет с правами пакетного логона. Программа в этом случае не может взаимодействовать с рабочим столом, и не может взаимодействовать с пользователем (когда сам настоящий пользователь залогинится). UPS_LM.exe будет виден только в диспетчере задач, однако он сможет выводить MsgBox-уведомления через сервер (функцией WTSSendMessage вместо MessageBox) и обрабатывать все действия (запуски файлов, отправка почты). При запуске файлов надо учесть что файлы тоже будут запускаться в контексте невидимой сессии и тоже не смогут взаимодействовать с залогиненным реальным пользователем. Для того чтобы настраивать что-либо в UPS_LM запущенным планировщиком от имени пользователя – надо этот UPS_LM.exe закрыть в диспетчере задач и запустить нормальным образом.

Требования к компьютеру и ИБП

Требования к системе – любая версия от WindowsXP SP3 по Windows11, 32 или 64 битная.
Аналогичные серверные версии Windows тоже поддерживаются.

Подключение бесперебойника только через USB (работа через COM/RS232 не поддерживается в настоящее время).
Предполагается работа с ИБП со следующими PNP кодами (ИД оборудования):
HID\VID_06DA&PID_0003
HID\VID_0665&PID_5161
HID\VID_05B8&PID_0000
HID\VID_0F03&PID_0001
HID\VID_0001&PID_0000
помимо этого, в настройках можно вручную задать любые коды VID/PID.
Насчёт поддержки других ИБП – обращайтесь по email, если особых отличий нет – можно добавить…
У автора – Ippon Smart Winner (старого поколения), программа проверяется на нём, на всех прочих моделях могут быть какие-то проблемы – будут исправляться по мере багрепортов.
Ippon Smart Winner нового поколения (который с дисплеем) – не поддерживается.
Программа работает с любым ИБП который определяется как стандартное USB-HID устройство и отвечает на команду Q1, QS или Q4, либо аналогично отвечает на запросы индекса 0x03.

Настройка оповещений через интернет

Поскольку UPS_LM поддерживает совместимость даже со старой Windows XP/ и Windows 7 – для подключения к современным серверам (использующим TLS 1.2/1.3) пришлось использовать сторонний компонент – OpenSSL. Даже при использовании UPS LM в Windows 8/10/11 – в настоящее время используется OpenSSL. Если вы собираетесь использовать функционал уведомлений по email/Вконтакте/Telegram – то необходимо установить OpenSSL v3.2 (или более новую) – нужны файлы libcrypto-3.dll и libssl-3.dll в папке с UPS_LM либо доступные в системе.
OpenSSL v.3.2 есть как минимум две публичных сборки:
• Вариант 1: Win32 OpenSSL v3.2.1 Installer (slproweb.com) – требует Visual C++ 2015-2022 Redistributable (microsoft.com) для WinVista+, для WinXP/Win2003 требуется старая версия Microsoft Visual C++ 2015-2019 Redistributable 14.28.29213 (google);
• Вариант 2: OpenSSL Binary Distributions for Windows (firedaemon.com) – без дополнительных зависимостей (только UCRT), WinVista+.

Использование командной строки

Должен быть ранее запущенный UPS_LM.exe, команды пересылаются для исполнения в ранее запущенный процесс через механизм Pipe.
Управление из командной строки может быть запрещено в настройках UPS LM.
Учтите что взаимодействие с ИБП происходит через очередь, команда будет фактически исполнена не сразу, а через несколько секунд.
Если ранее запущенного UPS_LM нет – то он будет запущен и останется работать.
Команды прямого управления ИБП:
/T – запуск 10 секундного теста батареи (команда T на ИБП);
/TL – запуск теста батареи до разряда (команда TL на ИБП);
/CT – отмена теста батареи (команда CT на ИБП);
/Beep_On – включение звука (проверка состояния и команда Q на ИБП);
/Beep_Off – выключение звука (проверка состояния и команда Q на ИБП);
/C – отмена команд выключения (немедленное включение ИБП);
/Snn – выключение ИБП, nn – время в минутах (01-99) через которое ИБП отключится;
/SnnRnnnn – выключение ИБП и повторное включение, nn – время в минутах (01-99) через которое ИБП отключится, nnnn – время в минутах (0001-9999) через которое ИБП включится;
Многие ИБП не поддерживают часть этих команд. Перед использованием убедитесь что ваш ИБП поддерживает нужную команду.
/exit – закрывает работающую копию UPS_LM.
/MsgTest – проверка работы командной строки с запущенной копией UPS_LM.
Сразу указать несколько ключей нельзя.

Справочная информация по протоколам UPS

Краткое описание используемых в UPS LM протоколов. Информация собрана по обрывкам документации в интернете, исследованиям некоторых прошивок ИБП, и USB-снифферами при работе штатного софта.

Краткое описание протокола Megatec/Ippon

2016.04.03
Краткое описание протокола Megatec/Ippon и его модификации
команды которые можно вводить в терминале:
Команда Описание
AR?, AR0, AR1 Режим автовключения выключенного ИБП при восстановлении питания.
AT?, AT0, AT1 Выключение/включение автотеста (на Smart Winner он раз в неделю запускается).
BL? Узнать уровень заряда батарей в процентах, ответ – 3-значное число, например – 098
C Отменить выключенное состояние (включить немедленно) или запланированное выключение.
Отменяет действие команд Snn, SnnRmmmm
Разумеется это реально только если компьютер сам не питается от этого выключенного ИБП.
CBnn ?
CT Прервать тест
CTL ?
EB?, EBnn Узнать кол-во внешних батарей, установить кол-во внешних батарей (например EB01 – 1 батарея).
Предположительно это влияет на расчёт ёмкости в команде BL? и зарядный ток.
EF? Пишет допустимые отклонения частоты в ECO mode, в процентах.
Например – (005 005
EV? Пишет допустимые отклонения напряжения в ECO mode, в процентах.
Например – (005 005
F Узнать некоторые параметры настроек,
в ответ строка: #MMM.M QQQ SS.SS RR.R
# – маркер
MMM.M – номинальное напряжение (220.0, 230.0, и т.п.)
QQQ – ?
SS.SS – стандартное напряжение батареи (48.0 например)
RR.R – номинальная частота (50.0)
FLT ?
FUNC? На некоторых ИБП возвращает 7-значное число, вероятно какие-то флаги опций или возможностей.
Например – (0000078
FW? Версия прошивки.
GR?, GR0, GR1 В настройках WinPower функция Energy Saving управляет этими командами.
I Узнать производителя и модель, в ответ строка: #Company_Name UPS_Model Version
IP?, IPN, IPW, IPG Узнать или установить режим допустимых отклонений: нормальный(N)/широкий(W)/генератор(G).
Команда переключает соответствующие светодиоды на панели (у Ippon Smart Winner).
LT? ?
PD ?
PE ?
Q Звук разрешить/запретить. Команда циклически переключает текущий режим звук.
Посмотреть текущий режим звука можно в Q1.
Q1 Самая главная команда, для опроса текущего состояния. Софт её ежесекундно запрашивает.
В ответ приходит такая строка: (MMM.M NNN.N PPP.P QQQ RR.R SS.S TT.T abcdefgh
( – маркер
MMM.M – входное напряжение
NNN.N – вроде бы регистр запоминающий напряжение перед сбоем
PPP.P – выходное напряжение
QQQ – текущая нагрузка в процентах
RR.R – текущая частота сети
SS.S – текущее напряжение батарей (может быть как суммарным, так и расчётным на 1 элемент)
TT.T – температура
a – сбой входного напряжение, работа от батареи
b – батарея сильно разряжена
c – AVR
d – неисправность
e – тип ИБП (1 Standby, 0 Online)
f – выполняется тест
g – ИБП выключен программно (командой S)
h – звуковые сигналы разрешены
Q4 Ещё один вариант для опроса текущего состояния.
В ответ приходит такая строка: (MMM.M ???.? ???.? NNN.N PPP.P ??? QQQ RR.R ??? ??? SS.S TT.T flags
flags – разные флаги состояний:
E – выполняется тест
A – сбой входного напряжение, работа от батареи
C – Bypass/AVR
L – ?
M – ?
I – ?
Некоторые модели поддерживающие Q4 – поддерживают и Q1.
Q2 Q3 Q5 Q6 Q7 QS D QGS Тоже варианты опроса текущего состояния, у некоторых моделей.
QA ?
QBL Пишет информацию о батарее, например – (026.5 02 01 068 255
1 – напряжение батареи,
2 – кол-во батарей последовательно,
3 – кол-во батарей параллельно,
4 – проценты ёмкости,
5 – расчётное время до нуля, минуты.
QI Серийник
QLDL Статистика по минимальному и максимальному уровню нагрузки.
QMOD Код текущего состояния (тест, от батареи, AVR, и т.п. – их более десятка)
QMD Паспортные данные об ИБП – мощность, кол-во батарей, вход, выход, и т.п.
QMF Производитель
QMT ?
QOF Пишет режим выходной частоты, например – (50.0
QP Допустимые границы входного напряжения и частоты, при выходе за которые будет переход на батарею.
Например – (45.0 55.0 184 264 EpbkcrafDo – допустим диапазон 45…55Гц, 184…264В, и какие-то флаги.
QRI Паспортные данные об ИБП:
номинальное выходное напряжение, допустимый ток, напряжение батарей, частота тока.
QVFW Версия прошивки.
Snn Выключить питание через nn минут (.1, …, .9, 01…99).
Например S.5 выключит питание через 30 секунд, S05 выключит питание через 5 минут.
SnnRmmmm Выключить питание через nn минут (.1, …, .9, 01…99) и включить через mmmm минут (0001…9999).
Не все поддерживают время менее минуты, и не все поддерживают команду Snn.
Например Winner поддерживает SnnRnnnn, но не поддерживает Snn.
SASV07? ?
SD? SD0 SD1 ?
SR ?
T Тест на 10секунд
TL Тест до разрядки батареи
Tnn Тест на указанное время, nn – минуты 01…99.
V Отвечает настройки режима AVR – например – 165 200 220 240 275
где соответственно указаны:
1 – нижняя граница перехода на батарею,
2 – нижняя граница включения повышающей ступени AVR,
3 – номинальное напряжение,
4 – верхняя граница включения понижающей ступени AVR,
5 – верхняя граница переходя на батарею.
V? Пишет режим выходного напряжения, например – (V220
V220, V230, V240 Переключает выходное напряжение (и соответствующий светодиод).
Проверка – в команде F либо V?.
WA ?
WH ?
WM Отвечает какую-то цифру, например – (3
Предположительно какой-то флаг режимов работы ИБП.
Команды со «?» обычно выводят какие-либо данные – вроде нет команд с «?» которые бы могли что-то изменить в ИБП.
Остальные команды – следует использовать аккуратно, т.к. они могут внести какие-либо изменения.
Если ИБП не знает вводимую команду – он отвечает эту же команду, нету общего слова о незнакомой команде.
Если ИБП команду принял успешно – он может не ответить ничего (если команда не вопросительная, а должна что-то изменить в ИБП).
Некоторые модели ИБП отвечают «NAK» на неподдерживаемую команду, и «ACK» на поддерживаемую.
Подробные описания этих и других команд можно найти на сайте Network UPS Tools.

Краткое описание протокола MegaUSB/DEXP/UPSmart

Этот протокол исследован на примере DEXP CEE-E PRO 850VA (и программы UPSmart v1.5, которая прилагалась к нему). Любой однофазный ИБП который работал в UPSmart v1.5 – может работать в UPS LM начиная с версии 2.0

2024.03.20
Краткое описание протокола MegaUSB/DEXP/UPSmart
команды которые можно запрашивать в терминале:
Номер запроса Аналог в Megatec Описание
0x03 Q1 опрос состояния:
(inV fail_inV outV curr% freqHz bat1V °C PwrFail-BatLow-Bypas/AVR-UpsFail-UpsType-Tst-Sht-Beep
0xF3 BL? Уровень батареи в процентах.
0x07 Q Включает/выключает (переключает) звуковой сигнал при сбое питания (текущее состояние – см. в 0x03).
0x04 T Тестирование в течении 10 секунд.
0x06 Tnn Тестирование в течении nn минут. Время задаётся через изменение размера буфера: 0x64+минуты. Многие ИБП эту команду не поддерживают.
0x05 TL Тестирование до полной разрядки батареи. Многие ИБП эту команду не поддерживают.
0x0B CT Прервать тестирование.
0x68 Sn Выключить ИБП через 1 минуту. Время задаётся в первом разряде шеснадцатеричного числа: 5+минуты. Таким образом 1 минута 0x68, 2 минуты 0x78, максимум возможно 10 минут – 0xF8. 0x58 – выключает через 50 секунд, 0x48 – выключает через 40 секунд.
0x0D F rating info: #volt curr% batt freq
0x0C I info: #Company_Name UPS_Model Version
0x01 USB info
Протокол MegaUSB отличается от Megatec/Ippon только методом запросов-ответов – используется HidD_GetIndexedString вместо WriteFile/ReadFile.

Краткое описание протокола Voltronic-P/T

Протокол тоже на базе классического Megatec/Ippon, но данные в ответах у него в виде HEX-строк (причём там есть логика экранирования что приводит к разному размеру строки в зависимости от значений), а не просто текст. Описание там.
Этот протокол исследован на примере FSP iFP-800 и его поддержка реализована в UPS LM начиная с версии 1.6

История развития UPS LM

v.2.0.0.78 (2024.03.20) Сильно переписаны внутренности и механизм работы с интерфейсом;
Добавлена поддержка новых UPS-протоколов (MegaUSB, DEXP);
HEX-ввод в терминале;
Новый режим – запрос индексных строк (аналог терминала для MegaUSB протокола);
Принудительная настройка звукового сигнала (для тех ИБП которые постоянно забывают режим звукового сигнала);
Тонкие настройки скорости опроса порта;
Опция отключения автодетекта напряжений батареи;
Опция отключения OpenSSL (для экономии памяти если функционал уведомлений через интернет не нужен);
Опция отключения CLI;
Добавлена возможность отправки уведомлений через Вконтакте и Telegram;
Повторные попытки отправки уведомлений (для ситуации с медленным переключением на резервный канал интернета);
Формат конфига переделан на текстовый INI (это более медленно чем бинарный конфиг, но позволяет легко добавлять новые параметры в будущих версиях без потери совместимости);
Исправлены некоторые потенциальные ошибки.
v.1.6.0.45 (2023.05.22) Оптимизация алгоритма опроса;
Мелкие внутренние доработки;
Добавлена возможность локализации (использование внешних lng-файлов);
Исправлена ошибка со срабатыванием оповещения по уровню напряжения батарей;
Добавлена поддержка новых UPS-протоколов (Voltronic P/T – QS HEX);
Добавлены новые команды опроса ёмкости батареи (DQ1, QBV);
Добавлен эмулятор ответов UPS (Shift+About);
Переход на OpenSSL v3.1 (для работы email-уведомлений не забудьте обновить OpenSSL);
Доработки лога;
Новые команды в командной строке – запуск теста, включение/выключение звука.
v.1.5.2.31 (2022.10.11) Мелкие оптимизации в сборке, совместимость с NX/DEP и ASLR.
v.1.5.1.30 (2022.05.24) Исправлена проблема с отображением опроса BL?-команды на ИБП которые на самом деле не поддерживают эту команду;
Исправлена проблема с запуском просмотра лога при длинных путях;
Запуск просмотра лога с Shift – открывает лог состояний ИБП;
Оптимизирован формат справки команд (поэтому размер файла стал значительно меньше).
v.1.5.0.27 (2022.05.04) Исправлена ошибка приводящая к постоянному Out of sync request Qx на некоторых моделях ИБП (которые формируют строку ответа с нечётным кол-вом байт или с 0x00 байтом).
Добавлена проверка доступности обновлений (только вручную, из меню о программе).
Поддержка экранов с DPI масштабированием (теперь шрифты не искажаются).
Запись в лог входа/выхода в спящий режим.
Мелкие доработки.
v.1.4.0.25 (2022.01.10) Исправлена проблема с запуском файлов с ключами (опции оповещений надо заново настроить); Добавлена настройка поля темы для email (актуально для случаев когда несколько ИБП подключены, чтобы различать почту от них); Разные мелкие исправления потенциальных ошибок.
v.1.3.0.22 (2021.02.14) Поддержка командной строки (пока только команда для выключения/включения ИБП поддерживается, для справки см. ups_lm /?).
Мелкие доработки.
v.1.2.5.21 (2020.09.07) Многочисленные доработки в почтовом клиенте (SMTP): теперь работает OpenSSL 1.1.1g (и есть TLS 1.3), поправлен формат заголовка from (иначе на некоторых серверах была ошибка 555 5.5.2 Syntax error), отладочный лог email имеет ещё один режим – запись только в случае ошибок, разные мелкие доработки в email, база серверов для автонастройки обновлена – работоспособность проверена на бесплатных почтовых службах AOL, MailRu, Yandex, GMail, GMX, Rambler, OfficeCom/Live.
v.1.2.4.20 (2018.11.11) Добавлена поддержка некоторых ИБП которые раньше не работали из-за BL?-команды, добавлена фильтрация ложных низких напряжений в статистике, добавлен отладочный лог.
v.1.2.3.15 (2018.03.28) Мелкие доработки, функция проверочной отправки email в настройках.
v.1.2.2.11 (2017.09.30) Мелкие доработки, поддержка работы через SrvAny.exe (пока не полная).
v.1.2.0.9 (2017.06.11) Борьба с глюками Касперского – были ложные детекты на UPX.
v.1.2.0.7 (2017.06.06) Исправлена ошибка при отправке email, исправлена ошибка при вводе длинных ИБП-команд, добавлена возможность выключать ИБП по событиям.
v.1.1.0.6 (2017.04.28) Мелкие доработки.
v.1.1.0.5 (2016.12.18) Мелкие доработки, исправления сообщений об ошибках, переход на OpenSSL v1.1 (для email-клиента).
v.1.0.0.4 (2016.08.03) Мелкие доработки.
v.1.0.0.3 (2016.04.03) Первая публичная версия.

Загрузка файлов

Скачать “UPS_LM_v200.rar” – 77,18 КБВерсия 2.0.0.78, 2024-03-20

Скачать “UPS_LM_v160.rar” – 56,16 КБВерсия 1.6.0.45, 2023-05-22

Скачать “UPS_LM_v152.rar” – 47,23 КБВерсия 1.5.2.31, 2022-10-11

Скачать “UPS_LM_v151.rar” – 42,19 КБВерсия 1.5.1.30, 2022-05-24

Скачать “UPS_LM_v150.rar” – 52,56 КБВерсия 1.5.0.27, 2022-05-04

Скачать “UPS_LM_v140.rar” – 51,42 КБВерсия 1.4.0.25, 2022-01-10