"Unter-" Attribute aus einer Entität filtern und darstellen

was möchtest du denn genau machen? Die Stunden habe ich, der Übersicht halber, in einem gesonderten template

Moin,
@The Worrior:
kannst Du bitte die Farbgebung/ Code Deines Epex Spot Charts teilen?

Moin,

mein code sieht so aus:

type: custom:apexcharts-card
experimental:
  color_threshold: true
all_series_config:
  unit: Cent/kWh Jetzt
apex_config:
  grid:
    show: true
    borderColor: '#E0E0E0'
  chart:
    height: 250px
  tooltip:
    enabled: true
    followCursor: false
    x:
      show: false
    fixed:
      enabled: true
header:
  show: true
  title: Strompreisentwicklung Heute/Morgen
  show_states: true
  colorize_states: true
  standard_format: false
graph_span: 48h
now:
  show: true
  color: 9E9E9E
span:
  start: day
series:
  - entity: sensor.tibber_prices
    show:
      in_header: before_now
      name_in_header: false
    color_threshold:
      - value: 0
        color: 4DD0E1
      - value: 10
        color: 26A69A
      - value: 15
        color: 4CAF50
      - value: 20
        color: 7CB342
      - value: 25
        color: FBC02D
      - value: 30
        color: EF6C00
      - value: 40
        color: B71C1C
    type: line
    curve: stepline
    extend_to: false
    stroke_width: 3
    float_precision: 1
    color: 0153A4
    data_generator: |
      const noon = new Date()
      noon.setHours(0, 0, 0, 0)
      const prices = entity.attributes.today.concat(entity.attributes.tomorrow);
      const data = [];
      for(let i = 0; i < prices.length; i++) {
        data.push([noon.getTime() + i * 1000 * 3600, prices[i].total * 100])
      }
      return data;

Deine Entität musst du ggf. anpassen!

Besten Dank, bekommst Du die Tibber Daten auch über die EPEX Spot Integration? Die Attribute sehe etwas anders aus, da ich SMARD.de und AWATTar konfiguriert habe um nur die EPEX Spot Daten zu bekommen. Ich nehme gerade an einem Pilotbetrieb unserer Stadtwerke zum dynamischen Tarif teil.

{'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'data': [{'start_time': '2024-10-06T00:00:00+02:00', 'end_time': '2024-10-06T01:00:00+02:00', 'price_ct_per_kwh': 25.797}, {'start_time': '2024-10-06T01:00:00+02:00', 'end_time': '2024-10-06T02:00:00+02:00', 'price_ct_per_kwh': 25.431}, {'start_time': '2024-10-06T02:00:00+02:00', 'end_time': '2024-10-06T03:00:00+02:00', 'price_ct_per_kwh': 25.296}, {'start_time': '2024-10-06T03:00:00+02:00', 'end_time': '2024-10-06T04:00:00+02:00', 'price_ct_per_kwh': 25.358}, {'start_time': '2024-10-06T04:00:00+02:00', 'end_time': '2024-10-06T05:00:00+02:00', 'price_ct_per_kwh': 25.282}, {'start_time': '2024-10-06T05:00:00+02:00', 'end_time': '2024-10-06T06:00:00+02:00', 'price_ct_per_kwh': 25.431}, {'start_time': '2024-10-06T06:00:00+02:00', 'end_time': '2024-10-06T07:00:00+02:00', 'price_ct_per_kwh': 25.365}, {'start_time': '2024-10-06T07:00:00+02:00', 'end_time': 


Farben sind eingebaut, sieht gut aus. Ich teste gerade auch noch die Line Funktion:

Da ich Tibber-Kunde bin hole ich mir die Daten mittels eines Rest Sensors direkt von Tibber. Mein Sensor sieht dabei so aus:

- platform: rest
  name: Tibber-Prices
  resource: https://api.tibber.com/v1-beta/gql
  method: POST
  payload: '{ "query": "{ viewer { homes { currentSubscription { priceInfo { current { total } today { total startsAt } tomorrow { total startsAt } } } } } }" }'
  json_attributes_path: "$.data.viewer.homes[0].currentSubscription.priceInfo"
  json_attributes:
    - today
    - tomorrow
  value_template: "{{ value_json.data.viewer.homes[0].currentSubscription.priceInfo.current.total | float }}"
  scan_interval: 30
  headers:
    Authorization: !secret tibber_token
    Content-Type: application/json
    User-Agent: REST
  unit_of_measurement: EUR/kWh

Sieht dann für Heute/Morgen als Chart dann so aus:

Weiß einer von Euch, wie man eine zusätzlich horizontale Linie z.B. für eine Preisgrenze konfigurieren kann? Die Preisgrenze könnte man über einen Input Helfer definieren und dann im Chart farblich anders darstellen.

Also mit festen Werten (also in der yaml festgelegten Zahlen) geht das, wie man aber “dynamische” Sensorwerte integriert kann ich dir leider nicht sagen…

Nein, so meint ich das nicht. Ich habe schon den dynamischen Tarif über das Chart dargestellt, aber ich hätte gerne meine persönliche Preisgrenze, unter der ich die Batterie laden würde dargestellt, der Wert ist natürlich fix, z.B. 22 ct und damit eine horizontale Line.

Achso, ja einen fixen Wert kannst du in der yaml mit einer “annotations” festlegen. Das ist dann aber ein fester Wert (z.B.17.3) ich habe es noch nicht herausgefunden ob man den Wert über einen Sensor oder input_number hinein transferieren kann.

Ein fixer Wert geht wie folgt:

type: custom:apexcharts-card
experimental:
  color_threshold: true
all_series_config:
  unit: Cent/kWh Jetzt
apex_config:
  grid:
    show: true
    borderColor: '#E0E0E0'
  chart:
    height: 250px
  tooltip:
    enabled: true
    followCursor: false
    x:
      show: false
    fixed:
      enabled: true
  annotations:
    yaxis:
      - y: 17.3  # Fester Wert in Cent
        borderColor: '#FF0000'
        strokeDashArray: 4
        opacity: 1
        label:
          borderColor: '#FF0000'
          style:
            color: '#fff'
            background: '#FF0000'
          text: 17,3 Cent
header:
  show: true
  title: Strompreisentwicklung Heute/Morgen
  show_states: true
  colorize_states: true
  standard_format: false
graph_span: 48h
now:
  show: true
  color: 9E9E9E
span:
  start: day
series:
  - entity: sensor.tibber_prices
    show:
      in_header: before_now
      name_in_header: false
    color_threshold:
      - value: 0
        color: 4DD0E1
      - value: 10
        color: 26A69A
      - value: 15
        color: 4CAF50
      - value: 20
        color: 7CB342
      - value: 25
        color: FBC02D
      - value: 30
        color: EF6C00
      - value: 40
        color: B71C1C
    type: line
    curve: stepline
    extend_to: false
    stroke_width: 3
    float_precision: 1
    color: 0153A4
    data_generator: |
      const noon = new Date();
      noon.setHours(0, 0, 0, 0);
      const prices = entity.attributes.today.concat(entity.attributes.tomorrow);
      const data = [];
      for(let i = 0; i < prices.length; i++) {
        data.push([noon.getTime() + i * 1000 * 3600, prices[i].total * 100]);
      }
      return data;

Sieht dann so aus:
image

Vielen Dank, soweit bin ich auch schon gekommen, aber es scheint wirklich so zu sein, das hier immer ein fixer Zahlenwert und keine Variable / Entity möglich ist. Ich experimentiere gerade mit einem zweiten Graphen. Ist werde bei Erfolg die Ergebnisse auch posten.