Повний посібник: від плати до Home Assistant

Для тих, хто вперше чує про ESP32. Що це за плата, де її взяти, як прошити EF-Bridge і як підключити Stream 2 до MQTT, REST API та Home Assistant.

Крок 1 · Залізо

Що таке ESP32-C3

ESP32-C3 — це крихітний мікроконтролер (міні-комп'ютер розміром із сірникову коробку) із вбудованими Wi-Fi та Bluetooth. Саме на ньому працює прошивка EF-Bridge: плата по Bluetooth зв'язується з вашим EcoFlow Stream 2, читає телеметрію й віддає її у вашу домашню мережу як веб-панель, REST API та MQTT.

Нічого паяти чи програмувати не потрібно. Достатньо однієї готової плати й USB-кабелю — решту робить прошивка.

Який вона має вигляд

ESP32-C3 SuperMini

Плата ESP32-C3 SuperMini — приблизно 22×18 мм. Роз'єм USB-C зверху, з боків ряди контактів (пінів), поруч із USB — кнопка BOOT і кнопка RST (reset). Саме кнопка BOOT потрібна під час прошивки.

Де взяти

Підійде будь-яка плата на чипі ESP32-C3. Найпопулярніший і найдешевший варіант — «ESP32-C3 SuperMini», ціна приблизно 2–4 $. Якщо плануєте розмістити плату далеко від Stream 2 або Wi-Fi роутера/точки доступу — беріть версію із зовнішньою антеною (роз'єм IPEX/u.FL та антена в комплекті): вона помітно збільшує дальність Bluetooth і Wi-Fi.

  • AliExpress — шукайте «ESP32-C3 SuperMini» (найдешевше, довша доставка).
  • Amazon / eBay — «ESP32-C3 SuperMini», часто продають наборами по 3–5 шт.
  • Для встановлення далеко від роутера — версія «ESP32-C3 SuperMini» із зовнішньою антеною.
Контакти (піни) для EF-Bridge не потрібні — плата підключається лише по USB, а стирчливі штирки лише заважатимуть. Беріть варіант без припаяних пінів (або просто не припаюйте їх).
Крок 2 · Прошивка

Як прошити EF-Bridge

«Прошити» — означає записати програму EF-Bridge у пам'ять плати. Робиться це прямо з браузера: не потрібні ні Arduino IDE, ні драйвери, ні командний рядок.

Що знадобиться

Покроково

  1. Підключіть плату ESP32-C3 до комп'ютера USB-кабелем.
  2. Відкрийте ef-bridge.com/install/ у браузері й натисніть «Install».
  3. У вікні виберіть порт вашої плати (зазвичай «USB JTAG/serial» або «USB Serial») і натисніть «Connect».
  4. Підтвердіть встановлення — смуга прогресу дійде до 100% за 1–2 хвилини. Від'єднувати кабель у цей час не можна.
  5. Після завершення плата перезавантажиться й створить Wi-Fi точку «Stream2-Setup-XXXX».
Якщо плата не з'являється у списку портів або встановлення не стартує — переведіть її в режим прошивки вручну: затисніть кнопку BOOT, коротко натисніть RST (reset), відпустіть BOOT. Після цього повторіть «Connect». На деяких платах достатньо затиснути BOOT у момент під'єднання USB.

Перше налаштування (майстер)

Wi-Fi і параметри не прописуються в коді — усе через покроковий майстер під час першого запуску:

  1. Підключіться телефоном до Wi-Fi мережі «Stream2-Setup-XXXX» — вікно майстра відкриється саме. Якщо ні — відкрийте у браузері http://192.168.4.1/
  2. Крок Wi-Fi: проскануйте мережі, виберіть свою, введіть пароль.
  3. Крок пристрою: «Знайти пристрої» → виберіть свій Stream 2 зі знайдених по Bluetooth → задайте ім'я.
  4. Крок акаунта та додатково: email/пароль EcoFlow (пароль не зберігається); за бажанням — статична IP, MQTT/Home Assistant, пароль на веб-панель.
Після «Завершити» пристрій перезавантажиться й буде доступний у домашній мережі за адресою http://stream2.local/ (ім'я з налаштувань) та за IP.
Крок 3 · Інтеграція

REST API пристрою

EF-Bridge віддає дані й приймає команди звичайним HTTP — це зручно для скриптів, Node-RED, домашньої автоматизації та будь-яких власних інтеграцій. Базова адреса — адреса пристрою у вашій мережі, наприклад http://stream2.local/ або за IP.

Якщо в налаштуваннях увімкнено пароль на веб-панель, запити до API потребують HTTP Basic Auth (той самий логін/пароль). Усі дані — лише всередині вашої локальної мережі, назовні нічого не йде.
GET/api/telemetry

Поточна телеметрія Stream 2 у JSON — оновлюється щосекунди.

// GET http://stream2.local/api/telemetry
{
  "ready": true,        // BLE link to Stream 2 is active
  "pv1": 412.0,       // PV1, W
  "pv2": 386.0,       // PV2, W
  "gridPower": 640.0, // grid feed-in, W
  "vac": 231.4,       // grid voltage, V
  "iac": 2.77,        // current, A
  "freq": 50.01,      // frequency, Hz
  "pv1v": 34.2,       // PV1 voltage, V
  "pv2v": 33.8,       // PV2 voltage, V
  "temp": 41,          // inverter temperature, °C
  "rssi": -58,        // Stream 2 Wi-Fi RSSI, dBm
  "limit": 650,        // current power limit, W
  "genToday": 5.812,  // generation today, kWh
  "genTotal": 128.44, // generation total, kWh
  "feedToday": 4.9,   // fed to grid today, kWh
  "feedTotal": 96.2,  // fed to grid total, kWh
  "espRssi": -49       // ESP32 Wi-Fi RSSI, dBm
}

Поля без доступного значення повертаються як null. ready=false означає, що зв'язок з інвертором по Bluetooth ще не встановлено.

GET/api/status

Стан самого шлюзу: аптайм, IP, статуси BLE та MQTT, вільна пам'ять.

{
  "uptime": 83145,          // uptime, s
  "wifiRssi": -49,          // ESP32 RSSI, dBm
  "ip": "192.168.1.42",
  "bleConnected": true,
  "bleReady": true,
  "reconnects": 2,
  "mqtt": true,
  "freeHeap": 142880,
  "name": "stream2",
  "apName": "Stream2-Setup-AB12"
}
GET/api/history

Історія генерації: JSON-масив середніх значень потужності (Вт) із кроком 5 хвилин, до 288 точок (24 години).

GET/api/setpower?watts=650

Встановити ліміт потужності (Вт). Найпростіший спосіб — звичайне посилання / GET-запит.

POST/api/limit

Те саме, тіло запиту watts=NNN (або просто число).

# Set the limit to 650 W (GET, simplest)
curl "http://stream2.local/api/setpower?watts=650"

# Same via POST
curl -X POST "http://stream2.local/api/limit" -d "watts=650"
Допустиме значення — від 0 до 3000 Вт. Команда застосовується миттєво рідною BLE-командою інвертора. Якщо Bluetooth-зв'язок не готовий, повернеться помилка 503.
Крок 3 · Інтеграція

MQTT

MQTT — це легкий протокол «публікація/підписка» для розумного дому. EF-Bridge публікує телеметрію у ваш MQTT-брокер (наприклад Mosquitto) і слухає команди зміни ліміту. Саме через MQTT працює інтеграція з Home Assistant.

Вмикається в майстрі налаштування або на сторінці «Налаштування»: вкажіть адресу брокера, порт (за замовчуванням 1883), за потреби логін і пароль.

Топіки

ТопікНапр.Опис
nodes/<name>/statepubТелеметрія у JSON (retained), публікується періодично.
nodes/<name>/statuspubДоступність: online / offline (offline ставиться автоматично при обриві зв'язку — LWT).
nodes/<name>/limit/setsubКоманда встановлення ліміту: надішліть число ватів як текст.

У топіках name — це ім'я пристрою з налаштувань, зведене до латиниці/цифр (наприклад stream2). Точне ім'я видно на сторінці «Діагностика».

Вміст state

Один retained JSON з усіма показниками:

# topic: nodes/stream2/state  (retained)
{
  "ready": true,
  "gridPower": 640.0,
  "pv1": 412.0,
  "pv2": 386.0,
  "vac": 231.4,
  "freq": 50.01,
  "temp": 41,
  "rssi": -58,
  "limit": 650,
  "genToday": 5.812,
  "genTotal": 128.440,
  "feedToday": 4.900
}

Зміна ліміту

Опублікуйте число ватів (0–3000) у топік команди:

# Set the limit to 500 W over MQTT
mosquitto_pub -h 192.168.1.10 -t "nodes/stream2/limit/set" -m "500"
Крок 4 · Home Assistant

Інтеграція в Home Assistant

Найпростіший шлях — через MQTT: EF-Bridge використовує авто-виявлення (MQTT Discovery), тож усі датчики й регулятор ліміту з'являються в Home Assistant самі, без правки YAML.

Що потрібно заздалегідь

Покроково

  1. У налаштуваннях EF-Bridge увімкніть MQTT: адреса й порт вашого брокера, логін/пароль (якщо є).
  2. Переконайтеся, що ввімкнено прапорець «Home Assistant discovery».
  3. Збережіть — пристрій підключиться до брокера й опублікує конфігурацію виявлення.
  4. Відкрийте в Home Assistant Налаштування → Пристрої та служби → MQTT — там з'явиться новий пристрій «Stream 2» з усіма сутностями.
Нічого прописувати в configuration.yaml не потрібно — сутності створюються автоматично за протоколом MQTT Discovery.

Які сутності з'являться

Імена починаються з імені вашого пристрою. Приблизний список:

Home AssistantОпис
sensor.*_grid_feed_powerПотужність віддачі в мережу, Вт
sensor.*_pv1_power / _pv2_powerГенерація по входах PV1 і PV2, Вт
sensor.*_grid_voltage / _grid_frequencyНапруга (В) і частота мережі (Гц)
sensor.*_inverter_tempТемпература інвертора, °C
sensor.*_device_rssiРівень Wi-Fi сигналу Stream 2, dBm
sensor.*_generation_today / _totalВиробіток за сьогодні та сумарно, кВт·год
sensor.*_feed_in_todayВіддано в мережу за сьогодні, кВт·год
number.*_power_limitРегулятор ліміту потужності (слайдер 0–800 Вт, крок 10) — керується з HA

Приклад автоматизації

Наприклад, якщо розумний лічильник на вводі в дім фіксує надлишкову генерацію (віддачу в мережу), можна зменшити ліміт, щоб забезпечити нульовий експорт:

# Zero export: reduce feed-in based on a smart meter at the house inlet
# sensor.house_grid_power: >0 = importing, <0 = exporting
automation:
  - alias: Stream2 zero export
    trigger:
      - platform: state
        entity_id: sensor.house_grid_power
    condition:
      - condition: numeric_state
        entity_id: sensor.house_grid_power
        below: -20          # exporting more than 20 W
    action:
      - service: number.set_value
        target:
          entity_id: number.stream2_power_limit
        data:
          # lower the limit by the amount of excess export
          value: "{{ [(states('number.stream2_power_limit')|int
                 + states('sensor.house_grid_power')|int), 0] | max }}"
Якщо авто-виявлення вимкнено, можна додати сутності вручну через MQTT-сенсори, вказавши топік стану (наприклад nodes/stream2/state) і потрібний value_template (наприклад value_json.pv1).
← Встановлення прошивки з браузера
← Про прошивку, можливості та FAQ
EF-Bridge — незалежний проєкт, не пов'язаний з EcoFlow.