Jump to content
Калькуляторы

Особенности мониторинга SNR-UPS-ONRT по USB network ups tools

Мониторинг устройств SNR-UPS-ONRT на unix like системах при использовании инструмента NUT умеет свои особенности.

 

  • необходимо использовать драйвер blazer_usb
  • устройство сообщает напряжение на ячейке аккумулятора, уровень заряда вычисляется по формуле:
                                    battery.voltage - battery.voltage.low
              battery.charge =  ------------------------------------------ x 100 %
                                battery.voltage.high - battery.voltage.low
    


    значения battery.voltage.high и battery.voltage.low драйверу неизвестны, поэтому эти параметры надо задавать вручную:

    battery.voltage.high = 2.27
    battery.voltage.low = 1.72
    


    указано напряжение на одной ячейке аккумулятора.

  • UPS не возвращает серийный номер устройства. Это вызывает проблему, если к одной USB шине сервера подключено несколько UPS, так как идентифицировать их невозможно. Для решения проблемы можно использовать патч для libusb, который позволяет сделать привязку к имени устройства.
  • UPS не возвращает runtimecal (расчетное время работы), его придется ввести вручную, используя таблицу Время автономной работы из инструкции для данной модели.

 

Пример конфигурационного файла ups.conf:

[ups1]
       desc="SNR-UPS-ONRT-3-MPL-1"
       port = /dev/ugen1.4
       file = /dev/ugen1.4
       driver = blazer_usb
       default.battery.voltage.high = 2.27
       default.battery.voltage.low = 1.72
       runtimecal = 240,100,720,50

 

>upsc ups1
battery.charge: 100
battery.runtime: 1200
battery.voltage: 2.35
battery.voltage.high: 2.28
battery.voltage.low: 1.65
device.type: ups
driver.name: blazer_usb
driver.parameter.file: /dev/ugen1.4
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ugen1.4
driver.parameter.runtimecal: 120,100,420,50
driver.version: 2.7.2
driver.version.internal: 0.11
input.frequency: 49.9
input.voltage: 229.2
input.voltage.fault: 0.0
output.voltage: 220.0
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 11
ups.productid: 0000
ups.status: OL
ups.temperature: 19.0
ups.type: online
ups.vendorid: 0001

Share this post


Link to post
Share on other sites

Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу.

Share this post


Link to post
Share on other sites

Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу.

А смысл? У SNR UPS отсутствует RS-232.

Share this post


Link to post
Share on other sites

Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу.

А смысл? У SNR UPS отсутствует RS-232.

конкретно у SNR-UPS-ONRT он есть.

 

другими словами SNR-ERD-3S заменяет более дорогой модуль

Share this post


Link to post
Share on other sites

У нас SNR-UPS-ONRT-3-MPL и там нет RS323. Да и еще при работе с USB невозможно идентифицировать UPS (кроме как по физическому порту разветвителя USB), так как serial number не передается.

Я думаю, что по RS232 контроллер передает тот же набор данных, что и по USB, а значит, что параметры charge и runtime не передаются, что очень сильно усложняет мониторинг. Вопрос - можно ли получить эти данные, используя SNR-UPS-ODC?

Share this post


Link to post
Share on other sites

Тестируем SNR-UPS-ONRT при нагрузке 15%. Время работы на батареях до перехода в состояние LB (low battery) составило 41 минуту, при этом почему-то отвалился один потребитель, а все остальные продолжали работать (видно на графике - падение нагрузки). Видимо, состояние LB нельзя использовать как сигнал для отключения серверов, делать надо это раньше, ориентируясь на время работы или уровень заряда. При пропадании питания в сети уровень заряда батарей на дисплее скачком меняется со 100% до 60% (видимо для расчета уровня заряда просто использует напряжение батареи без учета нагрузки), драйвер blazer_usb уровень заряда и оставшееся время работы считает правильнее.

 

Вопрос к SNR Team - есть ли смысл покупать SNR-UPS-ODC? Будет ли это устройство сообщать параметры charge и runtime?

ups0.png

ups1.png

Share this post


Link to post
Share on other sites

Добрый день. SNMP-карта также получает от ИБП напряжение одной ячейки АКБ, далее необходимо сконфигурировать систему. Необходимо указать напряжение полностью заряженной ячейки, количество АКБ и напряжение разряженной ячейки. По этим параметрам ИБП будет вычислять состояние АКБ.post-123357-063807000 1414643432_thumb.jpg

По поводу Runtime. SNMP-карта указывает время, которое ИБП проработал от АКБ и время, которое ИБП проработает при текущей нагрузке и заряде АКБ.post-123357-075659700 1414643447_thumb.jpg

Share this post


Link to post
Share on other sites

Здравствуйте!

 

Приобрели на НАГе:

УПС: SNR-UPS-ONRT-2-M

и блок батарей к нему: SNR-UPS-BCRT-2-M для ИБП 2kVA

 

подскажите пожалуйста, какие параметры ввести в конфиг NUT:

battery.voltage.high =

battery.voltage.low =

runtimecal =

 

СПАСИБО.

П.С. В инструкции не нашел (((

Share this post


Link to post
Share on other sites

Здравствуйте!

 

Приобрели на НАГе:

УПС: SNR-UPS-ONRT-2-M

и блок батарей к нему: SNR-UPS-BCRT-2-M для ИБП 2kVA

 

подскажите пожалуйста, какие параметры ввести в конфиг NUT:

battery.voltage.high =

battery.voltage.low =

runtimecal =

 

СПАСИБО.

П.С. В инструкции не нашел (((

 

Добрый день.

 

Для АКБ используемых в ИБП SNR стандартным напряжением заряженного элемента является 2,133 В, для разряженного - 1,666.

 

Внутри ИБП установлено 4 АКБ последовательно, в каждом АКБ по 6 элементов. Таким образом напряжение заряженной линейки (battery.voltage.high) = 4*6*2,133 = 51,2 В

 

Параметр battery.voltage.low = 4*6*1,666 = 40 В.

 

Для расчета параметров runtimecal необходимо исходить из количества подключенных блоков АКБ. При работе с одним блоком, суммарная ёмкость 21 Ач.

 

Воспользовавшись калькулятором АКБ. Получим 48 минут автономной работы с нагрузкой в 800 Вт (50%) и 21 минута с нагрузкой 1600 Вт (100%).

 

Параметр будет выглядеть следующим образом:

 

runtimecal = 1260, 100, 2880, 50

 

Обращаем ваше внимание, что данные параметры справедливы для свежих АКБ, в процессе старения данные будут меняться.

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, что за не стандартный драйвер/протокол используется у моделей SNR-UPS-LID-xxxx?

Хочется прикрутить мониторинг через USB к NUT. Не встречал упсов, которые нельзя было бы подружить с NUT, кроме этой линейки UPS.

Начинает работать с blazer_usb, но ups тогда возвращает нули на все параметры. Стандартная программа UPSmart работает с упсом без проблем.

Вот еще похожая модель, использующая тот же протокол и софт. Судя из статьи, драйвера закрыты. Можете ли открыть драйвера, для добавления их в NUT?

http://composter.com.ua/content/ups-s-nestandartnym-intellektom-2016-03-23

Share this post


Link to post
Share on other sites

Здравствуйте.

 

Помогите с конфигом SNR-UPS-ONRT-6000-INTXL под NUT

lsusb:

Bus 005 Device 002: ID 1a86:7523 QinHeng Electronics CH340 serial converter

Пробовал blazer_usb и nutdrv_qx по usb, blazer_ser через переходник usb-serial, прописывал разные subdriver, нигде не видит UPS, Device not supported! или No supported UPS detected

 

один из вариантов конфига:

[ups0]
    driver = blazer_usb
    #driver = nutdrv_qx
    port = /dev/ttyUSB0
    vendorid = 1a86
    productid = 7523

 

Edited by AlexZagr

Share this post


Link to post
Share on other sites

Ничего с NUT-ом не получилось, ТП ответили что NUT они не поддерживают. Программа под Windows общается с UPS-ом по протоколу modbus, не получилось собрать NUT с поддержкой modbus, поэтому подобрать что-то аналогичное не смог, да и не уверен что подошло бы что-то. Мониторинг программой под Windows нам не подходит, все на nix-ах, мониторинги, графики. Вобщем пришлось самому лепить на коленке, может кому-то пригодится.

 

К UPS-у подключен Orange Pi Zero 3 по usb. Если ничего не трогать то в теории подключение всегда будет к /dev/ttyUSB0, но решил на всякий случай забиндить на отдельное имя.

 

/etc/udev/rules.d/99-usb-serial.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0001", SYMLINK+="USB_to_UPS"

idVendor и idProduct видно в lsusb, в итоге получяем постоянный порт /dev/USB_to_UPS

 

Установил python-библиотеку minimalmodbus

https://github.com/pyhys/minimalmodbus

 

Программа под Windows за один запрос забирает весь блок регистров, я по примеру из документации minimalmodbus читаю по одному регистру, по 2 байта. Циклом забрал 80 регистров, сравнил со значениями под Windows, опеределил нужные регистры, получился такой модуль:

snr_modbus.py

import sys
import minimalmodbus

cells = dict(
    Vin = 1,
    HZin = 7,
    Iin = 16,
    HZout = 19,
    Vout = 25,
    Iout = 28,
    Pout = 40,
    LOADout = 46,
    Vbatt = 50,
    STATE = 55,
    CHARGEbatt = 56
)

port = '/dev/USB_to_UPS'

instrument = minimalmodbus.Instrument(port, 1)
instrument.serial.baudrate = 9600
instrument.serial.timeout = 5
instrument.mode = minimalmodbus.MODE_ASCII

def getValue(name):
    value = instrument.read_register(cells[name], 1)
    if name == 'HZin' or name == 'HZout':
        value /= 10
    if name == 'STATE' and value > 0:
        value = 1
    return round(value, 1)

if __name__ == "__main__":
    if len(sys.argv) == 1:
        for name in cells:
            value = getValue(name)
            print(name, "=", value)
    else:
         print(getValue(sys.argv[1]))

 

Если использовать просто как программу то можно получить все значения списком:

# python3.9 snr_modbus.py
Vin = 221.5
HZin = 50.0
Iin = 5.4
HZout = 50.0
Vout = 220.1
Iout = 4.6
Pout = 0.8
LOADout = 17.4
Vbatt = 215
STATE = 0
CHARGEbatt = 100

 

Или любой по имени из cells:

# python3.9 snr_modbus.py Vin
222.3

 

Вобщем это уже можно привязать к UserParameters в Zabbix, хотя если считывать по одному значению то могут быть коллизии если Zabbix запросит более 1 ключа одновременно. Я списком забираю через AgentX в snmp.

 

Есть пара вопросов:

1. Ячейка STATE, номер 55, в нормальном состоянии (OnLine) там 0, когда переходит на баттареи там что-то около 505, я так понимаю что нужно забрать какое-то битовое поле а не 2 байта, пока сделал условие если > 0, то состояние 1 (OnBattery)

2. Не нашел температуру на UPS-е, есть ли на них вообще температура? 

Edited by AlexZagr

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.