다음 함수는 HTTP에서 모드버스 레지스터의 매핑을 제공합니다.
참고: HTTP API를 사용하기 위해 모드버스를 활성화할 필요는 없습니다.
예를 들어http://192.168.2.111/cnf?cmd=modbus&device=meter1&read=35154.
응답은 JSON 형식입니다.
cmd는
항상 모드버스장치
= 미터1 또는 미터2 또는 EVSE읽기
= 읽을 레지스터의 주소쓰기
= 기록할 레지스터의 주소값
= 기록할 값값
= 기록할 값의 배열(예: [1,2,3,4])주소에 접미사를 추가하여 데이터 유형을 지정할 수 있습니다(기본값은 16비트 정수):
d
= 32비트 정수(모드버스 레지스터 2개)q
= 64비트 정수(모드버스 레지스터 4개)s
= 문자열/cnf?cmd=modbus&device=meter1&read=8002
응답:
1
/cnf?cmd=modbus&device=meter1&read=8062d
응답:
-1
/cnf?cmd=modbus&device=meter1&read=8016s
응답:
"cFos Power Brain"
/cnf?cmd=modbus&device=meter1&read=8002&count=10
응답:
[1,257,256,0,256,0,26211,26165,11619,13366]
/cnf?cmd=modbus&device=meter2&read=all
응답:
{"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
응답:
"ok"
/cnf?cmd=modbus&device=evse&write=8050q&value=1"
응답:
"ok"
/cnf?cmd=modbus&device=evse&write=8044d&value=1"
응답:
"bad modbus register size"
/cnf?cmd=modbus&device=evse&write=8044&values=[7,230,230,230 ]
응답:
"ok"
모든 충전 관리자 장치의 상태를 쿼리합니다:/cnf?cmd=get_dev_info
PIN 또는 RFID 설정:/cnf?cmd=enter_rfid&rfid=r&dev_id=d
r은 PIN 또는 RFID(숫자)이고, d는 특정 월박스를 선택하기 위한 선택적 장치 ID입니다. 장치 ID를 선택하지 않으면 충전 관리자가 PIN 또는 RFID를 자동으로 할당하려고 시도합니다.
현재 트랜잭션에 대한 덮어쓰기:/cnf?cmd=override_device&dev_id=d&flags=f&mamps=ma&rfid=id
d는 장치 ID이고, id는 다음과 같이 필요할 수 있는 RFID/PIN, 플래그입니다:
'C': 충전 비활성화 (관리자 비밀번호 또는 사용자 PIN/RFID 필요)
'c': 충전 다시 비활성화 (관리자 비밀번호 또는 사용자 PIN/RFID 필요)
'E': 월박스 충전 규칙 비활성화 (관리자 비밀번호 필요)
'e': 월박스 충전 규칙 다시 비활성화 (관리자 비밀번호 필요)
'U': 사용자의 충전 규칙 비활성화 (사용자 RFID/PIN 필요)
'u': 사용자의 충전 규칙 다시 비활성화 (사용자 RFID/PIN 필요)
이렇게 설정한 플래그는 차량이 월박스에서 플러그를 뽑을 때까지 유지됩니다.mamps=ma
: 충전 전류를 ma mA로 덮어씁니다(제한).
시뮬레이션된 에너지 미터 설정하기:/cnf?cmd=soft_meter&dev_id=d&val=v
v(선택 사항)는 Wh/VAh 단위로 설정할 에너지입니다. V가 없으면 계량기만 검침됩니다. d는 월박스의 장치 ID입니다. 반환 값은 설정 전의 이전 검침값입니다.
충전 관리자가 읽지 않지만 현재 값을 외부에서 HTTP POST 또는 GET을 통해 지정할 수 있는 미터기(장치 유형 'HTTP 입력')를 생성할 수 있습니다:/cnf?cmd=set_ajax_meter&dev_id=x
x는 장치 구성에 표시된 장치 ID입니다(예: M1).
POST 본문에는 다음과 같이 JSON 객체가 포함됩니다:
{ "model": string, "import_vah": number, "export_wh": number, "voltage": [v1, v2, v3], "current": [c1, c2, c3], "power_w": number "is_va": bool }
여기서 에너지 값은 Wh, 전압은 V, 전류는 mA, 전력은 W로 표시됩니다. "model"은 타일에 표시된 모델 문자열입니다.
일부 사용자(#diebestenuserderwelt)는 도구 컬을 사용하여 카운터에 데이터를 제공하는 등의 작업을 합니다:curl -i -X POST -H 'Content-Type: application/json' -d '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }' --user admin:1234abcd 'http://192.168.2.111/cnf?cmd=set_ajax_meter&dev_id=M3'
HTTP GET으로 요청은 다음과 같이 작성됩니다:http://192.168.2.111/cnf?cmd=set_ajax_meter&dev_id=M3&model=TestModell&import_wh=12345&export_wh=23456&voltage=231,232,233¤t=10001,10002,10003
다음은 cFos HTTP 입력 미터와 ioBroker를 사용하여 스마트 미터를 연결하는 방법에 대한 또 다른 포럼 게시물입니다.
충전 관리자가 읽거나 제어할 수 없지만 HTTP POST 또는 GET을 사용하여 외부에서 값을 지정할 수 있는 월박스(장치 유형 'HTTP 입력')를 생성할 수도 있습니다. 그러면 제어 값이 응답으로 반환됩니다:/cnf?cmd=set_ajax_evse&dev_id=x
x는 장치 구성에 표시된 장치 ID입니다(예: E1).
POST 본문에는 다음과 같이 JSON 객체가 포함됩니다:
{ "state": number, "max_charging_current": number, "current": [c1, c2, c3], "total_energy": number, "model": string, "rfid": string }
"모델"은 타일에 표시된 모델 문자열입니다. "rfid"를 사용하면 충전 프로세스에 RFID를 지정할 수 있으며, 에너지 값은 Wh, 전류는 mA 단위로 제공됩니다. "state"에는 다음과 같은 값이 있습니다:
1 = 대기 중(A), 2 = 전기차 있음(B), 3 = 충전 중(C), 4 = 환기 중 충전 중(D), 5 = 오류(E)
HTTP GET으로 요청은 다음과 같이 작성됩니다:http://192.168.2.111/cnf?cmd=set_ajax_evse&dev_id=M3&model=TestModell&state=st&max_charging_current=m¤t=c1,c2,c3&total_energy=t&rfid=r
이에 대한 응답으로 이 요청은 다음 JSON 객체를 반환합니다:
{ "device_enabled": true/false, // 장치가 활성화/비활성화됨 "charging_enabled": true/false, // 충전 허용/불허용 "일시정지": true/false, // true = 기기가 일시적으로 일시정지됨 "충전_전류": 숫자 // 지정된 충전 전류(mA) }
이 반환 객체는 호출자가 평가해야 하며 월박스는 그에 따라 설정되어야 합니다(예: 충전 전류가 적절히 변경되어야 함).
모든 요청은 JSON으로 응답을 반환합니다. R/o라고 표시된 값은 읽기 전용입니다. 참고: 당사는 이 API의 안정성을 보장하지 않습니다. 기능, 매개변수, 값 등은 예고 없이 변경될 수 있습니다.
/cnf?cmd=get_dev_info
{ "params" : { "title" : "cFos Power Brain", "desc" : "Standard-Konfiguration", "max_total_current" : 32000, // total installed power in mA "reserve_current" : 0, // reserve in mA (subtracted from max_total_current) "overdraft_cur" : 0, // generated overdraft in mA, can be set to 0 "max_total_evse_current" : 0, // max current available to all EVSEs in mA "cons_evse_power" : 0, // r/o, consumed EVSE power in W "avail_evse_power" : 32000, // r/o, available EVSE power in W "lb_enabled" : false, // true: load balancing enabled, false: disabled (observation mode) "disable_policy" : 1, // on device disable: 0 disable EVSE, 1 use min. charging current, -1 remove charging current limit (free charging) "cycle_time" : 3009, // current update cycle time in msec "max_evses" : 3, // maximum number of licensed EVSEs "shareware_mode" : false, // false, if licensed, true if trial version "version" : "1.8.1095", "time" : 1645281534, // current time stamp "vsn" : { "vendorid" : 52997, // cFos }, "ocpp_gateway_license_cnt" : 0, // number of licensed OCPP gateways "ocpp_gateway_licenses_used" : 0 // number of used OCPP gateways }, "devices" : [ // array of configured devices { "dev_type" : "evse_powerbrain", // a sample EVSE "device_enabled" : 1, // 1 = device enabled, 0 = disabled "name" : "Wallbox", // config item: name "address" : "evse", // address: URL, IP address or COM Port + Parameters "id" : 1, // Modbus ID "dev_id" : "E1", // unique device ID, EVSE always begin with E "number" : 1, // config item: number "desc" : "cFos Power Brain Wallbox 11kW", // config item: description "com_err" : false, // true, if active communication error "com_err_secs" : 1404660, // time since last com error "com_errors" : 0, // number of com errors "last_error" : "", // text of last error "is_evse" : true, // true for EVSEs, false for meters "used_phases" : 0, // 0=determine, otherwise bitfield: bit0 L1, bit1 L2, bit2 L3 "label" : "", // config item: text displayed when plugged in "min_charging_cur" : 6000, // minimum charging current in mA "max_charging_cur" : 11040, // maximum charging current in mA or expression "prio" : 1, // charging priority "charging_enabled" : true, // r/o, true if charging allowed "cur_charging_power" : 0, // r/o, current charging power in W "total_energy" : 7120572, // r/o, total used charging energy in Wh "phases" : 0, // currently used phases, bitfield: bit0 L1, bit1 L2, bit2 L3 "state" : 1, // 1 = waiting for EV, 2 = EV presend, 3 = charging, 4 = charging/vent, 5 = error, 6 = offline "model" : "cFos Power Brain,1.0,1.8.1095,6d-31-0c", // r/o, model string: Manufacturer,device,device version, firmware version, serial number "paused" : false, // true, if device paused due to energy shortage or phase imbalance "pause_time" : 300, // current elapsed pause time in secs "pause_min_time" : 300, // min. secs before end of pause { "dev_type" : "meter_powerbrain", // a sample meter "device_enabled" : 1, // 1 = device enabled, 0 = disabled "name" : "S0 Zähler 1", // config item: name "address" : "meter1", // address: URL, IP address or COM Port + Parameters "id" : 2, // Modbus ID "dev_id" : "M1", // unique device ID, meters always begin with M "number" : 1, // config item: number "desc" : "cFos Power Brain, S0 Zähler 1", // config item: description "com_err" : false, // true, if active communication error "com_err_secs" : 1404660, // time since last com error "com_errors" : 0, // number of com errors "last_error" : "", // text of last error "is_evse" : true, // true for EVSEs, false for meters "used_phases" : 0, // 0=determine, otherwise bitfield: bit0 L1, bit1 L2, bit2 L3 "is_va" : false, // true if display is VA, false for W "invert" : false, // if true, current and power values are inverted "import" : 15, // imported energy in Wh "export" : 0, // exported energy in Wh "power_w" : 0, // current active power in W "current_l1" : 0, // current L1 in mA "current_l2" : 0, // current L2 in mA "current_l3" : 0, // current L3 in mA "voltage_l1" : 230, // Voltage L1 in V "voltage_l2" : 230, // Voltage L2 in V "voltage_l3" : 230, // Voltage L31 in V "role" : 0, // 0 = display, 1 = consumption, 2 = production, 3 = grid demand, 4 = vehicle consumption, 5 = storage "model" : "cFos Power Brain,1.0,1.8.1095,6d-31-0c" // r/o, model string: Manufacturer,device,device version, firmware version, serial number } ] }
/cnf?cmd=get_params
/cnf?cmd=set_params
HTTP GET get_params는 JSON 객체를 반환하고,
HTTP POST set_params는 메시지 텍스트에 JSON 객체가 필요합니다
// see values for get_dev_info. // In Addition there is a device meta struct to allow for selection of device types: "dev_meta": { "evse_powerbrain" : "cFos Power Brain", // EVSE device type : name "evse_mennekes_modbus" : "Heidelberg Energy Control", "meter_elenker_meter" : "ModbusMeter 5A", // meter device type : name "meter_kostal_powermeter" : "Kostal Powermeter", "meter_orno_we516" : "Orno OR-WE-516", }
/cnf?cmd=set_params
{ devices: [ // array of device objects, currently may only contain 1 device { // for most of the device properties, see get_dev_info attach: "" // device ID of an attached meter battery_save_threshold: 0 // in mA, if charging current falls below this threshold, charging will be stopped, 0 = disable charging_rules: [ // array of charging rules // charging rules are work in progress, expect frequent changes to their object layout. { "days": d, // d is a bitfields a weekdays: bit0 Monday...bit6 Sunday "mode": m, // m mode of the rule: 0=absolule current, 1=relative current, 2=current solar current, 3=relative current solar current, 4=solar current minus current value, 5=solar surplus "current": c, // c current in mA "enabled": e, // e = true for an active rule, false for ignored rules "udur": u, // u = undercut duration in secs "time": t // t in minutes after midnight (for time based rules) "dur": dur // dur in minutes (for time based rules) "expr": expr // expr is evaluated to determine the rule current (for expression rules) "input": in // in = string specifying the input and level (for input based rules) "price_level", p // p = price level (for cost baseed rules) "solar": s // solar current in mA (for solar based rules) } ] enable_snooze: true // true, allow device snooze enable_wakeup: true // true, allow device wakeup for charging fixed_rfid: "" // use fixed RFID for OCPP group: 0 // device belongs to this group, 0 = main group ocpp_gateway_client_id: "CP42" phase_rotation: 0 soft_meter: 7120572 // estimated charged energy in W (if device has no meter) users: ["1170223812"] // array of user ids which are allowed to charge at this EVSE ] }
/cnf?cmd=get_users
/cnf?cmd=get_user
/cnf?cmd=set_user
get_user는 단일 사용자 객체를 검색하고,
set_user는 단일 사용자 객체를 POST하고,
get_users는 사용자 객체 배열을 검색하고,
set_user는 유효한 사용자 ID가 포함된 경우 관리자 비밀번호 없이 호출할 수 있습니다. 새 사용자를 만들려면 관리자 액세스 권한이 필요합니다
[ // array of users { "id" : "2167520770", // unique user ID "name" : "wusel", // name "display" : true, // true if user may be displayed while plugged in "dev_ids" : // EVSEs the user may use [ "E1" ], "rfids" : [ // array of RFIDs { "id" : "4711", // RFID / PIN "name" : "TeSt", // Name "ac_auth" : true, // true: used to authorize "ac_ovch" : false, // true: used to stop charging "used_phases" : 7 // used to override used phases, 0 = don't override } ], "charging_rules" : [ // array of charging rules for this user ] } ]
/cnf?cmd=accept_license&acc=1&allow_usage_stats=a
/cnf?cmd=change_admin_pwd&old_pwd=alt&new_pwd=neu
/cnf?cmd=del_device&dev_id=d
/cnf?cmd=get_new_user_id
/cnf?cmd=reset_device&dev_id=d
/cnf?cmd=set_diag_logging&enable=e