AECC MQTT Data Forwarding (Data Message Service, DMS) is the cloud-hosted MQTT broker built by the AECC Cloud Platform. It gives third-party platforms a cloud-side channel to subscribe to topics and synchronize inverter / energy-storage device data in real time. This guide covers the DMS overview, name resolution, topic subscription rules, a connection example (MQTTX & Java Paho), and the data forwarding models — Basic Device Data (sent once on power-on) and Device Monitoring Data (sent at intervals) — with their full field tables.
The AECC Cloud Platform provides a cloud-side data forwarding channel so that third-party platforms can synchronize inverter device data. This document mainly introduces the data forwarding method and the data parsing format.
MQTT —— a lightweight message transport protocol based on a client/server publish/subscribe model.
JSON —— a lightweight data interchange format.
The content described in this document may differ slightly from actual usage due to version updates. We update this document periodically; if you encounter any problems during use, please contact us.
Data Message Service (DMS) is an MQTT server built by the AECC Cloud Platform; it is an efficient, reliable, secure and convenient messaging service. DMS helps application developers quickly integrate messaging capabilities into their applications and easily achieve reliable forwarding and synchronization of device data.
| Name | Description |
|---|---|
| topic | Identifier used for subscribing to and publishing messages |
| client id | Connection-specific identifier, globally unique |
| username | Username required to establish the connection |
| password | Password required to establish the connection |
The third-party platform must establish a connection with the server via an MQTT client and subscribe to the corresponding topic. The required url, topic, client id, username and password are provided by the AECC Cloud Platform.
The platform assigns push topics based on the third-party account. After the third-party account and device are bound on the open platform, device data is pushed to the corresponding topic. The topic rules are as follows:
The example connects to the server through the MQTTX client; the specific connection information needs to be obtained by contacting the AECC Cloud Platform.
| Parameter | Explanation | Example |
|---|---|---|
| server address | MQTT server (DMS) address, provided by AECC Cloud Platform | The platform provides |
| port | Default 8091, supports MQTT over TCP and SSL; the SSL port is subject to the platform | 8091 |
| protocol version | MQTT 3.1 / 3.1.1 | 3.1.1 |
| client id | The mqttId assigned by the platform is globally unique; when the same client ID reconnects, the new connection preempts the old one | mqttId |
| username | KeyId allocated by the platform | keyId |
| password | KeySecret allocated by the platform | keySecret |
| Keep Alive | Heartbeat keep-alive interval (seconds), recommended 60; the server judges connection timeout at 1.5x Keep Alive | 60 |
| Clean Session | Recommended true; after a disconnect/reconnect a new subscription must be initiated | true |
| Subscription QoS | The platform pushes with QoS 1 (at least once); QoS 1 is recommended for subscriptions | 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);
// To process push data, it is recommended to use msgId for idempotent deduplication
}
// Implement other callbacks as needed: connectionLost / deliveryComplete / connectComplete
});
client.connect(options);
client.subscribe("<topic>", 1);
| Field Name | Required | Type | Description | Unit |
|---|---|---|---|---|
| wifiSn | yes | string | Wifi SN (collector serial number) | |
| deviceSn | yes | string | Device sn | |
| nowTime | yes | string | Transmission time | |
| type | yes | string | Transmission type: 1 - Device rated data, 2 - Device monitoring data | |
| systemTimestamp | yes | long | Data collector system timestamp (GMT+8) | |
| plantTimestamp | yes | long | Data collector power station timestamp (plant time zone) | |
| topic | yes | string | Current topic | |
| deviceType | yes | int | Device type code | |
| data | yes | object | Data Entity (Data Model) | |
| msgId | no | string | Message unique identifier (UUID, 32-bit), used for idempotent deduplication | |
| datalogVersion | no | string | Collector software version number |
| Field Name | Required | Type | Description | Unit |
|---|---|---|---|---|
| wifiSn | yes | string | Wifi SN (collector serial number) | |
| deviceSn | yes | string | Device sn | |
| nowTime | yes | string | Transmission time | |
| type | yes | string | Transmission type: 1 - Device rated data, 2 - Device monitoring data | |
| systemTimestamp | yes | long | Data collector system timestamp (GMT+8) | |
| plantTimestamp | yes | long | Data collector power station timestamp (plant time zone) | |
| topic | yes | string | Current topic | |
| deviceType | yes | int | Device type code | |
| data | yes | object | Data Entity (Data Model) | |
| msgId | no | string | Message unique identifier (UUID, 32-bit), used for idempotent deduplication | |
| datalogVersion | no | string | Collector software version number |
data is the data entity; different transmission types (type) correspond to different field structures. The fields below are based on the open-platform generic data model (inverter / energy-storage devices); fields may differ across device types — refer to the actual device report for the authoritative field set.
| Field | Required | Type | Description | Unit |
|---|---|---|---|---|
| deviceType | yes | Integer | Product type 0 (controller, residential) 1 (controller, streetlight) 3 (inverter) 4 (hybrid inverter) 5 (work-frequency off-grid) | |
| deviceModel | yes | String | Device model | |
| deviceSoftwareCPU1 | yes | String | Software version 1 | |
| deviceHardwareControl | yes | String | Control board version | |
| deviceAddress | yes | String | RS485 address | |
| modelCode | yes | String | Model code | |
| protocolVn | yes | String | RS485 protocol version | |
| originCode | yes | Integer | Origin code | |
| maxCurrent | yes | Float | Maximum current | A |
| batteryVoltage | yes | Float | Battery rated voltage | V |
| batteryType | yes | Integer | Battery type 0: User define 1: SLD 2: FLD 3: GEL 4: Lithium iron phosphate x14 5: Lithium iron phosphate x15 6: Lithium iron phosphate x16 7: Lithium iron phosphate x7 8: Lithium iron phosphate x8 9: Lithium iron phosphate x9 10: Ternary lithium x7 11: Ternary lithium x8 13: Ternary lithium x13 14: Ternary lithium x14 | |
| overVoltage | yes | Float | Over-voltage (battery charge over-voltage protection point) | V |
| chargingLimitVoltage | yes | Float | Charge limit voltage | V |
| equalizingChargingVoltage | yes | Float | Equalize charge voltage | V |
| OverChargeVoltage | yes | Float | Boost charge voltage | V |
| OverChargeReturnVoltage | yes | Float | Float charge voltage | V |
| increaseChargeReturnVoltage | yes | Float | Boost charge return voltage | V |
| overdisChargeReturnVoltage | yes | Float | Over-discharge return voltage | V |
| underWarningVoltage | yes | Float | Under-voltage warning voltage | V |
| overdisChargeVoltage | yes | Float | Over-discharge voltage | V |
| disChargeLimitVoltage | yes | Float | Discharge limit voltage | V |
| dischargeDelayTime | yes | Float | Over-discharge delay time | S |
| equalizingChargeTime | yes | Float | Equalize charge time | Min |
| increaseChargeTime | yes | Float | Boost charge time | Min |
| equalizingChargeInterval | yes | Float | Equalize charge interval | D |
| mainsSwitchVoltage | yes | Float | Mains switch voltage | V |
| swichInvVoltage | yes | Float | Inverter switch voltage | V |
| balancedChargingTimeout | yes | Integer | Equalize charge timeout | Min |
| parallelMode | yes | Integer | Parallel mode 0: single 1: single-phase parallel 2: two-phase parallel 3: two-phase parallel 120 4: two-phase parallel 180 5: three-phase A 6: three-phase B 7: three-phase C | |
| outputPriority | yes | Integer | Output priority 0: solar 1: line 2: sbu | |
| ChargingCurrent | yes | Float | Mains charge current limit | A |
| equalizingChargingEnable | yes | String | Equalize charge enable | |
| outputVoltage | yes | Float | Output voltage | V |
| outputFrequency | yes | Float | Output frequency | Hz |
| maxChargingCurrent | yes | Float | Maximum charge current | A |
| ACInputRange | yes | Integer | AC input range 0: wide range (APL) 1: narrow range (UPS) | |
| energySavingMode | yes | Integer | Energy-saving mode 0: disable 1: enable | |
| overloadAutomaticRestart | yes | Integer | Overload automatic restart 0: disable 1: enable | |
| overTemperatureSutomaticRestart | yes | Integer | Over-temperature automatic restart 0: disable 1: enable | |
| chargingPriority | yes | Integer | Charge priority 0: PV first, mains charging starts only when PV is invalid 1: mains first, PV charging starts only when mains is invalid 2: hybrid mode, mains and PV charge simultaneously, PV preferred 3: PV only, no mains charging | |
| alarmControl | yes | Integer | Alarm control 0: disable 1: enable | |
| alarmEnable | yes | Integer | Alarm enable on input source loss 0: disable 1: enable | |
| overloadBypassEnable | yes | Integer | Overload bypass enable 0: disable 1: enable | |
| splitPhaseTransformer | yes | Integer | Split-phase transformer enable 0: disable 1: enable | |
| BMSEnable | yes | Integer | BMS enable 0: disable 1: enable | |
| BMSProtocol | yes | Integer | BMS protocol |
| Field | Required | Type | Description | Unit |
|---|---|---|---|---|
| batElectricitySoc | yes | Float | Battery SOC | % |
| batVoltage | yes | Float | Battery voltage | V |
| batCurrent | yes | Float | Battery current | A |
| solarVoltage | yes | Float | Solar panel voltage | V |
| solarCurrent | yes | Float | Solar panel current | A |
| solarPower | yes | Float | Solar panel power | W |
| status | yes | Integer | Load status and charge status 0: Charge off 1: Quick charge 2: Const voltage charge 4: Float charge 5: Reserved 6: Li battery activate 7: Reserved | |
| chargingPower | yes | Float | Charging power | W |
| faultCodeStr | yes | String | Multiple fault codes (comma separated) | |
| nowTimeStr | yes | String | Device time | |
| machineStatus | yes | Integer | Machine status 0: power-on delay 1: waiting 2: initializing 3: soft start 4: mains operation 5: inverter operation 6: inverter-to-mains 7: mains-to-inverter 8: battery activation 9: manual shutdown 10: fault | |
| busVoltage | yes | Float | Bus voltage | V |
| gridVoltage | yes | Float | Grid voltage | V |
| gridCurrent | yes | Float | Grid current | A |
| gridFrequency | yes | Float | Grid frequency | Hz |
| inverterVoltage | yes | Float | Inverter voltage | V |
| inverterCurrent | yes | Float | Inverter current | A |
| inverterFrequency | yes | Float | Inverter frequency | Hz |
| loadCurrent | yes | Float | Load current | A |
| loadActivePower | yes | Float | Load active power | W |
| loadApparentPower | yes | Float | Load apparent power | VA |
| mainsChargingCurrent | yes | Float | Mains charging current | A |
| loadRate | yes | Float | Load rate | % |
| heatSinkTemA | yes | Float | PV heat sink temperature | °C |
| heatSinkTemB | yes | Float | Inverter heat sink temperature | °C |
| heatSinkTemC | yes | Float | Transformer temperature | °C |
| pvChargingCurrent | yes | Float | PV charging current | A |
| todayChargeBat | yes | Float | Battery charge Ah today | AH |
| todayDischargeBat | yes | Float | Battery discharge Ah today | AH |
| todayElectricityPV | yes | Float | PV energy today | kWh |
| todayUsedEnergyLoad | yes | Float | Load energy consumption today | kWh |
| totalRunningDay | yes | Integer | Total running days | D |
| cumulateChargeHoursBat | yes | String | Battery cumulative charge Ah | AH |
| cumulateDischargeHoursBat | yes | String | Battery cumulative discharge Ah | AH |
| cumulateElectricityPV | yes | String | PV cumulative energy | kWh |
| cumulateUsedChargeLoad | yes | String | Load cumulative energy | kWh |
| TodayChargeMains | yes | Integer | Mains charge energy today | AH |
| TodayConsumeChargeLoadTOMains | yes | Float | Load energy consumed from mains today | kWh |
| todayWorkInverter | yes | Integer | Inverter working time today | kWh |
| todayWorkBypass | yes | Integer | Bypass working time today | kWh |