# openWB SimpleAPI - HTTP zu MQTT Bridge Eine hochperformante HTTP-zu-MQTT-Bridge für openWB Wallboxen mit vollständiger SimpleAPI-Kompatibilität und erweiterten Features. ## 🚀 Features - ✅ **Vollständige openWB SimpleAPI Kompatibilität** - Alle originalen Parameter unterstützt - ✅ **51+ Parameter** - Umfassende Unterstützung für Chargepoint, Counter, Battery und PV - ✅ **Auto-ID Feature** - Automatische Auswahl der niedrigsten verfügbaren ID - ✅ **Performance-Optimiert** - Batch MQTT-Aufrufe für < 0.1s Antwortzeiten - ✅ **Template-basierte Settings** - Erweiterte openWB-Template-Manipulation - ✅ **Raw & JSON Output** - Flexible Ausgabeformate - ✅ **GET & POST Support** - Beide HTTP-Methoden unterstützt - ✅ **Direkte MQTT-Kommunikation** - Native PHP-MQTT ohne externe Dependencies ## 📦 Installation ### Voraussetzungen - PHP 7.4+ mit sockets-Extension - Apache Webserver - openWB System mit MQTT Broker - mosquitto-clients (für MQTT-Kommunikation) ### Setup ```bash # 1. Repository klonen git clone https://github.com/openWB/simpleAPI.git simpleAPI über den Webserver verfügbar machen, z.B. mv simpleAPI /var/www/html/simpleAPI ## Verwendung ### Lesende Anfragen **Alle Daten eines Ladepunkts:** ```bash curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=3" ``` **Auto-ID Feature - niedrigste verfügbare ID:** ```bash curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=auto" # oder ohne Angabe einer ID: curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=" ``` **Spannung Phase 1 (Raw-Ausgabe):** ```bash curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_voltage_p1=3&raw=true" ``` **Batterie-Daten:** ```bash curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?battery=2" ``` **Kombination mehrerer Werte:** ```bash curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=3&battery=2" ``` ## Alle verfügbaren Parameter ### Chargepoint (Ladepunkt) Parameter | Parameter | Beschreibung | Beispiel | |-----------|-------------|----------| | `get_chargepoint_all` | Alle Daten | `?get_chargepoint_all=2` | | `get_chargepoint_voltages` | Alle Spannungen | `?get_chargepoint_voltages=2` | | `get_chargepoint_voltage_p1/p2/p3` | Spannung einzelne Phase | `?get_chargepoint_voltage_p1=2` | | `get_chargepoint_currents` | Alle Ströme | `?get_chargepoint_currents=2` | | `get_chargepoint_current_p1/p2/p3` | Strom einzelne Phase | `?get_chargepoint_current_p1=2` | | `get_chargepoint_powers` | Alle Leistungen | `?get_chargepoint_powers=2` | | `get_chargepoint_power` | Gesamtleistung | `?get_chargepoint_power=2` | | `get_chargepoint_imported` | Gesamtenergie geladen | `?get_chargepoint_imported=2` | | `get_chargepoint_exported` | Gesamtenergie zurückgespeist | `?get_chargepoint_exported=2` | | `get_chargepoint_soc` | Batteriestand (%) | `?get_chargepoint_soc=2` | | `get_chargepoint_state_str` | Status-Text | `?get_chargepoint_state_str=2` | | `get_chargepoint_fault_str` | Fehler-Text | `?get_chargepoint_fault_str=2` | | `get_chargepoint_fault_state` | Fehler-Code | `?get_chargepoint_fault_state=2` | | `get_chargepoint_phases_in_use` | Verwendete Phasen | `?get_chargepoint_phases_in_use=2` | | `get_chargepoint_plug_state` | Stecker angeschlossen | `?get_chargepoint_plug_state=2` | | `get_chargepoint_charge_state` | Ladevorgang aktiv | `?get_chargepoint_charge_state=2` | | `get_chargepoint_chargemode` | Lademodus | `?get_chargepoint_chargemode=2` | ### Counter (Zähler) Parameter | Parameter | Beschreibung | Beispiel | |-----------|-------------|----------| | `get_counter` | Alle Zähler-Daten | `?get_counter=0` | | `get_counter_voltages` | Alle Spannungen | `?get_counter_voltages=0` | | `get_counter_voltage_p1/p2/p3` | Spannung einzelne Phase | `?get_counter_voltage_p1=0` | | `get_counter_currents` | Alle Ströme | `?get_counter_currents=0` | | `get_counter_current_p1/p2/p3` | Strom einzelne Phase | `?get_counter_current_p1=0` | | `get_counter_powers` | Alle Leistungen | `?get_counter_powers=0` | | `get_counter_power` | Gesamtleistung | `?get_counter_power=0` | | `get_counter_power_factors` | Leistungsfaktoren | `?get_counter_power_factors=0` | | `get_counter_imported` | Gesamtenergie bezogen | `?get_counter_imported=0` | | `get_counter_exported` | Gesamtenergie eingespeist | `?get_counter_exported=0` | | `get_counter_daily_imported` | Tagesenergie bezogen | `?get_counter_daily_imported=0` | | `get_counter_daily_exported` | Tagesenergie eingespeist | `?get_counter_daily_exported=0` | | `get_counter_frequency` | Netzfrequenz | `?get_counter_frequency=0` | | `get_counter_fault_str` | Fehler-Text | `?get_counter_fault_str=0` | | `get_counter_fault_state` | Fehler-Code | `?get_counter_fault_state=0` | ### Schreibende Anfragen **Lademodus ändern:** ```bash curl -X POST -d "chargemode=pv&chargepoint_nr=3" \ "http://IPADRESSE/simpleAPI/web/simpleapi.php" ``` **Auto-ID Feature beim Schreiben:** ```bash # Schreibt an den Ladepunkt mit der niedrigsten ID curl -X POST -d "chargemode=pv" \ "http://IPADRESSE/simpleAPI/web/simpleapi.php" ``` **Ladestrom setzen:** ```bash curl -X POST -d "chargecurrent=8.23&chargepoint_nr=3" \ "http://IPADRESSE/simpleAPI/web/simpleapi.php" ``` ### Authentifizierung **Mit Bearer Token:** ```bash curl -H "Authorization: Bearer your-token" \ -X POST -d "chargemode=pv&chargepoint_nr=3" \ "https://IPADRESSE/simpleAPI/web/simpleapi.php" ``` **Mit Username/Passwort:** ```bash curl -X POST \ -d "username=admin" \ -d "password=admin123" \ -d "chargemode=pv" \ -d "chargepoint_nr=3" \ "https://IPADRESSE/simpleAPI/web/simpleapi.php" ``` ## Unterstützte Parameter ### Lesbare Parameter | Parameter | Beschreibung | Beispiel | |-----------|--------------|----------| | `get_chargepoint_all` | Alle Ladepunkt-Daten | `?get_chargepoint_all=3` | | `get_chargepoint_voltage_p1/p2/p3` | Spannung einzelne Phase | `?get_chargepoint_voltage_p1=3` | | `get_chargepoint_voltages` | Alle Spannungen | `?get_chargepoint_voltages=3` | | `get_chargepoint_current_p1/p2/p3` | Strom einzelne Phase | `?get_chargepoint_current_p1=3` | | `get_chargepoint_currents` | Alle Ströme | `?get_chargepoint_currents=3` | | `get_chargepoint_power` | Gesamtleistung | `?get_chargepoint_power=3` | | `get_chargepoint_powers` | Leistung aller Phasen | `?get_chargepoint_powers=3` | | `battery` | Batterie-Daten | `?battery=2` | | `pv` | PV-Anlagen-Daten | `?pv=5` | | `counter` | Zähler-Daten | `?counter=0` | ### Schreibbare Parameter | Parameter | Werte | Beschreibung | |-----------|-------|--------------| | `chargemode` | instant, pv, eco, stop, target | Lademodus setzen | | `chargecurrent` | 0, 6-32 | Ladestrom in Ampere | | `minimal_pv_soc` | 0-100 | Min. SoC für PV-Laden | | `minimal_permanent_current` | 0, 6-32 | Min. Dauerstrom für PV | | `max_price_eco` | -100 bis 200 | Max. Preis für ECO-Laden | | `chargepoint_lock` | 0, 1 | Ladepunkt sperren | | `speicherbeachtung` | 1, 2, 3 | Speicherstrategie | ## Auto-ID Feature Das Auto-ID Feature ist eine Erweiterung der openWB SimpleAPI. Wenn keine ID angegeben wird oder `auto` verwendet wird, wird automatisch die niedrigste verfügbare ID verwendet: ```bash # Diese Aufrufe sind equivalent: curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=" curl "http://IPADRESSE/simpleAPI/web/simpleapi.php?get_chargepoint_all=auto" # Findet automatisch den Ladepunkt mit der niedrigsten ID curl -X POST -d "chargemode=pv" "http://IPADRESSE/simpleAPI/web/simpleapi.php" ``` ## Konfiguration ### Authentifizierung aktivieren ```php 'auth' => [ 'enabled' => true, 'require_https' => true, 'tokens' => [ 'your-secret-token-here' ], 'users' => [ 'admin' => password_hash('admin123', PASSWORD_DEFAULT) ] ] ``` ### CORS für Web-Anwendungen ```php 'api' => [ 'cors_enabled' => true ] ``` ## Entwicklung ### Logging aktivieren ```php 'debug' => true ``` ### Tests ausführen ```bash # Einfacher Funktionstest curl "http://localhost/simpleapi.php?get_chargepoint_all=1&debug=true" ``` ## Troubleshooting ### Häufige Probleme 1. **500 Internal Server Error** - Prüfen Sie die PHP-Logs - Autoloader korrekt installiert? (`composer install`) - Schreibrechte für Web-Verzeichnis? 2. **MQTT-Verbindung fehlgeschlagen** - MQTT Broker erreichbar? - Credentials korrekt? - Firewall-Einstellungen prüfen 3. **Authentifizierung fehlgeschlagen** - HTTPS bei Username/Passwort erforderlich - Token korrekt konfiguriert?