Зарядка Tesla по спотовым ценам Nord Pool (15 минут): Home Assistant и маленький планировщик на Python Дома две Model Y и два Tesla Wall Connector Gen3. Электричество по споту (Nord Pool, Латвия), поэтому одни и те же 50 кВт·ч стоят то €2, то €20, в зависимости от того, когда они пошли. Хотелось, чтобы машины заряжались только когда дёшево, чтобы об этом вообще не думать и чтобы утром машина всегда была готова. Связь со всем берёт на себя Home Assistant: интеграция Tesla Fleet для машин, интеграция Wall Connector для локальных данных заряда, Nord Pool для цен. Решения принимает небольшой планировщик на чистом Python (только стандартная библиотека). Он работает рядом с моим дашбордом и пересчитывает план каждые 30 секунд. Что делает планировщик На каждом шаге он берёт известные цены Nord Pool (на сегодня, а после публикации и на завтра) в родном разрешении 15 минут. Ещё он берёт заряд машины, её собственный лимит и выученную мощность зарядки. Из этого он выбирает слоты для зарядки. Правила по порядку: Утренний минимум. К 08:00 у машины должно быть не меньше минимума (по умолчанию 50%) при любой цене. Добирается в самые дешёвые слоты до 08:00. Очень дёшево (≤ 3 c/кВт·ч). Заряжает всегда, до лимита машины. Дёшево (≤ 10 c/кВт·ч). Добивает до лимита в самых дешёвых таких слотах на всём известном горизонте. Только дорого. Если ничего ≤ 10 c не видно, сверх минимума ничего не заряжается. Ждём. Помимо этого: Будни ждут выходных. Суббота и воскресенье у нас обычно самые дешёвые. В будни слоты ≤ 10 c заряжают только столько, чтобы дотянуть до утра субботы. Слоты ≤ 7 c всё равно добивают до лимита. Дешёвая суббота. Цены на субботу публикуются в пятницу днём. Если суббота дешёвая, в пятницу ничего не заряжается. Исключения: слоты ≤ 3 c и подъём до 30%, если заряд ниже. Выученный минимум. Суточный расход машины (с 08:00 до 08:00) записывается по дням недели. После 4 замеров одного дня недели (или 14 дней всего) утренний минимум становится таким: 30% резерв + расход, в который укладываются 90% таких дней. До этого он фиксированный, 50%. На карточке видно «learning 7/14 d». Завтра остаюсь дома (значок домика). Утренний минимум на одно утро снижается до 30%. Charge now / Manual. «Charge now» заряжает, не глядя на цены, пока машину не отключат от зарядки. «Manual» значит, что планировщик машину не трогает. План показан на карточке окнами («Tomorrow 01:15–01:30 · 16.0 c · min 50% by 8:00»). Там же видно, сколько кВт·ч и € это будет стоить и с каким зарядом машина окажется к концу («56% by tomorrow 10:45»). Долгая стоянка (значок самолёта) Перед поездкой указываешь дату возвращения: Пока вас нет: машина заряжается до 60% по обычным дешёвым ценам и дальше просто стоит. Так бережнее для батареи. Если заряд упадёт ниже 20%, его поднимут до 30%. За два дня до возвращения: таргет уровня заряда это собственный лимит машины. Пока цены до дня приезда не опубликованы, используются только слоты ≤ 10 c. Когда опубликованы, недостающее добирается в самые дешёвые слоты до приезда при любой цене. К приезду машина полная. В день возвращения в 00:00 обычное планирование включается само. Wall Connector Облачные данные машины могут отставать на минуты, а спящая машина вообще ничего не сообщает. Wall Connector отдаёт данные локально примерно раз в 30 с и бесплатно. Поэтому: Замкнутый контакт значит, что энергия идёт, что бы ни говорили устаревшие данные машины. Планировщик запоминает, какая машина на каком зарядном. Когда машину подключили к зарядке, он сразу один раз спрашивает Tesla и 5 минут пересчитывает план каждые 5 с. Если машину подключили в дорогой час, команда «стоп» доходит примерно за 30 с, а не через полчаса зарядки. Энергия считается по каждой машине по счётчику Wall Connector, по спотовой цене 15-минутного слота. Отсюда плитки Session / This month / Last month. «Energy to be optimized» Всё, что прошло, когда план говорил «не заряжать», считается отдельно. Это короткие всплески при подключении, пока не дошла команда «стоп». Но в основном это климат салона и прогрев от сети в дорогие часы. По сути, это список того, что улучшать дальше. Чужие машины на наших зарядках У нас заряжается ещё Model 3 родственника. Её опрашивают только когда она реально у нас: видна в нашем Wi-Fi или берёт энергию, которую не берёт ни одна наша машина. В остальное время она не тратит вызовы API. Её кВт·ч, € и км за месяц считаются отдельно. Режим «Override» снимает с неё ценовые ограничения, пока цена не выше 8 c. Энергия, которую не удалось отнести ни к одной машине, попадает в «Other Charges». Бюджет Fleet API Fleet API у Tesla платный, за каждый вызов, поэтому планировщик тратит его экономно. Живые данные он по возможности берёт с Wall Connector, а не с машины. Машину будит только чтобы передать команду старт/стоп, одну и ту же команду повторяет не чаще раза в 10 минут. На карточке видно число вызовов и стоимость за месяц: на две машины примерно по 870 вызовов, около $2 на каждую. Из чего сделано Home Assistant: интеграции Tesla Fleet, Tesla Wall Connector, Nord Pool Планировщик: около 200 строк Python, без ввода-вывода, легко покрывается тестами. Сервис вокруг него общается с REST API Home Assistant. Дашборд: одна статическая HTML-страница Стоимость зарядок на наших машинах в этом месяце по текущим космо-ценам с использованием логики можно видеть на скринах.
Какая ей разница когда и как часто запускать химическую реакцию на части сот. Значительно более вредно для батареи опускать заряд ниже 20%, ждать цену, пропустить ее в итоге и черемякать бибу. Или как противоположность все время держать ее на 100% на всякий случай (если конечно у тебя не LFP, в этом случае так надо делать всегда) И потом, там зарядка если идет, то она идет не меньше 15 минут - это вполне спокойный режим. На DC фастчарджере я получу 300км заряда за это время и батарее будет норм