Prinzipiell lässt sich auch das Apex Chart mit der energy.-date-selection nutzen.
Es erfordert allerdings einige Helfer und Zusatzkarten.
Hier habe ich das Energy Dashboard von HA nachgebaut. Ist noch in Arbeit daher nur als Richtung.
Oben ist das Apex Chart mit der Energy Flow Card Plus, unten die HA Energy Karten

Im Card-Code sieht das dann so aus:
type: custom:config-template-card
variables:
SPAN: states['sensor.epsp_span'].state
OFFSET: states['sensor.epsp_offset'].state
DURATION: states['sensor.epsp_duration'].state
START: states['sensor.epsp_start'].state
PERIOD: states['sensor.epsp_period'].state
entities:
- sensor.pv_og_energy_direkter_eigenverbrauch
- sensor.power_meter_og_verbrauch
- sensor.battery_og_gesamtentladung
- sensor.power_meter_og_exportierte_energie
- sensor.battery_og_gesamtladung
- input_number.dummy_refresh
card:
type: custom:apexcharts-card
update_interval: 5min
apex_config:
chart:
height: 440px
legend:
show: false
graph_span: ${SPAN}
span:
start: ${START}
offset: ${OFFSET}
color_list:
- orange
- blue
- green
- violet
- pink
stacked: true
series:
- entity: sensor.pv_og_energy_direkter_eigenverbrauch
type: column
float_precision: 2
show:
legend_value: false
group_by:
func: diff
duration: ${DURATION}
start_with_last: true
statistics:
type: state
period: ${PERIOD}
- entity: sensor.power_meter_og_verbrauch
type: column
float_precision: 2
show:
legend_value: false
group_by:
func: diff
duration: ${DURATION}
start_with_last: true
statistics:
type: state
period: ${PERIOD}
- entity: sensor.battery_og_gesamtentladung
type: column
float_precision: 2
show:
legend_value: false
group_by:
func: diff
duration: ${DURATION}
start_with_last: true
statistics:
type: state
period: ${PERIOD}
- entity: sensor.power_meter_og_exportierte_energie
transform: return x * -1;
type: column
float_precision: 2
show:
legend_value: false
group_by:
func: diff
duration: ${DURATION}
start_with_last: true
statistics:
type: state
period: ${PERIOD}
- entity: sensor.battery_og_gesamtladung
transform: return x * -1;
type: column
float_precision: 2
show:
legend_value: false
group_by:
func: diff
duration: ${DURATION}
start_with_last: true
statistics:
type: state
period: ${PERIOD}
Energy Period Selector Plus-Karte
type: custom:energy-period-selector-plus
sync_start_entity: input_datetime.epsp_startdatum
sync_end_entity: input_datetime.epsp_enddatum
Energy Date Selection Bridge-Karte
type: custom:energy-date-selection-bridge
show_card: false
sensor.epsp_start
{% set start_day = states('input_datetime.epsp_startdatum') | as_datetime %}
{% set end_day = states('input_datetime.epsp_enddatum') | as_datetime %}
{% set span = (end_day - start_day).days + 1 %}
{% if span > 360 %}
{% set start = 'year' %}
{% else %}
{% set start = 'day' %}
{% endif %}
{{ start }}
sensor.epsp_span
{% set start_day = states('input_datetime.epsp_startdatum') | as_datetime %}
{% set end_day = states('input_datetime.epsp_enddatum') | as_datetime %}
{% set span = (end_day - start_day).days + 1 %}
{% if span > 360 %}
{% set span = '1year' %}
{% elif span > 20 %}
{% set span = ((start_day.replace(day=28) + timedelta(days=7)).replace(day=1) - timedelta(days=1)).day ~ 'd' %}
{% elif span > 1 %}
{% set span = '7d' %}
{% else %}
{% set span = '1d' %}
{% endif %}
{{ span }}
sensor.epsp_period
{% set start_day = states('input_datetime.epsp_startdatum') | as_datetime %}
{% set end_day = states('input_datetime.epsp_enddatum') | as_datetime %}
{% set span = (end_day - start_day).days + 1 %}
{% if span > 360 %}
{% set period = 'month' %}
{% elif span > 1 %}
{% set period = 'day' %}
{% else %}
{% set period = 'hour' %}
{% endif %}
{{ period }}
sensor.epsp_offset
{% set start_day = states('input_datetime.epsp_startdatum') | as_datetime %}
{% set end_day = states('input_datetime.epsp_enddatum') | as_datetime %}
{% set span = (end_day - start_day).days + 1 %}
{% if span > 360 %}
{% set offset = start_day.year - now().year %}
{% if offset >=0 %}
{% set offset = '+' ~ offset %}
{% endif %}
{% set offset = offset ~ 'year' %}
{% else %}
{% set offset = (start_day - now().date() | as_datetime).days %}
{% if offset >=0 %}
{% set offset = '+' ~ offset %}
{% endif %}
{% set offset = offset ~ 'd' %}
{% endif %}
{{ offset }}
sensor.epsp_duration
{% set start_day = states('input_datetime.epsp_startdatum') | as_datetime %}
{% set end_day = states('input_datetime.epsp_enddatum') | as_datetime %}
{% set span = (end_day - start_day).days + 1 %}
{% if span > 360 %}
{% set duration = '1month' %}
{% elif span > 1 %}
{% set duration = '1d' %}
{% else %}
{% set duration = '1h' %}
{% endif %}
{{ duration }}
Ob die Energy Brige Karte noch notwendig ist, weiß ich nicht. Habe da einiges auf eigene Sensoren umgebaut und noch nicht getestet, ob sie notwendig ist für die Aktualisierung der Daten.
Die Aktualisierung bei Jahreswerten ist etwas träge, aber es geht.