cFos Power Brain Controller - HTTP API

Die folgenden Funktionen liefern eine Abbildung der Modbus-Register in HTTP.
Hinweis: Modbus muss nicht aktiv sein, um das HTTP API nutzen zu können.

Benutzen Sie einen HTTP GET oder POST request an die Adresse des cFos Power Brain Controllers, z.B.
http://192.168.2.111/cnf?cmd=modbus&device=meter1&read=35154.
Die Antworten erfolgen in JSON.

  • cmd ist immer modbus
  • device = meter1 oder meter2 oder evse
  • read = Adresse des zu lesenden Registers
  • write = Adresse des zu schreibenden Registers
  • value = zu schreibender Wert
  • values = Array von zu schreibenden Werten, z.B. [1,2,3,4]

Adressen können einen Suffix haben, um den Datentyp festzulegen (Default ist 16 bit Integer):

  • d = 32 bit Integer (2 Modbus-Register)
  • q = 64 bit Integer (4 Modbus-Register)
  • s = String
cFos Power Brain Controller - Modbus-Register

Hier einige Beispiele für die Nutzung des HTTP API

Modbus

/cnf?cmd=modbus&device=meter1&read=8002
Antwort:
1

/cnf?cmd=modbus&device=meter1&read=8062d
Antwort:
-1

/cnf?cmd=modbus&device=meter1&read=8016s
Antwort:
"cFos Power Brain"

/cnf?cmd=modbus&device=meter1&read=8002&count=10
Antwort:
[1,257,256,0,256,0,26211,26165,11619,13366]

/cnf?cmd=modbus&device=meter2&read=all
Antwort:
{"8000d":-821755904,"8002":1,"8003":257,"8004":16777216,"8006":256,"8007":0,"8008s":"fcf5-c46d-310c","8016s":"cFos Power Brain","8040":41,"8041":1,"8042d":1000,"8044":1,"8045":230,"8046":230,"8047":230,"8050q":0,"8054d":0,"8056":0,"8057":0,"8058q":0,"8062d":-1,"8064d":0,"8066d":0,"8068d":0,"8070":0,"8071":0,"8120d":0}

/cnf?cmd=modbus&device=evse&write=8044&value=7
Antwort:
"ok"

/cnf?cmd=modbus&device=evse&write=8050q&value=1"
Antwort:
"ok"

/cnf?cmd=modbus&device=evse&write=8044d&value=1"
Antwort:
"bad modbus register size"

/cnf?cmd=modbus&device=evse&write=8044&values=[7,230,230,230 ]
Antwort:
"ok"

Allgemeine Requests

Abfragen des Zustands aller Charging Manager Geräte:
/cnf?cmd=get_dev_info

Setzen einer PIN bzw. RFID:
/cnf?cmd=enter_rfid&rfid=r&dev_id=d
r ist die PIN bzw. RFID (Ziffern), d ist eine optionale device id, um eine bestimmte Wallbox auszuwählen. Wird keine device id gewählt, versucht der Charging Manager die PIN bzw. RFID automatisch zuzuordnen.

Überschreiben für aktuelle Transaktion:
/cnf?cmd=override_device&dev_id=d&flags=f&rfid=id
d ist die Device ID, id ist eine evtl. nötige RFID/PIN, flags, wie folgt:
'C': Laden deaktiveren (Admin pwd oder Benutzr PIN/RFID erforderlich)
'c': Deaktivierung des Laden wieder aufheben (Admin pwd oder Benutzr PIN/RFID erforderlich)
'E': Laderegeln der Wallbox deaktiveren (Admin pwd erforderlich)
'e': Deaktivierung der Laderegeln der Wallbox wieder aufheben (Admin pwd erforderlich)
'U': Laderegeln der Benutzers deaktiveren (Benutzer RFID/PIN erforderlich)
'u': Deaktivierung der Laderegeln des Benutzers wieder aufheben (Benutzer RFID/PIN erforderlich)

Die so gesetzten flags bleiben erhalten, bis das Auto aus der Wallbox ausgesteckt wird.

HTTP Zähler und Wallboxen

Zähler

Sie können einen Zähler anlegen (Gerätetyp 'HTTP Input'), der nicht vom Charging Manager ausgelesen, sondern dessen aktuelle Werte von außen mittels HTTP POST vorgegben werden können:
/cnf?cmd=set_ajax_meter&dev_id=x
x ist die Device ID, wie in der Geräte Konfiguration zu sehen, z.B. M1.

Der POST body enthält ein JSON-Object, wie folgt:

{
   "model": string,
   "import_vah": number,
   "export_wh": number,
   "voltage": [v1, v2, v3],
   "current": [c1, c2, c3],
   "power_w": [p1, p2, p3],
   "power_va": string
}

Hierbei werden Energiewerte in Wh bzw. VAh, Spannungen in V, Ströme in mA und Leistungen in W bzw. VA angegeben. "model" ist der Model-String, wie in den Kacheln angezeigt.

Wallbox

Sie können auch eine Wallbox anlegen (Gerätetyp 'HTTP Input'), die nicht vom Charging Manager ausgelesen bzw. gesteuert wird, sondern deren Werte von außen mittels HTTP POST vorgegeben werden können. Die Steuerwerte werden dann als Antwort zurückgeliefert:
/cnf?cmd=set_ajax_evse&dev_id=x
x ist die Device ID, wie in der Geräte Konfiguration zu sehen, z.B. E1.

Der POST body enthält ein JSON-Object, wie folgt:

{
   "state": number,
   "max_charging_current": number,
   "current": [c1, c2, c3],
   "total_energy": number,
   "model": string,
   "rfid": string
}

"model" ist der Model-String, wie in den Kacheln angezeigt. Mit "rfid" kann man dem Ladevorgang eine RFID mitgeben, Energiewerte werden in Wh, Ströme in mA angegeben. "state" hat folgende Werte:
1 = waiting (A), 2 = EV present (B), 3 = charging (C), 4 = charging with ventilation (D), 5 = error (E)

Als Antwort liefert dieser request folgendes JSON-Object zurück:

{
   "device_enabled": true/false,   // Gerät ist aktiv / deaktiviert
   "charging_enabled": true/false,  // Laden erlaubt / nicht erlaubt
   "paused": true/false,   // true = Gerät ist vorübergehend pausiert
   "charging_current": number   // vorgegebener Ladestrom im mA
}

Diese Rückgabe-Objekt muss vom Aufrufer ausgewerten und die Wallbox entsprechend eingestellt werden, z.B. der Ladestrom entsprechend geändert werden.