Дакументацыя

API HTTP

Наступныя функцыі забяспечваюць супастаўленне рэгістраў Modbus з HTTP.
Заўвага: Modbus не павінен быць актыўным, каб выкарыстоўваць HTTP API.

Выкарыстоўвайце запыт HTTP GET або POST на адрас cFos Power Brain Controller, напрыклад
http://192.168.2.111/cnf?cmd=modbus&device=meter1&read=35154.
Адказы ў JSON.

  • cmd - гэта заўсёды modbus
  • device = метр1 альбо метр2 альбо evse
  • read = адрас рэестра для чытання
  • write = адрас рэестра для чытання
  • value = значэнне для запісу
  • values = масіў значэнняў для запісу, напрыклад [1,2,3,4]

Адрасы могуць мець суфікс для ўказання тыпу дадзеных (па змаўчанні 16-бітнае цэлае лік):

  • d = 32-бітнае цэлае лік (2 рэгістра Modbus)
  • q = цэлае 64-разраднае (4 рэгістра модуля)
  • s = радок
Кантролер зарадкі cFos - Рэгістратары Modbus

Вось некалькі прыкладаў выкарыстання HTTP API

Modbus

/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"

Агульныя запыты

Запытаць стан усіх прылад Charging Manager:
/cnf?cmd=get_dev_info

Усталёўка PIN-кода або RFID:
/cnf?cmd=enter_rfid&rfid=r&dev_id=d
r - гэта PIN-код ці RFID (лічбы), d - неабавязковы ідэнтыфікатар прылады для выбару пэўнай сцяны. Калі не абраны ідэнтыфікатар прылады, дыспетчар зарадкі спрабуе аўтаматычна прызначыць PIN-код ці RFID.

Перазапісаць для бягучай транзакцыі:
/cnf?cmd=override_device&dev_id=d&flags=f&mamps=ma&rfid=id
d - гэта ідэнтыфікатар прылады, id - гэта, магчыма, неабходны RFID/PIN-код, сцягі наступным чынам:
«C»: дэактываваць загрузку (патрабуецца/
'c': зноў дэактывуйце загрузку (патрабуецца/
'E': дэактываваць правілы зарадкі Wallbox (патрабуецца адміністратар)
'e': зноў дэактывуйце правілы зарадкі Wallbox (патрабуецца адміністратар)
'U': дэактываваць правілы спагнання платы карыстальнікам (/PIN-код)
'u': зноў дэактывуйце карыстальніцкія правілы зарадкі (/PIN-код)

Сцяжкі, усталяваныя такім чынам, захоўваюцца да таго часу, пакуль аўтамабіль не будзе адключаны ад настенной скрынкі.

mamps=ma: Перазапісаць (абмежаваць) ток зарадкі ma mA.

Ўстаноўка імітаванага лічыльніка энергіі:
/cnf?cmd=soft_meter&dev_id=d&val=v
v (неабавязкова) - гэта энергія, якая ўстанаўліваецца ў Вт/ВА·г. Калі v не існуе, лічыльнік толькі чытаецца. d - гэта ідэнтыфікатар прылады EVSE. Вяртанае значэнне з'яўляецца старым лічыльнікам, паказаным да яго ўстаноўкі.

Лічыльнікі HTTP і насценныя скрынкі

лічыльнік

Вы можаце стварыць лічыльнік (тып прылады «HTTP Input»), які не счытваецца Charging Manager, але чые бягучыя значэнні могуць быць вызначаны звонку з дапамогай HTTP POST або GET:
/cnf?cmd=set_ajax_meter&dev_id=x
x - гэта ідэнтыфікатар прылады, як гэта відаць у канфігурацыі прылады, напрыклад 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
         }

Значэнні энергіі прыводзяцца ў Вт·ч, напружання ў В, току ў мА і магутнасці ў Вт. "мадэль" - гэта радок мадэлі, якая адлюстроўваецца на плітках.

Некаторыя з нашых карыстальнікаў (#diebestenuserderwelt) выкарыстоўваюць інструмент Curl для забеспячэння лічыльніка данымі, напрыклад:
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&current=10001,10002,10003

Вось яшчэ адзін запіс на форуме для падлучэння разумнага лічыльніка з дапамогай лічыльніка ўводу cFos HTTP і ioBroker.

Настенная скрынка

Вы таксама можаце стварыць насценны скрыню (тып прылады «HTTP Input»), які не счытваецца і не кантралюецца Charging Manager, але значэнні якога можна ўказаць звонку з дапамогай HTTP POST або GET. Затым кантрольныя значэнні вяртаюцца ў якасці адказу:
/cnf?cmd=set_ajax_evse&dev_id=x
x - гэта ідэнтыфікатар прылады, як відаць у канфігурацыі прылады, напрыклад, E1.

Цела POST змяшчае аб'ект JSON наступным чынам:

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

"мадэль" - гэта радок мадэлі, як паказана на плітках. З дапамогай "RFID" вы можаце дадаць RFID да працэсу зарадкі, значэнні энергіі прыведзены ў Втч, токі ў мА. "дзяржава" мае наступныя значэнні:
1 = чаканне (A), 2 = EV (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&current=c1,c2,c3&total_energy=t&rfid=r

У адказ гэты запыт вяртае наступны аб'ект JSON:

{
            "device_enabled": true/false, // прылада ўключана/адключана
            "charge_enabled": true/false, // зарадка дазволена / не дазволена
            "прыпынена": праўда/ілжыва, // праўда = прылада часова прыпынена
            "charge_current": нумар // зададзены ток зарадкі ў мА
         }

Гэты аб'ект вяртання павінен быць ацэнены абанентам, і EVSE павінен быць усталяваны адпаведна, напрыклад, зарадны ток павінен быць адпаведна зменены.

Вэб-інтэрфейс

Усе запыты вяртаюць адказ у 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
         }
         ]
         }
                  

Ўстаноўка/чытанне параметраў Charging Manager

/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
Карысная нагрузка POST (прыклад):
         {
            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
            ]
         }
                  

Benutzerinformationen setzen/auslesen

/cnf?cmd=get_users
/cnf?cmd=get_user
/cnf?cmd=set_user

get_user атрымлівае аб'ект аднаго карыстальніка,
set_user POST аб'ект аднаго карыстальніка,
get_users атрымлівае масіў аб'ектаў карыстальніка
set_user можна атрымаць без пароля адміністратара, калі ён утрымлівае сапраўдны ідэнтыфікатар карыстальніка. Стварэнне новых карыстальнікаў патрабуе доступу адміністратара

Вяртаемыя значэнні (прыклад):
         [   // 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
a = 1 дазваляе паведамляць статыстыку выкарыстання ў cFos eMobililty, a = 0 забараняе

Змяніць пароль адміністратара

/cnf?cmd=change_admin_pwd&old_pwd=alt&new_pwd=neu
стары і новы - гэта стары і новы паролі адміністратара

Выдаліць прыладу

/cnf?cmd=del_device&dev_id=d
d - сапраўдны ідэнтыфікатар прылады

Атрымаць унікальны ідэнтыфікатар карыстальніка (для стварэння новага карыстальніка)

/cnf?cmd=get_new_user_id
вяртае новы ідэнтыфікатар карыстальніка ў выглядзе радка JSON

Скінуць налады прылады

/cnf?cmd=reset_device&dev_id=d
d - сапраўдны ідэнтыфікатар прылады. Прылада будзе выдалена і адноўлена

Запуск/прыпынак дыягностыкі

/cnf?cmd=set_diag_logging&enable=e
e = 1, каб пачаць, e = 0, каб спыніць дыягнастычны журнал. Працуе 5 хвілін, калі не спыняецца