Вы поставили спотовую цену в Home Assistant, привязали к ней панель Energy, и число получилось неверным. Не немного неверным, а достаточно, чтобы вы полезли искать ошибку в собственных шаблонах.
Обычно ошибка не в шаблонах. Цена, которую вы загрузили, и цена, которую вы платите, — два разных числа, и ничто в цепочке не говорит, какое из них у вас в руках.
«Панель Energy в Home Assistant, при всей её мощности, ставит перед вами задачу» — arva, ветка форума Home Assistant 682847
Так начинается сдержанно сформулированная ветка, автор которой в итоге написал собственную интеграцию. Эта статья — про шаг до этого: какой источник цен покрывает вашу зону, что он на самом деле даёт и что взамен требует.
Биржевая или «всё включено»: решите это верно, и остальное сложится
Каждый источник относится к одному из двух видов, и хаб должен знать, к какому именно:
- Биржевая цена — это начало расчёта, а не его конец. Это оптовая цена за период. Платите вы её, умноженную на множитель (1.0, если ваш договор не масштабирует биржевую цену), плюс надбавка поставщика за киловатт-час, плюс сетевой сбор, плюс налоги и сборы, а затем НДС на всё вместе — каждый компонент вводится без НДС, потому что НДС применяется один раз, к сумме. Все денежные поля — за киловатт-час, в основной единице вашей валюты: надбавка 2.5 цента вводится как
0.025, а не как2.5. Хаб сам переводит то, что публичные источники дают за мегаватт-час; что вы вводите, он принимает как есть. Введёте цену, которая уже включает НДС, — и налог заплатится дважды. Это самая частая причина, по которой спотовая настройка даёт завышенный результат. «Всё включено» никогда не облагается налогом повторно. Подставьте биржевую цену прямо в расчёт стоимости — и он выйдет занижен, пока вы не добавите составляющие; с этого момента арифметика уже на вас. - «Всё включено» — цена, в которой эти составляющие уже есть. Это то, что поставщик выставляет вам за период, с налогами. Добавьте к ней свою надбавку — и расчёт выйдет завышен.
Оба сбоя снаружи выглядят одинаково: стоимость не совпадает со счётом. Часто забывают именно части, не связанные с кВт·ч, и они немалые:
«+1 к этому. В Великобритании это тоже почти стандарт» — thefunkygibbon, ветка 330609
Эта ветка — о абонентской плате: суточной сумме, которая никак не зависит от того, сколько вы потребили. Её просят с 2021 года.
На хабе вид цены — свойство источника. Выберете биржевой источник — множитель, надбавку, сборы, налоги и НДС договора вы заполняете один раз; выберете источник «всё включено» — цена принимается такой, какой приходит. В любом случае хаб оценивает каждый 15-минутный период по цене именно этого периода и хранит цену рядом с энергией, чтобы расчёт можно было проследить позже, а не выводить заново.
⚠️ Почему это стоит сделать правильно с первого раза. Хаб хранит, какую цену он применил, период за периодом, — но уже применённая цена — это история, а не формула для повторного расчёта. У Home Assistant то же свойство, и с ним люди сталкиваются на собственном опыте:
«Я почти уверен, что в HA нельзя задним числом внести изменения» — tinkergnome, ветка 585379
Шесть публичных источников
| Источник | Вид | Разрешение | Зоны | Валюта |
|---|---|---|---|---|
| Energy-Charts (Fraunhofer ISE) | биржевая | 15 минут | AT, BE, CH, CZ, DE-LU, DK1, DK2, FR, HU, IT-North, NL, NO2, PL, SE4, SI | EUR |
| Nord Pool (неофициальный портал данных) | биржевая | 15 минут | SE1–4, NO1–5, DK1–2, FI, EE, LV, LT | валюта зоны: SEK, NOK, DKK или EUR |
| Elpriset just nu (SE) | биржевая | 15 минут | SE1–4 | SEK |
| Hva koster strømmen (NO) | биржевая | 1 час | NO1–5 | NOK |
| EnergyZero (NL) | «всё включено» | 15 минут | NL | EUR |
| Octopus Agile (UK) | «всё включено» | 30 минут | 14 регионов GSP, A–P | GBP |
Ни одному из них не нужен токен или аккаунт.
Источник «всё включено» несёт цену этого поставщика. Если ваш поставщик другой, его цифра вам не принадлежит — отправьте в Home Assistant собственную цену, как описано ниже.
Разрешение — не шаг выставления счёта. Цена с шагом 30 минут или час применяется к каждому 15-минутному периоду внутри себя — четыре периода просто делят одну цену, — поэтому стоимость всё равно считается по 15-минутным периодам. А 15-минутный источник не означает 15-минутного выставления счёта: выставляется ли счёт по периодам или по среднему за час, определяется договором и задаётся отдельно.
⚠️ Валюта никогда не конвертируется. Хаб не переведёт SEK в EUR. Зона с валютой, отличной от валюты вашего тарифного плана, отклоняется при сохранении, а источник в другой валюте пропускается, а не приближается. Сначала задайте валюту плана, потом выбирайте зону под неё.
Что каждый требует взамен
Публичный не значит безусловный. Каждый источник несёт формулировку, которую требует его лицензия, — например, Bundesnetzagentur | SMARD.de / Energy-Charts (CC BY 4.0) — и хаб показывает её на странице «Цены». Эта строка — не украшение: это условие, на котором данные вообще можно использовать. Energy-Charts отдаётся только для зон, опубликованных по CC BY 4.0.
Кто обязан её показывать, решает тот, кто показывает цену. Хаб передаёт атрибуцию и ссылку на условия вместе с каждой ценой, поэтому у всего, что выводит цену, есть всё необходимое. Приложение хаба указывает источник на странице «Цены». Панель RBgrid в Home Assistant тоже её выводит. Если вы строите собственную панель на данных хаба, показывать её — ваше дело: текст и ссылка есть в данных цены именно для этого.
⚠️ Nord Pool работает через неофициальный портал данных, и хаб говорит об этом там, где называет источник. Никакого соглашения об обслуживании за ним нет: он может измениться или прекратиться без предупреждения. Используйте его осознанно и, где есть возможность, предусмотрите запасной источник — см. третий шаг ниже; для FI, EE, LV и LT он единственный в списке, так что там запасным может быть только отправка цены из Home Assistant.
Это и честный ответ на вопрос «вы работаете с моим поставщиком?» — хаб не работает с поставщиками. Он читает публичные данные о ценах для рыночной зоны и применяет к ним описанный вами договор. Источник из списка — это настройка, которую вы выбрали, а не отношения, которые с кем-то установлены.
Если вашей зоны нет в списке
Тогда седьмой источник — вы. Home Assistant или любой другой клиент может отправить цены в хаб вместо того, чтобы хаб их загружал: до 200 периодов за раз, которые хранятся в собственном хранилище хаба. Вы указываете, биржевые это цены или «всё включено», и с этого момента они обрабатываются точно так же, как данные поставщика такого вида.
Это путь для поставщика, по которому у хаба нет источника, и для цены, которую вы рассчитываете сами. В сборке ESPHome Home Assistant изначально указан среди источников; на автономной прошивке он появляется после получения первой отправки. В любом случае динамические цены выключены, пока вы их не включите, а источник выбираете вы — Home Assistant одна из возможностей в списке, а не уже выбранная.
Четыре вещи об отправке проще узнать заранее, чем выяснять на практике:
- Вид цены — биржевая или «всё включено» — задаётся один раз, в настройках динамических цен, а не с каждой партией. Установите его в соответствии с тем, что отправляете, и больше к нему не возвращайтесь.
- Вы отправляете партию периодов, у каждого есть начало и конец. Шаг вашего источника может быть 15 минут, 30 минут или час; хаб оценивает каждый свой 15-минутный период по той записи, которая его покрывает.
- Повторная отправка периода заменяет его. Тот же начальный момент, новая цена — и сохранённая перезаписывается, так что исправить день можно повторной отправкой.
- Часы, которые вы не отправили, не остаются без цены. Они проходят по обычной цепочке: ваш запасной источник, если вы его задали, иначе тарифная ставка вашего плана. В журнале указано, какой источник покрыл каждый период, так что ничего не теряется молча — просто цена взята из другого места.
Когда цена не приходит
Рынок day-ahead публикует завтрашние цены раз в день. Публикация может запоздать, загрузка — упасть, ваша зона может отсутствовать в ответе. Хаб не отказывается от запоздавшего дня: он продолжает запрашивать — каждые пятнадцать минут в раннем окне, затем раз в час, пока день ещё не получен, — так что публикация, пришедшая поздно вечером, подхватывается в течение примерно часа, и периоды пересчитываются по источнику, а не остаются на тарифном плане. Для каждого 15-минутного периода хаб определяет ровно одну цену, в таком порядке:
| источник | что это значит | |
|---|---|---|
| 1 | Основной | выбранный вами поставщик для вашей зоны |
| 2 | Запасной | необязательный, должен быть другим поставщиком; используется только для периодов, которые не покрывает основной |
| 3 | Ваш план | тарифная ставка зоны, действующая в этот период |
Ничего не смешивается: один период — одна цена, один источник, и источник хранится вместе с периодом, так что цифру, которую вы прочтёте на следующей неделе, можно проследить до того, откуда взялась её цена.
Сначала — доступен ли вам запасной источник вообще. Двенадцать рыночных зон из перечисленных покрыты двумя и более источниками; пятнадцать покрыты ровно одним, и единственный второй источник там — цена, которую вы отправляете из Home Assistant. Найдите свою зону, прежде чем читать остаток этого абзаца как совет.
Если запасной источник есть, он стоит пяти минут. Без него вступает тарифный план. Это правильное поведение — ваша энергия по-прежнему учитывается и оценивается, — но это другая цена, и ваши расходы за этот отрезок не совпадут с рынком.
Запасной источник другого вида допустим, и это меняет то, что нужно заполнить. Каждый период оценивается по классу источника, который его реально покрыл, а не по классу основного. Поэтому, если основной — «всё включено», а запасной — биржевой, составляющие договора всё равно нужно заполнить, иначе периоды запасного источника окажутся чистой биржевой ценой, то есть занижены. Заполнение ничего не стоит пользователю «всё включено»: источник такого вида эти поля игнорирует. Единственные правила: запасной источник — другой поставщик, и оба выставляют цену в валюте вашего плана.
⚠️ И запасной источник сохраняет рыночную цену своего вида, которая не всегда совпадает с той же цифрой. В NL, например, запасной биржевой источник за основным «всё включено» оценивает эти периоды как биржевую цену плюс составляющие вашего договора, а не как «всё включено» вашего поставщика. В журнале хаба видно, какой источник использовал каждый период, так что тихую подмену можно отличить от тихого сбоя — и от дня, посчитанного по другой основе.
Выбор в порядке, который экономит работу
- Сначала задайте валюту плана. От неё зависит, какие зоны вообще можно сохранить, и если сделать это потом, остальное придётся переделывать.
- Найдите свою зону в таблице и прочитайте колонку «Вид». Одно это слово определяет, заполнять ли составляющие вашего договора или оставить их в покое.
- Выберите запасной источник — если в вашей зоне он есть. Двенадцать зон покрыты дважды: SE1–4 и NO1–5 (Nord Pool вместе с национальным источником), DK1–2 и NL (Energy-Charts вместе со вторым), а SE4 и NO2 — трижды. Остальные покрыты одним. Для DE-LU, FR, AT, BE, CH, CZ, HU, IT-North, PL, SI, FI, EE, LV, LT и регионов Великобритании в этом списке нет второго поставщика, так что за основным следует тарифная ставка вашего плана — если только вы не отправляете цену из Home Assistant, которая сама является источником.
- Сверьте первый полный день с цифрами вашего поставщика, а не с оптовым графиком. Два разных расхождения означают разное. Расхождение примерно на долю налогов и НДС означает, что вид задан неверно, — это частый случай, — а расхождение примерно на вашу абонентскую плату означает, что всё в порядке. Хаб считает энергию за киловатт-час. Суточная или месячная фиксированная сумма — vastrecht, Grundpreis, netbeheer, абонплата — в его цифру не входит, поэтому за месяц итог будет отличаться от счёта ровно на эту сумму, и никакая настройка этого не изменит.
Чего это не делает
- Это не отношения с поставщиком. Источники — публичные данные о ценах для рыночных зон; договор — то, что вы описали в плане.
- Он не конвертирует валюту. Несовпадение отклоняется в момент сохранения — это лучшее место, чтобы его обнаружить.
- Он ничего не включает и не выключает, когда цена меняется. Дешёвые окна — это сигнал; что делать с ним, решает ваша автоматизация.
- Он не пересчитывает прошлое. Период сохраняет цену, которая была к нему применена, вместе со своим источником. Исправление настройки меняет то, что будет дальше.
Где читать дальше
- Where your price comes from — полный справочник: каждое поле, каждая причина сбоя и что каждая из них значит для вас.
- Market prices — короткая версия, если вы ещё решаете, нужно ли это вообще.
- Prices in the app — страница «Цены», таблица по периодам и журнал применённых цен.
- How cost is calculated — цепочка от измеренного киловатт-часа до денег.
- Tariffs and plans — зоны, сборы, налоги и НДС; здесь находится вторая половина спотового источника.