Зарядна станція СтрумОК у 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
Переконайтесь, що в Home Assistant є MQTT-брокер
Найпростіше — офіційний додаток Mosquitto broker (Налаштування → Додатки → Магазин додатків). Створіть для станції окремого користувача брокера: так його легко відкликати, не зачепивши інші пристрої.
- 2
Відкрийте «Коробка в Home Assistant» у застосунку
Налаштування коробки → розділ «Home Assistant» → «Коробка в Home Assistant».
- 3
Заповніть MQTT і збережіть
Хост брокера: якщо коробку вже підключено до вашого Home Assistant, застосунок підставить його адресу, бо Mosquitto зазвичай живе там само. Далі порт (типово 1883), логін і пароль брокера. Збережений пароль застосунок показує як «•••• збережено» і назад не отримує ніколи. Натисніть «Зберегти».
- 4
Дочекайтесь автовиявлення
Коли станція підключиться до брокера, під рядком з’явиться «MQTT: підключено · N сутностей». У Home Assistant пристрій «СтрумОК» буде в Налаштування → Пристрої та служби → MQTT.
Без застосунку ті самі поля є у веб-панелі станції (розділ MQTT). Поки застосунок жодного разу не задавав MQTT, діє саме налаштування з панелі. Щойно ви збережете MQTT у застосунку, головним стає воно.
Керування зарядкою з Home Assistant
Вмикається тумблером «Керування зарядкою з HA» на тому ж екрані застосунку. Типово він вимкнений: через MQTT іде лише спостереження.
З увімкненим тумблером зарядкою може керувати будь-хто, хто має доступ до вашого брокера й Home Assistant. Автоматизації теж. Захистіть брокер паролем і не відкривайте його в інтернет.
| Сутність | Тип | Топік команди | Що робить |
|---|---|---|---|
| strumok_<slug>_charging_enabled | switch | strumok/<dev>/set/charging_enabled | ON — дозволити заряд, OFF — призупинити. Стан — «заряд дозволено» зі станції. |
| strumok_<slug>_charging_current | number, А | 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>/availabilityonline / 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_state | sensor | evse.status | device_class: enum | Ключ стану зарядки зі словника прошивки: ready, waiting, charging, blocked, schedule_1… (24 значення, у HACS перекладені). Незнайоме значення показується як unknown. |
| strumok_<slug>_charging_current | sensor | evse.cur | A · device_class: current | Заданий струм, який прийняла зарядка. |
| strumok_<slug>_charging_power | sensor | evse.kw | W · device_class: power | Попри назву поля kw — це вати: так рахує прошивка для обох типів зарядок (звірено на живій платі: 233 В × 16,4 А ≈ 3 814 Вт). HACS до версії 0.2.0 помилково показував кВт. |
| strumok_<slug>_charging_session_energy | sensor | evse.session_kwh | kWh · device_class: energy · total_increasing | Енергія поточної сесії заряду. З’являється лише на прошивках, що її віддають. Нова сесія починається з нуля: Home Assistant вважає це скиданням лічильника, тож панель «Енергія» рахує правильно. |
| strumok_<slug>_charging_allowed | binary_sensor | evse.on | — | Нормалізований прапорець «заряд дозволено» (0/1 з /api). |
| strumok_<slug>_car_connected | binary_sensor | evse.units[0].car | — | Береться з першого слота керованого EVSE. Якщо evse.units порожній або відсутній — entity стає «недоступний», а не помилка. |
| strumok_<slug>_home_battery_soc | sensor | live.m.batt_soc_pct | % · device_class: battery | SoC ДОМАШНЬОЇ батареї (інвертор), не автомобіля — SoC авто в /api немає взагалі. |
| strumok_<slug>_pv_power | sensor | live.m.pv_power_w | W · device_class: power | |
| strumok_<slug>_battery_power | sensor | live.m.batt_power_w | W · device_class: power | Знак (плюс — заряд чи розряд) звіряється емпірично, не вгадується. |
| strumok_<slug>_grid_power | sensor | live.m.grid_power_w | W · device_class: power | |
| strumok_<slug>_load_power | sensor | live.m.load_power_w | W · device_class: power | |
| strumok_<slug>_wifi_online | binary_sensor | wifi.on | device_class: connectivity | Діагностичний entity. |
| strumok_<slug>_wifi_rssi | sensor | wifi.rssi | dBm (типова конвенція; у коді одиниця явно не вказана) | entity_category: diagnostic. |
| strumok_<slug>_inverter_bus_connected | binary_sensor | bus.connected | device_class: connectivity | true лише коли на шині саме інвертор, не батарея. |
| strumok_<slug>_uptime | sensor | up | с · device_class: duration | entity_category: diagnostic. |
| strumok_<slug>_firmware_version | sensor | fw | текст | 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-з’єднання захищає лише те, що налаштовано на самому брокері. Тримайте брокер у довіреній домашній мережі, з паролем. Пароль брокера сервер зберігає зашифрованим і передає станції запечатаним. Застосунок його ніколи не показує повторно.