Dieses Repo enthält Code und Dokumentation zur Anfrage des HAN-API des Smart Meter Gateway (SMGW) der Firma Theben. Der Code basiert auf Python.
Die vollständig funktionsfähige Implementierung mit der Python Bibliothek requests.
Features:
- ✓ TOFU (Trust On First Use) mit automatischem Zertifikats-Download
- ✓ PING-Check vor dem Request
- ✓ SSL-Verifizierung mit SAN-Name-Extraktion
- ✓ Automatische HTTPS/HTTP-Erkennung basierend auf Port
- ✓ Digest-Authentifizierung (vollständig kompatibel)
- ✓ Detaillierte Fehlerbehandlung mit Timeouts
Asynchrone Implementierung mit der Python Bibliothek httpx.
Status:
- ✓ TOFU (Trust On First Use) implementiert
- ✓ PING-Check implementiert
- ✓ SSL-Verifizierung implementiert
- ✗ Digest-Auth-Kompatibilitätsproblem: Der Theben Conexa SMGW schließt die Verbindung während der Digest-Authentifizierung (
RemoteProtocolError)
Hinweis: Verwenden Sie die requests-Version für produktive Einsätze.
Die API-Dokumentation findet man in der Schnittstellenbeschreibung IF_GW_CON.pdf.
Zum Laden der Zugangsdaten bitte die Datei .env anlegen und wie folgt befüllen:
CONEXA_IP_ADDRESS=10.11.120.2 # oder der SAN-Name aus dem Zertifikat
CONEXA_PORT=443 # (oder einen anderen Port, z.B. wenn ein Proxy dazwischen ist)
CONEXA_USERNAME=30320426231LGZ0067558611
CONEXA_PASSWORD=IhrPasswortFür die vollständige SSL-Verifizierung muss der SAN-Name aus dem Zertifikat über DNS auflösbar sein:
Windows Hosts-Datei (C:\Windows\System32\drivers\etc\hosts):
10.11.120.2 ethe0300186023.sm
Oder DNS-Server-Eintrag:
ethe0300186023.sm. IN A 10.11.120.2
Mit Python ausführen:
# Empfohlene Version (requests)
python theben-conexa-requests.py
# Experimentelle Version (httpx)
python theben-conexa-httpx.pyINFO:__main__:Theben Conexa HTTP Client
INFO:__main__:This is a connection test for the Theben Conexa Smart-Meter Gateway
INFO:__main__:Verwende Protokoll: https (Port 443)
INFO:__main__:Connecting to 10.11.120.2:443...
INFO:__main__:Überprüfe Erreichbarkeit von 10.11.120.2...
INFO:__main__:✓ PING erfolgreich: 10.11.120.2 ist erreichbar
INFO:__main__:✓ Zertifikat 10.11.120.2_public_cert.pem existiert bereits.
INFO:__main__:Zertifikatsanalyse:
INFO:__main__: ✓ SAN-Name im Zertifikat: ethe0300186023.sm
INFO:__main__: ℹ Das Zertifikat ist nur für 'ethe0300186023.sm' gültig
INFO:__main__:✓ DNS-Auflösung erfolgreich: ethe0300186023.sm → 10.11.120.2
INFO:__main__:✓ PING über ethe0300186023.sm erfolgreich
INFO:__main__:Calling: POST https://ethe0300186023.sm:443/smgw/m2m/
INFO:__main__:✓ SSL-Verifizierung aktiv mit 10.11.120.2_public_cert.pem
INFO:__main__:✓ Request-Zeit: 3.936 Sekunden
INFO:__main__:✓ Status Code: 200
INFO:__main__:✓ Firmware Version des Theben Conexa SMGW: v3.87.0-cc
Beim ersten Aufruf wird das SSL-Zertifikat des SMGW heruntergeladen und gespeichert. Bei allen weiteren Aufrufen wird dieses Zertifikat zur Verifizierung verwendet.
Das Script extrahiert automatisch den Subject Alternative Name (SAN) aus dem Zertifikat und prüft, ob dieser über DNS auflösbar ist.
- DNS-Auflösung
- PING-Test (Netzwerkerreichbarkeit)
- Timeout-Handling
- Detaillierte Fehlerdiagnose
pip install requests python-dotenv
# Für httpx (optional, experimentell):
pip install httpx