Если ваш тариф следует за рынком, вы, скорее всего, это уже видели. Панель Energy показывает стоимость за вчера. Через день вы смотрите снова, и цифра другая. Или в одном часе лежит всплеск энергии, которую никто не использовал, по цене, которая была в этот час.
Вы не выдумываете, и вы не одни:
«Почему-то панель всегда считает больше, чем должна.» — odechr, обсуждение на форуме Home Assistant, тема 496113
«Показывает стоимость/доход намного выше реального.» — andreaskin, тема 647174
Это не ошибка, которую можно найти в собственной конфигурации, поэтому она переживает столько вечеров поисков. Это несоответствие двух временны́х гранулярностей.
Механизм в одном абзаце
Home Assistant считает энергию по своей долгосрочной статистике, которая почасовая. Для фиксированного тарифа это именно то, что нужно: час по одной ставке — это час по одной ставке. Для контракта, который меняет цену в течение дня, проблема в часе — а когда что-то прерывает запись, час становится всей проблемой.
Лучшее описание написал тот, с кем это случилось:
«Это просто добавляет всю пропущенную энергию к часу, в который система снова включилась.» — anon11644107, тема 965144
Так: Home Assistant перезапускается, или датчик выпадает и возвращается, и счётчик делает скачок. Энергия пропуска реальна — ваш счётчик её учёл, — но она приходит разом, попадает в час перезапуска и тарифицируется по цене этого часа. Если пропуск захватил самые дешёвые ночные часы, а вы вернулись к завтраку, вы только что купили ночь по утренней цене.
Та же схема встречается и в других формах. Сенсорная интеграция может умножиться на тысячу после перезапуска — это открытая проблема в ядре Home Assistant, #136428, описанная так:
«После перезапуска Home Assistant значение сенсорной интеграции умножается на 1000.» — roumano, core #136428
А устройство, которое теряет питание, может сбросить свой счётчик в ноль, и принимающая сторона прочитает это как потребление:
«Из-за этого наши Shelly 3EMs перезагружаются, и HA записывает огромный пик — 1000-ки кВт·ч потребления.» — msa, тема 479362
Ничего из этого не говорит о том, что Home Assistant плохо сделан. Почасовая статистика — разумное решение, а обходные пути, которыми делятся люди, — шаблоны доступности, исправление строк в Developer Tools → Statistics, выбор метода left для Riemann integration — работают. Просто это много вечеров ради цифры, которую не должно приходиться защищать.
Что меняется, когда цена применяется там, где измеряется энергия
Альтернатива — не лучшая панель. Это перенос решения на шаг раньше, на устройство, которое измеряет.
Хаб RBgrid определяет одну цену на каждый 15-минутный период: из выбранного вами источника цен на сутки вперёд (day-ahead) для вашей зоны, из резервного (backup), если в первом нет данных за этот период, а иначе из вашего тарифного плана. Ваш контракт накладывается сверху — множитель (factor), надбавка (markup), затем налоги за кВт·ч, сетевой сбор (grid fee) и сбор (levy) по вашему плану, затем НДС (VAT) — если только источник уже не публикует розничную цену. Тогда ничего не добавляется и ничего не считается дважды.
Потом он делает то, что важно для этой статьи: он сохраняет использованную цену рядом с энергией, за которую её заплатили, с источником каждого периода, и хранит это 40 дней.
Из этого следуют три вывода, и в них вся суть:
- Пропуск остаётся пропуском — на хабе. Хаб продолжает измерять и считать стоимость, пока Home Assistant перезапускается, потому что ни одна из этих задач не живёт в Home Assistant. В его собственной записи нет неверного часа, и ничего не нужно восстанавливать потом. Что покажет Home Assistant, зависит от того, как данные хаба до него доходят, и это в следующем разделе.
- Цена привязана к своей энергии. Стоимость 02:15–02:30 была посчитана по цене 02:15–02:30 в тот момент, и эта пара записана. Она не зависит от того, в каком часе число прочитают позже.
- Это можно проверить. Не «доверьте цифре», а прочитайте строку.
Почасовая статистика Home Assistant остаётся почасовой. Эта статья не утверждает обратного, и ничто здесь не меняет того, что сохраняет Energy dashboard. Деньги с 15-минутной точностью живут на хабе и в его собственном журнале; в Home Assistant попадает то почасовое представление, которое он всегда вёл.
Что реально доходит до Home Assistant и по какому маршруту
Запись хаба и Energy dashboard — это разные вещи, и вторая зависит от того, как вы их соединили. Это важнее, чем кажется, потому что от этого зависит, покажет ли экран скачок в час перезапуска.
- Если Energy dashboard берёт стоимость из собственной сущности стоимости хаба, час, который она показывает, — это сумма периодов, каждый из которых хаб оценил отдельно, а не одна почасовая средняя, применённая к куску энергии.
- Если вы оставили собственный датчик цены поверх энергии хаба, Home Assistant считает его как и раньше, с той гранулярностью, которая у него всегда была. Журнал хаба и панель тогда расходятся, и правильный — тот, где есть периоды.
- Перезапуск по-прежнему прерывает то, что записывает Home Assistant, что бы ни делал хаб в это время. Ваши энергия и деньги на хабе целы. Исправляется ли пропуск внутри Home Assistant, зависит от маршрута и от одной настройки, о которой стоит знать.
Почасовой импорт статистики и настройка, о которой никто не упоминает
Интеграция RBgrid относится к одному из двух способов запуска хаба: хаб прошит как устройство ESPHome. Если ваш хаб работает на автономной прошивке и связывается с Home Assistant по MQTT, импорта включать не нужно. Переход между ними — это перепрошивка, а не настройка, поэтому это выбор на старте, а не переключатель, который переворачивают потом.
На этом маршруте интеграция каждый час запрашивает у хаба его собственную почасовую книгу и записывает её в долгосрочную статистику Home Assistant как второй набор строк, рядом с тем, что Home Assistant уже ведёт для ваших живых датчиков, — каждый час с энергией и стоимостью, которые хаб посчитал за этот час. Это работает само, раз в час, догоняя с того места, где остановилось, поэтому пауза в несколько дней заполняется час за часом, а не сваливается в один. Кнопка Import into HA statistics на вкладке History запускает тот же проход немедленно, а не является отдельным механизмом. В выборщиках Home Assistant строки появляются под именами вроде RBgrid Hub Main energy in и … cost.
⚠️ По умолчанию Energy dashboard на эти строки не смотрит. Мастер настройки интеграции подключает панель к живым счётчикам, и на них перезапуск по-прежнему показывает знакомый скачок в час, когда Home Assistant вернулся. Строки импорта, в которых нет пропуска, доступны в настройках источников Energy dashboard — их нужно выбрать вручную.
Итак, честная картина трёхслойная: собственная запись хаба никогда не содержит неверного часа; импортированная статистика даёт Home Assistant копию этой записи без пропусков; а панель показывает ту из двух, на которую вы её направите.
Как проверить свой счёт построчно
Это стоит сделать один раз, чтобы в следующий раз, когда цифра покажется неверной, было где посмотреть.
- Откройте страницу хаба Цены и перейдите в Applied prices.
- Выберите нужный день. Таблица — одна строка на каждый закрытый 15-минутный период, столбцы: Период · Покупка · Продажа · Источник.
- Скачайте CSV. Столбцы — время начала в собственном времени хаба, цена покупки, всё включено (all-in buy price), цена продажи (sell price) и источник.
- Сравните интересующий вас отрезок с выпиской вашего поставщика.
Столбец Источник — тот, который чаще всего пропускают, а потом он оказывается нужен. Он говорит, откуда взялась цена каждого периода: основной источник (primary), резервный, цена, переданная из Home Assistant, среднее за час, если ваш контракт рассчитывается почасово, или ваш тарифный план, когда ни один рыночный источник не покрыл период. Строка с plan — не ошибка: это значит, что рыночной цены в силе за этот период не было, поэтому её оценила зонная ставка. Это другое число, и оно получено верно.
День может содержать меньше 96 строк. Это не потерянная цена: журнал записывает периоды, в которых хаб работал, поэтому перезапуск, обновление или отключение питания оставляют пропуск, а пропуск означает, что хаба в тот момент там не было.
Чего это не делает
Стоит сказать прямо, потому что страница о ценах — самое лёгкое место, где можно подразумевать больше, чем правда.
- Оно не совпадёт с выпиской вашего поставщика точь-в-точь. Мы измеряем у ваших клещей, а они — на своём счётчике. Журнал показывает, какой период чего стоил и почему, а не что напишет ваш счёт.
- Оно ничего не переключает. Хаб может сообщить вам — и сообщить автоматизации — что отрезок дешёвый, в виде уведомления. Что включает посудомоечную машину — Home Assistant, переключатель нагрузки или вы.
- Оно не меняет гранулярность Home Assistant. См. примечание выше; это стоит повторить, потому что на это больше всего надеются.
- Это не оценка вашего контракта. Подходит ли вам контракт с динамической ценой, решаете вы и ваш поставщик.
Где читать дальше
- Where your price comes from — источники, цепочка резервных вариантов, что ваш контракт делает с рыночной ценой.
- How cost is calculated — цепочка от измеренного кВт·ч до денег, с двумя ветками для биржевых и «всё включено» источников.
- Every circuit into Home Assistant — два способа запустить хаб вместе с Home Assistant.
Цитаты взяты из публичных обсуждений на форуме Home Assistant и из GitHub issues, с их авторами и номерами тем, чтобы вы могли прочитать обсуждение целиком — включая части, которые расходятся с этой статьёй.
