Настройка Synology DSM для работы с UPS Hikvision

Недавно перевез в Ташкент свой довольно уже немолодой Synology NAS DS918+. Летом здесь довольно часто отключают электричество из-за большой нагрузки на сети, создаваемой кондиционерами. Поэтом для защиты NAS и дисков от внезапного отключения электроэнергии занялся выбором источника бесперебойного питания (он же ИБП, он же UPS).

На локальном рынке не то чтобы большой выбор ИБП, особенно тех, которые заведомо совместимы с Synology. Покрутив доступные варианты выбор пал на Hikvision DS-UPS2000, который предлагает достаточный запас автономной работы для NAS и роутера при адекватной цене. Важным моментом в выборе было наличие USB интерфейса у UPS для того, чтобы подключив его к NAS тот мог оповещать операционку об отключении электричества, и NAS, в свою очередь, аккуратно бы выключался спустя заданный период после перехода на питание от батарей.

И вот все участники мероприятия дома, распакованы и включены. Подключаю UPS по USB кабелю к NAS и вижу всплывающее уведомление "BounzDS has connected to the UPS". Хороший знак. Однако на следующем шаге меня ждало разочарование: DSM отказывалась видеть (и показывать) его в настройках электропитания (No USB UPS connected).

Что ж, пошел обсуждать возможные причины и решения этой проблемы с Gemini. Сошлись на том, что в DSM по умолчанию пытается использовать драйвер tripplite_usb, который не узнает в чипе Richcomm (0925:1234) своего «родственника». Как дальше выяснилось и не должен: Hikvision использует более свежий протокол (Megatec 0.07), который не поддерживается ни в tripplite_usb, ни в blazer_usb, о котором Gemini прожужжал мне все уши, но использование которого так и не помогло.

В итоге по счастливой случайности нашел на Github упоминание о рабочих настройках драйвера для этого UPS. Дальше была попытка настройить работу с нужным драйвером через /usr/syno/etc/ups/ups.conf, но DSM упорно продолжал использовать Tripp Lite OMNIVS / SMARTPRO driver 0.29. В итоге я сдался и запустил в контейнере nut, который предоставляет Synology данные о "сетевом" UPS. Вот настройки для docker compose или Portainer stack:

version: '3.8'

services:
  nut-server:
    image: instantlinux/nut-upsd:latest
    container_name: nut-server
    restart: always
    privileged: true
    # Пробрасываем всю USB шину, чтобы не зависеть от смены ID порта
    volumes:
      - /dev/bus/usb:/dev/bus/usb
    environment:
      - DRIVER=nutdrv_qx
      - SUBDRIVER=armac 
      - PORT=auto
      - VENDORID=0925
      - PRODUCTID=1234
      - DESCRIPTION=Hikvision_DS-UPS2000
      - API_USER=upsmon
      - API_PASSWORD=your_strong_password  

После этого в настройках самого Synology DSM (Control Panel) переходим в раздел Hardware & PowerUPS, включаем галочку Enable UPS Support, в выпадашке UPS Type выбираем Synology UPS Server и в поле Network UPS server IP указываем IP адрес нашего контейнера. Жмем Apply — и все готово!