Home Assistant · MQTT

Зарядна станція СтрумОК у Home Assistant через MQTT

Станція сама публікує свої показники в MQTT-брокер за стандартом Home Assistant MQTT Discovery. Вона з’являється в Home Assistant окремим пристроєм, а за бажанням нею можна ще й керувати.

Немає власного MQTT-брокера або не хочете його піднімати? Погляньте на варіант через HACS — без брокера.

Оберіть один спосіб: MQTT або HACS

Не вмикайте для однієї станції одночасно MQTT-місток та інтеграцію HACS. Home Assistant покаже два пристрої з однаковими сенсорами й перемикачами, а автоматизації почнуть смикати одну зарядку двічі.

Що таке MQTT Discovery

Станція публікує в MQTT-брокер конфігураційні повідомлення. Home Assistant читає їх і сам створює сенсори, без ручного YAML. Далі станція надсилає значення в топік стану, а Home Assistant оновлює картки миттєво.

Чим цей спосіб відрізняється від HACS

MQTT потребує брокера (Mosquitto часто вже стоїть у Home Assistant) і оновлює дані миттєво. HACS-варіант обходиться без брокера: Home Assistant сам опитує станцію по мережі раз на кілька секунд.

Як увімкнути

Усе налаштовується в застосунку СтрумОК. Станція отримує налаштування через сервер, щойно вийде на зв’язок, а зберігає у власній пам’яті — тож працює й без інтернету.

  1. 1

    Переконайтесь, що в Home Assistant є MQTT-брокер

    Найпростіше — офіційний додаток Mosquitto broker (Налаштування → Додатки → Магазин додатків). Створіть для станції окремого користувача брокера: так його легко відкликати, не зачепивши інші пристрої.

  2. 2

    Відкрийте «Коробка в Home Assistant» у застосунку

    Налаштування коробки → розділ «Home Assistant» → «Коробка в Home Assistant».

  3. 3

    Заповніть MQTT і збережіть

    Хост брокера: якщо коробку вже підключено до вашого Home Assistant, застосунок підставить його адресу, бо Mosquitto зазвичай живе там само. Далі порт (типово 1883), логін і пароль брокера. Збережений пароль застосунок показує як «•••• збережено» і назад не отримує ніколи. Натисніть «Зберегти».

  4. 4

    Дочекайтесь автовиявлення

    Коли станція підключиться до брокера, під рядком з’явиться «MQTT: підключено · N сутностей». У Home Assistant пристрій «СтрумОК» буде в Налаштування → Пристрої та служби → MQTT.

Без застосунку ті самі поля є у веб-панелі станції (розділ MQTT). Поки застосунок жодного разу не задавав MQTT, діє саме налаштування з панелі. Щойно ви збережете MQTT у застосунку, головним стає воно.

Керування зарядкою з Home Assistant

Вмикається тумблером «Керування зарядкою з HA» на тому ж екрані застосунку. Типово він вимкнений: через MQTT іде лише спостереження.

З увімкненим тумблером зарядкою може керувати будь-хто, хто має доступ до вашого брокера й Home Assistant. Автоматизації теж. Захистіть брокер паролем і не відкривайте його в інтернет.

СутністьТипТопік командиЩо робить
strumok_<slug>_charging_enabledswitchstrumok/<dev>/set/charging_enabledON — дозволити заряд, OFF — призупинити. Стан — «заряд дозволено» зі станції.
strumok_<slug>_charging_currentnumber, Аstrumok/<dev>/set/charging_currentЗаданий струм цілим числом ампер. Межі — з налаштувань зарядки на станції, а якщо їх там немає — від 6 до 32 А.

Команди з Home Assistant проходять тим самим шляхом, що й команди із застосунку: ті самі межі й та сама ручна витримка, під час якої автопілот не перебиває вашу команду.

Вимкнули тумблер — станція прибере ці дві сутності з Home Assistant (порожні retained-конфіги) і перестане слухати топіки команд. Сенсори лишаються.

Формат топіків

Для тих, хто хоче звірити налаштування вручну або подивитись сирі повідомлення (наприклад, у MQTT Explorer).

Discovery (по топіку на сутність)

homeassistant/<component>/strumok_<slug>/<key>/config

<component> — sensor, binary_sensor, а з керуванням ще switch і number. <slug> — серійник станції в нижньому регістрі без дефіса (SK-E89F6DB694F0 → ske89f6db694f0). Публікується з retain.

Стан

strumok/<dev>/state

Один JSON з усіма значеннями: ощадливіше за окремий топік на кожен сенсор.

Доступність

strumok/<dev>/availability

online / offline з MQTT Last Will: якщо станція зникне з мережі без коректного відключення, брокер сам позначить її offline.

Команди (з керуванням)

strumok/<dev>/set/<key>

charging_enabled (ON / OFF) і charging_current (ціле, А). Станція слухає їх лише з увімкненим тумблером керування.

Перезапуск Home Assistant

homeassistant/status

Станція слухає цей топік. Коли Home Assistant після перезапуску публікує online, станція за 0–3 секунди заново надсилає discovery і стан. Сутності повертаються самі, перезавантажувати станцію не треба.

Сенсори станції в Home Assistant

Той самий перелік, що й у варіанті через HACS: спосіб підключення на набір даних не впливає.

Ключ entityТипДжерело (/api)Одиниця / класПримітка
strumok_<slug>_charging_statesensorevse.statusdevice_class: enumКлюч стану зарядки зі словника прошивки: ready, waiting, charging, blocked, schedule_1… (24 значення, у HACS перекладені). Незнайоме значення показується як unknown.
strumok_<slug>_charging_currentsensorevse.curA · device_class: currentЗаданий струм, який прийняла зарядка.
strumok_<slug>_charging_powersensorevse.kwW · device_class: powerПопри назву поля kw — це вати: так рахує прошивка для обох типів зарядок (звірено на живій платі: 233 В × 16,4 А ≈ 3 814 Вт). HACS до версії 0.2.0 помилково показував кВт.
strumok_<slug>_charging_session_energysensorevse.session_kwhkWh · device_class: energy · total_increasingЕнергія поточної сесії заряду. З’являється лише на прошивках, що її віддають. Нова сесія починається з нуля: Home Assistant вважає це скиданням лічильника, тож панель «Енергія» рахує правильно.
strumok_<slug>_charging_allowedbinary_sensorevse.on—Нормалізований прапорець «заряд дозволено» (0/1 з /api).
strumok_<slug>_car_connectedbinary_sensorevse.units[0].car—Береться з першого слота керованого EVSE. Якщо evse.units порожній або відсутній — entity стає «недоступний», а не помилка.
strumok_<slug>_home_battery_socsensorlive.m.batt_soc_pct% · device_class: batterySoC ДОМАШНЬОЇ батареї (інвертор), не автомобіля — SoC авто в /api немає взагалі.
strumok_<slug>_pv_powersensorlive.m.pv_power_wW · device_class: power
strumok_<slug>_battery_powersensorlive.m.batt_power_wW · device_class: powerЗнак (плюс — заряд чи розряд) звіряється емпірично, не вгадується.
strumok_<slug>_grid_powersensorlive.m.grid_power_wW · device_class: power
strumok_<slug>_load_powersensorlive.m.load_power_wW · device_class: power
strumok_<slug>_wifi_onlinebinary_sensorwifi.ondevice_class: connectivityДіагностичний entity.
strumok_<slug>_wifi_rssisensorwifi.rssidBm (типова конвенція; у коді одиниця явно не вказана)entity_category: diagnostic.
strumok_<slug>_inverter_bus_connectedbinary_sensorbus.connecteddevice_class: connectivitytrue лише коли на шині саме інвертор, не батарея.
strumok_<slug>_uptimesensorupс · device_class: durationentity_category: diagnostic.
strumok_<slug>_firmware_versionsensorfwтекстentity_category: diagnostic; також іде в sw_version пристрою в HA.

Повний унікальний ідентифікатор — strumok_<slug>_<ключ>, де <slug> — серійник станції в нижньому регістрі без дефіса (SK-E89F6DB694F0 → ske89f6db694f0). Пристрій у Home Assistant — виробник «СтрумОК», модель «Зарядна станція СтрумОК».

Діагностика: що означають стани в застосунку

У налаштуваннях коробки, в розділі «Home Assistant», два рядки — по одному на кожен напрямок. Під кожним — стан, який повідомляє сама коробка.

«Коробка в Home Assistant» (MQTT)

MQTT: підключено · N сутностей
Коробка підключена до брокера й опублікувала N сутностей. Якщо в Home Assistant їх немає, перевірте, що інтеграцію MQTT там додано й вона дивиться на той самий брокер.
MQTT: помилка — ім’я брокера (dns)
Коробка не може знайти брокер за іменем. Вкажіть IP-адресу замість імені.
MQTT: помилка — відмова (refused)
За цією адресою брокер не приймає з’єднань: інший порт, брокер вимкнено або адреса не та.
MQTT: помилка — логін чи пароль (auth)
Брокер не прийняв логін або пароль. Перевірте користувача в налаштуваннях Mosquitto і введіть пароль заново.
MQTT: помилка — не відповідає (timeout)
Брокер мовчить: інша підмережа, фаєрвол або вимкнений Home Assistant.
MQTT: помилка — TLS (tls)
Не вдалося встановити захищене з’єднання. Перевірте, чи брокер справді чекає TLS на цьому порту (стандартний порт MQTT із TLS — 8883).
Чекаємо на коробку
Налаштування збережено, але коробка ще не підтвердила, що застосувала його: вона офлайн або має стару прошивку. Коробка підхопить налаштування, щойно вийде на зв’язок.
Не налаштовано
MQTT-місток вимкнено. Для Home Assistant можна скористатися HACS.

«Дані з Home Assistant» (HA → коробка)

Коробка читає HA
Коробка сама бере призначені ролі з вашого Home Assistant. Біля ролі є позначка «коробка бере звідси».
HA відхилив токен — підключіть заново
Home Assistant не приймає токен коробки: його відкликали або змінили користувача. Відкрийте «Дані з Home Assistant» і підключіть заново.
Сутність не знайдена
Однієї з призначених сутностей більше немає в Home Assistant: її перейменували або видалили. Призначте роль заново.
Коробка не бачить HA у мережі
Коробка не достукалась до адреси Home Assistant. Адреса має бути доступна з домашньої мережі коробки, а не лише з телефона.
Помилка TLS / Некоректне значення
TLS — не вдалося встановити захищене з’єднання з Home Assistant. Некоректне значення — сутність віддала не число чи стан (наприклад, unavailable).
Чекаємо на коробку
Нові ролі збережено, але коробка ще не звітувала, що застосувала їх.

MQTT-з’єднання захищає лише те, що налаштовано на самому брокері. Тримайте брокер у довіреній домашній мережі, з паролем. Пароль брокера сервер зберігає зашифрованим і передає станції запечатаним. Застосунок його ніколи не показує повторно.