Для тих, хто вперше чує про ESP32. Що це за плата, де її взяти, як прошити EF-Bridge і як підключити Stream 2 до MQTT, REST API та Home Assistant.
ESP32-C3 — це крихітний мікроконтролер (міні-комп'ютер розміром із сірникову коробку) із вбудованими Wi-Fi та Bluetooth. Саме на ньому працює прошивка EF-Bridge: плата по Bluetooth зв'язується з вашим EcoFlow Stream 2, читає телеметрію й віддає її у вашу домашню мережу як веб-панель, REST API та MQTT.
Нічого паяти чи програмувати не потрібно. Достатньо однієї готової плати й USB-кабелю — решту робить прошивка.
Плата 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.
«Прошити» — означає записати програму EF-Bridge у пам'ять плати. Робиться це прямо з браузера: не потрібні ні Arduino IDE, ні драйвери, ні командний рядок.
Wi-Fi і параметри не прописуються в коді — усе через покроковий майстер під час першого запуску:
EF-Bridge віддає дані й приймає команди звичайним HTTP — це зручно для скриптів, Node-RED, домашньої автоматизації та будь-яких власних інтеграцій. Базова адреса — адреса пристрою у вашій мережі, наприклад http://stream2.local/ або за IP.
Поточна телеметрія 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 ще не встановлено.
Стан самого шлюзу: аптайм, 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"
}
Історія генерації: JSON-масив середніх значень потужності (Вт) із кроком 5 хвилин, до 288 точок (24 години).
Встановити ліміт потужності (Вт). Найпростіший спосіб — звичайне посилання / GET-запит.
Те саме, тіло запиту 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"
MQTT — це легкий протокол «публікація/підписка» для розумного дому. EF-Bridge публікує телеметрію у ваш MQTT-брокер (наприклад Mosquitto) і слухає команди зміни ліміту. Саме через MQTT працює інтеграція з Home Assistant.
Вмикається в майстрі налаштування або на сторінці «Налаштування»: вкажіть адресу брокера, порт (за замовчуванням 1883), за потреби логін і пароль.
| Топік | Напр. | Опис |
|---|---|---|
nodes/<name>/state | pub | Телеметрія у JSON (retained), публікується періодично. |
nodes/<name>/status | pub | Доступність: online / offline (offline ставиться автоматично при обриві зв'язку — LWT). |
nodes/<name>/limit/set | sub | Команда встановлення ліміту: надішліть число ватів як текст. |
У топіках name — це ім'я пристрою з налаштувань, зведене до латиниці/цифр (наприклад stream2). Точне ім'я видно на сторінці «Діагностика».
Один 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"
Найпростіший шлях — через MQTT: EF-Bridge використовує авто-виявлення (MQTT Discovery), тож усі датчики й регулятор ліміту з'являються в Home Assistant самі, без правки YAML.
Імена починаються з імені вашого пристрою. Приблизний список:
| 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 }}"