stromleser.one lokale API
Die stromleser.one lokale API ermöglicht den direkten Zugriff auf deine Stromzählerdaten über das lokale Netzwerk. Diese API ist nur lokal verfügbar und kann nicht über das Internet erreicht werden.
Für allgemeine Informationen über lokale APIs siehe Lokale API Übersicht.
API-Endpunkt
Die API ist über die folgende URL erreichbar:
http://[GERÄT_IP]/v1/data
Beispiel:
http://192.168.1.100/v1/data
Rate Limiting
Die API hat eine Ratenbegrenzung implementiert:
- 1 Anfrage alle 8 Sekunden
- Bei Überschreitung des Limits wird die Anfrage abgelehnt
Stelle sicher, dass deine Anwendung nicht öfter als einmal alle 8 Sekunden Anfragen sendet.
API-Response
Die API gibt JSON-Daten zurück, deren Inhalt vollständig von deinem Stromzähler abhängig ist. Je nachdem, welche Werte dein Zähler unterstützt und sendet, werden diese in der API-Response angezeigt.
Beispiel-Response
{
"device_id": "STROM_ONE_7211674295",
"timestamp": "1761908828",
"1.8.0": "22641332.800 Wh",
"1.8.1": "22641332.800 Wh",
"1.8.2": "0.000 Wh",
"2.8.0": "37307808.400 Wh",
"2.8.1": "37307808.400 Wh",
"2.8.2": "0.000 Wh",
"16.7.0": "3.000 W",
"36.7.0": "0.000 W",
"56.7.0": "0.000 W",
"76.7.0": "3.000 W",
"RSSI": "-54dBm"
}
Standard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
device_id | String | Eindeutige Geräte-ID des stromleser.one |
timestamp | String | Unix-Zeitstempel der Messung |
RSSI | String | WLAN-Signalstärke in dBm |
Wert-Format
Wichtig: Alle Messwerte (OBIS-Codes) werden als String mit Einheit zurückgegeben. Die Einheit wird direkt vom Stromzähler übermittelt und ist Teil des Wertes.
Format: "<Zahlenwert> <Einheit>"
Beispiele:
"22641332.800 Wh"- Energie in Wattstunden"3.000 W"- Leistung in Watt"22.641 kWh"- Energie in Kilowattstunden (falls vom Zähler so gesendet)
Die Einheiten sind nicht fest vorgegeben und können je nach Stromzähler-Modell variieren.
Unterstützte OBIS-Codes
stromleser.one kann die folgenden SML OBIS-Codes dekodieren. Wichtig: Nur Werte, die dein Stromzähler tatsächlich sendet, erscheinen in der API-Response.
Energiebezug (Verbrauch)
| OBIS-Code | Beschreibung |
|---|---|
1.8.0 | Gesamtenergiebezug (Summe aller Tarife) |
1.8.1 | Energiebezug Tarif 1 (Hochtarif / HT) |
1.8.2 | Energiebezug Tarif 2 (Niedrigtarif / NT) |
1.8.3 | Energiebezug Tarif 3 |
1.8.4 | Energiebezug Tarif 4 |
Typische Einheit: Wattstunden (Wh) oder Kilowattstunden (kWh)
Energieeinspeisung (z.B. Solaranlage)
| OBIS-Code | Beschreibung |
|---|---|
2.8.0 | Gesamtenergieeinspeisung (Summe aller Tarife) |
2.8.1 | Energieeinspeisung Tarif 1 (Hochtarif / HT) |
2.8.2 | Energieeinspeisung Tarif 2 (Niedrigtarif / NT) |
2.8.3 | Energieeinspeisung Tarif 3 |
2.8.4 | Energieeinspeisung Tarif 4 |
Typische Einheit: Wattstunden (Wh) oder Kilowattstunden (kWh)
Momentanleistung
| OBIS-Code | Beschreibung |
|---|---|
16.7.0 | Aktuelle Wirkleistung (netto, kann +/- sein) |
15.7.0 | Absolute aktuelle Wirkleistung |
1.7.0 | Positive aktuelle Wirkleistung (Bezug) |
2.7.0 | Negative aktuelle Wirkleistung (Einspeisung) |
16.7 | Aktuelle Leistung (Alias für 16.7.0) |
Typische Einheit: Watt (W) oder Kilowatt (kW)
16.7.0 ist der meistgenutzte Wert und zeigt die aktuelle Gesamt-Wirkleistung an. Positive Werte = Bezug, negative Werte = Einspeisung.
Phasenspezifische Leistung (3-Phasen-Zähler)
| OBIS-Code | Beschreibung |
|---|---|
36.7.0 | Aktuelle Wirkleistung Phase L1 |
56.7.0 | Aktuelle Wirkleistung Phase L2 |
76.7.0 | Aktuelle Wirkleistung Phase L3 |
Typische Einheit: Watt (W) oder Kilowatt (kW)
Diese Werte sind nur bei 3-Phasen-Stromzählern verfügbar, die diese Informationen liefern.
Was wird bei mir angezeigt?
Die Verfügbarkeit der Werte hängt von deinem Stromzähler ab:
- Moderne Smart Meter: Liefern meist viele OBIS-Codes inkl. Phasen-Daten
- Ältere digitale Zähler: Oft nur Basis-Werte wie Gesamtverbrauch und aktuelle Leistung
- Zweirichtungszähler (mit Solar): Zusätzlich Einspeisewerte (2.8.x)
- Mehrtarifzähler: Separate Werte für HT/NT (1.8.1 und 1.8.2)
Rufe die API einmal auf, um zu sehen, welche Werte dein Zähler liefert. Dies sind die Werte, die du in deinen Anwendungen verwenden kannst.
Fehlerbehandlung
Häufige Fehler
- 429 Too Many Requests: Rate Limit überschritten, 10 Sekunden warten
- 404 Not Found: API-Endpunkt nicht verfügbar oder falsche URL
- Timeout: Gerät nicht erreichbar, Netzwerkverbindung prüfen
Fehlerbehebung
- IP-Adresse verifizieren: Korrekte Geräte-IP verwenden
- Netzwerkverbindung testen: Ping zum Gerät ausführen
- Rate Limiting einhalten: Mindestens 10 Sekunden zwischen Anfragen warten
- Browser-Test: Rufe
http://[IP]/v1/dataim Browser auf
Integration mit Home Assistant
Für die Integration in Home Assistant siehe stromleser.one Home Assistant Integration.
Werte verarbeiten
Da alle Werte als String mit Einheit geliefert werden, musst du sie parsen:
def parse_value(value_string):
"""
Parst einen Wert mit Einheit.
Beispiel: "22641332.800 Wh" -> (22641332.800, "Wh")
"""
parts = value_string.split()
if len(parts) >= 2:
number = float(parts[0])
unit = parts[1]
return number, unit
return None, None
# Beispiel-Verwendung
if '1.8.0' in data:
value, unit = parse_value(data['1.8.0'])
if value is not None:
print(f"Gesamtverbrauch: {value} {unit}")
# Optional: Umrechnung, falls in Wh
if unit == "Wh":
kwh = value / 1000
print(f"Gesamtverbrauch: {kwh:.3f} kWh")
# Leistungswerte interpretieren
if '16.7.0' in data:
power, unit = parse_value(data['16.7.0'])
if power is not None:
if power > 0:
print(f"Bezug: {power} {unit}")
elif power < 0:
print(f"Einspeisung: {abs(power)} {unit}")
else:
print("Kein Verbrauch/Einspeisung")
Sicherheitshinweise
- Die API ist nur im lokalen Netzwerk verfügbar
- Keine Authentifizierung erforderlich
- Stelle sicher, dass dein Netzwerk sicher ist
- Verwende Firewall-Regeln bei Bedarf
- Exponiere das Gerät nicht direkt zum Internet