1. 登录设备
POST {ip地址}/login.json
用于登录PDU设备,登录成功后才能进行后续操作
请求体 (Body):
{
"login": 255, // 固定的引导
"userName": "YWRtaW4=", // 需要经过base64编码 默认是admin base64编码后是YWRtaW4=
"password": "YWRtaW4=" // 需要经过base64编码 默认是admin base64编码后是YWRtaW4=
}
返回结果:
{
"login_verif": 3, // 3 用户名密码正确登录成功 其他都是登录失败
"login_cnt": 2 // 2 登录计数
}
注意:
1. 登录成功后才能进行后面的操作,没有登录成功做后续操作会返回{"error": "please login!"}
2. 登录成功10分钟内没有数据交换,服务器将关闭登录状态,再访问就需要重新登录
1. 登录成功后才能进行后面的操作,没有登录成功做后续操作会返回{"error": "please login!"}
2. 登录成功10分钟内没有数据交换,服务器将关闭登录状态,再访问就需要重新登录
2. 登出设备
POST {ip地址}/body_head.json
用于登出PDU设备
请求体 (Body):
{
"logout": 1
}
返回结果:
{
"logout": "success!"
}
3. 插座数据与控制
POST {ip地址}/home-page.json
3.1 获取数据
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 1 - 8 根据所买插座8口 4口 等
"vol": "213.3", // 电压 单位 V
"tolCur": "0.0", // 总电流 单位 A
"tolPow": "0.0", // 总功率 单位 W
"tolEne": "1.6", // 总电量 单位 Kwh
"fre": "49.0", // 电压频率 单位 Hz
"tolCos": "0.0", // 总功率因数 %
"tempCent": "31.2", // 温度 单位 摄氏度 ℃
"tempFahr": "88.16", // 温度 单位 华氏度 ℉
"hum": "54.0", // 湿度 单位 %RH
"sock_name": ["S1", "S2", "S3", "S4"], // 插口名称 1 - 4
"socket": [1, 1, 1, 1], // 插口当前状态 1-打开 0-关闭
"sockctl_sta": [0, 0, 0, 0, 0, 0, 0, 0, 5] // 忽略,不用管
}
注意:
"tempCent": "--.-", // --.-表示没有接温湿度传感器
"tempFahr": "--.-", // --.-表示没有接温湿度传感器
"hum": "--.-", // --.-表示没有接温湿度传感器
"tempCent": "--.-", // --.-表示没有接温湿度传感器
"tempFahr": "--.-", // --.-表示没有接温湿度传感器
"hum": "--.-", // --.-表示没有接温湿度传感器
3.2 控制插座
请求体 (Body) 示例:
// 控制PDU插座全部插口,根据 sta 是0/1 控制全开/全关
{
"ctlbtn" : 255, "sta" : 0
}
// 控制PDU插座全部插口,根据 sta 是0/1 控制时序打开/时序关闭
{
"ctlbtn" : 254, "sta" : 0
}
// "ctlbtn" : 0 - 3 单独控制PDU插座 1 到 4 插口,根据 sta 是0/1 控制开/关
{
"ctlbtn" : 0, "sta" : 0
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"socket": [1, 1, 1, 1], // 插口当前状态 1-打开 0-关闭
"sockctl_sta": [0, 0, 0, 0, 0, 0, 0, 0, 5] // 忽略,不用管
}
4. 传感器数据获取
POST {ip地址}/data-display.json
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"sw_1_name": "烟雾传感器", // 开关传感器1名称
"sw_2_name": "门磁传感器", // 开关传感器2名称
"sw_ser_1": 0, // 开关传感器1状态 1-触发 0-正常
"sw_ser_2": 0, // 开关传感器2状态 1-触发 0-正常
"vol": "214.5", // 电压 单位 V
"tolCur": "0.0", // 总电流 单位 A
"tolPow": "0.0", // 总功率 单位 W
"tolEne": "1.6", // 总电量 单位 Kwh
"fre": "49.9", // 电压频率 单位 Hz
"tolCos": "0.0", // 总功率因数 %
"tempCent": "31.1", // 温度 单位 摄氏度 ℃
"tempFahr": "87.98", // 温度 单位 华氏度 ℉
"hum": "54.1", // 湿度 单位 %RH
"sock_name": ["S1", "S2", "S3", "S4"] // 插座名称 1 - 4
}
注意:
"tempCent": "--.-", // --.-表示没有接温湿度传感器
"tempFahr": "--.-", // --.-表示没有接温湿度传感器
"hum": "--.-", // --.-表示没有接温湿度传感器
"tempCent": "--.-", // --.-表示没有接温湿度传感器
"tempFahr": "--.-", // --.-表示没有接温湿度传感器
"hum": "--.-", // --.-表示没有接温湿度传感器
5. 插座参数设置
POST {ip地址}/socket_setup.json
5.1 获取所有插口数据
请求体 (Body):
{
"get": 255
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"startup": 1, // PDU 通电 或 点击时序打开时 插口打开时序 0-(1->4) 1-(4->1)
"shutdown": 0, // PDU 点击时序关闭时 插口关闭时序 0-(1->4) 1-(4->1)
"sock_name": ["S1", "S2", "S3", "S4"], // 插口名称 1 - 4
"boot_up_sta": [0, 0, 0, 0], // 开机状态 0-开 1-关 2-上一次
"startup_delay": [1, 1, 1, 1], // 开机延时间隔 单位 秒
"delay_on": [5, 5, 5, 5], // 延时打开 单位 秒
"delay_off": [5, 5, 5, 5], // 延时关闭 单位 秒
"restart_time": [5, 5, 5, 5], // 重启时间 单位 秒
"delayed_restart": [5, 5, 5, 5] // 延时重启 单位 秒
}
5.2 获取单个插口数据
请求体 (Body):
{
"get_id" : 0 // id 0-3 对应1-4口插座口信息
}
返回结果:
{
"name": "S1", // 插口名称
"bootUpSta": 0, // 开机状态 0-开 1-关 2-上一次
"startupDelay": 1, // 开机延时间隔 单位 秒
"delayOn": 5, // 延时打开 单位 秒
"delayOff": 5, // 延时关闭 单位 秒
"restartTime": 5, // 重启时间 单位 秒
"delayedRestart": 5 // 延时重启 单位 秒
}
5.3 设置单个插口数据
请求体 (Body):
{
"set_id":0, // id 0-3 对应1-4口插口信息
"name":"ups_1", // 插口名称
"bootUpSta":0, // 开机状态 0-开 1-关 2-上一次
"startupDelay":1, // 开机延时间隔 单位 秒
"delayOn":5, // 延时打开 单位 秒
"delayOff":5, // 延时关闭 单位 秒
"restartTime":10, // 重启时间 单位 秒
"delayedRestart":10 // 延时重启 单位 秒
}
返回结果:
{
"name": "ups_1", // 插口名称
"bootUpSta": 0, // 开机状态 0-开 1-关 2-上一次
"startupDelay": 1, // 开机延时间隔 单位 秒
"delayOn": 5, // 延时打开 单位 秒
"delayOff": 5, // 延时关闭 单位 秒
"restartTime": 10, // 重启时间 单位 秒
"delayedRestart": 10 // 延时重启 单位 秒
}
5.4 设置PDU时序打开/关闭数据
请求体 (Body):
{
"on_off_set": 0, // 固定设置标志
"startup": 1, // 插口打开时序 0-(1->4) 1-(4->1)
"shutdown": 0 // 插口关闭时序 0-(1->4) 1-(4->1)
}
返回结果:
{
"startup": 1,
"shutdown": 0
}
6. 设备名称设置
POST {ip地址}/device_setup.json
6.1 获取数据
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"dev_name": "我的PDU1", // PDU名称
"seg_bg": 0, // 不用管
"dev_scan": 1 // 不用管
}
6.2 设置PDU名称
请求体 (Body):
{
"updateDevName":0, // 固定更新标志
"devName":"我的PDU" // 更新的名称
}
返回结果:
{
"dev_name": "我的PDU" // PDU名称
}
7. 设备信息查询
POST {ip地址}/about.json
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"dev_name": "我的PDU", // PDU名称
"pro_model": "ESP-AG-128", // 产品型号
"dev_model": "ICGW04", // 设备型号
"dev_id": "470b8f6dc9c7c00767425359", // 设备ID
"dev_mac": "70:B8:F6:DC:9C:7F", // 设备MAC
"dev_ver": "v1.3.22", // 设备版本
"uptime": 121, // 设备启动时长 单位秒
"year": 2022, // 设备生产日期 年
"mon": 9, // 设备生产日期 月
"day": 7 // 设备生产日期 日
}
8. IP地址设置
POST {ip地址}/ip_setup.json
8.1 获取全部IP数据
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"ip4_type": 1, // ipv4模式 0-DHCP(动态分配地址) 1-Static(静态分配地址)
"ip4_ip": "192.168.1.233", // 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
}
8.2 设置IP地址
请求体 (Body):
{
"set":255, // 固定引导
"ip4_type": 1, // ipv4模式 1-Static(静态分配地址)
"ip4_ip": "192.168.1.234", // ip地址
"ip4_mask": "255.255.255.0", // 子网掩码
"ip4_gw": "192.168.1.2", // 网关
"ip4_dns1": "114.114.114.114", // 主dns
"ip4_dns2": "8.8.8.8" // 备用dns
}
返回结果:
// 成功返回
{
"msg": "success!"
}
// 失败返回 当前ip信息
注意:
IP地址修改成功后,当前访问将无响应,需要修改成对应IP地址重新登录再访问
IP地址修改成功后,当前访问将无响应,需要修改成对应IP地址重新登录再访问
9. Web端口设置
POST {ip地址}/web_setup.json
9.1 获取Web当前设置
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"type": 1, // 1-http 2-https
"http_port": 80, // http 端口 默认80
"https_port": 443 // https 端口 默认443
}
9.2 设置Web参数
请求体 (Body):
{
"set": 255, // 固定标志
"type": 1, // 1-http
"httpPort": 8080, // http 端口 8080
"httpsPort": 443 // https 端口 443
}
返回结果:
{
"type": 1,
"http_port": 8080,
"https_port": 443
}
注意:
1. 请不要随便修改PDU web设置,如果修改成https此协议将不能使用
2. 修改了其他端口(默认80),需要加上端口才能访问,如 192.168.1.86:80\web_setup.json
1. 请不要随便修改PDU web设置,如果修改成https此协议将不能使用
2. 修改了其他端口(默认80),需要加上端口才能访问,如 192.168.1.86:80\web_setup.json
10. 时间设置
POST {ip地址}/sntp_time.json
10.1 获取PDU当前时间
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"hour": 11, // 11 时
"min": 20, // 20 分
"sec": 58, // 58 秒
"wday": 3, // 星期三 0是星期日
"mon": 6, // 6+1 7月
"mday": 19, // 19日
"year": 2023 // 2023年
}
10.2 设置PDU时间
请求体 (Body):
{
"brotime": [
2023, // 2023年
6, // 7月 7-1
19, // 19日
11, // 11 时
50, // 50 分
0 // 0 秒
]
}
返回结果:
{
"hour": 11, // 11 时
"min": 50, // 50 分
"sec": 0, // 0 秒
"wday": 3, // 星期三 0是星期日
"mon": 6, // 6+1 7月
"mday": 19, // 19日
"year": 2023 // 2023年
}
11. 定时任务
POST {ip地址}/timed_task.json
11.1 获取全部数据
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"alarmMax": 20,
"name": ["定时任务1", "定时任务2", ..., "定时任务20"],
"flag": [2, 2, ..., 2],
"state": [0, 0, ..., 0],
"action": [1, 1, ..., 1],
"min": [33, 33, ..., 33],
"hour": [11, 11, ..., 11],
"mday": [27, 27, ..., 27],
"mon": [11, 11, ..., 11],
"year": [122, 122, ..., 122],
"week": [[1,1,1,1,1,1,1], ..., [1,1,1,1,1,1,1]],
"socket": [[1,1,1,1], ..., [1,1,1,1]]
}
11.2 获取单条定时器数据
请求体 (Body):
{
"get_id" : 0 // 定时器id 第几条定时器 0-19 一共20条
}
返回结果:
{
"name": "定时任务1", // 定时器名字
"flag": 2, // 0-一次 1-每天 2-每周 4-每月 8-每年 16-每小时
"year": 122, // 年 +1900 122+1900=2022年
"mon": 11, // 月 +1 11+1=12月
"day": 27, // 日 27日
"hour": 11, // 时 11时
"min": 33, // 分 33分
"action": 1, // 动作 0-关闭插座 1-打开插座
"state": 0, // 状态 0-不启用 1-启用
"week": [1, 1, 1, 1, 1, 1, 1], // 星期选择 1-选中 0-不选 第一个是星期日 然后是星期1-6
"socket": [1, 1, 1, 1] // 插口选择 1-4插口 1-选中 0-不选
}
11.3 设置单条定时器数据
请求体 (Body):
{
"set_id":0, // 定时器id 第几条定时器 0-19 一共20条
"name":"一次定时", // 修改定时器名字
"flag":0, // 0-一次 1-每天 2-每周 4-每月 8-每年 16-每小时
"year":123, // 年 -1900 2023-1900=123
"mon":6, // 月 -1 7-1=6
"day":18, // 日 18日
"hour":12, // 时 12时
"min":0, // 分 0分
"action":0, // 动作 0-关闭插座
"state":1, // 状态 1-启用这条定时器
"week":127, // 星期选择 二进制 1111111 一个二进制位代表一天 最低位代表星期日 0-127 1-选中 0-不选
"socket":255 // 插口选择 二进制 11111111 一个二进制位代表一个插口 最低位代表插口1 1-8插口 1-选中 0-不选
}
返回结果:
{
"name": "一次定时",
"flag": 0,
"year": 123,
"mon": 6,
"day": 18,
"hour": 12,
"min": 0,
"action": 0,
"state": 1,
"week": [1, 1, 1, 1, 1, 1, 1],
"socket": [0, 1, 1, 1]
}
12. 空调控制
POST {ip地址}/air_cond_ctl.json
12.1 获取PDU当前空调参数
请求体 (Body):
{
"get" : 255
}
返回结果:
{
"mode": 2, // 00:自动 01:制冷 02:除湿 03:送风 04:制暖
"temp": 26, // 温度 16~31
"wind_speed": 0, // 00=自动 01=1档 02=2档 03=3档 其余无效
"wind_dire": 0, // 00=自动摆风 01=手动摆风 其余无效
"ac_num": 33, // 空调型号文档参数,具体参考空调型号文档
"update": 255 // 255 get 标志
}
12.2 设置空调型号
请求体 (Body):
{
"save": 1, // 固定保存标志
"acNum": 34 // 设置空调型号为34
}
返回结果:
{
"mode": 2, // 00:自动 01:制冷 02:除湿 03:送风 04:制暖
"temp": 26, // 温度 16~31
"wind_speed": 0, // 00=自动 01=1档 02=2档 03=3档 其余无效
"wind_dire": 0, // 00=自动摆风 01=手动摆风 其余无效
"ac_num": 34, // 刚要设置的空调型号
"update": 254 // 254 设置空调型号 标志
}
12.3 空调控制
请求体 (Body) 示例:
// 模式切换(循环:0->4->0)
{
"mode": 1
}
// 温度加1(直到31)
{
"TempU":1
}
// 温度减1(直到16)
{
"TempD":1
}
// 风速切换(循环:0->3->0)
{
"WSpeed":1
}
// 风向切换(循环:0->1->0)
{
"WDire":1
}
// 打开空调
{
"acSwitch":255
}
// 关闭空调
{
"acSwitch":0
}
返回结果:
{
"mode": 2, // 当前模式 02:除湿
"temp": 26, // 当前温度 26℃
"wind_speed": 0, // 当前风速 00:自动
"wind_dire": 0, // 当前风向 00:自动摆风
"ac_num": 34, // 当前空调信号
"update": 0 // 0-控制发送失败,原因是没有插空调模块 1-控制成功
}
13. 触发器设置
POST {ip地址}/trigger_base.json
13.1 获取开关触发器数据
请求体 (Body):
{
"tri_base_get_id": 1 // id-1是开关触发器1 id-2是开关触发器2
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"sw_name": "烟雾传感器", // 传感器名称
"tri_action": 1, // 触发动作选择 0-无触发动作 1-关闭插口 2-打开插口
"tri_port": [1, 0, 0, 0], // 触发动作选择的控制端口 1-选择 0-不选择
"rec_action": 2, // 恢复动作选择 0-无触发动作 1-关闭插口 2-打开插口
"rec_port": [1, 0, 0, 0], // 恢复动作选择的控制端口 1-选择 0-不选择
"priority": 255 // 255-关闭 (1~8)-优先级及使能,1优先级最高,8优先级最小
}
13.2 设置开关传感器数据
请求体 (Body):
{
"tri_base_set_id": 1, // id-1是开关触发器1
"sw_name": "烟雾传感器1", // 修改的名字
"tri_action": 1, // 触发动作使能 1-关闭插口
"tri_port": 3, // 端口选择 二进制 0011 这里选择端口1和2
"rec_action": 2, // 恢复动作使能 2-打开插口
"rec_port": 3, // 端口选择 二进制 0011 这里选择端口1和2
"priority": 8 // 使能并设置优先级为8
}
返回结果:
{
"sock_nums": 4,
"sw_name": "烟雾传感器1",
"tri_action": 1,
"tri_port": [1, 1, 0, 0],
"rec_action": 2,
"rec_port": [1, 1, 0, 0],
"priority": 8
}
13.3 获取温度触发器数据
请求体 (Body):
{
"tri_base_get_id": 3 // id-3 温度触发器
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"gt_value": 30, // 大于(超温) 30℃
"gt_port": [1, 0, 0, 0], // 超温触发动作选择的控制端口 1-选择 0-不选择
"gt_tri_act": 2, // 超温触发动作选择 0-无触发动作 1-关闭插口 2-打开插口
"gt_rec_act": 1, // 恢复动作选择 0-无触发动作 1-关闭插口 2-打开插口
"lt_value": 10, // 小于(低温) 10℃
"lt_port": [1, 0, 0, 0], // 低温触发动作选择的控制端口 1-选择 0-不选择
"lt_tri_act": 2, // 低温触发动作选择 0-无触发动作 1-关闭插口 2-打开插口
"lt_rec_act": 1, // 恢复动作选择 0-无触发动作 1-关闭插口 2-打开插口
"hui_cha": 1, // 回差 用于扩大条件范围 这里是 1/10=0.1 eg.(降温模式)超过(30+0.1)℃触发打开插口1排风扇,低于(30-0.1)℃恢复关闭插口1排风扇
"priority": 1 // 255-关闭 (1~8)-优先级及使能,1优先级最高,8优先级最小
}
13.4 设置温度触发器数据
请求体 (Body):
{
"tri_base_set_id": 3, // id-3 温度感器
"gt_value": 31, // 设置超温30℃
"gt_port": 3, // 超温插口选择 二进制 0011 这里选择插口 1 2
"gt_tri_act": 2, // 触发动作 2-打开插口 (降温设备)
"gt_rec_act": 1, // 恢复动作 1-关闭插口
"lt_value": 10, // 设置低温10℃
"lt_port": 12, // 超温插口选择 二进制 1100 这里选择插口 3 4
"lt_tri_act": 2, // 触发动作 2-打开插口 (升温设备)
"lt_rec_act": 1, // 恢复动作 1-关闭插口
"hui_cha": 2, // 这里是 1/10=0.1
"priority": 6 // 8优先级最小
}
返回结果:
{
"sock_nums": 4,
"gt_value": 31,
"gt_port": [1, 1, 0, 0],
"gt_tri_act": 2,
"gt_rec_act": 1,
"lt_value": 10,
"lt_port": [0, 0, 1, 1],
"lt_tri_act": 2,
"lt_rec_act": 1,
"hui_cha": 2,
"priority": 6
}
13.5 其他触发器说明
- 湿度触发器 (id 4):类似温度触发器,回差值 hui_cha /1
- 电压触发器 (id 5):类似温度触发器,回差值 hui_cha /1
13.6 获取总电流触发器数据
请求体 (Body):
{
"tri_base_get_id": 6 // id-6 总电流
}
返回结果:
{
"sock_nums": 4, // 插座输出口个数 4
"gt_cur": 32, // 超流 32A
"gt_port": [1, 1, 1, 1], // 超流触发动作选择的控制端口 1-选择 0-不选择
"gt_act": 0, // 超流触发动作选择 0-无触发动作 1-关闭插口
"priority": 255 // 255-关闭 (1~8)-优先级及使能,1优先级最高,8优先级最小
}
13.7 设置总电流触发器数据
请求体 (Body):
{
"tri_base_set_id": 6, // id-6 超流触发器
"gt_cur": 32, // 设置超流 32A
"gt_port": 8, // 超流插口选择 二进制 1000 这里选择插口 4
"gt_act": 1, // 触发动作 1-关闭插口
"priority": 4 // 8优先级最小
}
返回结果:
{
"sock_nums": 4,
"gt_cur": 32,
"gt_port": [0, 0, 0, 1],
"gt_act": 1,
"priority": 4
}
13.8 获取总阻性负载触发器数据
请求体 (Body):
{
"tri_base_get_id": 7 // id-7 总阻性负载
}
返回结果:
{
"sock_nums":4, // 插座输出口个数 4
"gt_pow": 3233, // 超功率 5000w
"gt_cos": 100, // 超功率因数 100%
"gt_port": [0, 0, 0, 0], // 超 功率+功率因数 触发动作选择的控制端口 1-选择 0-不选择
"gt_act": 1, // 超 功率+功率因数 触发动作选择 0-无触发动作 1-关闭插口
"rec_time": 121, // 插座恢复打开时间 单位秒
"priority": 4 // 255-关闭 (1~8)-优先级及使能,1优先级最高,8优先级最小
}
13.9 设置总阻性负载触发器数据
请求体 (Body):
{
"tri_base_set_id": 7, // id-7 总阻性负载触发器
"gt_pow": 3200, // 超功率 3200w
"gt_cos": 99, // 超功率因数 99%
"gt_port": 7, // 超流插口选择 二进制 0111 这里选择插口 1,2,3
"gt_act": 1, // 触发动作 1-关闭插口
"rec_time": 120, // 触发后 插座恢复打开时间 120秒
"priority": 5 // 5优先级
}
返回结果:
{
"sock_nums": 4,
"gt_pow": 3200,
"gt_cos": 99,
"gt_port": [1, 1, 1, 0],
"gt_act": 1,
"rec_time": 120,
"priority": 5
}
14. 数据复位
POST {ip地址}/data_reset.json
14.1 总电量清零
请求体 (Body):
{
"reset": 1, // 固定标志
"claerEnergy": 1 // 1-清零电量 其他没作用
}
返回结果:
{
"update": 1 // 1-成功 其他-失败
}
14.2 定时任务复位
请求体 (Body):
{
"reset": 1, // 固定标志
"timedTask": 1 // 1-初始化 其他没作用
}
返回结果:
{
"update": 1 // 1-成功 其他-失败
}
14.3 参数设置-插座设置复位
请求体 (Body):
{
"reset": 1, // 固定标志
"paraSetSock": 1 // 1-初始化 其他没作用
}
返回结果:
{
"update": 1 // 1-成功 其他-失败
}
14.4 触发任务-基本设置复位
请求体 (Body):
{
"reset": 1, // 固定标志
"triTaskBase": 1 // 1-初始化 其他没作用
}
返回结果:
{
"update": 1 // 1-成功 其他-失败
}