How t1me2drum/ecoflow-mon-android works
PowerHub is an Android EcoFlow station monitoring and control client. The main workflow is login and optional account-based station discovery, then background MQTT monitoring; protocol adapters interpret telemetry and build model-specific commands, while screens expose status, controls, history, and diagnostics. The README documents alerts, a widget, and broader model coverage beyond the sampled source, so those capabilities are included with conservative wiring. Some subsystem links rely on the README and tree rather than inspected implementation excerpts.
Main entry points: Repository.kt Device repository · MqttLink.kt MQTT transport · protocol Model protocols · MonitorService.kt Background monitor
Components 24
Android app
- Navigation and theme
app/src/main/java/app/powerhub/ui/MainActivity.kt - Station list
app/src/main/java/app/powerhub/ui/DevicesScreen.kt - Station details
app/src/main/java/app/powerhub/ui/DeviceScreen.kt - Login screen
app/src/main/java/app/powerhub/ui/LoginScreen.kt - Settings screen
app/src/main/java/app/powerhub/ui/SettingsScreen.kt - History charts
app/src/main/java/app/powerhub/ui/HistoryPane.kt - Background monitor
app/src/main/java/app/powerhub/service/MonitorService.kt - Alert engine
app/src/main/java/app/powerhub/service/Alerts.kt - Battery widget
app/src/main/java/app/powerhub/widget/BatteryWidget.kt - App initialization
app/src/main/java/app/powerhub/PowerHubApp.kt
EcoFlow integration
- Account API
app/src/main/java/app/powerhub/api/EcoflowCloud.kt - Developer API
app/src/main/java/app/powerhub/api/EcoflowOpenApi.kt - MQTT transport
app/src/main/java/app/powerhub/api/MqttLink.kt
Device domain
- Device repository
app/src/main/java/app/powerhub/data/Repository.kt - Model protocols
app/src/main/java/app/powerhub/protocol - JSON messages
app/src/main/java/app/powerhub/protocol/LegacyJsonProtocols.kt - Delta 2 protocol
app/src/main/java/app/powerhub/protocol/Delta2Protocol.kt - Delta 3 protocol
app/src/main/java/app/powerhub/protocol/Delta3Protocol.kt - Pro 3 protocol
app/src/main/java/app/powerhub/protocol/DeltaPro3Protocol.kt
Local data
- Settings and credentials
app/src/main/java/app/powerhub/data/Stores.kt - History database
app/src/main/java/app/powerhub/data/HistoryDb.kt
Other components
- User
- EcoFlow services
- EcoFlow stations
Connections 35
- User → Navigation and theme: opens app
- Navigation and theme → Login screen: routes to
- Navigation and theme → Station list: routes to
- User → Login screen: enters credentials
- Login screen → Device repository: logs in
- Device repository → Account API: validates login
- Account API → EcoFlow services: requests session
- Station list → Device repository: manages stations
- Device repository → Developer API: syncs station list
- Developer API → EcoFlow services: requests device list
- Background monitor → Device repository: starts monitoring
- Device repository → Account API: gets MQTT credentials
- Device repository → MQTT transport: connects and subscribes
- MQTT transport → EcoFlow services: connects TLS MQTT
- EcoFlow stations → MQTT transport: sends telemetry
- MQTT transport → Device repository: delivers messages
- Device repository → Model protocols: decodes and builds
- Model protocols → JSON messages: uses JSON formats
- Model protocols → Delta 2 protocol: uses model adapter
- Model protocols → Delta 3 protocol: uses model adapter
- Model protocols → Pro 3 protocol: uses model adapter
- Device repository → MQTT transport: publishes commands
- MQTT transport → EcoFlow stations: sends commands
- Station list → Station details: opens station
- Station details → Device repository: reads state and controls
- Settings screen → Device repository: updates configuration
- History charts → Device repository: requests history
- Background monitor → Device repository: records telemetry
- Device repository → History database: stores and reads history
- Device repository → Settings and credentials: reads and saves settings
- Device repository → Settings and credentials: stores widget cache
- Battery widget → Settings and credentials: reads cached status
- Background monitor → Battery widget: refreshes widget
- Background monitor → Alert engine: evaluates alert conditions
- App initialization → Device repository: creates repository