توفر الوظائف التالية تعيينًا لسجلات Modbus إلى HTTP.
ملاحظة: لا يلزم أن يكون Modbus نشطًا لاستخدام واجهة برمجة تطبيقات HTTP.
استخدم طلب HTTP GET أو POST إلى عنوان cFos Power Brain Controller ، على سبيل المثالhttp://192.168.2.111/cnf?cmd=modbus&device=meter1&read=35154
.
الردود بتنسيق JSON.
cmd
هو دائما modbusdevice
= meter1 أو meter2 أو evseread
= عنوان السجل للقراءةwrite
= عنوان السجل للقراءةvalue
= قيمة الكتابةvalues
= مصفوفة من القيم المراد كتابتها ، على سبيل المثال [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"
اطلب حالة جميع أجهزة Charging Manager:/cnf?cmd=get_dev_info
إعداد PIN أو RFID:/cnf?cmd=enter_rfid&rfid=r&dev_id=d
r هو PIN أو RFID (أرقام) ، d هو معرف جهاز اختياري لتحديد صندوق حائط معين. إذا لم يتم تحديد معرف الجهاز ، فإن Charging Manager يحاول تعيين PIN أو RFID تلقائيًا.
الكتابة للمعاملة الحالية:/cnf?cmd=override_device&dev_id=d&flags=f&mamps=ma&rfid=id
d هو معرف الجهاز ، المعرف هو مطلوب من المحتمل أن يكون RFID/PIN ، العلامات على النحو التالي:
"C": إلغاء تنشيط التحميل (/RFID)
'c': قم بإلغاء تنشيط التحميل مرة أخرى (/RFID)
'E': قم بإلغاء تنشيط قواعد الشحن الخاصة بـ wallbox (admin pwd مطلوب)
'e': قم بإلغاء تنشيط قواعد الشحن الخاصة بـ wallbox مرة أخرى (مطلوب admin pwd)
"U": قم بإلغاء تنشيط قواعد رسوم المستخدم (/PIN)
"u": قم بإلغاء تنشيط قواعد الشحن الخاصة بالمستخدم مرة أخرى (/PIN)
يتم الاحتفاظ بالأعلام التي تم تعيينها بهذه الطريقة حتى يتم فصل السيارة من صندوق الشحن.mamps=ma
: الكتابة فوق (تحديد) تيار الشحن باستخدام ma mA.
ضبط عداد الطاقة المحاكى:/cnf?cmd=soft_meter&dev_id=d&val=v
v (اختياري) هي الطاقة التي سيتم ضبطها في Wh/VAh. في حالة عدم وجود v ، تتم قراءة العداد فقط. d هو معرف الجهاز الخاص بـ EVSE. القيمة المعادة هي قراءة العداد القديمة قبل أن يتم تعيينها.
يمكنك إنشاء عداد (نوع الجهاز "إدخال HTTP") لا تتم قراءته بواسطة 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 }
يتم إعطاء قيم الطاقة بالواط ، والفولتية في V ، والتيارات في مللي أمبير والطاقة في W. "النموذج" هو سلسلة النموذج كما هو معروض في المربعات.
يستخدم بعض مستخدمينا (#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¤t=10001,10002,10003
فيما يلي إدخال آخر في المنتدى لتوصيل عداد ذكي باستخدام مقياس إدخال cFos HTTP و ioBroker.
يمكنك أيضًا إنشاء صندوق حائط (نوع الجهاز "إدخال HTTP") ، والذي لا تتم قراءته أو التحكم فيه بواسطة 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¤t=c1,c2,c3&total_energy=t&rfid=r
استجابةً لهذا الطلب ، يُرجع هذا الطلب كائن JSON التالي:
{ "device_enabled": صحيح/خطأ ، // تم تمكين/تعطيل الجهاز "charge_enabled": صواب/خطأ ، // الشحن مسموح به / غير مسموح به "متوقف مؤقتًا": صحيح/خطأ ، // صحيح = الجهاز متوقف مؤقتًا "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 } ] }
/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 POSTs كائن مستخدم واحد،
يحصل 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
/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