ESP C系列PDU设备API开发文档

适用于ESP C系列PDU软件版本v1.3.28及以上的PDU设备

1. 基础访问规则

2. 接口详细说明

2.1 登录接口

接口路径/login.json

功能:登录PDU设备,获取操作权限

请求Body

{
    "login": 255,
    "userName": "YWRtaW4=",  // 用户名base64编码,默认admin编码后为YWRtaW4=
    "password": "YWRtaW4="   // 密码base64编码,默认admin编码后为YWRtaW4=
}

返回数据

{
    "login_verif": 3,  // 3=登录成功,其他值=登录失败
    "login_cnt": 2     // 登录计数
}

2.2 登出接口

接口路径/body_head.json

功能:登出PDU设备,释放操作权限

请求Body

{
    "logout": 1
}

返回数据

{
    "logout": "success!"
}

2.3 主页数据/插座控制接口

接口路径/home-page.json

2.3.1 获取设备数据

请求Body

{"get" : 255}

返回数据

{
    "sock_nums": 8,                // 插座输出口个数(1-8)
    "dev_type": 1,                 // PDU类型:2=总监总控,1=分监分控
    "vol": "218.4",                // 电压(V)
    "tolCur": "0.0",               // 总电流(A)
    "tolPow": "0.0",               // 总功率(W)
    "tolEne": "0.1",               // 总电量(Kwh)
    "fre": "50.0",                 // 电压频率(Hz)
    "tolCos": "0.0",               // 总功率因数(%)
    "tempCent": "28.8",            // 温度(℃),--.-表示无传感器
    "tempFahr": "83.84",           // 温度(℉),--.-表示无传感器
    "hum": "61.9",                 // 湿度(%RH),--.-表示无传感器
    "sock_name": ["S1", "S2", ..., "S8"], // 插口名称
    "socket": [1, 1, ..., 1],      // 插口状态:1=打开,0=关闭
    "sockctl_sta": [0, 0, ..., 0], // 忽略
    "curx": ["0.1", "0.0", ..., "0.0"], // 各插口电流(A)
    "powx": ["4.8", "2.0", ..., "0.0"], // 各插口功率(W)
    "cosx": ["43.7", "43.6", ..., "0.0"] // 各插口功率因数(%)
}

2.3.2 控制插座

控制类型 请求Body 说明
全部开关 {"ctlbtn" : 255, "sta" : 0} sta=0全关,sta=1全开
时序开关 {"ctlbtn" : 254, "sta" : 0} sta=0时序关闭,sta=1时序打开
单独控制 {"ctlbtn" : 0, "sta" : 0} ctlbtn=0-7对应1-8口,sta=0关,sta=1开

返回数据

{
    "sock_nums": 8,
    "socket": [1, 1, ..., 1],      // 控制后的插座状态
    "sockctl_sta": [0, 0, ..., 5]  // 忽略
}

2.4 数据展示接口

接口路径/data-display.json

功能:获取扩展设备数据

请求Body

{"get" : 255}

返回数据

{
    "sock_nums": 8,
    "dev_type": 1,
    "sw_1_name": "开关传感器 1",    // 开关传感器1名称
    "sw_2_name": "开关传感器 2",    // 开关传感器2名称
    "sw_ser_1": 0,                 // 开关传感器1状态:1=触发,0=正常
    "sw_ser_2": 0,                 // 开关传感器2状态:1=触发,0=正常
    "vol": "216.1",                // 电压(V)
    "tolCur": "0.1",               // 总电流(A)
    "tolPow": "6.7",               // 总功率(W)
    "tolEne": "3.6",               // 总电量(Kwh)
    "fre": "50.0",                 // 电压频率(Hz)
    "tolCos": "43.9",              // 总功率因数(%)
    "tempCent": "29.4",            // 温度(℃)
    "tempFahr": "84.92",           // 温度(℉)
    "hum": "36.1",                 // 湿度(%RH)
    "sock_name": ["A1", "A2", ..., "A8"],
    "curx": ["0.1", "0.0", ..., "0.0"],
    "powx": ["4.8", "2.0", ..., "0.0"],
    "cosx": ["43.7", "43.6", ..., "0.0"]
}

2.5 插座设置接口

接口路径/socket_setup.json

2.5.1 获取所有插座数据

请求Body

{"get": 255}

返回数据

{
    "sock_nums": 8,
    "startup": 0,                  // 时序打开顺序:0=1->8,1=8->1
    "shutdown": 0,                 // 时序关闭顺序:0=1->8,1=8->1
    "sock_name": ["A1", "A2", ..., "A8"],
    "boot_up_sta": [0, 0, ..., 2], // 开机状态:0=开,1=关,2=上一次
    "startup_delay": [0, 0, ..., 0], // 开机延时间隔(秒)
    "delay_on": [5, 5, ..., 5],    // 延时打开(秒)
    "delay_off": [5, 5, ..., 5],   // 延时关闭(秒)
    "restart_time": [5, 5, ..., 5], // 重启时间(秒)
    "delayed_restart": [5, 5, ..., 5] // 延时重启(秒)
}

2.5.2 获取单个插座数据

请求Body

{"get_id" : 0}  // 0-7对应1-8口

返回数据

{
    "name": "A1",
    "bootUpSta": 0,
    "startupDelay": 0,
    "delayOn": 5,
    "delayOff": 5,
    "restartTime": 5,
    "delayedRestart": 5
}

2.5.3 设置单个插座数据

请求Body

{
    "set_id":0,
    "name":"ups",
    "bootUpSta":1,
    "startupDelay":1,
    "delayOn":10,
    "delayOff":10,
    "restartTime":10,
    "delayedRestart":10
}

返回数据:返回设置后的参数(与请求参数一致)

2.5.4 设置PDU时序

请求Body

{
    "on_off_set": 0,
    "startup": 1,  // 打开时序:0=1->8,1=8->1
    "shutdown": 0  // 关闭时序:0=1->8,1=8->1
}

返回数据

{
    "startup": 1,
    "shutdown": 0
}

2.6 设备设置接口

接口路径/device_setup.json

2.6.1 获取设备数据

请求Body

{"get" : 255}

返回数据

{
    "dev_name": "Desktop-Feng", // PDU名称
    "duration": 600,            // 忽略
    "oled_enable": 0,           // 忽略
    "dev_scan": 1               // 忽略
}

2.6.2 设置PDU名称

请求Body

{
    "updateDevName":0,
    "devName":"MY PDU"
}

返回数据

{
    "dev_name": "MY PDU"
}

2.7 设备信息接口

接口路径/about.json

功能:获取设备基础信息

请求Body

{"get" : 255}

返回数据

{
    "dev_name": "MY PDU",
    "pro_model": "ESP-CG-128",   // 产品型号
    "dev_model": "ES-TVAPWR",    // 设备型号
    "dev_id": "4e831cd8fc77400301526214", // 设备ID
    "dev_mac": "E8:31:CD:8F:C7:77", // 设备MAC
    "dev_ver": "v1.3.28",        // 软件版本
    "uptime": 249,               // 启动时长(秒)
    "year": 2022,                // 生产日期-年
    "mon": 5,                    // 生产日期-月
    "day": 7                     // 生产日期-日
}

2.8 IP设置接口

接口路径/ip_setup.json

2.8.1 获取IP配置

请求Body

{"get" : 255}

返回数据

{
    "ip4_type": 1,               // 0=DHCP,1=静态
    "ip4_ip": "192.168.1.230",   // IP地址
    "ip4_mask": "255.255.255.0", // 子网掩码
    "ip4_gw": "192.168.1.2",     // 网关
    "ip4_dns1": "114.114.114.114", // 主DNS
    "ip4_dns2": "0.0.0.0"        // 备用DNS
}

2.8.2 设置IP配置

请求Body

{
    "set":255,
    "ip4_type":1,
    "ip4_ip":"192.168.1.234",
    "ip4_mask":"255.255.255.0",
    "ip4_gw":"192.168.1.2",
    "ip4_dns1":"114.114.114.114",
    "ip4_dns2":"8.8.8.8"
}

返回数据

注意:IP修改成功后当前连接断开,需使用新IP重新登录

2.9 Web设置接口

接口路径/web_setup.json

2.9.1 获取Web配置

请求Body

{"get" : 255}

返回数据

{
    "type": 1,                   // 1=HTTP,2=HTTPS
    "http_port": 80,             // HTTP端口
    "https_port": 443            // HTTPS端口
}

2.9.2 设置Web配置

请求Body

{
    "set": 255,
    "type": 1,
    "httpPort": 8080,
    "httpsPort": 443
}

返回数据:返回修改后的配置

注意:不要随意修改为HTTPS,否则本协议无法使用;修改端口后访问需带端口号

2.10 时间设置接口

接口路径/sntp_time.json

2.10.1 获取PDU时间

请求Body

{"get" : 255}

返回数据

{
    "hour": 11,                  // 时
    "min": 20,                   // 分
    "sec": 58,                   // 秒
    "wday": 3,                   // 星期(0=周日)
    "mon": 6,                    // 月(需+1)
    "mday": 19,                  // 日
    "year": 2023                 // 年
}

2.10.2 设置PDU时间

请求Body

{
    "brotime": [2023, 6, 19, 11, 50, 0] // [年,月-1,日,时,分,秒]
}

返回数据:返回设置后的时间

2.11 定时任务接口

接口路径/timed_task.json

2.11.1 获取所有定时任务

请求Body

{"get" : 255}

返回数据:包含20个定时任务的完整配置

2.11.2 获取单个定时任务

请求Body

{"get_id" : 0}  // 0-19对应20个定时任务

返回数据

{
    "name": "定时任务1",         // 任务名称
    "flag": 2,                   // 0=一次,1=每天,2=每周,4=每月,8=每年,16=每小时
    "year": 122,                 // 年(+1900)
    "mon": 11,                   // 月(+1)
    "day": 27,                   // 日
    "hour": 11,                  // 时
    "min": 33,                   // 分
    "action": 1,                 // 0=关闭插座,1=打开插座
    "state": 0,                  // 0=禁用,1=启用
    "week": [1,1,1,1,1,1,1],     // 星期选择(1=选中)
    "socket": [1,1,...1]         // 插口选择(1=选中)
}

2.11.3 设置单个定时任务

请求Body

{
    "set_id":0,
    "name":"一次定时",
    "flag":0,
    "year":123,
    "mon":6,
    "day":18,
    "hour":12,
    "min":0,
    "action":0,
    "state":1,
    "week":127,                  // 二进制表示星期选择
    "socket":255                 // 二进制表示插口选择
}

返回数据:返回设置后的任务配置

2.12 空调控制接口

接口路径/air_cond_ctl.json

2.12.1 获取空调参数

请求Body

{"get" : 255}

返回数据

{
    "mode": 2,                   // 0=自动,1=制冷,2=除湿,3=送风,4=制暖
    "temp": 26,                  // 温度(16~31)
    "wind_speed": 0,             // 0=自动,1=1档,2=2档,3=3档
    "wind_dire": 0,              // 0=自动摆风,1=手动摆风
    "ac_num": 33,                // 空调型号
    "update": 255                // 标志位
}

2.12.2 设置空调型号

请求Body

{
    "save": 1,
    "acNum": 34
}

返回数据:返回修改后的空调参数

2.12.3 空调控制

控制类型 请求Body 说明
模式切换 {"mode": 1} 模式循环切换(0->4->0)
温度+ {"TempU":1} 温度+1(最大31)
温度- {"TempD":1} 温度-1(最小16)
风速切换 {"WSpeed":1} 风速循环切换(0->3->0)
风向切换 {"WDire":1} 风向循环切换(0->1->0)
空调开机 {"acSwitch":255} 打开空调
空调关机 {"acSwitch":0} 关闭空调

返回数据

{
    "mode": 2,
    "temp": 26,
    "wind_speed": 0,
    "wind_dire": 0,
    "ac_num": 34,
    "update": 0                  // 0=失败,1=成功
}

2.13 触发器基础接口

接口路径/trigger_base.json

2.13.1 开关触发器(Id:1/2)

2.13.2 温度触发器(Id:3)

2.13.3 湿度/电压触发器(Id:4/5)

与温度触发器类似,回差值直接使用(不/10)

2.13.4 总电流触发器(Id:6)

2.13.5 总阻性负载触发器(Id:7)

2.14 分电流触发器接口

接口路径/trigger_each_cur.json

2.15 分阻性负载触发器接口

接口路径/trigger_each_pc.json

2.16 数据复位接口

接口路径/data_reset.json

复位类型 请求Body 返回数据
总电量清零 {"reset": 1, "claerEnergy": 1} {"update": 1}
定时任务复位 {"reset": 1, "timedTask": 1} {"update": 1}
插座设置复位 {"reset": 1, "paraSetSock": 1} {"update": 1}
触发器基础复位 {"reset": 1, "triTaskBase": 1} {"update": 1}
分电流触发器复位 {"reset": 1, "triTaskCur": 1} {"update": 1}
分阻性负载复位 {"reset": 1, "triTaskPowCos": 1} {"update": 1}
说明:返回值update=1表示成功,其他值表示失败

3. 通用错误码

返回内容 说明
{"error": "please login!"} 未登录或登录超时
{"update": 0} 操作失败
无响应 IP/Web端口修改后连接断开

总结