Полное руководство: от платы до 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.