能控云平台提供的 MQTT 数据转发服务(Data Message Service,简称 DMS)是能控云自建的 MQTT 服务端,为第三方平台提供一条云端数据转发通道,使其可通过订阅主题实时同步逆变器 / 储能设备数据。本文档涵盖:DMS 服务说明、名称解析、主题订阅规则、连接示例(MQTTX 与 Java Paho),以及数据转发模型——设备基本数据(上电传输一次)与设备监控数据(间隔传输)及其完整字段表。
能控云平台提供云端数据转发的通道,以便第三方平台可以同步逆变器设备的数据。本文主要介绍数据转发的方法和数据解析的格式。
MQTT —— 一种基于客户端/服务器(发布/订阅)模式的轻量级消息传输协议。
JSON —— 一种轻量级的数据交换格式。
本文档描述的内容因为版本更新,可能和实际使用有些不同。我们将会不定期更新文档,如果在使用中遇到问题,请联系我们。
数据消息服务(Data Message Service,简称 DMS),是能控云平台自建的 MQTT 服务端;是一种高效、可靠、安全、便捷的消息服务。DMS 能够帮助应用开发者在他们的应用中快速集成消息能力,轻松实现设备数据的可靠转发与同步。
| 名称 | 说明 |
|---|---|
| topic | 用于订阅和发布消息的标识 |
| client id | 建立连接专属标记符,全局唯一 |
| username | 建立连接需要的用户名 |
| password | 建立连接需要的密码 |
第三方平台需通过 MQTT 客户端与服务端建立连接,并订阅相应的主题。连接所需的 url、topic、client id、username、password 由能控云平台提供。
平台按第三方账号分配推送主题(topic),第三方账号与设备在开放平台完成绑定后,设备数据将推送至对应主题。主题规则如下:
示例通过 MQTTX 客户端与服务端进行连接,具体的连接信息需与能控云平台联系获取。
| 参数说明 | 说明 | 示例 |
|---|---|---|
| 服务器地址 | MQTT 服务端(DMS)地址,由能控云平台提供 | 平台提供 |
| 端口 | 默认 8091,支持 MQTT over TCP 及 SSL,SSL 端口以平台提供为准 | 8091 |
| 协议版本 | MQTT 3.1 / 3.1.1 | 3.1.1 |
| client id | 平台分配的 mqttId,全局唯一;同一 clientId 重复连接时新连接会抢占旧连接 | mqttId |
| username | 平台分配的 keyId | keyId |
| password | 平台分配的 keySecret | keySecret |
| Keep Alive | 心跳保活时间(秒),建议 60;服务端按 1.5 倍 Keep Alive 判断连接超时 | 60 |
| Clean Session | 建议 true;断线重连后需重新发起订阅 | true |
| 订阅 QoS | 平台以 QoS 1(至少一次)推送,订阅建议使用 QoS 1 | 1 |
String broker = "tcp://<url>:8091";
String clientId = "<mqttId>";
MqttClient client = new MqttClient(broker, clientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName("<keyId>");
options.setPassword("<keySecret>".toCharArray());
options.setKeepAliveInterval(60);
options.setCleanSession(true);
client.setCallback(new MqttCallbackExtended() {
@Override
public void messageArrived(String topic, MqttMessage message) {
String json = new String(message.getPayload(), StandardCharsets.UTF_8);
// 处理推送数据, 建议按 msgId 做幂等去重
}
// 其余回调方法按需实现 connectionLost / deliveryComplete / connectComplete
});
client.connect(options);
client.subscribe("<topic>", 1);
| 字段名 | 必选 | 类型 | 说明 | 单位 |
|---|---|---|---|---|
| wifiSn | 是 | string | 采集器sn | |
| deviceSn | 是 | string | 设备sn | |
| nowTime | 是 | string | 传输时间 | |
| type | 是 | string | 传输类型 1-设备额定数据 2-设备监控数据 | |
| systemTimestamp | 是 | long | 数据采集器系统时间戳(GMT+8) | |
| plantTimestamp | 是 | long | 数据采集器电站时间戳(电站时区) | |
| topic | 是 | string | 当前主题 | |
| deviceType | 是 | int | 设备类型编码 | |
| data | 是 | object | 数据实体(数据模型) | |
| msgId | 否 | string | 消息唯一标识(UUID,32位),用于消息幂等去重 | |
| datalogVersion | 否 | string | 采集器软件版本号 |
| 字段名 | 必选 | 类型 | 说明 | 单位 |
|---|---|---|---|---|
| wifiSn | 是 | string | 采集器sn | |
| deviceSn | 是 | string | 设备sn | |
| nowTime | 是 | string | 传输时间 | |
| type | 是 | string | 传输类型 1-设备额定数据 2-设备监控数据 | |
| systemTimestamp | 是 | long | 数据采集器系统时间戳(GMT+8) | |
| plantTimestamp | 是 | long | 数据采集器电站时间戳(电站时区) | |
| topic | 是 | string | 当前主题 | |
| deviceType | 是 | int | 设备类型编码 | |
| data | 是 | object | 数据实体(数据模型) | |
| msgId | 否 | string | 消息唯一标识(UUID,32位),用于消息幂等去重 | |
| datalogVersion | 否 | string | 采集器软件版本号 |
data 为数据实体,不同传输类型(type)对应不同的字段结构。以下字段基于开放平台通用数据模型(逆变器/储能类设备),不同设备类型字段可能存在差异,具体以设备实际上报数据为准。
| 字段名 | 必选 | 类型 | 说明 | 单位 |
|---|---|---|---|---|
| deviceType | 是 | Integer | 产品类型 0(控制器,家用) 1(控制器,路灯) 3(逆变器) 4(控逆一体机) 5(工频离网) | |
| deviceModel | 是 | String | 设备型号 | |
| deviceSoftwareCPU1 | 是 | String | 软件版本号1 | |
| deviceHardwareControl | 是 | String | 控制板版本 | |
| deviceAddress | 是 | String | Rs485地址 | |
| modelCode | 是 | String | 机型编码 | |
| protocolVn | 是 | String | RS485协议版本 | |
| originCode | 是 | Integer | 产地编号 | |
| maxCurrent | 是 | Float | 最大电流 | A |
| batteryVoltage | 是 | Float | 电池额定电压 | V |
| batteryType | 是 | Integer | 蓄电池类型 0 : User define 1 : SLD 2 : FLD 3 : GEL 4: Lithinum iron phosphate x 14 5: Lithinum iron phosphate x 15 6: Lithinum iron phosphate x 16 7: Lithinum iron phosphate x 7 8: Lithinum iron phosphate x 8 9: Lithinum iron phosphate x 9 10: Ternary lithium x 7 11: Ternary lithium x 8 13: Ternary lithium x 13 14: Ternary lithium x 14 | |
| overVoltage | 是 | Float | 超压电压(电池充电过压保护点) | V |
| chargingLimitVoltage | 是 | Float | 充电限制电压 | V |
| equalizingChargingVoltage | 是 | Float | 均衡充电电压 | V |
| OverChargeVoltage | 是 | Float | 提升充电电压 | V |
| OverChargeReturnVoltage | 是 | Float | 浮充充电电压 | V |
| increaseChargeReturnVoltage | 是 | Float | 提升充电返回电压 | V |
| overdisChargeReturnVoltage | 是 | Float | 过放返回电压 | V |
| underWarningVoltage | 是 | Float | 欠压警告电压 | V |
| overdisChargeVoltage | 是 | Float | 过放电压 | V |
| disChargeLimitVoltage | 是 | Float | 放电限制电压 | V |
| dischargeDelayTime | 是 | Float | 过放延时时间 | S |
| equalizingChargeTime | 是 | Float | 均衡充电时间 | Min |
| increaseChargeTime | 是 | Float | 提升充电时间 | Min |
| equalizingChargeInterval | 是 | Float | 均衡充电间隔 | D |
| mainsSwitchVoltage | 是 | Float | 市电切换电压 | V |
| swichInvVoltage | 是 | Float | 逆变切换电压 | V |
| balancedChargingTimeout | 是 | Integer | 均衡充电超时时间 | Min |
| parallelMode | 是 | Integer | 并机模式 0:单机 1:单相并机 2:两相并机 3:两相并机120 4:两相并机180 5:三相A 6:三相B 7:三相C | |
| outputPriority | 是 | Integer | 输出优先级 0:solar 1:line 2:sbu | |
| ChargingCurrent | 是 | Float | 市电充电电流限制 | A |
| equalizingChargingEnable | 是 | String | 均衡充电使能 | |
| outputVoltage | 是 | Float | 输出电压 | V |
| outputFrequency | 是 | Float | 输出频率 | Hz |
| maxChargingCurrent | 是 | Float | 最大充电电流 | A |
| ACInputRange | 是 | Integer | AC输入范围 0:宽范围(APL) 1:窄范围(UPS) | |
| energySavingMode | 是 | Integer | 节能模式 0:禁止 1:使能 | |
| overloadAutomaticRestart | 是 | Integer | 过载自动重启 0:禁止 1:使能 | |
| overTemperatureSutomaticRestart | 是 | Integer | 过温自动重启 0:禁止 1:使能 | |
| chargingPriority | 是 | Integer | 充电优先级 0:光伏优先,仅光伏无效的时候才启动市电充电 1:市电优先,仅市电无效的时候才启动光伏充电 2:混合模式,市电和光伏同时充电,优先光伏。 3:仅光伏,市电不充电。 | |
| alarmControl | 是 | Integer | 告警控制 0:禁止 1:使能 | |
| alarmEnable | 是 | Integer | 输入源中断时告警使能 0:禁止 1:使能 | |
| overloadBypassEnable | 是 | Integer | 过载旁路使能 0:禁止 1:使能 | |
| splitPhaseTransformer | 是 | Integer | 分相变压器使能 0:禁止 1:使能 | |
| BMSEnable | 是 | Integer | BMS使能 0:禁止 1:使能 | |
| BMSProtocol | 是 | Integer | BMS协议 |
| 字段名 | 必选 | 类型 | 说明 | 单位 |
|---|---|---|---|---|
| batElectricitySoc | 是 | Float | 蓄电池电量SOC | % |
| batVoltage | 是 | Float | 蓄电池电压 | V |
| batCurrent | 是 | Float | 电池电流 | A |
| solarVoltage | 是 | Float | 太阳能板电压 | V |
| solarCurrent | 是 | Float | 太阳能板电流 | A |
| solarPower | 是 | Float | 太阳能板功率 | W |
| status | 是 | Integer | 负载状态和充电状态 0: Chgarge off 1: Quik charge 2: Const voltage charge 4: Float charge 5: Reserved 6: Li battery acitvate 7: Reserved | |
| chargingPower | 是 | Float | 充电功率 | W |
| faultCodeStr | 是 | String | 多个故障码(逗号分割) | |
| nowTimeStr | 是 | String | 机器时间 | |
| machineStatus | 是 | Integer | 机器状态 0:上电延时 1:等待状态 2:初始化 3:软启动 4:市电运行 5:逆变运行 6:逆变转市电 7:市电转逆变 8:电池激活 9:人工关机 10:故障 | |
| busVoltage | 是 | Float | 母线电压 | V |
| gridVoltage | 是 | Float | 电网电压 | V |
| gridCurrent | 是 | Float | 电网电流 | A |
| gridFrequency | 是 | Float | 电网频率 | Hz |
| inverterVoltage | 是 | Float | 逆变电压 | V |
| inverterCurrent | 是 | Float | 逆变电流 | A |
| inverterFrequency | 是 | Float | 逆变频率 | Hz |
| loadCurrent | 是 | Float | 负载电流 | A |
| loadActivePower | 是 | Float | 负载有功功率 | W |
| loadApparentPower | 是 | Float | 负载视在功率 | VA |
| mainsChargingCurrent | 是 | Float | 市电充电电流 | A |
| loadRate | 是 | Float | 负载率 | % |
| heatSinkTemA | 是 | Float | PV散热器温度 | °C |
| heatSinkTemB | 是 | Float | 逆变散热器温度 | °C |
| heatSinkTemC | 是 | Float | 变压器温度 | °C |
| pvChargingCurrent | 是 | Float | PV充电电流 | A |
| todayChargeBat | 是 | Float | 电池当天充电安时数 | AH |
| todayDischargeBat | 是 | Float | 电池当天放电安时数 | AH |
| todayElectricityPV | 是 | Float | 当天PV发电量 | kWh |
| todayUsedEnergyLoad | 是 | Float | 负载当天用电量 | kWh |
| totalRunningDay | 是 | Integer | 总运行天数 | D |
| cumulateChargeHoursBat | 是 | String | 蓄电池累计充电安时数 | AH |
| cumulateDischargeHoursBat | 是 | String | 蓄电池累计放电安时数 | AH |
| cumulateElectricityPV | 是 | String | PV累计发电量 | kWh |
| cumulateUsedChargeLoad | 是 | String | 负载累计用电量 | kWh |
| TodayChargeMains | 是 | Integer | 市电当天充电电量 | AH |
| TodayConsumeChargeLoadTOMains | 是 | Float | 负载当天从市电消耗电量 | kWh |
| todayWorkInverter | 是 | Integer | 逆变当天工作时间 | kWh |
| todayWorkBypass | 是 | Integer | 旁路当天工作时间 | kWh |