Home Assistant отключается на двадцать минут — обновление, перезагрузка, отключение питания. Он возвращается, и на панели Energy либо дыра там, где был вечер, либо всплеск в час возвращения, которым никто не пользовался.
Эта картина знакома настолько, что её узнают по одной строке:
«Это просто добавляет всю энергию, которую вы пропустили, к часу, когда систему снова включили.» — anon11644107, Home Assistant forum thread 965144
И вторая картина, когда перезапускается устройство:
«Из-за этого наши Shelly 3EMs перезагружаются, а затем HA записывает крупный пик в 1000-ах кВт·ч потребления.» — msa, тема 479362
Почему это происходит и почему это не ваша настройка
Два механизма, оба обычные.
Счётчик догоняет всё сразу. Ваш счётчик продолжал считать, пока Home Assistant его не слушал. Когда Home Assistant возвращается и снова читает показания, вся разница приходит одним отсчётом и попадает в час перезапуска, потому что именно тогда он был записан. Энергия настоящая. Час — нет.
Или счётчик идёт назад. Устройство, которое потеряло питание, может вернуться с нуля. Накопительный датчик воспринимает это как сброс счётчика, и дальше либо пропадает накопленная сумма, либо появляется выдуманная:
«Из-за этого ваша энергия переходит с 4445 кВт·ч на 0 кВт·ч» — anon11644107, тема 386521
«всякий раз, когда датчик пропадал и возвращался, его значение прибавлялось к utility meter» — TimoVerbrugghe, тема 1010856
Ни то ни другое не является ошибкой вашей установки, и именно поэтому это стоит стольких вечеров: вы ищете неисправность там, где её нет. Home Assistant хранит энергию как почасовую долгосрочную статистику, а накопительный счётчик, который сбрасывается, в эту модель плохо вписывается. Обе стороны по отдельности разумны.
Ручная правка работает, но не закрепляется
Ответ, который люди передают друг другу, — Developer Tools → Statistics, где можно исправить строку, или прямая правка таблицы статистики. Это действительно работает, в своих пределах: можно поправить неверный час, но нельзя создать часы, которые никогда не были записаны. И это не масштабируется до размера настоящего пробела:
«У меня 2-дневный пробел в статистике энергии, потому что мой инвертор был офлайн.» — ConfusedTA, тема 803010
«Об этом много говорили, и я тоже с этим сталкивался, не находя простого обходного пути.» — VaReTaS, тема 803010
«Хотел бы как-то привести это в норму. Но я даже не могу понять, с чего начать.» — 104mapo, тема 965144
Два дня — это примерно пятьдесят строк. Три недели — около пятисот. А правка устраняет симптом, а не причину, так что следующий перезапуск начинает работу заново.
Что меняется, когда запись живёт на счётчике
Дыра существует, потому что единственная копия записи находилась в Home Assistant, а Home Assistant не работал.
Хаб RBgrid ведёт собственную книгу: он измеряет, закрывает каждый 15-минутный период, оценивает его по цене, действующей в этот момент, и записывает результат в свою флэш-память. Ничто из этого не зависит от того, работает ли Home Assistant. Когда записью занимается хаб, перезапуск Home Assistant — это перерыв в просмотре, а не в измерении.
Каждый сохранённый час также несёт собственную пометку о качестве, поэтому необычная запись об этом говорит, а не выглядит обычной. Час, в котором поглощена энергия после перерыва в измерении, помечается как покрывающий перерыв в работе, и страница «История» показывает эту пометку рядом с цифрой — число не подаётся тихо так, будто ничего не произошло.
Речь о записи хаба, а не о Home Assistant. Ничто здесь не меняет то, что Home Assistant хранит и как он это хранит. Следующий раздел — о части, которая действительно доходит до Home Assistant.
Почасовой импорт и настройка, которая определяет, что вы видите
Интеграция RBgrid относится к одному из двух способов работы хаба: хаб, прошитый как устройство ESPHome. Если ваш хаб работает на автономной прошивке и подключается к Home Assistant по MQTT, импортировать нечего включать, а переход между ними — это перепрошивка, а не настройка, поэтому выбор делается в начале, а не переключается потом.
На этом маршруте книга хаба не остаётся в хабе. Каждый час интеграция запрашивает её и записывает в долгосрочную статистику самого Home Assistant как второй набор строк, рядом с теми, что Home Assistant уже ведёт для ваших живых датчиков, — одна строка на час, с энергией и стоимостью, которые хаб записал за этот час, а не за час, когда пришло показание. Импорт продолжается с того места, где остановился, поэтому пауза в несколько дней заполняется час за часом, а не сваливается в одну точку. Первый импорт, которому не от чего продолжаться, идёт назад: до 30 дней почасовой книги хаба попадают в статистику за один проход. С этим связаны два ограничения, и оба важнее самой цифры: часы, которые хаб провёл без питания, в его книге отсутствуют, поэтому заполнить их нечем; и импорт добавляет собственные строки, не трогая ваши уже существующие.
Импорт выполняется сам, раз в час. Кнопка Import into HA statistics на вкладке History панели запускает тот же проход немедленно — это один механизм с ручным запуском, а не два. В выборщиках самого Home Assistant — в настройках источников панели Energy, в карточке статистики — строки появляются под именами вроде RBgrid Hub Main energy in и … cost. Импортированный час может появиться с энергией, но без стоимости, и получить стоимость при следующем проходе; это значит, что на момент импорта тарифный план ещё не задал денежную единицу, а не то, что деньги пропали.
⚠️ По умолчанию панель Energy эти строки не показывает. Мастер настройки интеграции подключает панель к живым счётчикам, а на них перезапуск по-прежнему даёт знакомый скачок в час, когда Home Assistant вернулся. Импортированные строки, в которых нет дыры, доступны в настройках источников панели Energy — их нужно выбрать.
Поэтому здесь три разные вещи, и их смешение — причина, по которой люди разочаровываются:
| Есть дыра после перезапуска? | |
|---|---|
| Собственная запись хаба | Нет — он никогда не прекращал измерять |
| Импортированные строки статистики в Home Assistant | Нет — это почасовая копия этой записи |
| Живые счётчики, которые панель использует по умолчанию | Да — тот же скачок в час, когда HA вернулся |
На маршруте MQTT импорта нет вовсе: хаб публикует живые значения, а статистика Home Assistant ведёт себя так, как всегда. Собственная запись хаба при этом цела, и это по-прежнему место, куда стоит смотреть, когда цифра вызывает сомнения.
Как проверить, а не верить на слово
- В хабе: откройте страницу «История» хаба за интересующий день. Час, в котором поглощена энергия после перерыва, говорит об этом в своей пометке о качестве, так что вы отличите странно выглядящий час от неверного.
- В Home Assistant: сравните источник живых счётчиков с импортированными строками
RBgrid Hub …за тот же день. Если они различаются, разница и есть пробел — а импортированные строки те, в которых часы стоят на своих местах. - По счёту: журнал применённых цен хаба хранит 40 дней в CSV, по одной строке на каждый закрытый 15-минутный период, с указанием источника каждой цены.
Чего это не делает
- Не исправляет существующую историю Home Assistant. Строки, которые уже были неверными, остаются неверными; импорт добавляет свои строки из собственной книги хаба и не переписывает ваши.
- Не меняет источник панели по умолчанию. Этот выбор остаётся за вами, в настройках панели Energy, и эта статья не предсказывает, что он изменится.
- Не даёт Home Assistant 15-минутного разрешения. Периоды хаба принадлежат хабу; то, что доходит до Home Assistant, — почасовое, как и всегда.
- Не останавливает выпадение ваших датчиков. Оно убирает последствие для записи, а не причину в вашей сети.
Где читать дальше
- Динамические цены на электроэнергию в Home Assistant — то же разделение, применённое к деньгам, а не к энергии.
- История и качество записей — что означает каждая пометка качества и что проверить, когда она появляется.
- Каждая цепь в Home Assistant — два способа работы хаба с Home Assistant.
Цитаты приведены из публичных тем форума Home Assistant и GitHub issues, с авторами и номерами тем, чтобы вы могли прочитать каждую тему целиком.