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
- Router-Interface: Überprüfe die verbundenen Geräte in deinem Router
- Network-Scanner: Verwende Tools wie
nmapoder mobile Apps - 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.