Мы производим SNMP‑карты для различных источников бесперебойного питания. Основные модели — СКУП-8/8М для ИБП с протоколом Megatec и СКУП-11М для устройств, использующих протокол CyberPower/СайберЭлектро.
Карты поддерживают полноценный обмен по SNMP и могут интегрироваться с Zabbix и другими системами мониторинга. Однако далеко не каждому пользователю нужна полноценная система со сбором метрик, отдельным сервером и сложной настройкой. Если требуется контролировать один компьютер или сервер, хочется получить более простое решение: установить программу, указать адрес SNMP‑карты и сразу начать работу.
Для этого мы разработали SkupLink — небольшой веб‑сервис для мониторинга ИБП и автоматического завершения работы компьютера при разряде аккумуляторов
Почему не NUT или ClientMate
Наши SNMP‑карты реализуют стандарт RFC 1628. Благодаря этому их можно использовать с NUT — Network UPS Tools — как в Linux, так и в Windows. NUT позволяет получать параметры ИБП и завершать работу системы при снижении заряда аккумуляторов.
Это гибкое и проверенное решение, однако его настройка может оказаться избыточной для пользователя, которому нужно просто подключить один сервер к ИБП.
Другой вариант — ClientMate. Эта программа дружелюбнее к пользователю и проще настраивается. При создании SkupLink мы ориентировались на похожий сценарий использования, но решили сразу сделать интерфейс виде веб‑приложения. Такой подход не требует установки отдельного графического клиента — панель управления открывается из обычного браузера.
Есть и ещё одно отличие. ClientMate использует собственный набор OID, тогда как SkupLink опрашивает стандартные OID из UPS MIB, описанные в RFC 1628. Поэтому программа может работать не только с нашими устройствами, но и с совместимыми SNMP‑картами других производителей.
При этом для наших карт доступна дополнительная возможность — автоматический поиск устройств в локальной сети.
Архитектура проекта
SkupLink состоит из трёх основных компонентов:
Серверное ядро, которое опрашивает SNMP‑карту, хранит текущие показатели и управляет завершением работы операционной системы
Веб‑интерфейс для просмотра состояния ИБП и изменения настроек
Отдельный компонент для Windows, работающий в системном трее и показывающий текущий статус устройства
Серверное ядро и Windows‑компонент написаны на Delphi. Веб‑интерфейс реализован без сторонних фреймворков исключительно на HTML, CSS и JavaScript.
Почему Delphi? Прежде всего, у меня большой опыт разработки на этом языке. Кроме того, современные версии Delphi продолжают развиваться и позволяют создавать приложения для нескольких платформ. В нашем случае один проект используется для сборок под Windows и Linux.
Первый рабочий каркас проекта был создан в Cursor с помощью модели Grok. После этого код дорабатывался и проверялся вручную. Больше всего внимания потребовала реализация SNMP‑опроса: несмотря на наличие стандарта, у реальных устройств встречаются особенности, которые приходится учитывать отдельно.
Открытый исходный код позволяет портировать проект и на другой технологический стек. С помощью современных ИИ‑инструментов такой перенос можно заметно ускорить, хотя тестирование SNMP‑обмена и корректного завершения работы ОС всё равно потребует ручной проверки на реальном оборудовании.
Веб‑интерфейс
После установки SkupLink запускает веб‑сервис на порту 8847. Интерфейс намеренно сделан компактным. Как я уже писал выше, проект рассчитан на пользователей, которым не требуется развёртывание полноценной системы мониторинга.

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

Здесь отображаются:
Состояние подключения к SNMP‑карте
Режим работы: от сети или АКБ
Входное и выходное напряжение
Частота
Нагрузка
Заряд и напряжение аккумуляторов
Оставшееся время работы
Состояние батареи
На отдельной вкладке доступны графики изменения основных параметров.

Графики позволяют быстро увидеть просадки входного напряжения, изменение нагрузки и поведение аккумуляторов без подключения внешней системы мониторинга.
Настройка SNMP и выключения компьютера
На вкладке настроек указываются:
IP‑адрес SNMP‑карты
Версия SNMP, сейчас поддерживаются SNMP v1 и v2c
Строка Community для чтения
Порог заряда АКБ
Задержка перед выключением компьютера

Механизм завершения работы устроен следующим образом. Пока ИБП работает от сети, SkupLink только опрашивает его состояние. После перехода на АКБ программа начинает следить за уровнем заряда. Когда заряд становится равен заданному порогу или опускается ниже него, операционной системе передаётся команда на отложенное выключение.
Если питание восстановится во время задержки, SkupLink отменит запланированное выключение. То же произойдёт, если заряд снова поднимется выше заданного порога.
В Windows задержка задаётся в секундах. В Linux системная команда shutdown использует минуты, поэтому значение округляется вверх до ближайшей минуты.
Для выполнения системного выключения служба должна иметь соответствующие права.
Автоматический поиск карт
При работе с SNMP‑картами нашего производства IP‑адрес необязательно вводить вручную. По кнопке «Найти» SkupLink выполняет поиск совместимых устройств в локальной сети и показывает обнаруженные карты.

Нужное устройство можно выбрать из списка, после чего его адрес будет автоматически подставлен в настройки.
Эта функция относится именно к нашим картам. При этом основной мониторинг через стандартные OID RFC 1628, как я уже отмечал, может работать и с оборудованием других производителей.
Однофазные и трёхфазные ИБП
SkupLink поддерживает как однофазные, так и трёхфазные конфигурации ИБП. Интерфейс автоматически адаптируется к данным и отдельно отображает параметры входных и выходных фаз.

Поддерживаются следующие топологии:
Однофазный вход и выход
Трёхфазный вход и трёхфазный выход
Трёхфазный вход и однофазный выход
Исходный код и развитие проекта
Исходный код SkupLink опубликован на GitHub https://github.com/SpeczPromDizajn‑LLC/SkupLink
Проект распространяется по лицензии GPL. Его можно изучать, изменять и использовать, в том числе в коммерческой деятельности, при соблюдении условий данной лицензии.
Для компаний, которым требуется закрытая брендированная версия без обязательств GPL по распространению производного исходного кода, мы предлагаем отдельную коммерческую лицензию.
Изначально SkupLink создавался для заказчиков, которым нужен простой мониторинг одного компьютера или сервера без развёртывания Zabbix, NUT и другой инфраструктуры. Сейчас проект уже решает эту задачу, но направлений для развития остаётся много: поддержка дополнительных MIB, уведомления, расширенная история, роли пользователей и интеграции с внешними сервисами.
Буду рад замечаниям, предложениям и участию в развитии проекта.
Sleuthhound
SNMP карта за 17-18 тр? Серьезно? А сколько стоит родная карта к ИБП? Кажется, это довольно дорого. Я не спорю, что продукт довольно навороченный в плане функционала, но это явно не для домашнего использования.
P.S. За софт на Delphi снимаю шляпу, редко сейчас кто-то решится на нем писать, тем более чтобы с Web-интерфейсом. Прям ностальгия и радость в душе!
FDA847 Автор
Цены на сайте это РРЦ. При оптовой закупке они будут намного ниже. Также мы часто на Озоне акции запускаем, там скидки от 50%. Так что для личного использования можно намного дешевле приобрести.