Skip to content

About

Control your UPS based on the Megatec and Voltronic protocol (Ippon, Apex, etc.) and monitor data via the browser and in Home Assistant.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Megatec UPS Controller

Приложение для контроля вашего ИБП на основе Megatec-протокола (Ippon и некоторые другие), подключаемого к компьютеру по USB, а также для управления питанием компьютера.

Главное окно

Требования к ОС

  • Windows 7 и выше
  • NET Framework 4.7.2 и выше

Как начать это использовать?

Что оно умеет

  • Красивое отображение получаемых от ИБП данных:
    • входное и выходное напряжение
    • напряжение и заряд батареи
    • частота
    • ток нагрузки ИБП (в процентах, амперах, ваттах, вольт-амперах)
    • температура ИБП (хотя в большинстве случаев она всегда 25°)
    • состояние AVR
  • Масштабируемый интерфейс (хоть на весь экран)
  • Возможность включать-выключать надоедливую пищалку ИБП
  • График входного и выходного напряжения
  • Выключение или гибернация компьютера при разряде батареи
  • Настройка напряжений батареи и мощности под ваш ИБП
  • Запись событий в текстовый файл
  • Отправка команды по SSH на удалённую Linux-машину, при завершении работы/гибернации

Окно настроек

История создания или зачем оно вообще сделано

После того как дома уже третий день подряд вырубили электричество, терпение подошло к концу, и в ближайшем ДНСе был куплен мой первый ИБП IPPON Back Basic 1050 с возможностью подключения по USB.

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

Конечно есть аналоги, например Energy Controller 2. Намного функциональнее родной, всё выводит красиво. Но всё же есть пара надоедающих багов, вроде улетания главного окна за пределы экрана при загрузке компа.

Так зачем оно всё таки создано, при наличии кучи более функциональных аналогов?
Всё просто - захотелось сделать стильно-модно-молодёжно-масштабируемо, сделать СВОЁ, и самое главное - поупражняться в C# (да, первый проект на сишарпе, после многих лет работы на java и python).
Да, тут нет многого из того, что есть даже в родной версии. Но... если проект не будет заброшен, то всё реализуемо.

На чём же всё это построено

  • C# WPF в Microsoft Visual Studio 2019
  • внешний вид интерфейса - по мотивам программы Energy Controller 2
  • библиотека UsbLibrary.dll - доработанная от adelectronics.ru (так как изначальная попила кровушки и блистала багами вроде невозможности видеть потерю связи с USB)
  • описание Megatec-протокола - от networkupstools.org
  • немногочисленные иконки - FontAwesome (хотя тащить всю библиотеку ради пары иконок такое себе. Зато они масштабируются)
  • вывод графика - библиотека InteractiveDataDisplay.WPF
  • работа с SSH - библиотека SSH.NET

Доработки 1.2.1:

  • Добавлена поддержка веб-сервера https, json веб-сервер для мониторинга данных через браузер или парсинга сторонним софтом. В "настройках" галка. Например парсинга данных в Home Assistant для автоматизаций (аварийное выключение, оповещение и т.д и т.п) отслеживание сенсоров UPS на панели управления умным домом.

В браузере выглядит так:

Веб-сервер

Проверял на Ippon Back Basic 650 Euro и Home Assistant OS 2025.7.1. Прокинул всё что выдаёт софт в форму по дефолту:

  "InputVoltage": 236.0,
  "OutputVoltage": 236.0,
  "LoadPercent": 9,
  "Hz": 50.3,
  "BatteryVoltage": 13.6,
  "Temperature": 25.0,
  "IsUtilityFail": false,
  "IsBatteryLow": false,
  "IsActiveAVR": false,
  "IsBeeperOn": false,
  "BatteryPercent": 97,
  "CurVA": 94.5,
  "CurWatt": 56.7,
  "CurAmper": 0.2,
  "ConnectStatus": true,

Редактируем /homeassistant/configuration.yaml, добавляем:

rest:
 - resource: "https://192.168.1.98:8888/0/json"
   verify_ssl: false
   sensor:
     - name: "UPS Status"
       value_template: "{{ value_json.IsUtilityFail }}"
       
     - name: "UPS InputVoltage"
       value_template: "{{ value_json.InputVoltage | float }}"
       device_class: voltage
       unit_of_measurement: "V"
     
     - name: "UPS OutVolt"
       value_template: "{{ value_json.OutputVoltage | float }}"
       device_class: voltage
       unit_of_measurement: "V"
       
     - name: "UPS Freq"
       value_template: "{{ value_json.Hz | float }}"
       device_class: frequency
       unit_of_measurement: "Hz"

     - name: "UPS Load"
       value_template: "{{ value_json.LoadPercent | int}}"
       device_class: power_factor
       unit_of_measurement: "%"  
       
     - name: "UPS Battary Voltage"
       value_template: "{{ value_json.BatteryVoltage | float }}"
       device_class: voltage
       unit_of_measurement: "V"

     - name: "UPS Battary Percent"
       value_template: "{{ value_json.BatteryPercent | int}}"
       device_class: battery
       unit_of_measurement: "%"       

     - name: "UPS power"
       value_template: "{{ value_json.CurWatt | float}}"
       device_class: power
       unit_of_measurement: "W"       

     - name: "UPS Current power"
       value_template: "{{ value_json.CurAmper | float}}"
       device_class: current
       unit_of_measurement: "A"    

     - name: "UPS Apparent power"
       value_template: "{{ value_json.CurVA | float}}"
       device_class: apparent_power
       unit_of_measurement: "VA"  
   binary_sensor:
     - name: "UPS BatteryLow"
       device_class: battery
       value_template: '{{ value_json.IsBatteryLow }}'
     - name: "UPS Active AVR"
       device_class: problem
       value_template: '{{ value_json.IsActiveAVR }}'
     - name: "UPS Connect Status"
       device_class: connectivity
       value_template: '{{ value_json.ConnectStatus }}'
     - name: "UPS Beeper"
       device_class: sound
       value_template: '{{ value_json.IsBeeperOn }}'

Появятся сенсоры и бинарные сенсоры в объектах.

Доработки 1.2.2

  • Добавлена базовая поддержка протокола Voltronic (Необходимо тестирование. Отпишитесь в issue если не фуричит, хотя должно.). На хабре пишут:

Протокол Voltronic на множестве указанных выше команд отличается только одной из них – вместо кода Q1 используется QS. При этом форматы ответов совпадают.

  • Добавлено возможность отправлять произвольные команды и получать ответ. Пригодится что бы протестировать свой UPS и вытащить больше полезной инфы. Список команд тут: https://networkupstools.org/protocols/megatec.html
  • Добавлена кнопка "Тест батареи 10 секунд".

Кому полезно сюда печеньки: BTC: bc1qfug54rq5zavd7ma7ps4q59g685r83f22xsthq8

Про лицензию

Для тех кто не осилил перевод лицензии Apache License 2.0, её краткая неполная суть:

  • программа бесплатная
  • можно распространять и изменять
  • если распространили или изменили - укажите что поменяли и первоначального автора (меня :-) )
  • программа поставляется как есть, автор не даёт никаких гарантий безошибочной работы, не оказывает техническую поддержку, не несёт никакой ответственности за потерянные данные, сгоревшие компы, взорванные ИБП и тому подобное.

Печеньки автору: BTC: bc1q5aptd289qsvrtsf9t2z42udda5t70e7hc39sc2

Copyright © 2020 Артем Галактионов
galakart.android@gmail.com

About

Control your UPS based on the Megatec and Voltronic protocol (Ippon, Apex, etc.) and monitor data via the browser and in Home Assistant.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages