Zum Hauptinhalt springen

Stromzähler

WARP Charger und Energy Manager unterstützen mehrere Stromzähler. Die Stromzähler-API ist aufgeteilt in einem allgemeinen Teil unter meters/... und einen Stromzähler-spezifischen Teil unter meters/X/... wobei X einer Stromzähler-Nummer entspricht. Der Stromzähler-spezifische Teil beinhaltet immer

Beispielsweise können die Messwerte des ersten Stromzählers (der die Stromzählernummer 0 besitzt) unter meters/0/values gelesen werden. Außerdem hat jeder Zähler die APIs

deren Inhalt von der Klasse des Stromzählers abhängt. Die Stromzählerklasse wird als das Union-Tag von meters/X/config angegeben.

Jeder Stromzähler meldet seine Messwerte unter meters/X/values als ein Array von Floats. Welcher Messwert wie zu interpretieren ist, kann unter meters/X/value_ids (einem Array von Ints, den sogenannten MeterValueIDs) ausgelesen werden: Wenn beispielsweise an Index 3 in meters/X/value_ids die MeterValueID 13 gelesen wird, dann ist der meters/X/values-Wert an Index 3 als der Phasenstrom auf L1 zu interpretieren.

Alle MeterValueIDs sind auf Github dokumentiert: Liste aller MeterValueIDs



meters/X/values

Die Messwerte des X. Stromzählers. Die Bedeutung der Messwerte kann aus meters/X/value_ids ermittelt werden.

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/values
[
// Index 0
217.6941223, 0, 0,
30.72553635, 0, 0,
6680.515625, 0, 0,
6681.138672, 0, 0,
// Index 12
-90.09844208, 0, 0,
1, 0, 0,
72.56191254, 10.24184513, 30.72553635,
6683.693359, 6680.666016, -90.09844208,
// Index 24
1, 50, 4644.044922,
3.992000103, 0, 0,
0, 0, 30.70857239,
4648.038086, 197.5639954, 4648.038086,
// Index 36
4644.044922, 3.992000103
]



meters/X/update

Aktualisiert die Messwerte des X. Stromzählers. Kann nur bei einem API-Stromzähler (Union-Tag 4 in der entsprechenden meters/X/config) verwendet werden.

Beispiel
# $HOST z.B. warp-AbCd

Schreiben

curl http://$HOST/meters/1/update -d '[
15.9, 16, 16.1,
3657, 3680, 3703
]'

Beispiel für einen Zähler, der pro Phase Strom (Bezug + Einspeisung) und Wirkleistung (Bezug - Einspeisung) misst. Die korrekte Konfiguration (meters/X/config) für diesen Zähler wäre

[4, { "display_name": "API-Zähler", "value_ids": [13, 17, 21, 39, 48, 57] }]



meters/X/value_ids

Die MeterValueIDs des X. Stromzählers. Der n-te Eintrag in diesem Array gibt die Bedeutung des n-ten Messwerts aus meters/X/values an. Liste aller MeterValueIDs

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/value_ids
[
// Index 0
1, 2, 3, // Spannung L1-N, L2-N, L3-N
13, 17, 21, // Strom (Bezug + Einspeisung) L1-N, L2-N, L3-N
39, 48, 57, // Wirkleistung (Bezug - Einspeisung) L1-N, L2-N, L3-N
122, 130, 138, // Scheinleistung (Bezug + Einspeisung) L1-N, L2-N, L3-N
// Index 12
83, 91, 99, // Blindleistung (induktiv - kapazitiv) L1-N, L2-N, L3-N
353, 354, 355, // Leistungsfaktor (gerichtet; Vorzeichen gibt Richtung des Stromflusses an) L1, L2, L3
7, // Durchschnittliche Phasenspannung
29, // Durchschnitt der (Bezug + Einspeisung)-Phasenströme
33, // Summe der (Bezug + Einspeisung)-Phasenstöme
74, // Summe der (Bezug - Einspeisung)-Phasenwirkleistungen
154, // Summe der (Bezug + Einspeisung)-Phasenscheinleistungen
115, // Summe der (induktiv - kapazitiv)-Phasenblindleistungen
// Index 24
356, // Summe der gerichteten Leistungsfaktoren
364, // Netzfrequenz
209, 211, // Wirkenergie (Σ L1, L2, L3, seit Herstellung) Bezug, Einspeisung
4, 5, 6, 8, // Spannung L1-L2; L2-L3; L3-L1; ⌀ L1-L2, L2-L3, L3-L1
25, // Neutralleiterstrom
213, // Wirkenergie (Σ L1, L2, L3, seit Herstellung) Bezug + Einspeisung
277, // Blindenergie (Σ L1, L2, L3, seit Herstellung) induktiv + kapazitiv
214, // Wirkenergie (Σ L1, L2, L3, seit letztem Zurücksetzen) Bezug + Einspeisung
// Index 36
210, // Wirkenergie (Σ L1, L2, L3, seit letztem Zurücksetzen) Bezug
212 // Wirkenergie (Σ L1, L2, L3, seit letztem Zurücksetzen) Einspeisung
]



meters/X/history

Eine 48-Stunden-Historie der Ladeleistung des X. Stromzählers in Watt. Bisher fehlende Werte werden durch null angezeigt. Die Historie wird von hinten nach vorne gefüllt, sodass null-Werte nur geschlossen am Anfang des Arrays auftreten, falls der ESP innerhalb der letzten 48 Stunden neugestartet wurde. Es werden bis zu 720 Werte ausgegeben, das entspricht einem Messwert alle 4 Minuten. Diese Messwerte sind der jeweilige Durchschnitt dieser 4 Minuten.

Beispiel
# $HOST z.B. warp-AbCd
curl http://$HOST/meters/1/history
{
"offset": 60927,
"samples": [
null, null, null, null, null, null, null, null,
// 600 weitere null-Werte entfernt
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1736, 6656, 6655, 6666,
6680, 6716, 6714, 6625, 6640, 6641, 6595, 6612,
6592, 6593, 6589, 6592, 6600, 6625, 6626, 6637,
6665, 6636, 6632, 6656, 6616, 6611, 6646, 6670,
6691, 6715, 6787, 6754, 6761, 6797, 6771, 6685,
6705, 6778, 6703, 6675, 6681, 6721, 6739, 6816,
6872, 6858, 6821, 6836, 6784, 6871, 6943, 6930,
6968, 6955, 6837, 6800, 6846, 6919, 6881, 6736,
6671, 6655, 6674, 6743, 6878, 5733, 4462, 3712,
3098, 2693, 2337, 2098, 1683, 1575, 1575, 84,
0, 0, 0, 0, 0, 0, 0, 0
]
}
NameBedeutung
offset
int (ms)

Das Alter des zuletzt gemessenen Wertes.

samples
int[..]

Die gemessenen Werte.




meters/X/live

Die letzten Ladeleistungs-Messwerte des X. Stromzählers. Auf Basis dieser Werte werden die Durchschnittswerte für meters/X/history generiert.

Beispiel
# $HOST z.B. warp-AbCd
curl http://$HOST/meters/1/live
{
"offset": 370,
"samples_per_second": 1.99565,
"samples": [
2626, 2626, 2626, 2626, 2626, 2626, 2626, 2673,
2673, 2673, 2673, 2673, 2673, 2673, 2673, 2677,
2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
2677, 2677, 2677, 2677, 2677, 2677, 2677, 988,
988, 988, 988, 988, 988, 988, 988, 3,
3, 3, 3, 3, 3, 3, 3, 1,
1, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 4
]
}

Es liegen 80 Werte vor, ~ 2 Werte pro Sekunde wurden erhoben, das Offset des letzten Werts sind 370 ms -> Die Messwerte reichen im Moment 40,370 Sekunden in die Vergangenheit.

NameBedeutung
offset
int (ms)

Das Alter des zuletzt gemessenen Wertes.

samples_per_second
float (Hz)

Die Anzahl der gemessenen Werte pro Sekunde.

samples
int[..]

Die gemessenen Werte. Abhängig von der Länge des Arrays und dem samples_per_second-Wert kann ermittelt werden, wie weit in die Vergangenheit die Messwerte reichen.




meters/X/config

Die Konfiguration des X. Stromzählers. Das Union-Tag gibt die Zählerklasse an.

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/config
[4, { "display_name": "API-Zähler", "value_ids": [13, 17, 21, 39, 48, 57] }]

Konfiguriert für den Stromzähler-Slot 1 einen über meters/1/update mit Werten befüllbaren Stromzähler, der pro Phase Strom (Bezug + Einspeisung) und Wirkleistung (Bezug - Einspeisung) misst. 4 ist das Union-Tag des API-Stromzählers.

Schreiben

curl http://$HOST/meters/1/config -d '[4, { "display_name": "API-Zähler", "value_ids": [13, 17, 21, 39, 48, 57] }]'

Konfiguriert für den Stromzähler-Slot 1 einen über meters/1/update mit Werten befüllbaren Stromzähler, der pro Phase Strom (Bezug + Einspeisung) und Wirkleistung (Bezug - Einspeisung) misst. 4 ist das Union-Tag des API-Stromzählers.

null: Kein Stromzähler konfiguriert.




meters/X/state

Der Zustand des X. Stromzählers. Der Inhalt dieser API hängt vom Typ des Stromzählers ab, der in meters/X/config konfiguriert wurde.

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/state
null

null: Kein Stromzähler konfiguriert.




meters/X/errors

Fehlerzähler der Kommunikation mit dem Stromzähler. Der Inhalt dieser API hängt vom Typ des Stromzählers ab, der in meters/X/config konfiguriert wurde.

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/errors
null

null: Kein Stromzähler konfiguriert.




meters/X/reset

Setzt alle zurücksetzbaren (Alle Werte deren kind-Eintrag resettable ist: Liste aller MeterValueIDs) Zählerwerte des X. Stromzählers zurück. Leerer Payload. Es muss einer der folgenden Werte übergeben werden: null, "", false, 0, [] oder {}

Beispiel
# $HOST z.B. warp-AbCd

Schreiben

curl http://$HOST/meters/1/reset -d 'null'



meters/X/last_reset

Der Zeitpunkt des letzten Zähler-Resets (siehe meters/X/reset) als Unix-Timestamp. 0 falls kein Reset durchgeführt wurde. Falls zum Zeitpunkt des letzten Resets keine Zeitsynchronisierung vorlag, ist dieser Wert stattdessen ein Zähler, der angibt, wie oft ein Reset durchgeführt wurde.

Beispiel
# $HOST z.B. warp-AbCd

Lesen

curl http://$HOST/meters/1/last_reset
{ "last_reset": 1714728252 }

Zuletzt zurückgesetzt 2024-05-03T11:24:12+02:00

NameBedeutung
last_reset
int (s)

Unix-Timestamp des Zeitpunkts des letzten Zähler-Resets.




meters/history

Eine 48-Stunden-Historie der Ladeleistung in Watt. Bisher fehlende Werte werden durch null angezeigt. Die Historie wird von hinten nach vorne gefüllt, sodass null-Werte nur geschlossen am Anfang des Arrays auftreten, falls der ESP innerhalb der letzten 48 Stunden neugestartet wurde. Es werden bis zu 720 Werte ausgegeben, das entspricht einem Messwert alle 4 Minuten. Diese Messwerte sind der jeweilige Durchschnitt dieser 4 Minuten.

Beispiel
# $HOST z.B. warp-AbCd
curl http://$HOST/meters/history
{
"offset": 9378,
"samples": [
[
null, null, null, null, null, null, null, null,
// 600 weitere null-Werte entfernt
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1736, 6656, 6655, 6666,
6680, 6716, 6714, 6625, 6640, 6641, 6595, 6612,
6592, 6593, 6589, 6592, 6600, 6625, 6626, 6637,
6665, 6636, 6632, 6656, 6616, 6611, 6646, 6670,
6691, 6715, 6787, 6754, 6761, 6797, 6771, 6685,
6705, 6778, 6703, 6675, 6681, 6721, 6739, 6816,
6872, 6858, 6821, 6836, 6784, 6871, 6943, 6930,
6968, 6955, 6837, 6800, 6846, 6919, 6881, 6736,
6671, 6655, 6674, 6743, 6878, 5733, 4462, 3712,
3098, 2693, 2337, 2098, 1683, 1575, 1575, 84,
0, 0, 0, 0, 0, 0, 0, 0
],
null,
null,
null,
null,
null,
null
]
}
NameBedeutung
offset
int (ms)

Das Alter des zuletzt gemessenen Wertes.

samples
int[..][2]

Die gemessenen Werte aller Stromzähler.

  • [0..1] - Die gemessenen Werte des jeweiligen Stromzählers. Null falls ein Zähler nicht konfiguriert ist.



meters/live

Die letzten Ladeleistungs-Messwerte. Auf Basis dieser Werte werden die Durchschnittswerte für meters/history generiert. Es werden bis zu 720 Werte ausgegeben, das entspricht 6 Minuten bei einem Messwert alle 500 Millisekunden.

Beispiel
# $HOST z.B. warp-AbCd
curl http://$HOST/meters/live
{
"offset": 370,
"samples_per_second": 1.99565,
"samples": [
[
2626, 2626, 2626, 2626, 2626, 2626, 2626, 2673,
2673, 2673, 2673, 2673, 2673, 2673, 2673, 2677,
2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
2677, 2677, 2677, 2677, 2677, 2677, 2677, 988,
988, 988, 988, 988, 988, 988, 988, 3,
3, 3, 3, 3, 3, 3, 3, 1,
1, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 4
],
null
]
}
NameBedeutung
offset
int (ms)

Das Alter des zuletzt gemessenen Wertes.

samples_per_second
float (Hz)

Die Anzahl der gemessenen Werte pro Sekunde.

samples
int[..][2]

Die gemessenen Werte aller Stromzähler.

  • [0..1] - Die gemessenen Werte. Abhängig von der Länge des Arrays und dem samples_per_second-Wert kann ermittelt werden, wie weit in die Vergangenheit die Messwerte reichen.