StromGedacht API auslesen - Netz-freundlich Strom in Baden-Württemberg verbrauchen

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen. Alles, was man wissen sollte. Bei Fragen, bitte erst einmal hier vorbeischauen.

Moderator: Ulrich

Ruhz69
Beiträge: 76
Registriert: Fr 28. Jan 2022, 19:41
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

StromGedacht API auslesen - Netz-freundlich Strom in Baden-Württemberg verbrauchen

Beitrag von Ruhz69 »

Hallo,
Der Netzbetreiber Transnet BW bietet für Baden-Württemberg eine App https://www.stromgedacht.de/und ein API https://www.stromgedacht.de/api-docs an, die die Netzbelastung anzeigen. Da Suedlink noch nicht fertig ist, kann es sein, dass Strom zwar billig und erneuerbar ist, aber in Süddeutschland Reservekraftwerke angeschmissen werden und dafür Windkraft im Norden abgeregelt wird (wäre unten der Fall „orange“).
Auf Basis von Bogeyof und DeBaschdi
https://solaranzeige.de/phpBB3/viewtop ... 9811#p9811 ein Python Script erstellt und mit einer math.php verknüpft.

1. die StromGedacht.py in die Solaranzeige kopieren
Als User Pi in der Solanzeige anmelden
Mit

Code: Alles auswählen

sudo mcedit /var/www/html/stromgedacht.py
Dann den folgenden Code in das Fenster kopieren

Code: Alles auswählen

#!/usr/bin/python3
# Be sure to have the requests library installed ('pip install requests')
import requests
import json

# StromGedacht API
#
# Get current state for zip=70173 (Stuttgart)
#
# Meaning of states (cf. https://www.stromgedacht.de):
# -1 = superGreen
#  1 = green
#  3 = orange
#  4 = red
#
stromgedachtURL = "https://api.stromgedacht.de/v1/now?zip=70173"
response = requests.get(stromgedachtURL, headers = {"accept":"application/json"})
content = json.loads(response.text)
state = content["state"]
print(state)

Die Postleitzahl ändern, Speichern und schließen
2. Dann die Geräte_math.php (bei mir die shelly_math.php) editieren.

Den folgenden Code reinkopieren.

Code: Alles auswählen

#!/usr/bin/php
<?php
/******************************************************************************
//  Hier können eigene Berechnungen gemacht werden, wenn das nötig ist.
******************************************************************************/

// Initialisieren

$aktuelleDaten["Stromgedachtstatus"] = 0;

// Stromgedacht auslesen
$shell_befehl = "python3 /var/www/html/stromgedacht.py";
$temp1 = shell_exec($shell_befehl);
$Einzelwerte1 = preg_split("/[\s,\n \]]+/", $temp1);


// Daten vorbereiten
$aktuelleDaten["Stromgedachtstatus"] = $Einzelwerte1[0];

//Quers zusammenstellen                       
$aktuelleDaten["ZusatzQuery"] = "\n";         
//$aktuelleDaten["ZusatzQuery"] .= "\n"; //das wird benötigt, wenn man das script in eine bestehende math.php einarbeitet.
$aktuelleDaten["ZusatzQuery"] .= "Stromgedacht ";
$aktuelleDaten["ZusatzQuery"] .= "Stromgedachtstatus=".$aktuelleDaten["Stromgedachtstatus"];
$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];
                                              

$funktionen->log_schreiben("Include für Stromgedacht gelaufen: ".$aktuelleDaten["Stromgedachtstatus"]." ", "   ",7);

return;

?>
Speichern und schließen
3. zum visualisieren habe ich ein Dashboard mit zwei Visualisierungen hier die JSON Version

Code: Alles auswählen

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 0,
  "id": 83,
  "links": [],
  "liveNow": false,
  "panels": [
    {
      "datasource": {
        "type": "influxdb",
        "uid": "000000002"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [
            {
              "options": {
                "1": {
                  "color": "green",
                  "index": 0,
                  "text": "Normal"
                },
                "3": {
                  "color": "dark-orange",
                  "index": 2,
                  "text": "Netz: Stromverbrauch verschieben"
                },
                "4": {
                  "color": "dark-red",
                  "index": 3,
                  "text": "Strommangel: Verbrauch verschieben!"
                },
                "-1": {
                  "color": "green",
                  "index": 1,
                  "text": "Supergrün: Verbrauch vorziehen"
                }
              },
              "type": "value"
            }
          ],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "none"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 3,
        "w": 8,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "links": [],
      "maxDataPoints": 100,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "horizontal",
        "reduceOptions": {
          "calcs": [
            "last"
          ],
          "fields": "/^last$/",
          "values": false
        },
        "textMode": "value"
      },
      "pluginVersion": "8.3.3",
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "000000002"
          },
          "groupBy": [],
          "measurement": "Stromgedacht",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "table",
          "select": [
            [
              {
                "params": [
                  "Stromgedachtstatus"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": []
        }
      ],
      "title": "Stromnetz (Stromgedacht)",
      "transparent": true,
      "type": "stat"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "000000002"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [
            {
              "options": {
                "1": {
                  "index": 0,
                  "text": "Stromnetz: Normal"
                },
                "3": {
                  "index": 2,
                  "text": "Netz: Stromverbrauch verschieben"
                },
                "4": {
                  "index": 3,
                  "text": "Strommangel: Verbrauch verschieben!"
                },
                "-1": {
                  "index": 1,
                  "text": "Supergrün: Verbrauch vorziehen"
                }
              },
              "type": "value"
            }
          ],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "dark-green",
                "value": null
              },
              {
                "color": "green",
                "value": 1
              },
              {
                "color": "dark-orange",
                "value": 3
              },
              {
                "color": "red",
                "value": 4
              }
            ]
          },
          "unit": "none"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 1,
        "w": 8,
        "x": 0,
        "y": 3
      },
      "id": 4,
      "links": [],
      "maxDataPoints": 100,
      "options": {
        "colorMode": "background",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "horizontal",
        "reduceOptions": {
          "calcs": [
            "last"
          ],
          "fields": "/^last$/",
          "values": false
        },
        "text": {
          "valueSize": 30
        },
        "textMode": "value"
      },
      "pluginVersion": "8.3.3",
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "000000002"
          },
          "groupBy": [],
          "measurement": "Stromgedacht",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "table",
          "select": [
            [
              {
                "params": [
                  "Stromgedachtstatus"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": []
        }
      ],
      "transparent": true,
      "type": "stat"
    }
  ],
  "schemaVersion": 34,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": []
  },
  "time": {
    "from": "now-6h",
    "to": "now"
  },
  "timepicker": {},
  "timezone": "",
  "title": "Stromgedacht",
  "uid": "whtbXUgRz",
  "version": 4,
  "weekStart": ""
}
Bei mir ist das in meinem „Kiosk“ Dashboard.
IMG_0180.jpg
Das Feld in der Mitte "Stromnetz: Normal" wechselt die Farbe

# -1 = superGreen Verbrauch vorziehen
# 1 = green. Stromnetz: normal
# 3 = orange Netz: Stromverbrauch verschieben
# 4 = rot. Strommangel: Verbrauch verschieben!

Mit den Werten ( -1, 1, 3, 4) kann man eventuell auch etwas steuern.
Ich lade damit meinen Speicher im Winter Nachts für den Bedarf von etwa 6 bis 9 Uhr (2-3 kWh). Das war für mich aber einfacher über Victron /Node Red zu realisieren.
Stromgedacht-1735998548655.json
(6.08 KiB) 1-mal heruntergeladen

Zurück zu „Dokumente, Bauanleitungen und How To's“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste