Bushi Posted October 21, 2014 Posted October 21, 2014 Мониторинг устройств 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 Вставить ник Quote
Victor Pestov Posted October 22, 2014 Posted October 22, 2014 Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу. Вставить ник Quote
Bushi Posted October 22, 2014 Author Posted October 22, 2014 Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу. А смысл? У SNR UPS отсутствует RS-232. Вставить ник Quote
Victor Pestov Posted October 22, 2014 Posted October 22, 2014 Устройства SNR-ERD-3S позволяют отслеживать параметры УПСов удаленно - по ethernet: само устройство к УПСу подключается по интерфейсу RS-232, параметры УПСа доступны на WEB-странице и по SNMP интерфейсу. А смысл? У SNR UPS отсутствует RS-232. конкретно у SNR-UPS-ONRT он есть. другими словами SNR-ERD-3S заменяет более дорогой модуль Вставить ник Quote
Bushi Posted October 22, 2014 Author Posted October 22, 2014 У нас SNR-UPS-ONRT-3-MPL и там нет RS323. Да и еще при работе с USB невозможно идентифицировать UPS (кроме как по физическому порту разветвителя USB), так как serial number не передается. Я думаю, что по RS232 контроллер передает тот же набор данных, что и по USB, а значит, что параметры charge и runtime не передаются, что очень сильно усложняет мониторинг. Вопрос - можно ли получить эти данные, используя SNR-UPS-ODC? Вставить ник Quote
Bushi Posted October 29, 2014 Author Posted October 29, 2014 Тестируем SNR-UPS-ONRT при нагрузке 15%. Время работы на батареях до перехода в состояние LB (low battery) составило 41 минуту, при этом почему-то отвалился один потребитель, а все остальные продолжали работать (видно на графике - падение нагрузки). Видимо, состояние LB нельзя использовать как сигнал для отключения серверов, делать надо это раньше, ориентируясь на время работы или уровень заряда. При пропадании питания в сети уровень заряда батарей на дисплее скачком меняется со 100% до 60% (видимо для расчета уровня заряда просто использует напряжение батареи без учета нагрузки), драйвер blazer_usb уровень заряда и оставшееся время работы считает правильнее. Вопрос к SNR Team - есть ли смысл покупать SNR-UPS-ODC? Будет ли это устройство сообщать параметры charge и runtime? Вставить ник Quote
Andrey Platov Posted October 30, 2014 Posted October 30, 2014 Добрый день. SNMP-карта также получает от ИБП напряжение одной ячейки АКБ, далее необходимо сконфигурировать систему. Необходимо указать напряжение полностью заряженной ячейки, количество АКБ и напряжение разряженной ячейки. По этим параметрам ИБП будет вычислять состояние АКБ. По поводу Runtime. SNMP-карта указывает время, которое ИБП проработал от АКБ и время, которое ИБП проработает при текущей нагрузке и заряде АКБ. Вставить ник Quote
maverick5 Posted February 24, 2016 Posted February 24, 2016 Здравствуйте! Приобрели на НАГе: УПС: SNR-UPS-ONRT-2-M и блок батарей к нему: SNR-UPS-BCRT-2-M для ИБП 2kVA подскажите пожалуйста, какие параметры ввести в конфиг NUT: battery.voltage.high = battery.voltage.low = runtimecal = СПАСИБО. П.С. В инструкции не нашел ((( Вставить ник Quote
Andrey Platov Posted March 22, 2016 Posted March 22, 2016 Здравствуйте! Приобрели на НАГе: УПС: 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 Обращаем ваше внимание, что данные параметры справедливы для свежих АКБ, в процессе старения данные будут меняться. Вставить ник Quote
Pasha_49 Posted October 5, 2016 Posted October 5, 2016 Подскажите пожалуйста, что за не стандартный драйвер/протокол используется у моделей 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 Вставить ник Quote
AlexZagr Posted January 18, 2024 Posted January 18, 2024 (edited) Здравствуйте. Помогите с конфигом 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 January 18, 2024 by AlexZagr Вставить ник Quote
AlexZagr Posted January 22, 2024 Posted January 22, 2024 (edited) Ничего с 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 January 23, 2024 by AlexZagr Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.