{"id":47679628,"url":"https://github.com/win365ru/ecoflow-dashboard","last_synced_at":"2026-05-16T01:09:17.554Z","repository":{"id":346429102,"uuid":"1189943668","full_name":"WIN365ru/ecoflow-dashboard","owner":"WIN365ru","description":"Real-time CLI dashboard for EcoFlow power stations \u0026 Smart Home Panel","archived":false,"fork":false,"pushed_at":"2026-03-26T17:55:09.000Z","size":153,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T01:44:07.367Z","etag":null,"topics":["battery-monitor","cli","delta-pro","docker","ecoflow","ecoflow-dashboard","energy-monitoring","home-automation","iot","mqtt","power-station","python","smart-home-panel","solar","telegram-bot"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WIN365ru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-23T20:23:33.000Z","updated_at":"2026-03-26T17:55:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/WIN365ru/ecoflow-dashboard","commit_stats":null,"previous_names":["win365ru/ecoflow-dashboard"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/WIN365ru/ecoflow-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WIN365ru%2Fecoflow-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WIN365ru%2Fecoflow-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WIN365ru%2Fecoflow-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WIN365ru%2Fecoflow-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WIN365ru","download_url":"https://codeload.github.com/WIN365ru/ecoflow-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WIN365ru%2Fecoflow-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32620523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["battery-monitor","cli","delta-pro","docker","ecoflow","ecoflow-dashboard","energy-monitoring","home-automation","iot","mqtt","power-station","python","smart-home-panel","solar","telegram-bot"],"created_at":"2026-04-02T13:55:20.168Z","updated_at":"2026-05-04T19:01:51.166Z","avatar_url":"https://github.com/WIN365ru.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# EcoFlow Dashboard\n\n**Real-time CLI + Web dashboard for EcoFlow power stations \u0026 Smart Home Panel**\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED.svg)](https://github.com/WIN365ru/ecoflow-dashboard/pkgs/container/ecoflow-dashboard)\n[![EcoFlow](https://img.shields.io/badge/EcoFlow-Cloud_API-orange.svg)](https://www.ecoflow.com/)\n\nMonitor battery status, power consumption, solar production, and control your EcoFlow devices from the terminal or any browser.\n\n\u003c/div\u003e\n\n---\n\n## Preview\n\n### CLI Dashboard\n\n```\nEcoFlow Dashboard  v0.9.13  MQTT Connected  TG ✓  2026-03-26 09:30:55\n\n  Delta Pro (DCEBZ8ZEBXXXXXX) ☀ 83%     Delta Pro (DCEBZ8ZEBXXXXXX)  90%\n+-----------------------------------------+-----------------------------------------+\n| ########################--------------- | ################################------- |\n|                                         |                                         |\n| Solar In  44 W (52.5V 0.8A) AC In 0 W   | Solar In       0 W  AC In        0 W    |\n| AC Out         0 W  12V/Car Out    0 W  | AC Out         0 W  12V/Car Out  0 W    |\n| Total In      44 W  Total Out      0 W  | Total In       0 W  Total Out    0 W    |\n|                                         |                                         |\n| Solar / MPPT                            |                                         |\n| PV Input      44 W  PV Voltage  52.5 V  |                                         |\n| PV Current  0.84 A  PV Power    44.1 W  |                                         |\n| MPPT Eff      97%   Solar→Batt    69%   |                                         |\n| Charge Source Solar  Max DC Cur    8 A  |                                         |\n| Lifetime   926 kWh  MPPT Hours   4482h  |                                         |\n|                                         |                                         |\n| Charge Time  1d 0h  Voltage     50.5 V  | Idle Time        --  Voltage    49.8 V  |\n| Current     +0.6 A  DC Conv      45 W   | Current      -0.1 A  DC Conv     1.4 W  |\n| Cell V  3.35-3.37V  Δ22mV  24-24°C      | Cell V  3.30-3.33V  Δ30mV  24-24°C      |\n| Batt/Inv   24/30°C  MPPT/MOS  42/24°C   | Batt/Inv   24/28°C  MPPT/MOS  30/25°C   |\n| Cycles       569  Limits   10% - 100%   | Cycles       655  Limits   10% - 100%   |\n| Fan      Off (Lv1)  Beep           ON   | Fan      Off (Auto)  Beep          ON   |\n|                                         |                                         |\n| PD 1.2.0.156  MPPT 3.1.0.50             | PD 1.2.0.156  MPPT 3.1.0.50             |\n| BMS 1.1.5.35  Inv 2.1.1.158             | BMS 1.1.5.35  Inv 2.1.1.158             |\n|                                         |                                         |\n| Lifetime Energy                         | Lifetime Energy                         |\n| AC Chg  1919 kWh  Solar  926 kWh        | AC Chg  2590 kWh  Solar  426 kWh        |\n| AC Dsg  2189 kWh  DC Dsg  13 kWh        | AC Dsg  2254 kWh  DC Dsg   6 kWh        |\n| Health: 94% (Excellent) 3.17/3.81 kWh   | Health: 93% (Excellent) 3.31/3.68 kWh   |\n+-----------------------------------------+-----------------------------------------+\n\n+------------------------ Smart Home Panel (SP10ZEWXXXXXXXX) -----------------------+\n| Grid         ON (230V 50Hz)  Grid Today  6.85 kWh ($0.55) (Day: $0.10)            |\n| Combined  87%  6.41 kWh     Limits       --     Sched Chg         OFF             |\n|                                                                                   |\n| Batt 1: 91% 3.28 kWh 25°C  Standby                        Chg:9d 8h               |\n| Batt 2: 83% 3.00 kWh 23°C  Standby                        Chg:8d 15h              |\n|                                                                                   |\n|                            Circuits                                               |\n| #  Name          Power  Mode Pri │ #  Name          Power  Mode Pri               |\n| 1  Подвал        165 W  Auto  -  │ 7  Свет2\\Су       0 W  Auto  6                 |\n| 2  Кабинет       735 W  Auto  1  │ 8  Столовая      35 W  Auto  7                 |\n| 3  Кухня           0 W  Auto  2  │ 9  Кабинет\\      45 W  Auto  8                 |\n| 4  Т пол           0 W  Auto  3  │10  Свет3          0 W  Auto  9                 |\n| 5  Свет            0 W  Auto  4  │11  DP.0352        0 W  Auto  -                 |\n| 6  Гост\\Пер       60 W  Auto  5  │12  DP.0801        0 W  Auto  -                 |\n|                                           1.0 kW | Up: 3d 1h                      |\n+------------------------------------------------------------------------------------+\n  [a] AC  [d] DC  [x] XBoost  [b] Beep  [c] Charging  [+/-] Chg%  [w/s] ChgW\n  [e] EPS  [g] Grid Chg B1  [h] Grid Chg B2  [1-3] Device  [Ctrl+C] Exit\n```\n\n### Web Dashboard\n\nAccess from any device on your LAN — installable as PWA on iPhone/iPad:\n\n```bash\npython -m ecoflow_dashboard --web\n# Open http://\u003cyour-ip\u003e:5000 in any browser\n```\n\n- Dark theme, responsive layout (mobile + desktop)\n- Real-time auto-refresh every 2 seconds\n- Control buttons (AC, DC, EPS, Grid Charge toggles)\n- Charts: live rolling (1h) + historical (custom date ranges from SQLite)\n- Battery health degradation chart with replacement prediction\n- Power outage log with SOC and load tracking\n- Energy flow diagram (Grid → SHP → Circuits)\n- Solar analytics with self-consumption ratio and savings\n- CSV export for spreadsheet analysis\n- Installable as PWA (Add to Home Screen)\n\n## Features\n\n### Monitoring\n\n- **Battery** — SOC%, health (SOH), remaining energy (kWh), charge cycles\n- **Power flow** — solar, AC, DC input/output with voltage, current, frequency\n- **Solar / MPPT** — PV voltage, current, power, MPPT efficiency, solar-to-battery efficiency\n- **Efficiency** — system efficiency, SHP Delta Pro charging efficiency\n- **Cell-level** — min/max cell voltage with delta (mV), temperature range\n- **Temperatures** — battery, inverter, MPPT, MOS with fan status\n- **Lifetime energy** — total AC/solar charged, AC/DC discharged (kWh)\n- **Smart Home Panel** — grid status (V/Hz), 12-circuit power with custom names and priority, per-battery detail\n- **Energy cost** — time-of-use pricing (day/night rates), daily cost tracking\n- **Data logging** — automatic SQLite snapshots for historical analysis\n\n### Analytics (Web)\n\n- **Battery degradation** — SOH% chart over time with replacement prediction\n- **Power outage log** — auto-detect grid drops, log duration, SOC used, peak/avg load\n- **Energy flow diagram** — real-time Sankey-style power flow visualization\n- **Solar analytics** — daily generation chart, self-consumption ratio, money saved\n- **Historical charts** — custom date ranges, up to 1 year+\n- **CSV export** — download any time range as spreadsheet\n\n### Controls (keyboard shortcuts)\n\n**Delta Pro:**\n\n| Key | Action | Range |\n|-----|--------|-------|\n| `a` | Toggle AC output | On / Off |\n| `d` | Toggle DC output | On / Off |\n| `x` | Toggle X-Boost | On / Off |\n| `b` | Toggle beeper | On / Off |\n| `c` | Pause / resume AC charging | 0 — 2900 W |\n| `+` / `-` | Adjust max charge limit | 50 — 100% |\n| `[` / `]` | Adjust min discharge limit | 0 — 30% |\n| `w` / `s` | Adjust AC charge power | 200 — 2900 W |\n\n**Smart Home Panel:**\n\n| Key | Action |\n|-----|--------|\n| `e` | Toggle EPS mode |\n| `g` | Toggle grid charge (Battery 1) |\n| `h` | Toggle grid charge (Battery 2) |\n\n### Telegram Alerts\n\n| Alert | Trigger |\n|-------|---------|\n| ⚡ Grid Outage / ✅ Restore | Grid power lost/restored |\n| 🔋 Discharge milestones | 80%, 60%, 40%, 20%, 15%, 10%, 5% |\n| ☀️ Solar charge milestones | 50%, 80%, 90%, 100% |\n| 🔋 Battery full | SOC reaches 100% |\n| 🌡️ High temperature | Any sensor \u003e threshold |\n| 🔴 Device offline | No data for 5 min |\n| 📊 Daily summary | Configurable hour (default 8 PM) |\n| 📅 Monthly report | Energy consumption + cost on 1st of month |\n\n### Charge Scheduler\n\n| Feature | Env var |\n|---------|---------|\n| Grid charge window | `SCHEDULE_CHARGE_START=23:00` / `SCHEDULE_CHARGE_STOP=06:00` |\n| Grid SOC limit | `SCHEDULE_MAX_SOC_GRID=80` |\n| Solar SOC limit | `SCHEDULE_MAX_SOC_SOLAR=100` |\n\n## Supported Devices\n\n| Device | Monitoring | Controls |\n|--------|-----------|----------|\n| **Delta Pro** | Full | AC / DC / XBoost / Beep / Charging |\n| **Smart Home Panel** | Full | EPS / Grid Charge |\n| Other EcoFlow devices | Partial (auto-detect) | — |\n\n## Installation\n\n### Option A: pip (local)\n\n```bash\ngit clone https://github.com/WIN365ru/ecoflow-dashboard.git\ncd ecoflow-dashboard\npip install -e .\ncp .env.example .env   # fill in credentials\npython -m ecoflow_dashboard\n```\n\n### Option B: Docker\n\n```bash\ndocker pull ghcr.io/win365ru/ecoflow-dashboard:latest\n\ndocker run -d --name ecoflow-dashboard \\\n  --env-file .env \\\n  -e TZ=Europe/Kyiv \\\n  -p 5000:5000 \\\n  -v ecoflow-data:/data \\\n  --restart unless-stopped \\\n  ghcr.io/win365ru/ecoflow-dashboard:latest\n```\n\n### Option C: Docker Compose\n\n```bash\ncurl -O https://raw.githubusercontent.com/WIN365ru/ecoflow-dashboard/main/docker-compose.yml\ncurl -O https://raw.githubusercontent.com/WIN365ru/ecoflow-dashboard/main/.env.example\ncp .env.example .env   # fill in credentials\ndocker compose up -d\n```\n\n### Option D: Portainer\n\n1. **Stacks** → **Add stack**\n2. Paste contents of [`docker-compose.portainer.yml`](docker-compose.portainer.yml)\n3. Set environment variables in Portainer UI\n4. Deploy → `http://\u003cserver-ip\u003e:5000`\n\n## Configuration\n\n### Authentication\n\n```env\n# Option 1: Private API (works immediately)\nECOFLOW_EMAIL=your_email@example.com\nECOFLOW_PASSWORD=your_password\nECOFLOW_DEVICE_SNS=DELTA_SN_1,DELTA_SN_2,PANEL_SN\n\n# Option 2: Public API (requires developer portal)\nECOFLOW_ACCESS_KEY=your_access_key\nECOFLOW_SECRET_KEY=your_secret_key\n```\n\n### Energy Cost (Time-of-Use)\n\n```env\nENERGY_RATE=0.10              # Day rate per kWh\nENERGY_RATE_NIGHT=0.02        # Night rate (0 = flat rate)\nENERGY_DAY_START=7            # Day starts at this hour\nENERGY_DAY_END=23             # Night starts at this hour\nENERGY_CURRENCY=$             # Currency symbol\n```\n\n### Circuit Names\n\n```env\nCIRCUIT_NAMES=Подвал,Кабинет,Кухня,Т пол,Свет,Гост\\Пер,Свет2\\Су,Столовая,Кабинет\\,Свет3,,\n```\n\n### Telegram Alerts\n\n```env\nTELEGRAM_BOT_TOKEN=123456789:ABCdef...\nTELEGRAM_CHAT_ID=123456789\nALERT_DAILY_SUMMARY=20        # Hour for daily summary (0-23)\nALERT_BATTERY_LOW=20          # SOC % threshold\nALERT_HIGH_TEMP=45            # °C threshold\n```\n\n### Charge Scheduler\n\n```env\nSCHEDULE_CHARGE_START=23:00   # Grid charge window start\nSCHEDULE_CHARGE_STOP=06:00    # Grid charge window end\nSCHEDULE_MAX_SOC_GRID=80      # Stop grid charging at 80%\nSCHEDULE_MAX_SOC_SOLAR=100    # Allow solar to 100%\n```\n\n### Docker\n\n```env\nTZ=Europe/Kyiv                # Container timezone\n```\n\n## Usage\n\n```bash\npython -m ecoflow_dashboard              # CLI dashboard\npython -m ecoflow_dashboard --web        # Web dashboard (port 5000)\npython -m ecoflow_dashboard --web --web-port 8080\npython -m ecoflow_dashboard --debug      # Show raw MQTT messages\npython -m ecoflow_dashboard --dump       # Dump all device data keys\npython -m ecoflow_dashboard --log-interval 60   # Log every 60s\npython -m ecoflow_dashboard --no-log     # Disable SQLite logging\npython -m ecoflow_dashboard --version    # Show version\n```\n\n## API Endpoints (Web)\n\n| Endpoint | Description |\n|----------|-------------|\n| `GET /` | Web dashboard |\n| `GET /api/devices` | All device data (JSON) |\n| `GET /api/live?sn=X` | Live data buffer (1h) |\n| `GET /api/history?sn=X\u0026hours=24` | Historical data from SQLite |\n| `GET /api/history?sn=X\u0026start=DATE\u0026end=DATE` | Custom date range |\n| `GET /api/history/range` | Available data date range |\n| `GET /api/degradation?sn=X` | SOH% over time with prediction |\n| `GET /api/outages` | Power outage log |\n| `GET /api/solar?sn=X\u0026days=30` | Solar analytics |\n| `GET /api/export/csv?sn=X\u0026hours=24` | CSV download |\n| `POST /api/command` | Send device command |\n| `GET /manifest.json` | PWA manifest |\n\n## Project Structure\n\n```\necoflow-dashboard/\n  .env.example                # Configuration template\n  pyproject.toml              # Dependencies and packaging\n  Dockerfile                  # Docker image build\n  docker-compose.yml          # Docker Compose (classic)\n  docker-compose.portainer.yml # Portainer stack\n  ecoflow_dashboard/\n    __main__.py               # CLI entry point\n    config.py                 # Environment loading, TOU pricing\n    api.py                    # REST API with retry logic\n    mqtt_client.py            # MQTT connection and commands\n    dashboard.py              # Rich terminal UI\n    controls.py               # Keyboard input and commands\n    web.py                    # Flask web dashboard + charts\n    logger.py                 # SQLite logging + outage detection\n    alerts.py                 # Telegram notifications + scheduler milestones\n    scheduler.py              # Time-based charge automation\n    version_check.py          # GitHub release checker\n```\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| All values show 0 | Wait 10-15 seconds for MQTT data |\n| MQTT disconnects | Auto-reconnects with exponential backoff |\n| SSL timeout | API retries 3x automatically |\n| Wrong device type | Set `ECOFLOW_DEVICE_SNS` explicitly |\n| Charts wrong timezone | Set `TZ=Your/Timezone` in Docker env |\n| Web not accessible | Check firewall allows port 5000 |\n| Telegram not sending | Check `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` |\n| Circuit names empty | Set `CIRCUIT_NAMES` in .env |\n\n## Acknowledgments\n\n- [tolwi/hassio-ecoflow-cloud](https://github.com/tolwi/hassio-ecoflow-cloud) — API reference\n- [Mark-Hicks/ecoflow-api-examples](https://github.com/Mark-Hicks/ecoflow-api-examples) — Public API signing\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwin365ru%2Fecoflow-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwin365ru%2Fecoflow-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwin365ru%2Fecoflow-dashboard/lists"}