Skip to content

设备控制 API(用户授权)

设备控制 API 提供对逆变器的远程控制和参数读取功能。适用面向云平台用户授权方式,使用自定义 HMAC-SHA1 签名认证。

适用授权方式:面向云平台用户授权

与第三方授权版本的区别

  • 面向云平台用户授权:使用自定义 HMAC-SHA1 签名,接口路径前缀 /v2/api/
  • 设备控制(第三方授权):面向第三方平台,使用 OAuth2.0,接口路径前缀 /api/control_device/

API 基础信息

项目说明
API 基础地址https://www.soliscloud.com:13333/
请求方式POST

认证方式

所有接口请求使用自定义 HMAC-SHA1 签名认证。认证方式详见 面向云平台用户授权

请求头格式:

Content-MD5: [Content-MD5]
Content-Type: application/json;charset=UTF-8
Date: [Date]
Authorization: API {apiId}:{sign}

Sign 计算方式:

Sign = base64(HmacSHA1(apiSecret, "POST\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedResource))

逆变器寄存器通信协议

设备控制接口中的寄存器地址和指令参数,请参考以下协议文档:

  • 并网逆变器:请联系销售获取
  • 储能逆变器:请联系销售获取

通用响应格式

json
{
  "success": true,
  "code": "0",
  "msg": "success",
  "data": {}
}
字段类型说明
successBooleantrue=成功,false=失败
codeString0=成功,其他为失败码
msgStringcode 的文字描述
dataObject各接口返回数据,详见各接口说明

接口概览

远程控制单台逆变器 — /v2/api/control

对单台或多台逆变器下发控制指令,支持所有 Solis 设备。

限流:2 次/秒

请求参数

参数类型必填说明
inverterSnString三选一逆变器 SN,多台用英文逗号分隔
plantIdString三选一电站编码,可从电站相关查询接口或数据转发中获取
nmiCodeString三选一澳洲发电户号(NMI),澳大利亚地区专用
atCommandString否(与 modbusAddr 二选一)AT 指令透传字符串。如 AT+TEST=GIN485:01 06 0B BE 00 BE
modbusAddrNumber / String否(与 atCommand 二选一)Modbus 寄存器地址,需配合 value 和 functionCode 使用
functionCodeString否(传 modbusAddr 时必填)Modbus 功能码,可选值:03(读取保持寄存器)、04(读取输入寄存器)、06(写入单个寄存器),与 modbusAddr 配套使用
valueString否(传 modbusAddr 时必填)设置值,需配合 modbusAddr 使用

设备定位(三选一必填)

  • inverterSn:逆变器 SN,直接指定设备
  • plantId:电站编码,可从电站相关查询接口或数据转发中获取
  • nmiCode:澳洲发电户号(NMI),澳大利亚地区专用

控制方式(二选一必填)

  1. atCommand:直接透传 AT 指令字符串
  2. modbusAddr + value:直接指定 Modbus 寄存器地址和设置值

请求示例 — 方式 1:AT 指令透传

bash
curl -X POST "https://{API_DOMAIN}:13333/v2/api/control" \
  -H "Content-MD5: {Content-MD5}" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -H "Date: {Date}" \
  -H "Authorization: API {apiId}:{sign}" \
  -d '{
    "inverterSn": "380205022C190102",
    "atCommand": "AT+TEST=GIN485:01 06 0B BE 00 BE"
  }'

请求示例 — 方式 2:modbusAddr + value

bash
curl -X POST "https://{API_DOMAIN}:13333/v2/api/control" \
  -H "Content-MD5: {Content-MD5}" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -H "Date: {Date}" \
  -H "Authorization: API {apiId}:{sign}" \
  -d '{
    "inverterSn": "380205022C190102",
    "modbusAddr": 48,
    "functionCode": "06",
    "value": "190"
  }'

响应参数

字段类型说明
codeString0=成功,其他为失败码
msgString结果描述
timeLong返回时间戳
dataArray控制结果列表

data 元素字段

字段类型说明
msgString单台设备结果描述
codeInteger单台设备结果码
recvString接收到的报文
commandString发送的 AT 指令

响应示例

json
{
  "code": "0",
  "data": [
    {
      "msg": "380205022C190102  Time: 1688744454...",
      "code": 0,
      "recv": "01060BBE00BE6BBA",
      "command": "AT+TEST=GIN485:01 06 0b be 00 be 6b ba"
    }
  ],
  "time": "1688715605600"
}

读取多设备参数值 — /v2/api/atRead

异步读取单台或多台逆变器的当前参数值,返回 orderId 用于后续查询结果。

限流:2 次/秒

请求参数

参数类型必填说明
inverterSnString三选一逆变器 SN,多台用英文逗号分隔
plantIdString三选一电站编码,可从电站相关查询接口或数据转发中获取
nmiCodeString三选一澳洲发电户号(NMI),澳大利亚地区专用,多台用英文逗号分隔
modbusAddrNumber / StringModbus 寄存器地址
functionCodeStringModbus 功能码,可选值:03(读取保持寄存器)、04(读取输入寄存器),与 modbusAddr 配套使用,不传默认为 03

设备定位(三选一必填)

  • inverterSn:逆变器 SN,直接指定设备
  • plantId:电站编码,可从电站相关查询接口或数据转发中获取
  • nmiCode:澳洲发电户号(NMI),澳大利亚地区专用

请求示例

bash
curl -X POST "https://{API_DOMAIN}:13333/v2/api/atRead" \
  -H "Content-MD5: {Content-MD5}" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -H "Date: {Date}" \
  -H "Authorization: API {apiId}:{sign}" \
  -d '{
    "inverterSn": "380205022C190102",
    "modbusAddr": "142"
  }'

响应参数

字段类型说明
codeString0=成功,其他为失败码
msgString结果描述
orderIdString异步指令订单 ID,通过 /v2/api/result 接口查询结果。若未返回此字段,说明无需调用 result 接口
timeString时间戳

响应示例

json
{
  "msg": "success",
  "code": "0",
  "data": {
    "msg": "1",
    "yuanzhi": "-16143",
    "command": "AT+TEST=GIN485:01 03 a8 66 00 01 44 75",
    "needLoop": "false"
  },
  "orderId": "1688715608012_769",
  "time": "1688715608012"
}

注意

本接口为异步接口。返回 orderId 后,使用 /v2/api/result 接口查询实际读取结果。若响应中未返回 orderId,说明无需调用 result 接口。


通过订单 ID 获取结果 — /v2/api/result

通过 orderId 获取 AT 指令执行结果。

限流:2 次/秒

请求参数

参数类型必填说明
orderIdString指定 orderId 查询结果详情

请求示例

bash
curl -X POST "https://{API_DOMAIN}:13333/v2/api/result" \
  -H "Content-MD5: {Content-MD5}" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -H "Date: {Date}" \
  -H "Authorization: API {apiId}:{sign}" \
  -d '{"orderId": "1688715608012_769"}'

响应参数

字段类型说明
codeInteger0=成功,其他为失败码
msgString结果描述
dataArray结果数据列表

data 元素字段

字段类型说明
nmiCodeStringnmi 码
successNumString成功设备数量
notChangeNumString未变化设备数量
detailArray详情列表,包含 sn 和 time
errorMsgString错误消息

响应示例

json
{
  "success": true,
  "code": "0",
  "msg": "success",
  "data": [
    {
      "nmiCode": "20025543400",
      "successNum": "1",
      "notChangeNum": "0",
      "detail": [{ "sn": "380205022C190102", "time": 1688715608012 }],
      "errorMsg": ""
    }
  ]
}

附录

附录1 返回状态码

返回值描述
0成功
1失败
Z0001登录已过期,请重新登录
Z0002Content MD5 不正确
403无权限
429请求频率过高
I0013账号或密码错误,请重新输入
B0020验证码错误
I0012账号或密码错误,请重新输入
B0053该账号已绑定第三方账号
R0004该功能仅向部分客户开放,请联系售后
B0107采集器型号暂不支持此功能
B0089设备不属于该电站
B0063设备三要素未入库
B0115发送失败
B0124设备 SN 不存在
B0157请求时间超过五分钟
R0000无权限

附录2 寄存器地址参考

逆变器寄存器地址请参考通信协议文档(见页面顶部「逆变器寄存器通信协议」章节)。


错误码参考

接口返回的 code 错误码及说明请参考 错误码