---
title: ""

format: 
  html:
    fig-width: 9
    fig-height: 8
    fig-dpi: 300
    # embed-resources: TRUE # Entwicklung
    # theme: "null" # Entwicklung
    embed-resources: FALSE # Veröffentlichung
    theme: none # Veröffentlichung

execute: 
  echo: FALSE
  output: asis
  warning: FALSE
  error: FALSE
---

```{r}
#| label: pakete_und_daten
#| output: false
library(tidyverse)
library(SMChelpR)
library(scales)
library(DT)
library(zoo)
library(plotly)
library(jsonlite)
library(httr)

file_name_code <- "energiewende_report.qmd"

imagepath <-
    file.path("fileadmin", "user_upload", "produkte", "Energiewendereport")
dir.create(imagepath, showWarnings = FALSE)

## workspace directory in RStudio interaktiv
if (rstudioapi::isAvailable()) {
    setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
}

if (is.na(file_name_code)) {
    stop("Dateiname der qmd nicht gesetzt")
}
if (imagepath == file.path("fileadmin", "user_upload", "produkte")) {
    stop("Pfad für Dateien nicht gesetzt")
}

file.copy(
    from = file_name_code,
    to = file.path(imagepath, paste0(today(), "_", file_name_code)),
    overwrite = TRUE
) 
START_DATE_SEASON <- "2023-01-01"
END_DATE_SEASON <- "2023-12-31"
JAHRESZEIT <- "komplettes Jahr"

START_DATE_OBJECT <- as.Date(START_DATE_SEASON)
END_DATE_OBJECT <- as.Date(END_DATE_SEASON)
```

```{r}
#| label: set-graphic-parameters
#| output: false

options(scipen = 999) # set scientific notation to be off
SMC_theme_ggplot()
theme_update(plot.title = element_text(hjust = 0.5), text = element_text(size = 8))


caption_entsoe <-
    "Quelle: ENTSO-E, Berechnungen: Science Media Center Germany."
caption_entsoe_MaSta <-
    "Quelle: ENTSO-E, Marktstammdatenregister, Berechnungen: Science Media Center Germany."
```

```{r}
#| label: Import Enstoe Data (Load and Generation)
#| output: false

try(load(file.path("data", "entsoe.RData")))

# check if the data is already loaded
reload_data <- !exists("entsoe_generation")

# # check if the data is up to date
tmp <- try(max(entsoe_generation$Datum) < today() - 1 |
    max(entsoe_load$Datum) < today() - 1)

if (is.logical(tmp)) {
    reload_data <- tmp
}

# reload_data <- FALSE

# if the data is not up to date, reload the data
if (reload_data) {
  entsoe_load <-
    GraphQL_get_table_vec(
      tabellenname = "data_entsoe_stromdaten_load",
      variablen = c("load",
                    "timestamp"),
      datenserver = "https://data.smclab.io/v1/graphql"
    ) |>
    mutate(Datum = as_date(floor_date(with_tz(as_datetime(timestamp), tzone = Sys.timezone()), unit = "day"))) |>
    summarise(load = sum(load) / 4, .by = Datum)
  
  entsoe_generation <-
    GraphQL_get_table_vec(
      tabellenname = "data_entsoe_stromdaten_generation",
      variablen = c("generation",
                    "timestamp",
                    "generation_type"),
      datenserver = "https://data.smclab.io/v1/graphql"
    ) |> 
    mutate(Datum = as_date(floor_date(with_tz(as_datetime(timestamp), tzone = Sys.timezone()), unit = "day"))) |>
    summarise(
      generation = sum(generation) / 4,
      .by = c(Datum, generation_type)
    ) |> view()
  
  save(entsoe_load,
       entsoe_generation,
       file = file.path("data", "entsoe.RData"))
}
``` 


```{r}
#| label: Interpolation der installierten Leistung für ein Jahr gegeben Anfangs- und Endwert (Endwert = Anfangswert des Folgejahres)
#| output: false

Jahresumfang <- c(2015, 2024)
Tage_Jahresumfang <- 
  tibble(Datum = seq.Date(as.Date(paste0(Jahresumfang[1], "-01-01")),
                          as.Date(paste0(Jahresumfang[2], "-01-01")), by = "day"),
         Jahr = year(Datum))

Installierte_Leistung <-
  tibble(
    Jahr = Jahresumfang[1]:Jahresumfang[2],
    `Wind Offshore` = c(1.0, 3.3, 4.1, 5.1, 6.4, 7.5, 7.8, 7.8, 8.1, 8.5) * 1000,
    `Wind Onshore` = c(37.7, 41.2, 47.0, 51.6, 52.8, 53.2, 54.5, 55.3, 57.6, 60.9) * 1000,
    Solar = c(37.3, 38.7, 40.8, 42.8, 45.3, 48.2, 53.2, 57.7, 63.1, 73.4) * 1000
  ) |>  # Werte müssen Anfang 2024 angepasst werden
  pivot_longer(
    -Jahr,
    names_to = "generation_type", 
               values_to = "Leistung_Jahresanfang") |> 
  arrange(desc(Jahr)) |> 
  mutate(Leistung_Jahresende = lag(Leistung_Jahresanfang), .by = "generation_type") |> 
  filter(!(Jahr == max(Jahr))) |> 
    right_join(Tage_Jahresumfang, by = "Jahr", relationship = "many-to-many") |> 
      mutate(
        installierte_Leistung = Leistung_Jahresanfang +
          (Leistung_Jahresende - Leistung_Jahresanfang) *
          as.integer(Datum - as.Date(paste0(Jahr, "-01-01"))) / 366, 
        .by = Jahr
      ) |> 
    arrange(generation_type, Datum) |> 
      select(-Leistung_Jahresende,-Leistung_Jahresanfang)
```

```{r}
#| label: Berechnen der Daten für die Auslastung der Erneuerbaren
#| output: false

Leistung_Erzeugung_Installiert <-
  inner_join(Installierte_Leistung,
             entsoe_generation,
             by = c("Datum", "generation_type")) |>
  mutate(Jahr = as.character(Jahr)) |>
  rename(Erzeugung = generation,
         Erzeuger = generation_type)

## Berechnung Gesamtwerte pro Tag
Leistung_Erzeugung_Installiert <-
  Leistung_Erzeugung_Installiert |>
  summarise(
    Erzeugung = sum(Erzeugung),
    installierte_Leistung = sum(installierte_Leistung),
    .by = c(Jahr, Datum)
  ) |>
  mutate(Erzeuger = "Gesamt") |>
  bind_rows(Leistung_Erzeugung_Installiert) |>
  mutate(Auslastung = Erzeugung / installierte_Leistung / 24) |> 
  rename(Zeitraum = Jahr)

## Berechnung Durchschittswerte 2015-2022
Leistung_Erzeugung_Installiert <-
  Leistung_Erzeugung_Installiert |>
  filter(Datum >= "2015-01-01" & Datum <= "2022-12-31") |>
  mutate(day_of_year = lubridate::yday(Datum)) |> # Calculate day of the year
  summarise(
    Auslastung = mean(Auslastung, na.rm = TRUE),
    Erzeugung = mean(Erzeugung),
    .by = c(day_of_year, Erzeuger)
  ) |>
  mutate(Datum = as.Date("2023-01-01") + days(as.numeric(day_of_year) - 1)) |>
  mutate(Zeitraum = "durchschnittlich") |>
  select(-day_of_year) |>
  bind_rows(Leistung_Erzeugung_Installiert)
```


```{r}
#| label: Berechnen der Variablen für die textuell Auswertung 
#| output: false

## Last 
Last_2023 <-
  entsoe_load |>
  filter(Datum >= "2023-01-01" & Datum <= "2023-12-31") |>
  summarise(Last_2023 = sum(load)) |>
  pull(Last_2023)

Last_2015_2022 <-
  entsoe_load |>
  filter(Datum >= "2015-01-01" & Datum <= "2022-12-31") |>
  summarise(Last_2015_2022 = sum(load) / 8, na.rm = TRUE) |>
  pull(Last_2015_2022)

Last_2023_Text <- format(round(Last_2023/1000000, 2), decimal.mark = ",")
Last_2015_2022_Text <- format(round(Last_2015_2022/1000000, 2), decimal.mark = ",")

Anteil_Last_2023 <- Last_2023 / Last_2015_2022
Anteil_Last_2023_Text <- format(round(100 - 100*Anteil_Last_2023, 1), decimal.mark = ",")

## Erzeugung

Last_Jahre <-
  entsoe_load |>
  mutate(Jahr = year(Datum)) |> 
  summarise(Last = sum(load, na.rm = TRUE), .by = Jahr) |> 
  mutate(Last_2015_2022 = Last_2015_2022)

Erzeugung_Jahre_Typ <-
  entsoe_generation |>
  mutate(Jahr = year(Datum)) |>
  mutate(
    generation = if_else(generation_type == "Waste", generation / 2, generation),
    generation_type =
      if_else(
        generation_type %in%
          c(
            "Hydro Water Reservoir",
            "Biomass",
            "Geothermal",
            "Other renewable",
            "Hydro Run-of-river and poundage",
            "Waste"
          ),
        "Sonstige Erneuerbare",
        generation_type
      )
  ) |>
  summarise(
    generation = sum(generation, na.rm = TRUE),
    .by = c(generation_type, Jahr)
  ) |>
  filter(
    generation_type %in% c("Solar", "Wind Onshore", "Wind Offshore", "Sonstige Erneuerbare")
  )

Erzeugung_Jahre_Typ <- 
  Erzeugung_Jahre_Typ |> 
  summarise(generation = sum(generation), .by = "Jahr") |> 
  mutate(generation_type = "Alle Erneuerbaren") |> 
  bind_rows(Erzeugung_Jahre_Typ) |> 
  left_join(Last_Jahre, by = "Jahr") |> 
  mutate(Anteil = generation / Last, 
         Anteil_2015_2022 = generation / Last_2015_2022) |>
  select(-Last, -Last_2015_2022) |>
  mutate(
    generation = format(round(generation / 1000000, 2), decimal.mark = ",", drop0trailing = TRUE), 
    Anteil = format(round(Anteil, 3) * 100, decimal.mark = ",", drop0trailing = TRUE, zero.print = FALSE),
    Anteil_2015_2022 = format(round(Anteil_2015_2022, 3) * 100, decimal.mark = ",", drop0trailing = TRUE)) |> 
  pivot_longer(-c(generation_type, Jahr)) |> 
  mutate(value = stringr::str_trim(value))

Erzeugung_Jahre_Typ_text <- Erzeugung_Jahre_Typ$value
names(Erzeugung_Jahre_Typ_text) <- paste(Erzeugung_Jahre_Typ$Jahr, Erzeugung_Jahre_Typ$name, Erzeugung_Jahre_Typ$generation_type)

## Auslastung
Auslastung_Jahr_Erzeuger <- 
  Leistung_Erzeugung_Installiert |> 
  summarise(Auslastung = mean(Auslastung), .by = c(Zeitraum, Erzeuger)) |> 
  mutate(Auslastung = format(round(Auslastung*100, 1), decimal.mark = ","))

Auslastung_Jahr_Erzeuger_text <- Auslastung_Jahr_Erzeuger$Auslastung
names(Auslastung_Jahr_Erzeuger_text) <- paste(Auslastung_Jahr_Erzeuger$Zeitraum, Auslastung_Jahr_Erzeuger$Erzeuger)
```

```{r}
#| label: funktion-grafik-auslastung
#| output: false
plot_auslastung_erneuerbare <-
  function(filename, Erzeuger, title, imagepath) {
    tmp <-
      Leistung_Erzeugung_Installiert |>
      mutate(Datum2 = Datum) |>
      group_by(Zeitraum) |>
      filter(Erzeuger == {{ Erzeuger }}) |>
      mutate(Auslastung = round(rollmean(
        Auslastung,
        k = 7,
        align = "right",
        na.pad = TRUE
      ) * 100,
      2)) |>
      mutate(
        Datum = if_else(
          Zeitraum == "durchschnittlich",
          as.character(format(Datum, "%d. %B")),
          as.character(format(Datum, "%d.%m.%Y"))
        ),
        Zeitraum = case_match(
          Zeitraum,
          "2023" ~ "2023",
          "durchschnittlich" ~ "Mehrjähriger Schnitt (2015-2022)",
        )
      ) |>
      mutate(`Auslastung in Prozent` = Auslastung) |>
      filter(Datum2 >= as.Date(START_DATE_SEASON) &
               Datum2 <= as.Date(END_DATE_SEASON)) |>
      write_csv(file.path(imagepath, paste0(filename, ".csv"))) |>
      ggplot(
        aes(
          x = Datum2,
          y = `Auslastung in Prozent`,
          color = Zeitraum,
          label = Datum,
          linetype = Zeitraum
        )
      ) +
      geom_line() +
      scale_y_continuous(
        limits = c(0, 60),
        breaks = seq(0, 100, 10),
        labels = scales::label_percent(scale = 1),
        expand = c(0.01, 0.01)
      ) +
      scale_linetype_manual(values = c("solid", "dotted")) +
      scale_x_date(
        date_labels = "%d. %b",
        expand = c(0.01, 0.01),
        date_breaks = "5 week"
      ) +
      labs(
        x = "",
        y = "Auslastung",
        title = {{ title }},
        caption = caption_entsoe_MaSta
      ) +
      theme(legend.title = element_blank(),
            legend.position = "bottom")
  }
```

```{r}
#| label: load data

# wind extended
wind_extended <-
    GraphQL_get_table_vec(
        variablen = c(
            "MastrNummer",
            "Nettonennleistung",
            "Bundesland",
            "EinheitBetriebsstatus",
            "Inbetriebnahmedatum",
            "Lage",
            "DatumEndgueltigeStilllegung",
            "DatumBeginnVoruebergehendeStilllegung"
        ),
        tabellenname = "data_marktstammdaten_wind_extended"
    ) |>
    left_join(
        GraphQL_get_table_vec(
            # permits_units
            tabellenname = "data_marktstammdaten_permits_units",
            variablen = c(
                "MastrNummer",
                "FristGenehmigung",
                "DatumGenehmigung",
                "ArtGenehmigung"
            )
        ),
        by = "MastrNummer"
    ) |>
    left_join(
        GraphQL_get_table_vec(
            # Ausschreibungen BNetzA
            tabellenname = "data_marktstammdaten_tenders_bnetza",
            variablen = c(
                "Ausschreibungsdatum_BNetzA",
                "Ausschreibungsnummer_BNetzA",
                "MastrNummer"
            )
        ),
        by = "MastrNummer"
    ) |>
    left_join(
        GraphQL_get_table_vec(
            # Meldedaten eeg
            variablen = c(
                "MastrNummer",
                "Ausschreibungsdatum_EEG",
                "Ausschreibungsnummer_EEG"
            ),
            tabellenname = "data_marktstammdaten_tenders_eeg"
        ),
        by = "MastrNummer"
    ) |>
    mutate(
        Inbetriebnahmedatum = as.Date(Inbetriebnahmedatum),
        DatumEndgueltigeStilllegung = as.Date(DatumEndgueltigeStilllegung),
        DatumBeginnVoruebergehendeStilllegung = as.Date(DatumBeginnVoruebergehendeStilllegung),
        FristGenehmigung = as.Date(FristGenehmigung),
        DatumGenehmigung = as.Date(DatumGenehmigung),
        Ausschreibungsdatum_BNetzA = as.Date(Ausschreibungsdatum_BNetzA),
        Ausschreibungsdatum_EEG = as.Date(Ausschreibungsdatum_EEG),
        Auschreibungsmonat = floor_date(Ausschreibungsdatum_BNetzA, "month"),
        Realisierungsdauer_Monate = as.numeric(Inbetriebnahmedatum - Ausschreibungsdatum_EEG) / (365 /
            12),
        `Nettonennleistung in MW` = Nettonennleistung / 1000
    ) |>
    filter(Lage == "Windkraft an Land")


## Korrektur Dubletten
ersteintrag <- c(
    "SEE950271895884",
    "SEE958839237145",
    "SEE964821060233",
    "SEE974913499520",
    "SEE969253203555",
    "SEE956093476317",
    "SEE974989546432",
    "SEE999767129621",
    "SEE953234557638",
    "SEE998173626847",
    "SEE943933689785",
    "SEE945200307392",
    "SEE948835953422",
    "SEE934245360936",
    "SEE907832445804",
    "SEE962629976688",
    "SEE940396128394",
    "SEE925954435411",
    "SEE906959307538",
    "SEE998723793487",
    "SEE930928931134",
    "SEE976915898585",
    "SEE930119071366",
    "SEE921221140514",
    "SEE942466803439",
    "SEE901479689096",
    "SEE979823110190",
    "SEE935249353016",
    "SEE930999482603",
    "SEE972782520383",
    "SEE981449567852",
    "SEE935518372724",
    "SEE957533975766",
    "SEE923899840635",
    "SEE954991990447",
    "SEE988474469175",
    "SEE938294673320",
    "SEE977175100746",
    "SEE980843719812",
    "SEE986904158972",
    "SEE934314622118",
    "SEE951316891281",
    "SEE998154307796",
    "SEE997528188092",
    "SEE968124847362",
    "SEE989306217193",
    "SEE902892573009",
    "SEE923032247550",
    "SEE933627958693",
    "SEE926196992090",
    "SEE980872491475",
    "SEE936663062324",
    "SEE967107796062",
    "SEE954210948051"
)

dublette <- c(
    "SEE929145282983",
    "SEE989863162646",
    "SEE961924553785",
    "SEE981123171559",
    "SEE980706304087",
    "SEE926820010701",
    "SEE979724982896",
    "SEE936322761209",
    "SEE980050227988",
    "SEE931802139516",
    "SEE955817380367",
    "SEE909273743037",
    "SEE912209308651",
    "SEE918226684280",
    "SEE941541371825",
    "SEE919099302769",
    "SEE994892807031",
    "SEE970274785159",
    "SEE937511941570",
    "SEE920165701096",
    "SEE950564441118",
    "SEE923531397947",
    "SEE930619222749",
    "SEE973787639278",
    "SEE997495827222",
    "SEE970991861914",
    "SEE925692729698",
    "SEE911188940227",
    "SEE966233135110",
    "SEE900718594580",
    "SEE969773416404",
    "SEE914843460641",
    "SEE983674072347",
    "SEE947202984502",
    "SEE979044888557",
    "SEE974032921988",
    "SEE971648090794",
    "SEE922464199468",
    "SEE949319291177",
    "SEE939186083272",
    "SEE922464199468",
    "SEE967553125973",
    "SEE977633937808",
    "SEE962424388006",
    "SEE976998345075",
    "SEE905026450283",
    "SEE953449560348",
    "SEE985983191924",
    "SEE925298034653",
    "SEE918465271586",
    "SEE968673887321",
    "SEE936663062324",
    "SEE906806953550",
    "SEE950890557774"
)

wind_extended <-
    wind_extended |>
    filter(!(MastrNummer %in% dublette))
```

::: m-news-single__ce

In dieser Ausgabe beschäftigen wir uns noch einmal mit dem Ausbau der Windenergieanlagen. Vor knapp einem halben Jahr hatten wir in einem [Szenario](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/das-wind-ausbauziel-fuer-2024/){target="_blank"} berechnet, ob sich das Windausbauziel für 2024 noch erreichen lässt. Das Ergebnis: eher nicht. Dabei hatten wir auch Zwischenwerte für den Ausbau bis Ende 2023 ermittelt. Die Realität blieb jedoch deutlich dahinter zurück. Wir haben uns daher auf die Suche nach möglichen Gründen für diese Entwicklung gemacht. In den Daten zeigt sich, dass beim Bau der Windräder, die ab 2022 einen Förderzuschlag erhalten haben, große Verzögerungen auftreten. Außerdem werden mehr alte Windräder abgebaut und durch neue ersetzt. Damit verschlechtert sich das Windausbau-Szenario für 2024 weiter.

Andererseits war 2023 das erste Jahr, in dem die Erneuerbaren mehr als die Hälfte des Stromverbrauchs gedeckt haben. Das liegt nicht allein am gesunkenen Netto-Stromverbrauch; auch bezogen auf den langjährigen mittleren Stromverbrauch lag der Anteil der erneuerbaren Energien über 50 Prozent. Die Ursache ist vor allem der gute Ertrag der Windkraftanlagen an Land. Die Photovoltaik dagegen hat nach Datenlage trotz starken Ausbaus kaum mehr Strom ins Netz geliefert als 2022. Es ist unklar, ob das am Wetter liegt -- oder an den Daten. 

Mit diesem Report schließen wir die Serie der regelmäßigen Energiewendereporte. Für 2024 haben wir geplant, Auswertungen zu Daten der Energiewende -- zum Beispiel zum Stand des Windausbaus, zu Dunkelflauten oder zur Stromerzeugung durch fossile Kraftwerke -- in ein Dashboard zu überführen, auf dem Sie dann die aktuellen Daten selbst einsehen und abrufen können. Zu konkreten Anlässen werden wir weiterhin Energiewende-Data-Reports veröffentlichen.  

Weitere Aussendungen zur Energiewende finden Sie auf unserer [Übersichtsseite](https://www.sciencemediacenter.de/alle-angebote/energiewende/){target="_blank"}.
 
 

### Übersicht

-   Teil I -- Wind an Land 2023: langsamerer Bau und mehr Repowering 
-   Teil II -- 2023: gutes Windjahr, möglicherweise schlechtes Sonnenjahr  

### Teil I: Wind an Land: langsamerer Bau und mehr Repowering

*Zu Datengrundlage, Begriffen, Annahmen und Berechnungen siehe die Hinweise am Ende des Reports.*

```{r}
#| label: aktuelle Nennleistung
aktuelle_nennleistung <- 
  wind_extended |> 
  filter(EinheitBetriebsstatus == "In Betrieb") |> 
  summarise(sum(`Nettonennleistung in MW`)/1000)
```

Für den Ausbau der Windkraftanlagen war 2023 ein durchwachsenes Jahr. Einerseits vergab die Bundesnetzagentur in Ausschreibungen für Windenergieanlagen (WEA) Förderungszusagen für knapp 6,3 GW, deutlich mehr als in den vergangenen Jahren. Geplant war allerdings, mehr als 12 GW auszuschreiben. Dem [Erneuerbare-Energien-Gesetz EEG]( https://www.gesetze-im-internet.de/eeg_2014/__28.html){target="_blank"} zufolge müsste die Differenz auf die geplante Ausschreibungsmenge für 2024 von 10 GW aufgeschlagen werden. 

Außerdem stieg die installierte WEA-Leistung nur um 3,3 auf `r format(round(as.numeric(aktuelle_nennleistung),1), decimal.mark = ",")` GW. Das sind zwar deutlich mehr als 2022, aber weniger als erwartet.

Im Data Report [Das Wind-Ausbauziel für 2024](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/das-wind-ausbauziel-fuer-2024/){target="_blank"} haben wir anhand von Szenarien berechnet, wie sich der Windkraftausbau entwickelt, falls die in den Förderausschreibungen bezuschlagten Anlagen in derselben Geschwindigkeit nach dem Zuschlag gebaut werden, wie es in der Vergangenheit der Fall war. 

Für den Jahreswechsel 2023/24 kam dieses Szenario auf rund 61,5 GW installierte Leistung. Tatsächlich sind im Marktstammdatenregister mit Stichtag 02.01.2024 aber nur rund `r format(round(as.numeric(aktuelle_nennleistung),1), decimal.mark = ",")` GW installiert. Die Differenz von rund 600 MW kann zwar prinzipiell durch Nachmeldungen verringert werden, dies wird aber voraussichtlich nicht in nennenswerter Größe geschehen. Hauptgrund für die Differenz zwischen dem Szenario und der tatsächlichen Entwicklung sind zwei Effekte: 

- mehr Anlagen als bisher wurden stillgelegt, 
- 2022 ausgeschriebene Anlagen gehen nicht so schnell in Betrieb wie früher.

#### Mehr Stilllegungen

Von der neu installierten WEA-Leistung für ein Jahr muss die Leistung der stillgelegten Anlagen abgezogen werden, um den tatsächlichen oder *Netto*-Zubau zu ermitteln. Viele dieser Anlagen werden im Rahmen eines Repowering durch neue Anlagen ersetzt. Welche das sind, ist im Marktstammdatenregister nicht ersichtlich, ist aber auch für den Netto-Zubau irrelevant: 

```{r}
wind_extended |>
  mutate(Jahr = year(DatumEndgueltigeStilllegung)) |>
  summarise(`Abgeschaltete Leistung in MW` = round(sum(`Nettonennleistung in MW`), 0), .by = "Jahr") |> 
  filter(!is.na(Jahr)) |> 
  arrange(desc(Jahr)) |> 
  datatable(options = list(pageLength = 11))
```

Wie bereits im Data Report zum [Wind-Ausbauziel für 2024](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/das-wind-ausbauziel-fuer-2024/){target="_blank"} beschrieben, stieg 2023 die Zahl der abgeschalteten Anlagen im Vergleich zum Vorjahr deutlich. Im Sommer waren bereits rund 250 MW abgeschaltet worden, zum Jahresende hat sich die abgeschaltete Leistung auf gut 500 MW verdoppelt. Die Abschaltungen im zweiten Halbjahr wurden durch das Szenario noch nicht berücksichtigt, da es zuverlässigen Prognosen für zukünftige Abschaltungen gibt.

#### Verlangsamtes Realisierungstempo der Ausschreibungen 2022

Im Szenario zum Windausbau haben wir anhand der Zuschlagserteilung für die Förderung und dem Inbetriebnahme-Eintrag im Marktstammdatenregister berechnet, nach wie vielen Monaten wie viel Prozent der bezuschlagten Leistung in der Vergangenheit installiert war. Diese Werte haben wir für die Berechnung zukünftiger Werte genutzt. Ändert sich allerdings diese Verteilung, weicht die Szenarienrechnung von der Realität ab. In der folgenden Tabelle sind die bisher durchgeführten Ausschreibungen mit ihrer jeweils bezuschlagten Leistung und der Menge der bis zum 02.01.2024 als „in Betrieb“ eingetragenen Leistung vermerkt. Dadurch ergibt sich der Anteil der bereits gebauten und in Betrieb genommenen Leistung aus der jeweiligen Ausschreibung. In der letzten Spalte ist der Anteil vermerkt, der gebaut sein müsste, wenn sich die Realisierungszeiten so verhalten hätten wie im Schnitt der Ausschreibungsjahre vor 2022. 

```{r}
#| label: Nennleistung nach Ausschreibungsdatum

dichte_Realisierungsdauer <- 
  wind_extended |>
  filter(
    !is.na(Realisierungsdauer_Monate),
    Realisierungsdauer_Monate > 0,
    Realisierungsdauer_Monate <= 40,
    Inbetriebnahmedatum < as.Date("2022-01-01")
  )  |>
  mutate(Realisierungsdauer = as.integer(round(Realisierungsdauer_Monate))) |> 
  summarise(Leistung = sum(`Nettonennleistung in MW`), .by = Realisierungsdauer) |>  # Anteil Leistung
  arrange(Realisierungsdauer) |> 
  mutate(Anteil = round(Leistung / sum(Leistung) * 100, 2), 
         Verteilung = cumsum(Anteil))


wind_extended |> 
  filter(!is.na(Ausschreibungsdatum_BNetzA)) |> 
  mutate(`Nicht gebaute Leistung in MW` = if_else(EinheitBetriebsstatus == "In Planung", `Nettonennleistung in MW`, 0)) |> 
rename(Ausschreibungsdatum =Ausschreibungsdatum_BNetzA ) |> 
  summarise(`Bezuschlagt (MW)` = round(sum(`Nettonennleistung in MW`), 1), 
            `Noch nicht gebaut (MW)` = round(sum(`Nicht gebaute Leistung in MW`), 1), 
            .by = Ausschreibungsdatum) |> 
  arrange(desc(Ausschreibungsdatum)) |> 
  mutate(Realisierungsdauer = as.integer(floor((today() - Ausschreibungsdatum) / (365/12)))) |> 
  left_join(dichte_Realisierungsdauer, by = "Realisierungsdauer") |> 
  mutate(`Realisierter Bau in Prozent` = round(100 - `Noch nicht gebaut (MW)` / `Bezuschlagt (MW)` * 100, 2), 
         `Erwarteter Bau in Prozent` = if_else(is.na(Verteilung), 100, Verteilung) 
         ) |> 
  select(Ausschreibungsdatum, `Bezuschlagt (MW)`, `Noch nicht gebaut (MW)`, `Realisierter Bau in Prozent`, `Erwarteter Bau in Prozent`) |> 
  datatable()
```

Ergebnis: Der Ausbau der im Jahr 2022 genehmigten Anlagen weicht deutlich vom historisch erwartbaren Wert ab. Von den 2022 bezuschlagten WEA wurden bis jetzt fast 1000 MW nicht gebaut, obwohl das hätte erwartet werden können. Dieser Teil ist sogar höher als die Differenz im Szenario. Das lässt sich dadurch erklären, dass die Anlagen, die im Jahr 2022 und in der ersten Hälfte von 2023 gebaut wurden, bereits in unserem Szenario berücksichtigt wurden. Einige dieser Anlagen gehören zu denen, die im Jahr 2022 den Zuschlag bekamen.

Hier könnten sich die vor einigen Monaten diskutierten Probleme beim Bau der neuen Windräder zeigen. Diese reichen von deutlich gestiegenen Kosten über Fachkräftemangel bis hin zu fehlenden Genehmigungen für Schwertransporte. 

Die längere Realisierungsdauer und die gestiegene Menge an abgeschalteter Leistung führen dazu, dass die für 2023 von uns errechnete installierte WEA-Leistung nicht erreicht wird. Die Kernaussage des Data Reports von Juli bleibt jedoch weiterhin gültig: Das vom [EEG](https://www.gesetze-im-internet.de/eeg_2014/index.html){target="_blank"} für 2024 vorgegebene Ziel von 69 GW installierter Windenergie-an-Land-Leistung wird nach Datenlage ohne gravierende Änderungen nicht erreicht. Die Lücke zum Ziel ist sogar noch größer geworden als im Szenario berechnet. 

### Teil II: 2023: gutes Windjahr, möglicherweise schlechtes Sonnenjahr

Zum Abschluss des Jahres 2023 werfen wir zudem einen Blick auf die Stromerzeugung aus Wind und Sonne und ordnen diese vor dem Hintergrund der öffentlich zugänglichen Stromerzeugungsdaten ein, die bis 2015 zurückreichen. 

#### Datengrundlage

Bereits im Dezember erschienen einige Abschätzungen zum Energieverbrauch für 2023. Dabei wurden die Werte für die letzten Wochen des Jahres hochgerechnet. Die gemeinsame Veröffentlichung des [Bundesverbands der Energie- und Wasserwirtschaft BDEW](https://www.bdew.de/presse/erneuerbare-energien-deckten-2023-erstmals-mehr-als-die-haelfte-des-stromverbrauchs/){target="_blank"} und des Zentrums für Sonnenenergie- und Wasserstoff-Forschung Baden-Württemberg (ZSW) bezog sich dabei auf die  Bruttostromerzeugung, die für erneuerbare Energien zum Teil errechnet werden muss. Unsere Auswertung stützt sich wie die der [Energie-Charts](https://www.energy-charts.info/charts/power/chart.htm?l=de&c=DE&source=entsoe&interval=year){target="_blank"} und das Datenportal der Bundesnetzagentur [SMARD](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/HandelundVertrieb/SMARD/Aktuelles/start.html){target="_blank"}
auf die Daten des Europäischen Verbands der Übertragungsnetzbetreiber [ENTSO-E](https://transparency.entsoe.eu/dashboard/show){target="_blank"}. 
Im Detail weichen aber auch hier die errechneten Ergebnisse etwas voneinander ab. Beispielsweise weist die [Bundesnetzagentur](https://www.bundesnetzagentur.de/SharedDocs/Pressemitteilungen/DE/2024/20240103_SMARD.html?nn=659670){target="_blank"} für 2023 eine Produktion von 251,2 TWh Strom aus erneuerbaren Energiequellen aus, die [Jahresauswertung der Energy-Charts](https://www.energy-charts.info/downloads/Stromerzeugung_2023.pdf){target="_blank"} nennt 260 TWh und dieser Bericht kommt auf 255,2 TWh. Grund für die Abweichungen werden unterschiedliche Berechnungen sein, qualitativ unterscheiden sich aber alle genannten Berichte nicht.

Übertragungsnetzbetreiber sind für den sicheren Betrieb der Stromversorgung verantwortlich. Sie veröffentlichen nur die Werte für die Stromerzeugung und -bezug, die tatsächlich über das Stromnetz laufen. Selbstverbrauch durch Kraftwerke, Industrie oder Haushalte (zum Beispiel Direktverbrauch von Solarstrom) taucht in diesen Daten nicht auf. Daher handelt es sich bei den verwendeten Daten auch um die **Netto-Stromerzeugung**. Die liegt niedriger als die Bruttostromerzeugung. 

Der aktuelle Strombezug über das Stromnetz wird als Netzlast bezeichnet, der Verbrauch ergibt sich aus Netzlast über einen Zeitraum, beispielsweise Stunden, Tage oder Jahre. Dabei handelt es sich um den [**Netto-Stromverbrauch**](https://eepublicdownloads.entsoe.eu/clean-documents/pre2015/publications/ce/Load_and_Consumption_Data.pdf){target="_blank"}. Er setzt sich zusammen aus der Stromerzeugung, die ins Netz eingespeist wird, den Verlusten im Stromnetz und Stromimporten aus dem Ausland. Im Unterschied dazu werden für den Bruttostromverbrauch noch der Eigenverbrauch von Kraftwerken, Verluste in Kraftwerkstransformatoren und die Selbstversorgung von Industrie hinzugezählt, also der Strom, der nicht über das Stromnetz läuft. Auch der Eigenverbrauch von Solarstrom von Haushalten könnte zum Bruttostromverbrauch gerechnet werden. Das kann erklären, warum die Werte des BDEW für Solarstromerzeugung höher liegen als die der ENTSO&#x2011;E. 


#### Mehr Windstrom steigert die Stromeinspeisung durch Erneuerbare

Erneuerbare Energien haben zwischen dem `r format(as.Date(START_DATE_OBJECT), "%d.%m.%Y")` und dem `r format(as.Date(END_DATE_OBJECT), "%d.%m.%Y")` die folgenden Mengen Strom ins Netz eingespeist (in Klammern die Werte für das Jahr 2022):

-   Wind, Onshore: `r Erzeugung_Jahre_Typ_text['2023 generation Wind Onshore']` TWh (`r Erzeugung_Jahre_Typ_text['2022 generation Wind Onshore']` TWh) 

-  Wind, Offshore: `r Erzeugung_Jahre_Typ_text['2023 generation Wind Offshore']` TWh (`r Erzeugung_Jahre_Typ_text['2022 generation Wind Offshore']` TWh)  

-  Solar: `r Erzeugung_Jahre_Typ_text['2023 generation Solar']` TWh (`r Erzeugung_Jahre_Typ_text['2022 generation Solar']` TWh)  

- Sonstige erneuerbare Energien: `r Erzeugung_Jahre_Typ_text['2023 generation Sonstige Erneuerbare']` TWh (`r Erzeugung_Jahre_Typ_text['2022 generation Sonstige Erneuerbare']` TWh) 

- Insgesamt: `r Erzeugung_Jahre_Typ_text['2023 generation Alle Erneuerbaren']` TWh (`r Erzeugung_Jahre_Typ_text['2022 generation Alle Erneuerbaren']` TWh) 

Die erneuerbare Stromerzeugung ist um knapp 7,7 Prozent gestiegen. Diese Steigerung geht fast ausschließlich auf das Konto der WEA an Land. Trotz des starken Ausbaus der Photovoltaik-Anlagen erreichte deren Stromlieferung ins Netz nicht ganz die Menge des Vorjahres. 

*Anmerkung: Die Stromerzeugung von Solaranlagen  wird von den Übertragungsnetzbetreibern hochgerechnet. Der niedrige Wert für 2023 könnte von den angewendeten Rechenverfahren beeinflusst sein, wahrscheinlicher ist aber, dass es tatsächlich weniger Sonnenstunden gab als 2022, wie ein Netzbetreiber auf Rückfrage mitteilte.\ Alternativ könnte der Anteil des solaren Eigenverbrauchs gestiegen sein, das ließe sich jedoch in den ENTSO-E-Daten nicht erkennen. 
Die tatsächliche solare Netzeinspeisung wird gemeinsam mit den Auszahlungen für erneuerbare Energien vom EEG-Konto veröffentlicht, voraussichtlich im September.*

#### Sinkender Verbrauch erhöht Anteil der Erneuerbaren am Netto-Strombedarf 

Welchen Anteil Erneuerbare an der öffentlichen Stromversorgung haben, lässt sich mit diesen Daten anhand der Strommenge abschätzen, die übers Netz gelaufen ist, dem Netto-Stromverbrauch. Der ist saisonabhängig: Im Winter liegt er etwas höher als im Sommer. Diese saisonalen Schwankungen müssen bei Aussagen zu einem Trend im Stromverbrauch berücksichtigt werden. Um in den Jahreszeiten auch einen langfristigen Trend erkennen zu können, zeigt die folgende Grafik zwei Kurven: 

-   eine gestrichelte Linie: Hier wurde für jeden Tag der mittlere Stromverbrauch der letzten 30 Tage berechnet,
-   eine durchgezogene Linie: durchschnittlicher Stromverbrauch der letzten 365 Tage.


```{r}
#| label: Grafik Stromverbrauch
#| fig-height: 10

filename <- paste0(today(), "_Stromverbrauch_historisch_Deutschland")

tmp <-
    entsoe_load |>
    mutate(Datum = as_datetime(Datum)) |>
    summarise(load = mean(load), .by = Datum) |>
    arrange(Datum) |>
    mutate(
        `Jahresglättung` = round(
            rollmean(
                load / 1000,
                k = 365,
                align = "right",
                na.pad = TRUE
            ),
            digits = 1
        ),
        `Monatsglättung` = round(
            rollmean(
                load / 1000,
                k = 30,
                align = "right",
                na.pad = TRUE
            ),
            digits = 1
        )
    ) |>
    pivot_longer(
        cols = c(`Jahresglättung`, `Monatsglättung`)
    ) |>
    mutate(
        Trend = name,
        `Täglicher Stromverbrauch in GWh` = value
    ) |> write_csv(file.path(imagepath, paste0(filename, ".csv")))


ggtmp <- tmp |>
    ggplot(aes(x = Datum, y = `Täglicher Stromverbrauch in GWh`, linetype = Trend, color = Trend)) +
    geom_line() +
    scale_y_continuous(limits = c(0, NA), expand = c(0, 0.01)) +
    scale_x_datetime(date_breaks = "year", date_labels = "%Y", expand = c(0.01, 0.01)) +
    scale_color_manual(values = c("black", colors_SMC("blue"))) +
    scale_linetype_manual(values = c("solid", "dotted")) +
    labs(
        title = "Stromverbrauchtrends in Deutschland",
    )


ggplotly_SMC(
    ggtmp,
    mehrzeiliger_titel = TRUE,
    tooltip = c("y", "Datum", "colour"),
) |>
layout(legend = list(title = "", y = -0.2, entrywidth = 180),
        xaxis = list(title = "")
        )


ggtmp |> image_helper(
    filename,
    imagepath,
    plotly = TRUE,
    caption = caption_entsoe
)
```

Der Netto-Stromverbrauch für 2023 liegt mit `r Last_2023_Text ` TWh `r Anteil_Last_2023_Text ` Prozent unter dem Mittel von 2015 bis 2022. Über das Stromnetz wurde damit deutlich weniger Energie als in den zurückliegenden Jahren bezogen. Erneuerbare Energien erreichten daran somit einen Anteil von `r Erzeugung_Jahre_Typ_text['2023 Anteil Alle Erneuerbaren']` Prozent.

Bezogen auf den durchschnittlichen Strombezug der letzten Jahre in diesem Zeitraum erreichten die erneuerbaren Energien einen Anteil von `r Erzeugung_Jahre_Typ_text['2023 Anteil_2015_2022 Alle Erneuerbaren']` Prozent. Selbst ohne den starken Rückgang des Netto-Stromverbrauchs würde ihr Anteil damit über der Hälfte des Netto-Stromverbrauchs liegen. 

*Zu Erinnerung: Nicht berücksichtigt werden dabei wie oben beschrieben der Eigenverbrauch von Kraftwerken, Industriekraftwerke oder der Eigenverbrauch von Solarstrom. Das erklärt die niedrigeren absoluten Werte gegenüber Bruttostromverbrauchsangaben.*

Im Einzelnen erreichten:\
- Wind, Onshore einen Anteil von `r Erzeugung_Jahre_Typ_text['2023 Anteil Wind Onshore']` Prozent,\
- Wind, Offshore `r Erzeugung_Jahre_Typ_text['2023 Anteil Wind Offshore']` Prozent,\
- Solar:  `r Erzeugung_Jahre_Typ_text['2023 Anteil Solar']` Prozent und \
- sonstige erneuerbare Energien `r Erzeugung_Jahre_Typ_text['2023 Anteil Sonstige Erneuerbare']` Prozent am Netto-Stromverbrauch.

#### Das Energiewetterjahr in der Auslastung von Windkraft- und PV-Anlagen

Eine zusätzliche Einordnung des Stromertrags aus Windenergie- und Photovoltaikanlagen bietet die Auslastung von WEA und PV-Anlagen. Die Auslastung ist der Quotient aus dem erzeugten Strom und der aufgrund der installierten Leistung maximal möglichen Stromerzeugung. Der Wert (hier in Prozent angegeben) zeigt also, wie viel Strom die Anlagen gemessen an ihrer installierten Leistung tatsächlich erzeugt haben. Ein guter Stromertrag zeigt sich in einer hohen Auslastung der Windkraft- und PV-Anlagen. 

*Die Auslastung ist eine Alternative zur Betrachtung der Stromerzeugung und wichtig für Szenarien über künftige Stromerzeugungen. Die Stromerzeugung steigt mit jeder netto neu installierten WEA-Leistung. Die Auslastung dagegen ermöglicht eine Einordnung der Stromerzeugung in Bezug auf die installierte Leistung und damit eine Bewertung. Wichtig ist allerdings: Neue Windkraftanlagen können in der Regel mehr Strom pro installierte Leistung erzeugen als alte. Die Auslastung steigt also wetterbereinigt. Allerdings ist der Einfluss geringer als beispielsweise der Einfluss der insgesamt steigenden Leistung auf die erzeugte Strommenge.*

Die vier folgenden Grafiken zeigen die Auslastung pro Tag im zurückliegenden Jahr sowie im mehrjährigen Mittel. Die Auslastung wurde dabei jeweils als Mittel der vergangenen sieben Tage berechnet, um kurzfristige Schwankungen auszugleichen.

Datenauswertungen und Grafiken zur Auslastungsentwicklung und zum jahreszeitlichen Verlauf finden sich im ersten [Datenreport zum erneuerbaren Energiesystem](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/energiewende-report-2023-04-06/){target="_blank"}.

```{r}
#| label: grafik-auslastung wind onshore
filename <- paste0(today(), "_Auslastung_Wind_onshore")

tmp <- plot_auslastung_erneuerbare(
    Erzeuger = "Wind Onshore",
    title = "Geglättete Auslastung der Onshore-Windenergie",
    filename = filename,
    imagepath = imagepath
)

ggplotly_SMC(tmp,
mehrzeiliger_titel = TRUE,
    tooltip = c("colour", "y", "label")
) |>
    layout(legend = list(title = "", y = -0.2, entrywidth = 180))

tmp |>
    image_helper(filename,
        imagepath,
        plotly = TRUE,
        caption = caption_entsoe_MaSta
    )
```

```{r}
#| label: grafik-auslastung wind offshore
#
filename <- paste0(today(), "_Auslastung_Wind_offshore")

tmp <- plot_auslastung_erneuerbare(
    Erzeuger = "Wind Offshore",
    title = "Geglättete Auslastung der Offshore-Windenergie",
    filename = filename,
    imagepath = imagepath
)

ggplotly_SMC(tmp,
mehrzeiliger_titel = TRUE,
        tooltip = c("y", "label", "colour")
    ) |>
    layout(legend = list(title = "", y = -0.2, entrywidth = 180))
tmp |>
    image_helper(filename,
        imagepath,
        plotly = TRUE,
        caption = caption_entsoe_MaSta
    )
```

```{r}
#| label: grafik-auslastung solar
filename <- paste0(today(), "_Auslastung_Solar")

tmp <- plot_auslastung_erneuerbare(
    Erzeuger = "Solar",
    title = "Geglättete Auslastung der Solaranlagen",
    filename = filename,
    imagepath = imagepath
)


ggplotly_SMC(tmp,
mehrzeiliger_titel = TRUE,
        tooltip = c("y", "label", "colour")
    ) |>
    layout(legend = list(title = "", y = -0.2, entrywidth = 180))
tmp |>
    image_helper(filename,
        imagepath,
        plotly = TRUE,
        caption = caption_entsoe_MaSta
    )
```

```{r}
#| label: grafik-auslastung gesamt
filename <- paste0(today(), "_Gesamtauslastung_Solar_Wind")

tmp <- plot_auslastung_erneuerbare(
    Erzeuger = "Gesamt",
    title = "Geglättete Auslastung der Solar- und Windkraftanlagen",
    filename = filename,
    imagepath = imagepath
)


ggplotly_SMC(tmp,
mehrzeiliger_titel = TRUE,
        tooltip = c("y", "label", "colour")
    ) |>
    layout(legend = list(title = "", y = -0.2, entrywidth = 180))
tmp |>
    image_helper(filename,
        imagepath,
        plotly = TRUE,
        caption = caption_entsoe_MaSta
    )
```

**Zusammenfassung der Auslastung**

Die durchschnittliche Auslastung der Anlagen lag im Zeitraum vom `r format(as.Date(START_DATE_OBJECT), "%d.%m.%Y")` bis zum `r format(as.Date(END_DATE_OBJECT), "%d.%m.%Y")` bei:

- Wind, Onshore: `r Auslastung_Jahr_Erzeuger_text['2023 Wind Onshore']` Prozent (gegenüber `r Auslastung_Jahr_Erzeuger_text['durchschnittlich Wind Onshore']` Prozent im langjährigen Mittel)

- Wind, Offshore: `r Auslastung_Jahr_Erzeuger_text['2023 Wind Offshore']` Prozent (gegenüber `r Auslastung_Jahr_Erzeuger_text['durchschnittlich Wind Offshore']` Prozent im langjährigen Mittel)

- Solar: `r Auslastung_Jahr_Erzeuger_text['2023 Solar']` Prozent (gegenüber `r Auslastung_Jahr_Erzeuger_text['durchschnittlich Solar']` Prozent im langjährigen Mittel)

Für die gewichtete Auslastung der Anlagen aller drei Typen ergibt sich ein Wert von `r Auslastung_Jahr_Erzeuger_text['2023 Gesamt']` Prozent. Er liegt damit im Bereich des mehrjährigen Mittels von `r Auslastung_Jahr_Erzeuger_text['durchschnittlich Gesamt']` Prozent. 

*Anmerkung: Im Auslastungswert der Solaranlagen spiegelt sich die Beobachtung aus der Stromerzeugung wider: Obwohl die Zahl der Anlagen 2023 deutlich gestiegen ist, ist die hochgerechnete Netzeinspeisung nahezu gleichgeblieben. Folgerichtig ist die Auslastung gesunken. Zu möglichen Gründen dafür siehe oben.* 



```{r}
#| label: grafik-auslastung nach Jahren
filename <- paste0(today(), "_Auslastung_Jahre")

tmp <-
  Leistung_Erzeugung_Installiert |>
  filter(Zeitraum != "durchschnittlich") |>
  summarise(Auslastung = mean(Auslastung) * 100,
            .by = c(Zeitraum, Erzeuger)) |>
  write_csv(file.path(imagepath, paste0(filename, ".csv"))) |>
  ggplot(aes(x = Zeitraum, y = Auslastung, fill = Erzeuger)) +
  geom_col(position = "dodge") +
  labs(x = "", y = "Auslastung in Prozent", title = "Auslastung nach Jahren") +
  scale_fill_manual(values = colors_SMC())

  ggplotly_SMC(tmp,
               mehrzeiliger_titel = TRUE,
               tooltip = c("y", "label", "colour")) |>
  layout(legend = list(
    title = "",
    y = -0.2,
    entrywidth = 180
  ))

tmp |>
  image_helper(filename,
               imagepath,
               plotly = TRUE,
               caption = caption_entsoe_MaSta)
```

Die Daten der ENTSO-E stehen erst seit 2015 zur Verfügung. Im Vergleich mit diesen neun Jahren liegt 2023 im Mittelfeld, das Wetterjahr war also nicht herausragend. Die PV-Auslastung lag zwar niedrig, die Auslastung der WEA an Land erreichte dagegen ihren höchsten Wert seit 2015. 

In dieser Grafik wird auch deutlich, dass die Auslastung der Offshore-Windparks seit 2020 nicht zugenommen hat, sondern 2023 auf den tiefsten Wert seit 2015 gefallen ist. Allerdings sind neun Jahre für die Beobachtung langfristiger Wetterentwicklungen zu kurz, um hieraus ohne weitere Recherche einen Trend abzuleiten.  


### Datengrundlage und Code

Alle Daten zur Stromerzeugung, zur installierten Leistung und zur Netzlast stammen von der [Transparenz-Plattform](https://transparency.entsoe.eu/dashboard/show){target="_blank"} des Verbands Europäischer Übertragungsnetzbetreiber (ENTSO-E). Die Daten werden von den Netzbetreibern der einzelnen Länder bereitgestellt. Daten zur Erzeugung und zur Last werden mit einem Verzug von circa 2 Stunden bereitgestellt und haben eine Auflösung von 15 Minuten. Daten zum Stromhandel sind stündlich aufgelöst. Die Daten zur installierten Leistung werden nur jährlich aktualisiert. Aus diesem Grund wird die installierte Leistung aus dem Marktstammdatenregister entnommen. Der Zuwachs innerhalb eines Jahres wird dabei linear interpoliert. Die Erzeugungsdaten beschreiben die **realisierte** Erzeugung, also die Menge, die tatsächlich in das Netz eingespeist wurde. Der Eigenbedarf der Kraftwerke ist nicht in den Daten enthalten.

Für die Berechnung der Auslastung verwenden wir interpolierte Werte zwischen den bereitgestellten Werten der installierten Leistung. Da keine Werte für Ende 2023 vorliegen, haben wir diese über das [Marktstammdatenregister](https://www.marktstammdatenregister.de/MaStR){target="_blank"} ermittelt. 

Den Code für diesen Data Report stellen wir [hier](
`r file.path(imagepath,paste0(today(), "_", file_name_code))`
){target="_blank"} zur Verfügung. Neben Standard R-Paketen wird ein eigenes Paket verwendet, das [hier](https://github.com/sciencemediacenter/SMChelpR){target="_blank"} bereitgestellt wird.

### Ihre Ansprechpersonen in Redaktion und SMC Lab

Wenn Sie Fragen zu diesen Daten haben oder weitere Auswertungen erhalten wollen, kann das SMC Lab Auswertungen erzeugen.

*Datenauswertung*\
Bernhard Armingeon\
Lars Koppers\
[lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}

*Redaktion*\
Sönke Gäthke, Redakteur für Energie und Mobilität\
[redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}

Telefon: +49 221 8888 25-0\
:::
