Erste KI-basierte Solarprognose die selbst lernt und deine Anlage kennenlernt - veröffentlicht-!

Es ist nicht zurückgesetzt.

Es ist nur die Anzeige. Heute Nacht um 23:30 berechnet ganz normal beides. Und die Anzeige wird wieder umgestellt.

1 „Gefällt mir“

Moin,

ich habe mal reingeschaut ob er was im Mittagsupdate macht (da bisher nicht sichtbar) und dabei ist mir eine Merkwürdigkeit aufgefallen und zwar habe ich im Log immer (zumindest die letzten 3 Tage) beim Kriterium 5

Kriterium 5 (Cloud-Cover Diff > 25pp): ✗ NICHT ERFÜLLT

Davor habe ich immer die Zeile:

DEBUG - Error getting current cloud cover: 'WeatherExpertBlender' object has no attribute 'get_blended_forecast'

mmmh, was ist da die Ursache, kann es denn mal erfüllt sein?

hier mal mein gesamtes Log aus dem Bereich:

2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ═══ Adaptive Forecast Check ═══
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Zeitpunkt: 12:30:00
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Sammle Analysedaten...
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Analyse Vormittag (08:10-12:30):
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • IST-Produktion:  1.82 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Prognose:        3.03 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:      -40% (-1.21 kWh)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 1: Signifikante Abweichung
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Tagesprognose:       7.41 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Dynamische Schwelle: 0.74 kWh (max von 0.1 kWh oder 10% Tagesprognose)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:          1.21 kWh (40%)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    → ✓ ERFÜLLT (>35% UND >0.74 kWh)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 2 (Keine Sondersituation): ✓ ERFÜLLT
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 3 (>= 4h bis Sunset): ✓ ERFÜLLT (4.7h)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 4 (Frische Wetterdaten): ✓ ERFÜLLT (06:00 UTC)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: Manual 5-source weather update triggered (force=False)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: Refreshing all 5 weather sources (force=False)...
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.forecast.forecast_weather - INFO - Force update - fetching from Open-Meteo API...
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_open_meteo_client - DEBUG - Using fresh cached Open-Meteo data
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_open_meteo_client - DEBUG - Loaded 17 existing days from cache
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_open_meteo_client - INFO - Saved Open-Meteo cache: 72 hours, 17 days (in-memory cache also updated)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.forecast.forecast_weather - INFO - Force update successful: 72 hours
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - DEBUG - Pipeline: Open-Meteo fetch SUCCESS
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - DEBUG - Pipeline: wttr.in cache updated
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - DEBUG - Pipeline: Bright Sky cache updated
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: Expert weather sources (force=False): wttr.in: OK, Bright Sky: OK, Pirate Weather: disabled (no API key)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Creating corrected forecast - 7 days (clear=0, cloudy=7), solar_rad: daily=1.000, clear=1.000, cloudy=1.000
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_open_meteo_client - INFO - Loaded Open-Meteo cache: 408 hours
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - DEBUG - Reloaded Open-Meteo cache file
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Loaded weather cache: 408 hours, 17 days
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_forecast_handler - DEBUG - Production time updated: active=True, duration=13210s
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Created corrected forecast: 408 hours, 7 days precision learning
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: Corrected forecast updated - weather_forecast_corrected.json is SINGLE SOURCE OF TRUTH
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Creating fresh weather integration cache with full blending...
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_open_meteo_client - INFO - Loaded Open-Meteo cache: 408 hours
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - DEBUG - Reloaded Open-Meteo cache file
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Loaded weather cache: 408 hours, 17 days
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - DEBUG - Integration cache copied to history: weather_integration_2026-02-02.json
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_corrector - INFO - Weather integration cache updated: 408 hours, 17 days (fresh 5-source blending)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: 5-source weather update SUCCESS - 4 sources active
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - DEBUG - Error getting current cloud cover: 'WeatherExpertBlender' object has no attribute 'get_blended_forecast'
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 5 (Cloud-Cover Diff > 25pp): ✗ NICHT ERFÜLLT
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Morning Forecast: 45% clouds
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Current Forecast: 45% clouds (+0pp)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ══ Ergebnis: KEINE KORREKTUR ══
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Grund: Wetterdaten nahezu unverändert (Diff: 0pp)

Ich denke, das wird auch noch angepasst.
So sieht es bei mir aber auch aus.

1 „Gefällt mir“

Heute Mittag bei mir.

2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ═══ Adaptive Forecast Check ═══
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Zeitpunkt: 12:30:00
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Sammle Analysedaten...
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Analyse Vormittag (07:55-12:30):
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • IST-Produktion:  1.00 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Prognose:        0.23 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:      +336% (+0.77 kWh)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 1: Signifikante Abweichung
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Tagesprognose:       0.58 kWh
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Dynamische Schwelle: 0.10 kWh (max von 0.1 kWh oder 10% Tagesprognose)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:          0.77 kWh (336%)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    → ✓ ERFÜLLT (>35% UND >0.10 kWh)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 2 (Keine Sondersituation): ✗ NICHT ERFÜLLT (Heavy frost detected)
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ══ Ergebnis: KEINE KORREKTUR ══
2026-02-02 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Grund: Sondersituation aktiv: Heavy frost detected

1 „Gefällt mir“

heute schauts so aus.

Ach, interessant. Hier passt das mit dem clearer than forecast. Ich erzeuge pro Std weniger als vorhergesagt, aber er sagt mir trotzdem clearer than forecast…. Naja aber der Trend der Vorhersagegenauigkeit passt erstmal

es nähert sich dem Testkandidaten an :slight_smile: ein Fehler noch… “Cross my Fingers”

Das sah vor ein paar “Momenten” noch anders aus… :slight_smile:

9 „Gefällt mir“

Bei mir hat es heute Nacht sehr stark reduziert..

Stand jetzt:

Mal gucken was dein 12:30 Lauf macht.

Komisches Verhalten, auf so niedrige Prognose.

Da bin ich auch mal gespannt, ich werde berichten.

Wenn du magst, kannst du mir mal die Log, per PN, schicken, nach 12:30. Habe heute etwas Zeit mich damit zu beschäftigen.

1 „Gefällt mir“

Wird diese Temperatur via der API von OpenWeather ausgelesen oder ist diese vom lokalen Sensor?

Heute ist ein umgekehrter Tag,

Es soll bewölkt sein, aber es ist wolkenlos.

Ja die Wetterdaten.

Habe ich auch und dem Tom schon mitgeteilt…

Hier nochmal meine Log zum 12:30 Lauf

2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ═══ Adaptive Forecast Check ═══
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Zeitpunkt: 12:30:00
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Sammle Analysedaten...
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Analyse Vormittag (07:50-12:30):
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • IST-Produktion:  0.78 kWh
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Prognose:        0.49 kWh
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:      +59% (+0.29 kWh)
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - 
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 1: Signifikante Abweichung
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Tagesprognose:       0.98 kWh
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Dynamische Schwelle: 0.10 kWh (max von 0.1 kWh oder 10% Tagesprognose)
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Abweichung:          0.29 kWh (59%)
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    → ✓ ERFÜLLT (>35% UND >0.10 kWh)
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 2 (Keine Sondersituation): ✓ ERFÜLLT
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 3 (>= 4h bis Sunset): ✓ ERFÜLLT (5.0h)
2026-02-03 12:30:00 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 4 (Frische Wetterdaten): ✓ ERFÜLLT (06:00 UTC)

Nachdem dann die Wetterdaten abgerufen waren. Keine Korrektur.

2026-02-03 12:30:14 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: 5-source weather update SUCCESS - 5 sources active
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - DEBUG - Error getting current cloud cover: 'WeatherExpertBlender' object has no attribute 'get_blended_forecast'
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ▸ Kriterium 5 (Cloud-Cover Diff > 25pp): ✗ NICHT ERFÜLLT
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Morning Forecast: 53% clouds
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO -    • Current Forecast: 53% clouds (+0pp)
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - ══ Ergebnis: KEINE KORREKTUR ══
2026-02-03 12:30:14 - custom_components.solar_forecast_ml.production.production_adaptive_forecast - INFO - Grund: Wetterdaten nahezu unverändert (Diff: 0pp)

Ich denke, das das auch in der neuen Version gefixt sein wird, deshalb lehne ich mich zurück und bin gespannt. :smiley:

ja, ist ein kompletter re-build incl snow, rain, ect..

3 „Gefällt mir“

Ich würde mal gerne wissen wie ich jenes korrekt eintrage. Damit meine ich in allen Modulen. SFML, Stats, Grid Price etc.

Ich bin für jede Anregung dankbar. Ich vermute die meisten haben keinen dynamischen Strompreis.

Ergänzend in der Voll Variante und nicht in der Lite Variante.

Sahara Staub auch? :grinning_face:

1 „Gefällt mir“

http://IP-Adresse/components/readable

An dieser Stelle ein großes Dankeschön an Peter. Das war mir in der Form noch nicht geläufig.

Ich habe mal für HomeAssistant eine entsprechende Abfrage der API erstellt.

Funktioniert vermutlich bei den meisten Fronius Wechselrichtern mit entsprechenden Smartmetern.

Eure IP Adresse und die Adressen der einzelnen Sensoren könnte ihr aus der obigen API Abfrage rausfiltern und auf eure Bedürfnisse anpassen.

  - resource: "http://192.168.20.xxx/components/readable"
    method: GET
    scan_interval: 5
    sensor:
      - name: "Fronius Grid Power RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_POWERACTIVE_MEAN_SUM_F64 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "BYD Battery SOC RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_VALUE_STATE_OF_CHARGE_RELATIVE_F32 }}"
        unit_of_measurement: "%"
        device_class: battery
        state_class: measurement
      
      - name: "BYD Battery Power RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.BAT_POWERACTIVE_MEAN_F32 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "Fronius PV Power String 1 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_POWERACTIVE_MEAN_01_F32 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "Fronius PV Power String 2 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_POWERACTIVE_MEAN_02_F32 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "BYD Battery Temperature RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_TEMPERATURE_CELL_F64 }}"
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
      
      - name: "BYD Battery Voltage RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_VOLTAGE_DC_INTERNAL_F64 }}"
        unit_of_measurement: "V"
        device_class: voltage
        state_class: measurement
      
      - name: "Grid Frequency RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_FREQUENCY_MEAN_F64 }}"
        unit_of_measurement: "Hz"
        device_class: frequency
        state_class: measurement
      
      - name: "Grid Phase 1 Power RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_POWERACTIVE_01_F64 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "Grid Phase 2 Power RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_POWERACTIVE_02_F64 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      
      - name: "Grid Phase 3 Power RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_POWERACTIVE_03_F64 }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        
      - name: "BYD Battery Current RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_CURRENT_DC_F64 }}"
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement        
        
      - name: "Fronius PV Energy String 1 Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_ENERGYACTIVE_ACTIVE_SUM_01_U64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "Fronius PV Energy String 2 Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_ENERGYACTIVE_ACTIVE_SUM_02_U64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "Fronius PV Voltage String 1 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_VOLTAGE_MEAN_01_F32 }}"
        unit_of_measurement: "V"
        device_class: voltage
        state_class: measurement
      
      - name: "Fronius PV Voltage String 2 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_VOLTAGE_MEAN_02_F32 }}"
        unit_of_measurement: "V"
        device_class: voltage
        state_class: measurement
      
      - name: "Fronius PV Current String 1 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_CURRENT_MEAN_01_F32 }}"
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
      
      - name: "Fronius PV Current String 2 RESTAPI"
        value_template: "{{ value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.PV_CURRENT_MEAN_02_F32 }}"
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement        
        
      - name: "Fronius Battery Charged Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.BAT_ENERGYACTIVE_ACTIVECHARGE_SUM_01_U64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "Fronius Battery Discharged Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_Inverter_f925e2fb74a3.channels.BAT_ENERGYACTIVE_ACTIVEDISCHARGE_SUM_01_U64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        
# === SMARTMETER ENERGIE ===
      - name: "Grid Energy Consumed Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_ENERGYACTIVE_CONSUMED_SUM_F64 / 1000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "Grid Energy Produced Total RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_ENERGYACTIVE_PRODUCED_SUM_F64 / 1000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "Grid Reactive Energy Consumed RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_ENERGYREACTIVE_CONSUMED_SUM_F64 / 1000) | round(2) }}"
        unit_of_measurement: "kvarh"
        state_class: total_increasing
      
      - name: "Grid Reactive Energy Produced RESTAPI"
        value_template: "{{ (value_json.Body.Data.Fronius_SmartMeter_23dc82846c1f.channels.SMARTMETER_ENERGYREACTIVE_PRODUCED_SUM_F64 / 1000) | round(2) }}"
        unit_of_measurement: "kvarh"
        state_class: total_increasing
        
# === BATTERIE ENERGIE & STATISTIK ===
      - name: "BYD Battery Charged Lifetime RESTAPI"
        value_template: "{{ (value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_ENERGYACTIVE_LIFETIME_CHARGED_F64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "BYD Battery Discharged Lifetime RESTAPI"
        value_template: "{{ (value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_ENERGYACTIVE_LIFETIME_DISCHARGED_F64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
      
      - name: "BYD Battery Max Capacity RESTAPI"
        value_template: "{{ (value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_ENERGYACTIVE_MAX_CAPACITY_F64 / 3600000) | round(2) }}"
        unit_of_measurement: "kWh"
        device_class: energy
      
      - name: "BYD Battery Health RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_VALUE_STATE_OF_HEALTH_RELATIVE_U16 }}"
        unit_of_measurement: "%"
        state_class: measurement
      
      - name: "BYD Battery Current RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_CURRENT_DC_F64 }}"
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
      
      - name: "BYD Battery Temperature Max RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_TEMPERATURE_CELL_MAX_F64 }}"
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
      
      - name: "BYD Battery Temperature Min RESTAPI"
        value_template: "{{ value_json.Body.Data.BYD_Storage_a33e5474acb2.channels.BAT_TEMPERATURE_CELL_MIN_F64 }}"
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement

Vielleicht kann der eine oder andere etwas damit anfangen.

Aber alle 5 Sekunden neue Werte mit einer Abfrage ist schon sehr nett.

Hier noch ein paar Template Sensoren die auf die API Abfrage funktionieren

# Gesamte PV-Energie
      - name: "Fronius PV Energy Total RESTAPI"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: >
          {{ states('sensor.fronius_pv_energy_string_1_total_restapi') | float(0) + 
             states('sensor.fronius_pv_energy_string_2_total_restapi') | float(0) }}
      
      # Batterie-Effizienz
      - name: "Battery Efficiency RESTAPI"
        unit_of_measurement: "%"
        state: >
          {% set charged = states('sensor.byd_battery_charged_lifetime_restapi') | float(0) %}
          {% set discharged = states('sensor.byd_battery_discharged_lifetime_restapi') | float(0) %}
          {% if charged > 0 %}
            {{ ((discharged / charged) * 100) | round(1) }}
          {% else %}
            0
          {% endif %}
      
      # Eigenverbrauch (Wirkleistung)
      - name: "House Consumption RESTAPI"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set pv = states('sensor.fronius_pv_power_string_1_restapi') | float(0) + states('sensor.fronius_pv_power_string_2_restapi') | float(0) %}
          {% set grid = states('sensor.fronius_grid_power_restapi') | float(0) %}
          {% set bat = states('sensor.byd_battery_power_restapi') | float(0) %}
          {{ (pv + grid + bat) | round(0) }}
      
      # Autarkiegrad (momentan)
      - name: "Energy Self Sufficiency RESTAPI"
        unit_of_measurement: "%"
        state: >
          {% set pv = states('sensor.fronius_pv_power_string_1_restapi') | float(0) + states('sensor.fronius_pv_power_string_2_restapi') | float(0) %}
          {% set consumption = states('sensor.house_consumption_restapi') | float(0) %}
          {% if consumption > 100 %}
            {{ ((pv / consumption) * 100) | round(1) }}
          {% else %}
            0
          {% endif %}
      
      # Netz-Status
      - name: "Grid Status RESTAPI"
        state: >
          {% set grid = states('sensor.fronius_grid_power_restapi') | float(0) %}
          {% if grid > 50 %}
            Bezug
          {% elif grid < -50 %}
            Einspeisung
          {% else %}
            Neutral
          {% endif %}
      
      # Batterie-Status
      - name: "Battery Status RESTAPI"
        state: >
          {% set power = states('sensor.byd_battery_power_restapi') | float(0) %}
          {% if power > 50 %}
            Entladen
          {% elif power < -50 %}
            Laden
          {% else %}
            Standby
          {% endif %}
1 „Gefällt mir“

Hallo Dietmar, ob das korrekt ist? Ich habe mit @Tom-HA darüber philosophiert und dann ist das das dabei rausgekommen:

Mein Stromanbieter gibt mir nur die Zahlen inkl. Netzentgeld, Steuern und Abgaben. So sind wir dann auf den Anbieter-Aufschlag von 14,74 zzgl MWSt. (siehe obere Auswahl: 19% werden aufgeschlagen) gekommen.

Dann bei Dir:

Anbieter-Aufschlag 25,72 inkl. MWSt. - also rausrechnen. Der Grundpreis geteilt durch 12 Monate. Ich würde 21,61 zzgl. der vermutlich verbrauchten kWh (Du hast wahrscheinlich noch alte Jahresverbräuche) aufteilen auf die 20,92 x 12 und dann den vermutlichen ct/kWh ausrechnen.

Den Preis dann addiert in Anbieter-Aufschlag eintragen. Die MWSt. Wird dann ja automatisch ausgerechnet.

Mal unter uns; mir erscheint der Preis ein bisschen hoch.