simpleAPI
simpleAPI **für MQTT**
Dieser Dienst ist dafür gedacht, komplexe MQTT-Topic-Strukturen in eine vereinfachte API umzuwandeln. Der Dienst greift openWB/* Topics auf und republiziert diese unter openWB/simpleAPI/* mit aufgeteilten JSON/Tuple-Werten und ID-Vereinfachung.
Features
- Wert-Änderungserkennung: Publiziert nur wenn sich Werte tatsächlich ändern
- JSON/Tuple-Aufspaltung: Zerlegt komplexe Datenstrukturen in einzelne Topics
- ID-Vereinfachung: Niedrigste IDs werden auch ohne ID-Suffix verfügbar gemacht
- Retained Messages: Alle Nachrichten werden mit retain=true publiziert
- Robuste Verbindung: Automatische Wiederverbindung bei Verbindungsabbruch
- Konfigurationsdatei: Unterstützung für JSON-Konfigurationsdateien
- TLS/SSL Support: Optional verschlüsselte Verbindungen
- Detailliertes Logging: Konfigurierbare Log-Level
- Schreiboperationen: Vereinfachte Steuerung von Ladeparametern
Installation
Ist Teil der standard openWB Installation ab 2.1.9
Topic-Transformation (Lesezugriff)
Basis-Transformation
Originale Topics werden von openWB/ zu openWB/simpleAPI/ transformiert.
JSON-Aufspaltung
Original: openWB/chargepoint/template/0 {"id": 0, "name": "Test", "max_current": 32}
Wird zu:
- openWB/simpleAPI/chargepoint/template/0/id → 0
- openWB/simpleAPI/chargepoint/template/0/name → Test
- openWB/simpleAPI/chargepoint/template/0/max_current → 32
Tuple/Array-Aufspaltung (1-basiert)
Original: openWB/counter/3/get/voltages [232.4, 0.0, 0.0] Wird zu: - openWB/simpleAPI/counter/3/get/voltages/1 → 232.4 - openWB/simpleAPI/counter/3/get/voltages/2 → 0.0 - openWB/simpleAPI/counter/3/get/voltages/3 → 0.0
Lademodus auslesen
openWB/simpleAPI/chargepoint/get/connected_vehicle/config/chargemode
Der Lademodus ist zugehörig zum Fahrzeug und dessen Profil. Daher befindet er sich in einem untergeordneten Topic und nicht auf höchster Ebene im Ladeunkt.
ID-Vereinfachung
Die niedrigste ID jeder Komponente wird auch ohne ID verfügbar gemacht:
Original: openWB/counter/0/get/power 1042.4 Wenn 0 die niedrigste counter-ID ist: - openWB/simpleAPI/counter/0/get/power → 1042.4 - openWB/simpleAPI/counter/get/power → 1042.4
Schreiboperationen (Set-Topics)
1. Lademodus setzen
Beschreibung: Lademodus am Ladepunkt ändern
Topic: openWB/simpleAPI/set/chargepoint/3/chargemode oder openWB/simpleAPI/set/chargepoint/chargemode (niedrigste ID)
Gültige Werte: instant, pv, eco, stop, target
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/chargemode" -m "pv"
2. Ladestrom für Sofortladen
Beschreibung: Ladestrom für das Sofort laden
Topic: openWB/simpleAPI/set/chargepoint/3/chargecurrent
Wert: Stromstärke in Ampere (z.B. „16“)
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/chargecurrent" -m "16"
3. Minimaler EV SoC im PV Laden
Beschreibung: Minimaler EV SoC im PV Laden
Topic: openWB/simpleAPI/set/chargepoint/3/minimal_pv_soc
Wert: SoC in Prozent (z.B. „20“)
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/minimal_pv_soc" -m "20"
4. Minimaler Dauerstrom für PV Laden
Beschreibung: Minimaler Dauerstrom für das PV Laden
Topic: openWB/simpleAPI/set/chargepoint/3/minimal_permanent_current
Wert: Stromstärke in Ampere (z.B. „6“)
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/minimal_permanent_current" -m "6"
5. Maximaler Preis für ECO Laden
Beschreibung: Maximaler Preis für das ECO Laden
Topic: openWB/simpleAPI/set/chargepoint/3/max_price_eco
Wert: Preis als Dezimalzahl (z.B. „0.25“)
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/max_price_eco" -m "0.25"
6. Ladepunkt sperren
Beschreibung: Sperrt den Ladepunkt
Topic: openWB/simpleAPI/set/chargepoint/3/chargepoint_lock
Werte: true/false
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/chargepoint/3/chargepoint_lock" -m "true"
7. Speicherbeachtung konfigurieren
Beschreibung: Konfiguriert die Speicherbeachtung
Topic: openWB/simpleAPI/set/bat_mode
Gültige Werte: min_soc_bat_mode, ev_mode, bat_mode
Beispiel:
mosquitto_pub -t "openWB/simpleAPI/set/bat_mode" -m "ev_mode"
Intelligente Features
- Automatisches ID-Management: Wenn keine ID angegeben wird, wird die niedrigste verfügbare ID verwendet
- JSON-Template-Caching: Charge-Templates werden automatisch zwischengespeichert
- Werte-Mapping: Einfache Werte werden zu internen openWB-Werten gemappt
- Fehlerbehandlung: Ungültige Werte werden abgefangen und geloggt
- Logging: Alle Schreiboperationen werden ausführlich geloggt
Überwachte Komponenten
Der Daemon überwacht folgende openWB-Komponenten:
- bat: Batteriespeicher (Leistung, SoC, Import/Export)
- pv: Photovoltaik-Anlagen (Leistung, Ertrag)
- chargepoint: Ladepunkte (Status, Konfiguration, Messwerte)
- counter: Energiezähler (Leistung, Verbrauch, Netzwerte)
openWB simpleAPI **HTTP**
Features
- 51+ Parameter - Umfassende Unterstützung für Chargepoint, Counter, Battery und PV
- Auto-ID Feature - Automatische Auswahl der niedrigsten verfügbaren ID
- Template-basierte Settings - Erweiterte openWB-Template-Manipulation
- Raw & JSON Output - Flexible Ausgabeformate
- GET & POST Support - Beide HTTP-Methoden unterstützt
Verwendung
Lesende Anfragen
Alle Daten eines Ladepunkts:
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=3"
Auto-ID Feature - niedrigste verfügbare ID:
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=auto" # oder ohne Angabe einer ID: curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all="
Spannung Phase 1 (Raw-Ausgabe):
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_voltage_p1=3&raw=true"
Batterie-Daten:
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?battery=2"
Kombination mehrerer Werte:
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=3&battery=2"
Schreibende Anfragen
Lademodus ändern:
curl -X POST -d "set_chargemode=pv&chargepoint_nr=3" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Auto-ID Feature beim Schreiben:
# Schreibt an den Ladepunkt mit der niedrigsten ID curl -X POST -d "set_chargemode=pv" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Ladestrom setzen:
curl -X POST -d "chargecurrent=8.23&chargepoint_nr=3" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Batterie-Modus setzen:
curl -X POST -d "bat_mode=min_soc_bat_mode" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"
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 |
Battery (Batterie) Parameter
| Parameter | Beschreibung | Beispiel |
|---|---|---|
battery | Alle Batterie-Daten | ?battery=2 |
get_battery_power | Batterie-Leistung | ?get_battery_power=2 |
get_battery_soc | Batterie-Ladestand | ?get_battery_soc=2 |
get_battery_currents | Batterie-Ströme | ?get_battery_currents=2 |
get_battery_imported | Batterie geladen | ?get_battery_imported=2 |
get_battery_exported | Batterie entladen | ?get_battery_exported=2 |
get_battery_daily_imported | Tagesenergie geladen | ?get_battery_daily_imported=2 |
get_battery_daily_exported | Tagesenergie entladen | ?get_battery_daily_exported=2 |
get_battery_fault_str | Fehler-Text | ?get_battery_fault_str=2 |
get_battery_fault_state | Fehler-Code | ?get_battery_fault_state=2 |
PV (Photovoltaik) Parameter
| Parameter | Beschreibung | Beispiel |
|---|---|---|
pv | Alle PV-Daten | ?pv=5 |
get_pv_power | PV-Leistung | ?get_pv_power=5 |
get_pv_currents | PV-Ströme | ?get_pv_currents=5 |
get_pv_exported | PV-Gesamtertrag | ?get_pv_exported=5 |
get_pv_daily_exported | PV-Tagesertrag | ?get_pv_daily_exported=5 |
get_pv_monthly_exported | PV-Monatsertrag | ?get_pv_monthly_exported=5 |
get_pv_yearly_exported | PV-Jahresertrag | ?get_pv_yearly_exported=5 |
get_pv_fault_str | Fehler-Text | ?get_pv_fault_str=5 |
get_pv_fault_state | Fehler-Code | ?get_pv_fault_state=5 |
Schreibbare Parameter
| Parameter | Werte | Beschreibung |
|---|---|---|
set_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 |
bat_mode | min_soc_bat_mode, ev_mode, bat_mode | Batterie-Modus |
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:
# Diese Aufrufe sind equivalent: curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=" curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=auto" # Findet automatisch den Ladepunkt mit der niedrigsten ID curl -X POST -d "chargemode=pv" "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Authentifizierung
Mit Bearer Token
curl -H "Authorization: Bearer your-token" \ -X POST -d "chargemode=pv&chargepoint_nr=3" \ "https://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Mit Username/Passwort
curl -X POST \ -d "username=admin" \ -d "password=admin123" \ -d "chargemode=pv" \ -d "chargepoint_nr=3" \ "https://IPADRESSE/openWB/simpleAPI/simpleapi.php"
Ausgabeformate
JSON-Format (Standard)
{
"chargepoint_3": {
"power": 0,
"voltages": [237.79, 0, 0],
"currents": [0, 0, 0],
"state_str": "Nicht bereit"
}
}
Raw-Format
Für Kompatibilität mit der originalen SimpleAPI kann das Raw-Format verwendet werden:
curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_power=3&raw=true" # Ausgabe: 0
Beispiele
Vollständiges Monitoring-Dashboard
# Alle wichtigen Werte in einem Aufruf curl "http://IPADRESSE/openWB/simpleAPI/simpleapi.php?get_chargepoint_all=auto&battery=auto&pv=auto&get_counter=0"
Ladevorgang steuern
# PV-Laden aktivieren curl -X POST -d "set_chargemode=pv&chargepoint_nr=auto" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php" # Ladestrom auf 16A setzen curl -X POST -d "chargecurrent=16&chargepoint_nr=auto" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php" # Batterie-Modus auf EV-Mode setzen curl -X POST -d "bat_mode=ev_mode" \ "http://IPADRESSE/openWB/simpleAPI/simpleapi.php"