This document outlines the software layers used by EcoFlow devices, primarily focusing on the MQTT and Protobuf implementations that allow for monitoring and control.
EcoFlow devices generally operate in two modes:
EcoFlow_XXXX). Limited functionality.tcp.ecoflow.com) via MQTT on port 6500.The core communication transport is MQTT.
mqtt.ecoflow.com, mqtt-a.ecoflow.com, or directly to device IP (rarely open).1883 (Standard), 8883 (SSL), 6500 (Proprietary/Raw).accessKey and secretKey derived from your EcoFlow account credentials.Common topics observed in reverse engineering:
/app/device/property/{serial_number}/app/{user_id}/{serial_number}/thing/property/set/app/{user_id}/{serial_number}/thing/property/getUnlike simple JSON-based MQTT implementations, EcoFlow uses Google Protocol Buffers (Protobuf) for the message payload. This makes the data binary and unreadable without the correct .proto definition files.
To decode the payloads, you need the schema. Community projects have reverse-engineered these schemas.
foxthefox/ioBroker.ecoflow-mqtt: Contains extensive JavaScript/TypeScript definitions for various device properties.tolwi/hassio-ecoflow-cloud: Python-based implementation for Home Assistant, containing logic to parse these binary streams.A typical message might contain fields for:
pd: Power Distribution (USB, AC output, DC output states).bms: Battery Management System status (Voltage, Temp, Cycles).mppt: Solar input status (Volts, Amps).tomvd/local-powerstream: Contains Java implementations for creating control messages.While official local API access is limited, you can use scripts to bridge the cloud data to your local system.
You can use the ecoflow-token script from community repositories to exchange your email/password for the MQTT keys:
# Conceptual usage
python3 get_token.py --email "user@example.com" --password "secret"
When you press the IoT button to enter Direct Mode, the EcoFlow creates its own Wi-Fi Access Point (e.g., EcoFlow_XXXX).
192.168.4.1).Using Adguard or Pi-hole, you can redirect the DNS for mqtt-e.ecoflow.com to your local machine running a Mosquitto server.
mqtt-e.ecoflow.com to your local IP.Believe it or not, EcoFlow support has been known to grant local API access upon request.
Devices also advertise over BLE.
rabits/ef-ble-reverse for deep dives into the Android APK’s handling of BLE packets.