Zum Hauptinhalt springen

Gasleser lokale API

Die gasleser lokale API ermöglicht den direkten Zugriff auf deine Gasverbrauchsdaten über das lokale Netzwerk. Diese API ist nur lokal verfügbar und kann nicht über das Internet erreicht werden.

Firmware-Anforderungen

Die lokale API-Funktion ist nur mit gasleser Firmware-Version 1.0.21 und höher verfügbar.

API-Endpunkt​

Die API ist über die folgende URL erreichbar:

http://[GERÄT_IP]/v1/data

Beispiel:

http://192.168.2.132/v1/data

Rate Limiting​

Die API hat eine Ratenbegrenzung implementiert:

  • Ab Firmware 1.4.6: 1 Anfrage alle 0,5 Sekunden
  • Firmware vor 1.4.6: 1 Anfrage alle 3 Sekunden
  • Bei Überschreitung des Limits wird die Anfrage abgelehnt
Ratenbegrenzung beachten

Stelle sicher, dass deine Anwendung nicht öfter als einmal alle 0,5 Sekunden (Firmware vor 1.4.6: alle 3 Sekunden) Anfragen sendet.

API-Response​

Die API gibt JSON-Daten im folgenden Format zurück:

{
"device_id": "GAS_2329790123",
"timestamp": "1758798550",
"total_consumption": 12345.8,
"current_flow_rate": 0.0
}

Response-Felder​

FeldTypBeschreibung
device_idStringEindeutige Geräte-ID des Gaslesers
timestampStringUnix-Zeitstempel der Messung
total_consumptionFloatGesamtverbrauch in Kubikmetern (die große Zahl auf dem Gaszähler)
current_flow_rateFloatAktueller Durchflussrate in m³/h

Durchflussrate Details​

Die current_flow_rate ist ein berechneter Wert mit folgenden Eigenschaften:

  • Einheit: Kubikmeter pro Stunde (m³/h)
  • Zweck: Live-Visualisierung des aktuellen Gasverbrauchs
  • Algorithmus: Verwendet einen graduellen Abfall-Algorithmus für eine glatte Kurve
  • Hinweis: Dient nur zur Illustration und visuellen Darstellung
Verwendungszweck

Der current_flow_rate Wert ist primär für die Live-Visualisierung gedacht und zeigt eine geglättete Darstellung des aktuellen Verbrauchs.

Beispiel-Integration​

Python-Beispiel​

import requests
import time

def get_gasleser_data(device_ip):
try:
response = requests.get(f"http://{device_ip}/v1/data", timeout=5)
if response.status_code == 200:
return response.json()
else:
print(f"Fehler: HTTP {response.status_code}")
return None
except requests.exceptions.RequestException as e:
print(f"Verbindungsfehler: {e}")
return None

# Beispiel-Verwendung
device_ip = "192.168.2.132"
data = get_gasleser_data(device_ip)

if data:
print(f"Gerät: {data['device_id']}")
print(f"Gesamtverbrauch: {data['total_consumption']} m³")
print(f"Aktuelle Durchflussrate: {data['current_flow_rate']} m³/h")

# Rate Limiting beachten
time.sleep(0.5) # 0,5 Sekunden warten (Firmware vor 1.4.6: 3 Sekunden)

curl-Beispiel​

curl -X GET http://192.168.2.132/v1/data

Fehlerbehandlung​

Häufige Fehler​

  • 429 Too Many Requests: Rate Limit überschritten, 0,5 Sekunden warten (Firmware vor 1.4.6: 3 Sekunden)
  • 404 Not Found: API-Endpunkt nicht verfügbar (Firmware < 1.0.21)
  • Timeout: Gerät nicht erreichbar, Netzwerkverbindung prüfen

Fehlerbehebung​

  1. Firmware-Version überprüfen: Stellen Sie sicher, dass Version 1.0.21+ installiert ist
  2. Netzwerkverbindung testen: Ping zum Gerät ausführen
  3. IP-Adresse verifizieren: Korrekte Geräte-IP verwenden
  4. Rate Limiting einhalten: Mindestens 0,5 Sekunden zwischen Anfragen warten (Firmware vor 1.4.6: 3 Sekunden)

Integration mit Home Assistant​

Für die Integration in Home Assistant siehe Gasleser Home Assistant Integration.

Sicherheitshinweise​

  • Die API ist nur im lokalen Netzwerk verfügbar
  • Keine Authentifizierung erforderlich
  • Stellen Sie sicher, dass Ihr Netzwerk sicher ist
  • Verwenden Sie Firewall-Regeln bei Bedarf