Zum Hauptinhalt springen

Lokale API Übersicht

Die Geräte stromleser.one, gasleser und wasserleser verfügen über eine lokale API, die den direkten Zugriff auf Gerätedaten ermöglicht. Diese APIs sind nur im lokalen Netzwerk verfügbar und nicht über das Internet erreichbar.

Gemeinsame API-Eigenschaften

Lokaler Zugriff

  • Nur lokales Netzwerk: Die APIs sind ausschließlich innerhalb des lokalen Netzwerks erreichbar
  • Keine Cloud-Verbindung: Es erfolgt keine Datenübertragung über externe Server
  • Direkter Gerätezugriff: Die Kommunikation findet direkt mit dem jeweiligen Gerät statt

Rate Limiting

Alle Geräte-APIs haben eine einheitliche Ratenbegrenzung:

  • 10 Sekunden pro Anfrage: Mindestabstand zwischen API-Aufrufen
  • Automatische Begrenzung: Zu häufige Anfragen werden abgelehnt

API-Endpunkte

Homepage

http://[GERÄTE_IP]/

Unter der jeweiligen IP-Adresse stellt jedes Gerät eine einfache Übersichtsseite bereit.

Daten-API

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

Der standardisierte Endpunkt zum Abrufen der Gerätedaten.

Gerätespezifische APIs

Jedes Gerät stellt unterschiedliche Datenstrukturen über die /v1/data API zur Verfügung:

stromleser.one

Für detaillierte Informationen zur stromleser.one API siehe:

gasleser

Für detaillierte Informationen zur gasleser API siehe:

wasserleser

Die wasserleser API verwendet die gleiche Struktur wie die anderen Geräte-APIs. Für allgemeine Informationen siehe die obigen Abschnitte.

Allgemeine Verwendung

IP-Adresse ermitteln

  1. Router-Interface: Überprüfe die verbundenen Geräte in deinem Router
  2. Network-Scanner: Verwende Tools wie nmap oder mobile Apps
  3. Geräte-Display: Einige Geräte zeigen die IP-Adresse im Display an

Einfacher Test

# Ping-Test
ping [GERÄTE_IP]

# Homepage aufrufen
curl http://[GERÄTE_IP]/

# API-Daten abrufen
curl http://[GERÄTE_IP]/v1/data

Rate Limiting beachten

import requests
import time

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

# Rate Limiting einhalten
data = get_device_data("192.168.1.100")
time.sleep(10) # 10 Sekunden warten

Sicherheit

Netzwerksicherheit

  • Die APIs sind nur innerhalb des lokalen Netzwerks verfügbar
  • Es ist keine Authentifizierung erforderlich
  • Achte darauf, dass dein lokales Netzwerk sicher ist
  • Verwende Firewall-Regeln bei Bedarf

Best Practices

  • Regelmäßige Updates: Halte die Geräte-Firmware auf dem neuesten Stand
  • Netzwerk-Segmentierung: Isoliere IoT-Geräte in einem separaten VLAN
  • Monitoring: Überwache ungewöhnliche API-Zugriffe regelmäßig

Fehlerbehebung

Häufige Probleme

Gerät nicht erreichbar

  • Überprüfe die Netzwerkverbindung
  • Stelle sicher, dass das Gerät eingeschaltet ist
  • Überprüfe, ob die IP-Adresse korrekt ist

API antwortet nicht

  • Überprüfe die Firmware-Version (lokale API möglicherweise nicht verfügbar)
  • Teste zunächst die Homepage (http://[IP]/)
  • Überprüfe die Firewall-Einstellungen

Rate Limit erreicht

  • Warte mindestens 10 Sekunden zwischen Anfragen
  • Implementiere im Code eine entsprechende Wartezeit
  • Überprüfe, ob andere Anwendungen parallel auf das Gerät zugreifen

Debugging-Tools

# Netzwerk-Test
ping [GERÄTE_IP]

# Port-Test
telnet [GERÄTE_IP] 80

# HTTP-Test
curl -v http://[GERÄTE_IP]/v1/data

Integration in Smart Home Systeme

Die lokalen APIs können in verschiedene Smart-Home-Systeme integriert werden:

  • Home Assistant: Über REST-Sensoren oder MQTT
  • Node-RED: Durch direkte HTTP-Anfragen
  • OpenHAB: Über das HTTP-Binding
  • Custom Scripts: Mit Python, JavaScript oder anderen Programmiersprachen

Für spezifische Integrationshilfen siehe die gerätespezifischen Dokumentationen.