实时数据转发
锦浪云(SolisCloud)支持通过通用数据转发方式获取设备实时数据,适用于高频实时数据获取场景。当 HTTP API 的限流(10次/秒)无法满足业务需求时,推荐使用此方式(无频率限制)。
适用场景
- 需要高频实时获取设备数据(秒级推送)
- HTTP API 限流无法满足业务需求
- 需要实时接收设备状态变更和告警通知
支持的协议
| 协议 | 说明 | 适用场景 |
|---|---|---|
| RocketMQ | 消息队列转发 | 高吞吐量、可靠投递 |
| MQTT | MQTT 协议转发 | IoT 场景、轻量级 |
| HTTP | HTTP 回调转发 | 简单集成、webhook 模式 |
数据转发流程
开通流程
- 联系锦浪云对接团队申请数据转发服务
- 提供转发配置信息(协议类型、接收地址等)
- 配置完成后,实时数据将推送至指定地址
注意
数据转发服务需要单独申请开通,不在 API 自助开通范围内。请联系对接团队获取配置支持。
转发数据格式
无论使用哪种转发协议,推送的消息体均为统一的 JSON 格式。每条消息以采集器为单位,包含该采集器下所有逆变器的实时数据。
数据示例
json
{
"time": 1572315457000,
"sn": "10000",
"isRealtime": 0,
"collector1": {
"collectorVer": "211",
"type": 0,
"model": "4G",
"rssiLevel": 1,
"rssi": -90,
"lat": 30000000,
"lon": 120000000,
"dataUploadCycle": 300,
"currentWorkingTime": 86400,
"totalWorkingTime": 2592000
},
"inverter1": [
{
"inverterSn": "aa08fcb5aa08fcb5",
"inverterModel": "23",
"inverterVer": "2568",
"ratedPower": 15000,
"nationalCode": "13",
"national": "GN-380L",
"inverterTemp": 14.0,
"pac": 10017,
"reactivePower": 120,
"apparentPower": 10100,
"eToday": 3765.7,
"eMonth": 92343,
"eYear": 926474,
"eTotal": 3154573,
"pv": [
{ "u": 200.0, "i": 2.0 },
{ "u": 200.0, "i": 2.0 },
{ "u": 200.0, "i": 2.0 }
],
"mppt": [
{ "u": 400.0, "i": 6.0 },
{ "u": 400.0, "i": 6.0 }
],
"ac": [
{ "u": 220.1, "i": 2.1 },
{ "u": 200.2, "i": 2.2 },
{ "u": 200.3, "i": 2.3 }
],
"fac": 50.00,
"psum": -500,
"gridPurchasedTotalEnergy": 1200.5,
"gridSellTotalEnergy": 800.3,
"batteryPower": 0,
"batteryState": 0,
"batteryHealthSoh": 98.5,
"batteryCapacitySoc": 85.0,
"familyLoadPower": 3500,
"bypassLoadPower": 0,
"homeLoadTodayEnergy": 12.5,
"homeLoadTotalEnergy": 3650.0,
"state": "1245",
"subState": 0,
"alarmCn": "",
"alarmEn": ""
}
]
}数据字段说明
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
| time | Long | 数据时间戳(毫秒) |
| sn | String | 采集器 SN |
| isRealtime | Integer | 是否实时数据:0 = 实时,1 = 历史补传 |
采集器信息(collector1)
| 字段 | 类型 | 说明 |
|---|---|---|
| collectorVer | String | 采集器固件版本 |
| type | Integer | 采集器连接类型:1=GPRS,2=WIFI |
| model | String | 采集器型号:GPRS / WIFI / 4G / LAN / W4G 等 |
| rssiLevel | Integer | 信号强度等级(1-5) |
| rssi | Integer | 信号值:GPRS 为 1~31,WIFI 为 -20~-100 |
| lat | Integer | 纬度(乘以 0.000001 为实际值) |
| lon | Integer | 经度(乘以 0.000001 为实际值) |
| dataUploadCycle | Integer | 数据上报周期(秒) |
| currentWorkingTime | Long | 当次运行时长(秒) |
| totalWorkingTime | Long | 累计运行时长(秒) |
逆变器信息(inverter1 数组)
每台逆变器为一个对象,包含以下字段:
基本信息
| 字段 | 类型 | 说明 |
|---|---|---|
| inverterSn | String | 逆变器 SN |
| inverterModel | String | 逆变器型号编码 |
| inverterVer | String | 逆变器固件版本 |
| ratedPower | Double | 额定功率(W) |
| nationalCode | String | 国家标准代码 |
| national | String | 国家标准名称 |
| inverterTemp | Double | 逆变器温度(℃) |
发电侧
| 字段 | 类型 | 说明 |
|---|---|---|
| pac | Double | 逆变器实时功率(W) |
| reactivePower | Double | 无功功率(Var) |
| apparentPower | Double | 视在功率(VA) |
| eToday | Double | 今日发电量(kWh) |
| eMonth | Double | 本月发电量(kWh) |
| eYear | Double | 本年发电量(kWh) |
| eTotal | Double | 累计发电量(kWh) |
直流侧(pv 数组)
| 字段 | 类型 | 说明 |
|---|---|---|
| u | Double | 直流电压(V) |
| i | Double | 直流电流(A) |
MPPT 数据(mppt 数组)
| 字段 | 类型 | 说明 |
|---|---|---|
| u | Double | MPPT 电压(V) |
| i | Double | MPPT 电流(A) |
交流侧(ac 数组)
| 字段 | 类型 | 说明 |
|---|---|---|
| u | Double | 交流电压(V) |
| i | Double | 交流电流(A) |
| fac | Double | 电网频率(Hz) |
电网侧
| 字段 | 类型 | 说明 |
|---|---|---|
| psum | Double | 电网总功率(W),正值=售电,负值=购电 |
| gridPurchasedTotalEnergy | Double | 电网累计购电量(kWh) |
| gridSellTotalEnergy | Double | 电网累计售电量(kWh) |
电池侧
| 字段 | 类型 | 说明 |
|---|---|---|
| batteryPower | Double | 电池功率(W),正值=充电,负值=放电 |
| batteryState | Integer | 电池状态:0=正常,1=离线,2=故障 |
| batteryHealthSoh | Double | 电池健康度 SOH(%) |
| batteryCapacitySoc | Double | 电池电量 SOC(%) |
| batteryList | Array | 多电池列表(每项含上述电池字段) |
负载侧
| 字段 | 类型 | 说明 |
|---|---|---|
| familyLoadPower | Double | 家庭负载功率(W) |
| bypassLoadPower | Double | 旁路负载功率(W) |
| homeLoadTodayEnergy | Double | 今日负载用电量(kWh) |
| homeLoadTotalEnergy | Double | 累计负载用电量(kWh) |
逆变器状态
| 字段 | 类型 | 说明 |
|---|---|---|
| state | String | 逆变器状态码(十进制),详见下方说明 |
| subState | Integer | 子状态 |
| alarmCn | String | 中文告警信息(仅告警时有值) |
| alarmEn | String | 英文告警信息(仅告警时有值) |
状态码判断
state 十进制值大于 4100(十六进制大于 1004)表示逆变器告警。常见告警码:
| 状态码(十六进制) | 含义 |
|---|---|
| 1004H | 控制离网 |
| 1010H | 电网过压 |
| 1011H | 电网欠压 |
| 1012H | 电网过频 |
| 1013H | 电网欠频 |
| 1015H | 无电网 |
| 1020H | 直流过压 |
| 1032H | 过温保护 |
| 1033H | PV 绝缘故障 |
| 1034H | 漏电流保护 |
| 2010H | Fail Safe |
| 2011H | 电表通信故障 |
| 2012H | 电池通信故障 |
协议配置要求
RocketMQ 配置
| 参数 | 必填 | 说明 |
|---|---|---|
| namesrvAddr | 是 | RocketMQ NameServer 地址 |
| topic | 是 | 消息主题 |
| consumerGroup | 是 | 消费者组 |
| accessKey | 否 | 访问密钥(启用 ACL 时必填) |
| secretKey | 否 | 密钥(启用 ACL 时必填) |
RocketMQ 接入建议
- 建议使用 集群消费模式,确保消息不丢失
- 消费者需做好幂等处理,防止重复消费
- 建议设置合理的消费超时时间(默认 30 秒)
MQTT 配置
| 参数 | 必填 | 说明 |
|---|---|---|
| brokerUrl | 是 | MQTT Broker 地址 |
| topic | 是 | 订阅主题 |
| clientId | 是 | 客户端 ID(需唯一) |
| username | 否 | 用户名 |
| password | 否 | 密码 |
MQTT 接入建议
- 建议使用 QoS 1(至少一次送达)
- clientId 需保持唯一,重复连接会导致互踢
- 建议实现自动重连机制
HTTP 回调配置
| 参数 | 必填 | 说明 |
|---|---|---|
| callbackUrl | 是 | HTTP 回调地址(需公网可达) |
| method | 否 | 请求方式,固定为 POST |
| headers | 否 | 自定义请求头(可用于鉴权) |
HTTP 回调接入建议
- 回调地址需支持 HTTPS
- 接收方需在 5 秒内 返回 HTTP 200,否则视为推送失败
- 推送失败后会自动重试(最多 3 次)
- 建议实现签名验证,确保请求来源合法
数据推送频率
| 项目 | 说明 |
|---|---|
| 推送频率 | 跟随设备上报频率,通常为 秒级 |
| 频率限制 | 无限制 |
| 消息顺序 | 同一设备的消息按时间顺序推送 |
| 消息可靠性 | RocketMQ/MQTT 保证至少一次送达;HTTP 失败后重试 |
常见问题
转发数据和 HTTP API 查询的数据有什么区别?
| 对比项 | HTTP API | 实时数据转发 |
|---|---|---|
| 数据更新频率 | 5 分钟 | 秒级 |
| 调用方式 | 主动拉取 | 被动推送 |
| 频率限制 | 10 次/秒 | 无限制 |
| 适用场景 | 低频查询、报表统计 | 实时监控、高频分析 |
如何判断收到的数据是实时数据还是历史补传?
检查顶层字段 isRealtime:
0= 实时数据1= 历史补传数据(设备离线恢复后会补传离线期间的数据)
转发数据中缺少某些字段怎么办?
不同设备类型支持的字段不同:
- 并网逆变器:无电池相关字段(batteryPower、batteryCapacitySoc 等)
- 储能逆变器:包含完整字段
- 采集器型号较旧:可能缺少 MPPT 数据
建议根据 inverterModel 判断设备类型,动态解析字段。
