|
3 | 3 | Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), |
4 | 4 | версионирование — [семантическое](https://semver.org/lang/ru/). |
5 | 5 |
|
6 | | -## Не выпущено |
| 6 | +## [1.4.0] — 2026-08-04 |
7 | 7 |
|
8 | | -Документация и инфраструктура; логика блюпринта не менялась, поэтому версия |
9 | | -осталась прежней. |
| 8 | +Третья ночь на реальном железе. Машина зарядилась до 100 %, но полчаса в начале |
| 9 | +пропали впустую, а под утро регулятор гнал ток с 13 до 28 А за шесть минут. |
| 10 | + |
| 11 | +### Исправлено |
| 12 | + |
| 13 | +- **Потерянная команда включения больше не стоит полчаса.** В 23:06 команда |
| 14 | + `switch.turn_on` ушла в станцию, и станция её проглотила: выключатель остался |
| 15 | + `off`. Промах команды не порождает события состояния, а все триггеры блюпринта |
| 16 | + были либо часами, либо изменением чужой сущности — поэтому повтор случился |
| 17 | + только на очередном пересчёте в 23:30, через **24 минуты**. Добавлен триггер |
| 18 | + `command_missed`: выключатель, пролежавший в `off` дольше паузы между |
| 19 | + командами, поднимает прогон, и включение повторяется в следующую минуту. |
| 20 | +- **Потерянная запись уставки тоже больше не стоит полчаса.** Тем же способом |
| 21 | + станция теряла и уставку: `11 → 12` писалось в 23:30, 00:00 и 00:30, |
| 22 | + подействовала только третья запись (возраст уставки при этом рос |
| 23 | + 4761 → 6561 → 8361 с — она не менялась). То же с `13 → 16` в 03:00 и 03:30. |
| 24 | + Добавлен триггер `setpoint_stale` на застоявшуюся уставку. Ждёт вдвое дольше |
| 25 | + паузы между командами, иначе срабатывал бы на каждой нормальной записи. |
| 26 | +- **Обрыв связи больше не выглядит как «машина уехала».** Признак физического |
| 27 | + присутствия («ток идёт — значит машина на месте») проверял выключатель |
| 28 | + условием «не включён», а недоступный выключатель под это подходит. В третью |
| 29 | + ночь трекер четыре часа врал `not_home` из-за дрейфа GPS — ровно тот случай, |
| 30 | + ради которого признак и заведён, — и одного секундного обрыва хватило, чтобы |
| 31 | + «машина уехала» стало правдой при живых 2616 Вт на сенсоре мощности. Зарядку |
| 32 | + тогда спасло лишь то, что в тот же миг была недоступна и сама станция. |
| 33 | + Теперь, как и в остальных местах после 1.3.0, разрушительный вывод делается |
| 34 | + только по **подтверждённо выключенному** выключателю. |
| 35 | +- **Недодача тока больше не выдумывается на ровном месте.** Сенсор тока станции |
| 36 | + обновляется с задержкой: под утро он стоял на 11.669 А целых семь минут, пока |
| 37 | + мощность росла 2592 → 5683 Вт, и «недодача» насчитывалась до 16 А. Теперь |
| 38 | + величина считается только на установившемся режиме — все завышенные значения |
| 39 | + в трассировках пришлись ровно на свежую уставку. |
| 40 | + |
| 41 | +### Добавлено |
| 42 | + |
| 43 | +- **«Запас по току, %»** (по умолчанию 10). Станция почти всегда выдаёт меньше |
| 44 | + заказанного: на уставке 11 А шло 9.9 А. Планировщик считал по уставке и весь |
| 45 | + вечер отставал незаметно для себя — пока до конца окна далеко, недобор делится |
| 46 | + на большой остаток времени и тонет в шаге тока. К утру остаток сжимался, |
| 47 | + и тот же недобор требовал разгона до максимума за минуты. Запас поднимает ток |
| 48 | + с самого начала, и к утру он плавно снижается вместо рывка. Потолок тока |
| 49 | + запас не пробивает. |
| 50 | + |
| 51 | + Реализован множителем, а не прибавкой: прибавка сравнивалась бы с уставкой |
| 52 | + в зоне нечувствительности и переписывала бы её на каждом пересчёте. |
| 53 | +- **«Не повышать ток начиная с заряда, %»** (по умолчанию 95). На последних |
| 54 | + процентах BMS сам ограничивает приём, и лишний заказанный ток уже не ускоряет |
| 55 | + зарядку, а греет батарею. Выше порога уставку можно только снижать. `100` — |
| 56 | + выключено. Не действует при недостоверных данных о заряде, в мороз и при |
| 57 | + аварийной дозарядке — там ток нужен весь. |
10 | 58 |
|
11 | 59 | ### Изменено |
12 | 60 |
|
| 61 | +- **Описание параметра «КПД зарядки» дополнено формулой расчёта.** Раньше |
| 62 | + предлагались только ориентиры «зимой 80–85, летом 90–93», а подобрать своё |
| 63 | + число было не из чего. Теперь описано, какие два измерения нужны и как из них |
| 64 | + посчитать КПД, и явно разделено, что относится к КПД, а что — к недодаче |
| 65 | + станции (для неё появился отдельный параметр). |
| 66 | +- **Мутационный прогон распараллелен.** Каждая мутация требует отдельного |
| 67 | + запуска всего набора, поэтому семь десятков мутаций подряд занимали около |
| 68 | + получаса. Мутации независимы, и каждый воркер работает в своей копии |
| 69 | + репозитория, поэтому `pytest -m slow -n auto` даёт несколько минут вместо |
| 70 | + получаса. Добавлена зависимость `pytest-xdist`, CI обновлён. |
13 | 71 | - **Документация переехала на сайт** — [saippuakauppias.github.io/ha-ev-smart-charging](https://saippuakauppias.github.io/ha-ev-smart-charging/). |
14 | 72 | README похудел с 743 строк до сотни: он остался витриной, а подробности |
15 | 73 | разложены по разделам с поиском и навигацией. `IDEAS.md` и `docs/EXAMPLES.md` |
|
524 | 582 | только когда максимум не делится на дискретность (например 28 А при шаге 5 А). |
525 | 583 | Обнаружено мутационным тестированием. |
526 | 584 |
|
| 585 | +[1.4.0]: https://github.com/saippuakauppias/ha-ev-smart-charging/compare/v1.3.0...v1.4.0 |
527 | 586 | [1.3.0]: https://github.com/saippuakauppias/ha-ev-smart-charging/compare/v1.2.1...v1.3.0 |
528 | 587 | [1.2.1]: https://github.com/saippuakauppias/ha-ev-smart-charging/compare/v1.2.0...v1.2.1 |
529 | 588 | [1.2.0]: https://github.com/saippuakauppias/ha-ev-smart-charging/compare/v1.1.0...v1.2.0 |
|
0 commit comments