Skip to content

SlotWrapper: linear interpolation for solar tariffs shifts energy between time slots #32099

Description

@1va13n7in

Describe the bug

SlotWrapper splits 30-minute forecast slots into 15-minute sub-slots.
For solar tariffs, it interpolates between the current and next slot
value (tariff/slots.go lines 46-52). Price tariffs use constant values.

Solcast and similar sources provide average power per period. A 30-min
slot with 10000W means 5000 Wh. Both 15-min sub-slots should keep
10000W to preserve this.

The interpolation shifts energy from afternoon into morning and has no
benefit: the sub-slot resolution is artificial, the source data has no
information at 15-min granularity.

Removing the switch block (6 lines) fixes the issue and simplifies the
code. Solar sub-slots would use constant values like price tariffs
already do.

Steps to reproduce

  1. Configure a solar tariff with a source that provides 30-minute slots
    (e.g. Solcast via Home Assistant)

  2. Run: evcc tariff solar

  3. Observe that 15-min sub-slot pairs have different values:
    2026-07-23 17:00:00 2026-07-23 17:15:00 12508.900
    2026-07-23 17:15:00 2026-07-23 17:30:00 12464.650

  4. The source data has one value for the full 30 minutes.
    Both sub-slots should show the same value (12508.900).

  5. Sum all slot values × 15min and compare with the raw forecast sum.
    They differ because the interpolation shifts energy between slots.

Expected behavior:

Both 15-min sub-slots of a 30-min source slot should have the same
value, preserving total energy per slot. This is how price tariffs
already work.

Configuration details

$ kubectl -n evcc exec deploy/evcc -- evcc dump --cfg
[main  ] INFO 2026/07/23 21:37:53 using config file: /etc/evcc.yaml
[main  ] INFO 2026/07/23 21:37:53 using sqlite database: /root/.evcc/evcc.db?_pragma=busy_timeout(5000)&_pragma=foreign_keys(1)&_pragma=auto_vacuum(INCREMENTAL)
[eebus ] INFO 2026/07/23 21:38:03 Local SKI: d5169309c37270892efc2fff7809d63f62cb8414
[ha-meter] WARN 2026/07/23 21:38:03 using deprecated 'home' parameter 'HomeAssistant', please use 'uri' instead
[ha-meter] WARN 2026/07/23 21:38:03 using deprecated 'home' parameter 'HomeAssistant', please use 'uri' instead
[ha-meter] WARN 2026/07/23 21:38:03 using deprecated 'home' parameter 'HomeAssistant', please use 'uri' instead
[main  ] INFO 2026/07/23 21:38:05 circuit victron has no meter and no loadpoint assigned

Version: `0.311.1`

Log details

From                   To                     Yield (W)
2026-07-23 17:00:00    2026-07-23 17:15:00    12508.900
2026-07-23 17:15:00    2026-07-23 17:30:00    12464.650
2026-07-23 17:30:00    2026-07-23 17:45:00    10762.500
2026-07-23 17:45:00    2026-07-23 18:00:00    10718.250

Each pair originates from a single 30-min Solcast slot but shows
different values due to interpolation. The second sub-slot is always
shifted towards the next slot's value.

What type of operating system or environment does evcc run on?

Linux

External automation

  • I have made sure that no external automation like HomeAssistant or Node-RED is active or accessing any of the mentioned devices when this issue occurs.

Nightly build

  • I have verified that the issue is reproducible with the latest nightly build

Version

evcc version 0.311.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions