You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET C#程序读取UPS状态方案咨询,求支持API的UPS厂商及型号

解决方案:支持程序访问状态的UPS厂商及型号推荐

一、主流支持API/标准协议的UPS厂商及型号

1. APC(其实有可访问的方案,你可能未发现)

多数APC智能UPS支持SNMP协议或PowerChute Network Shutdown的命令行接口/SDK,推荐型号:

  • Smart-UPS 1500 RM 2U、Smart-UPS SRT 3000XLI:可通过SNMP获取输入电压、电池状态、市电状态等数据,也能调用pchute.exe命令行工具触发自定义操作,C#中可借助SnmpSharpNet这类SNMP库实现对接。

2. 施耐德电气(APC母公司,扩展产品线)

  • Easy UPS On-Line 10kVA:支持Modbus TCP、SNMP协议,C#可通过TCP连接读取寄存器直接获取UPS状态。

3. 伊顿(Eaton)

伊顿UPS普遍搭载Eaton Network Management Card,提供REST API、SNMP、Modbus等多种访问方式,推荐型号:

  • 5PX 2200i RT2U:通过REST API用HTTP请求即可获取状态,C#中用HttpClient就能快速实现,市电中断时还能通过API触发告警或预设操作。
  • 9PX系列:面向数据中心的高端型号,监控接口更丰富,适配复杂业务场景。

4. 山特(SANTAK)

  • C6K/C10K在线式UPS:支持SNMP卡扩展,通过SNMP协议读取状态,配套监控软件提供SDK接口,C#可调用其动态链接库实现状态读取与操作触发。

二、C#实现示例(以SNMP为例)

选择支持SNMP的UPS后,可借助SnmpSharpNet库快速开发:

using SnmpSharpNet;

// 初始化SNMP客户端
SimpleSnmp snmp = new SimpleSnmp("UPS_IP地址", "public");
if (!snmp.Valid)
{
    Console.WriteLine("SNMP初始化失败");
    return;
}

// 获取市电状态(OID需参考对应UPS的MIB库调整)
Oid statusOid = new Oid(".1.3.6.1.2.1.33.1.2.1.0");
Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.V2, new Oid[] { statusOid });
if (result != null && result.ContainsKey(statusOid))
{
    Integer32 powerStatus = (Integer32)result[statusOid];
    // 不同厂商OID对应值可能不同,示例中1代表市电中断
    if (powerStatus.Value == 1)
    {
        // 执行市电中断后的应急操作,如告警通知、数据保存等
        Console.WriteLine("市电中断,启动应急流程");
    }
}

三、注意事项

  • 多数UPS需配置网络管理卡(部分型号内置),确保UPS与PC在同一网络,提前配置好SNMP社区字符串或API权限。
  • 不同厂商的MIB(管理信息库)存在差异,需下载对应UPS的MIB文件,确认状态对应的OID或API参数。

内容的提问来源于stack exchange,提问作者HBC531

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:31:43