Ortsnetz Auslastung: Unterschied zwischen den Versionen
Erste Version der Seite |
K Kategorie angepasst |
||
| Zeile 92: | Zeile 92: | ||
* Karte mit den visualisierten Daten [https://ortsnetz-auslastung.de] | * Karte mit den visualisierten Daten [https://ortsnetz-auslastung.de] | ||
[[Kategorie: | [[Kategorie:Energieversorgung]] | ||
Aktuelle Version vom 13. Oktober 2026, 17:40 Uhr
| Todo: Die Diskussion im Forum läuft noch, neue Erkenntnisse und Informationen sollten nach Bedarf hierher übernommen werden. |
Im September 2026 wurde das Projekt Ortsnetz-Auslastung gestartet, das Daten über die Auslastung der Stromnetze, insbesondere der Orts- und Niederspannungsnetze sammelt und visualisiert.
Eine Möglichkeit, auch aus FHEM heraus Daten für dieses Projekt zu liefern, wird im Forenthema Datenerfassung ortsnetz-auslastung.de beschrieben.
Eine konsolidierte Zusammenfassung dieser Informationen findet sich in den folgenden Abschnitten.
at zur Aktualisierung der Daten auf dem Projektserver
defmod at_OrtsnetzAuslastung at +*00:05:00 {\
use HttpUtils;;\
use JSON::PP ();;\
my $deviceName = "at_OrtsnetzAuslastung";;\
# --- Koordinaten --- \
my $lat = AttrNum("global", "latitude", -1);;\
my $lon = AttrNum("global", "longitude", -1);;\
\
# --- Zählerwerte --- \
my $l1_v = ReadingsVal("Ortsnetz", "voltageL1", -1);;\
my $l2_v = ReadingsVal("Ortsnetz", "voltageL2", -1);;\
my $l3_v = ReadingsVal("Ortsnetz", "voltageL3", -1);;\
my $freq = ReadingsVal("Ortsnetz", "frequency", -1);;\
my $observed_at = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime());;;;\
# -------------------------------------------------- \
\
my $json = sprintf('{"observed_at":"%s", "latitude":%s,"longitude":%s,"l1_v":%s,"l2_v":%s,"l3_v":%s,"grid_frequency_hz":%s}',\
$observed_at, $lat, $lon, $l1_v, $l2_v, $l3_v, $freq);;\
my $param = {\
url => "https://www.ortsnetz-auslastung.de/v1/measurements",\
timeout => 10,\
method => "POST",\
header => "Content-Type: application/json",\
data => $json,\
hash => $defs{$deviceName},\
callback => sub($$$) {\
my ($param, $err, $data) = @_;;\
my $hash = $param->{hash};;\
\
if ($err) { Log3 $deviceName, 3, "ortsnetz-auslastung.de API Fehler: $err";; return;;}\
my $response = eval {JSON::PP->new->utf8(0)->decode($data) };;\
if ($@) { Log3 $deviceName, 3, "ortsnetz-auslastung.de API JSON-Decode-Fehler: $@";; return;; }\
if (ref($response) ne "HASH") { Log3 $deviceName, 3, "ortsnetz-auslastung.de API: JSON-Antwort ist kein Objekt: $data";; return;; }\
\
readingsBeginUpdate($hash);;\
readingsBulkUpdate($hash, "accepted", $response->{accepted}) if defined $response->{accepted};;\
readingsBulkUpdate($hash, "created", $response->{created}) if defined $response->{created};;\
readingsBulkUpdate($hash, "storage_recommendation", $response->{storage_recommendation}) if defined $response->{storage_recommendation};;\
\
if (ref($response->{status}) eq "HASH") {\
for my $key (qw(l1 l2 l3 overall)) {\
readingsBulkUpdate($hash, "status_$key", $response->{status}{$key}) if defined $response->{status}{$key};;\
}\
}\
readingsEndUpdate($hash, 1);;\
Log3 $deviceName, 3, "ortsnetz-auslastung.de API Antwort: $data";;\
}\
};;\
Log3 $deviceName, 3, "ortsnetz-auslastung.de API Anfrage: POST $param->{url} | Body: $json";;\
HttpUtils_NonblockingGet($param);;\
}
attr at_OrtsnetzAuslastung room PV
Daten (Variablen) im obigen Beispiel beziehen sich teilweise auf das im Folgenden gezeigte ReadingsProxy Device Ortsnetz, teilweise wird auch gezeigt, wie die Daten "direkt" aus FHEM Devices (Readings oder Attributen) geholt werden können.
Zugehörige "Konfiguration"
Zur Anpassung an die jeweilige Installation können im folgenden ReadingsProxy die Zählerinformationen, Koordinaten und andere Informationen individualisiert werden:
defmod Ortsnetz readingsProxy \
meterDevice:voltageL1:l1_v \
meterDevice:voltageL2:l2_v \
meterDevice:voltageL3:l3_v \
meterDevice:frequency:Frequenz
attr Ortsnetz userReadings latitude {AttrNum("global", "latitude", -1)}, longitude {AttrNum("global", "longitude", -1)}
setstate Ortsnetz 2026-10-10 21:19:28 plant_capacity_kwp 5.5
setstate Ortsnetz 2026-10-10 21:19:28 integration_version FHEM-v0.1
setstate Ortsnetz 2026-10-10 21:19:28 smartmeter_model Holley EHZ541-ZE
Hierbei sind verschiedene Wege genutzt, um die Daten zu sammeln:
- Readings von existierenden Devices
- <meterDevice>:<voltageL1>:l1_v
- Daten aus Device-Attributen (hier dem global Device)
- userReadings für die Geo-Koordinaten
- Eintragung von Fixwerten, wenn keine "dynamischen" Datenquellen zur Verfügung stehen
- setstate Ortsnetz <timestamp> <Request-Feldname> Wert
Links
- Forenthema Datenerfassung ortsnetz-auslastung.de
- Projektseite [1]
- Karte mit den visualisierten Daten [2]