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
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)
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;
?>
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": ""
}
# -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.