Заўвага: cFos Charging Manager можа счытваць большасць сонечных інвертараў з дапамогай SunSpec (тып прылады «SunSpec Solar Inverter / Meter»). У гэтым выпадку вам не трэба ствараць уласнае вызначэнне лічыльніка.
cFos Charging Manager дазваляе ствараць уласныя вызначэнні лічыльнікаў для падтрымкі лічыльнікаў, якіх няма ў стандартным рэпертуары. У цяперашні час існуе тры тыпу: лічыльнікі Modbus, лічыльнікі HTTP/JSON і лічыльнікі MQTT/JSON. Файлы вызначэння для гэтых лічыльнікаў вельмі падобныя. Лічыльнікі Modbus счытваюць свае даныя з пэўных рэгістраў праз Modbus, а лічыльнікі HTTP/JSON атрымліваюць свае даныя праз запыт HTTP і чытаюць JSON у якасці адказу. Для лічыльнікаў MQTT/JSON cFos Charging Manager падпісваецца на тэмы MQTT і чытае паведамленні, апублікаваныя ў гэтай тэме, як JSON. Для яго чытання cFos Charging Manager выкарыстоўвае невялікую «Мову запытаў». Вось дакументацыя аб магчымасцях MQTT у cFos Charging Manager.
У дадатак да шэрагу загадзя вызначаных зменных, такіх як ток і напружанне, лічыльнікі, якія вызначаюцца карыстальнікам, таксама могуць счытваць невядомыя, вызначаныя карыстальнікам зменныя, уводныя запыты і ўсталёўваць выхады. Чытанне зменных і заданне вывадаў дазваляе ацэньваць формулы. Гэта магутная функцыя ў спалучэнні са зменнымі Charging Manager і глабальнымі выхадамі Charging Manager, апісанымі ніжэй, і нават дазваляе выконваць пэўныя задачы хатняй аўтаматызацыі і кіраваць знешнімі прыладамі, такімі як назапашвальнік батарэі. Калі вы выкарыстоўваеце гэта для выканання кантрольных задач, дайце нам водгук. Мы вельмі зацікаўлены ў тым, чым нашы кліенты кіруюць з дапамогай cFos Charging Manager, і гэта дапамагае нам далей развіваць Charging Manager у адпаведнасці з патрэбамі кліентаў.
Вось просты прыклад вызначэння Modbus, які счытвае адзін рэгістр актыўнай магутнасці. Вы можаце проста змяніць нумар рэестра для вашай канкрэтнай праграмы:
Прыклад вызначэння для аднаго рэгістра.
Вось прыклад вызначэння для Modbus і аднаго для HTTP/JSON:
Загрузіце ўзор вызначэння вымяральніка Modbus
Загрузіце ўзор вызначэння для вымяральніка/
У дыспетчар зарадкі ўжо ёсць некалькі такіх файлаў, але вы можаце загрузіць свае ўласныя файлы ў раздзеле "Канфігурацыя сістэмы" і зноў выдаляць іх.
Тут вы знойдзеце вялікую частку вызначэнняў лічыльнікаў, якія мы прапануем:
Спампаваць прыведзеныя вызначэнні лічыльнікаў
Калі вы стварылі свой уласны файл лічыльніка, і ён можа быць актуальны для іншых карыстальнікаў, мы былі б вельмі ўдзячныя, калі б вы змаглі зрабіць яго даступным для нас. Тады мы паставім яго з будучымі версіямі дыспетчара зарадкі.
Спампуйце азначэнні лічыльнікаў для атрымання дадатковай колькасці лічыльнікаўВызначэнні лічыльнікаў - гэта файлы JSON з глабальным аб'ектам JSON, які мае ўласцівасці і падаб'екты. 'rtype' вызначае тып аперацыі чытання: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. 'mtype' вызначае тып прылады: 0 = іншая прылада, 1 = лічыльнік, 2 = інвертар, 4 = акумулятар.
Вы можаце ўказваць лікі як у дзесятковым, так і ў шаснаццатковым выглядзе з прэфіксам "0x". Таксама дапускаюцца каментарыі ў адзін радок з выкарыстаннем '//'. Мы рэкамендуем запускаць файлы азначэнняў праз валідатар JSON5, напрыклад, гэты валідатар JSON5
Абавязкова прачытайце раздзел «Формулы», каб зразумець, якія значэнні можна выкарыстоўваць у формулах у наступным даведніку.
silence_period, у мс: вызначае працягласць паўзы перад доступам Modbus RTU, каб прылада распазнавала пачатак паведамлення.
silence_same_slave, ісціна: Паўза захоўваецца, нават калі ёсць некалькі доступаў да адной прылады.
retries: Колькасць паўтораў, калі прылада не адказвае.
rcv_timeout: у мс: максімальны час чакання, пакуль прылада не адкажа, на доступ.
modbus_read: нумар функцыі каманды Modbus для чытання, звычайна 3 ці 4.
modbus_read_max_registers: Максімальная колькасць рэгістраў, якія можна прачытаць за адзін раз.
modbus_allow_gaps: праўда = нявыкарыстаныя вобласці рэгістра могуць быць прачытаны ў аперацыі чытання.
connect_timeout: гэта мсек: максімальны час чакання для злучэння TCP.
delay_after_connect: у мсек: прыпыніць пасля ўсталявання злучэння перад адпраўкай першай каманды.
upd_delay: у мс: вызначае інтэрвал, з якім прылада можа быць прачытана. Некаторыя прылады перагружаюцца пры занадта частым апытанні.
вытворца: радок, назва вытворцы. Гэта будзе адлюстравана ў разгорнутай інфармацыі пліткі.
delay_accumulated: true = Назапашаныя значэнні (кВт·гадз) запытваюцца толькі кожныя 3 секунды або пры дастатковай магутнасці. false = Гэтыя значэнні заўсёды запытваюцца.
ui_addr: URL, калі адрозніваецца ад адраса прылады для выкліку вэб-інтэрфейсу.
зарэзервавана: масіў са значэннямі, якія інтэрпрэтуюцца як 0 (карысна, калі прылада падтрымлівае пэўныя значэнні ў залежнасці ад мадэлі).
Калі вы апусціце ўласцівасці, пералічаныя вышэй, cFos Charging Manager прымае значэнні па змаўчанні, якія ў большасці выпадкаў працуюць добра.
Далей у вызначэнні JSON - гэта вызначэнне зменных, якія лічыльнік выкарыстоўвае для счытвання або разліку значэнняў току, напружання і г.д. Менеджэр зарадкі ведае наступныя зменныя:
type_designation, version, firmware_version, serial: яны ўтвараюць пазначэнне мадэлі, як паказана ў пашыранай інфармацыі пліткі. Яны запытваюцца адзін раз пры наладжванні або абнуленні лічыльніка.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: Менеджэр зарадкі cFos спрабуе вылічыць з гэтых значэнняў напружанне_l1..l3 са знакам current_l1..l3, power_w і power_va. Вам не трэба ўказваць усе зменныя. cFos Charging Manager спрабуе вылічыць значэнні з існуючых зменных.
import_wh, export_wh: менеджэр зарадкі выкарыстоўвае гэтыя зменныя для адлюстравання import_wh і export_wh. Для аднанакіраваных лічыльнікаў (напрыклад, інвертараў) заўсёды трэба вызначаць толькі import_wh. Export_wh трэба вызначаць толькі для двухнакіраваных лічыльнікаў (напрыклад, лічыльнікаў назапашвання або спажывання ў сетцы).
soc: тут, на плітцы, у % адлюстроўваецца стан зарада акумулятарнай батарэі, калі ён даступны.
Акрамя таго, вы можаце вызначыць дадатковыя зменныя з рознымі назвамі, якія чытаюцца або разлічваюцца з дапамогай формул пры кожным абнаўленні. Калі вы вызначаеце зменныя, якія пачынаюцца з 'CM.' start, напрыклад, CM._set_price, прысвоеныя значэнні захоўваюцца ў глабальных зменных Charging Manager (гл. ніжэй) і могуць быць запытаны адпаведна.
Зменныя з *: калі вы вызначаеце зменныя, якія пачынаюцца з «*», яны будуць адлюстроўвацца ў інтэрфейсе на плітцы лічыльніка пад пашыранай інфармацыяй, напрыклад, тэмпературай акумулятара.
Заўвага: у якасці імёнаў зменных можна выкарыстоўваць толькі лічбы і літары az і AZ.
Аб'ект названы ў адпаведнасці з назвай зменнай, пералічанай вышэй, і мае наступныя ўласцівасці:
fixed: радок з фіксаваным значэннем. Карысна, калі, напрыклад, нельга вызначыць значэнне тыпу_designation або напружання.
expr: радок. Зменная не чытаецца, а вылічваецца як формула.
type: Калі не фіксаваны або expr, тып зменнай: int16, uint16, int32, uint32, float, int64, string Гэта важна для Modbus для чытання рэгістраў у правільным фармаце. uint16 і uint32 - гэта тыпы, якія могуць прымаць толькі дадатныя лікі. З JSON/HTTP вы звычайна можаце выкарыстоўваць float.
рэзалюцыя: паплавок. Прачытанае значэнне памнажаецца на «раздзяленне». Значэнні напружання павінны быць у вольтах, сілы току ў міліамперах, магутнасці ў ватах і энергіі ў ват-гадзінах (Вт·ч). З адмоўным "раздзяленнем" вы можаце інвертаваць значэнне, калі яно мае супрацьлеглы знак.
раз: лагічны (ісціна або ілжыва). Калі ісціна, значэнне чытаецца толькі адзін раз пры ініцыялізацыі прылады, у адваротным выпадку перыядычна.
адрас: лік (Modbus) або радок (HTTP/JSON). Нумар рэгістра Modbus або URL HTTP значэння, якое трэба прачытаць.
запыт: радок. Для HTTP JSON - інфармацыя ў мове запытаў дыспетчара спагнання платы, з дапамогай якой ён знаходзіць значэнне для чытання ў адказе JSON.
парадак: радок. Для Modbus - парадак байтаў, "hl" або "lh", у якім даступна значэнне. даўжыня: лік. У Modbus даўжыня радка ў рэгістрах, а зменныя 'version' і 'firmware_version' 'length' выкарыстоўваюцца для ператварэння лікавых версій у радкі з кропкамі. Для "даўжыні" дазволены значэнні 2 або 4, якія ў выніку дадуць фарматы версіі ab і abcd. Для «length» 2 і тыпу «int16» або «uint16» менеджэр зарадкі падзяляе малодшы і высокі байт кропкай, для «int32» або «uint32» малое і высокае слова, для «int64» малое і высокае слова. З «lenth» 4 і «int32» або «uint32» Charging Manager разбівае значэнне на 4 байты, падзеленыя кропкамі. Для 'int64' адпавядаюць 4 словы.
рэгулярны выраз: радок. Калі ўказаны рэгулярны выраз, адказ лічыльніка не павінен быць у фармаце JSON. У выніку ацэньваецца альбо поўнае супадзенне рэгулярнага выразу, альбо першая група. Выкарыстоўвайце, толькі калі прылада не вяртае JSON. Вось спіс функцый нашых рэгулярных выразаў:
любы сімвал:.
названыя класы: \d \s \w \D \S \W
ананімныя класы: [a-z0-9_], [^0-9], [^\d]
групы з альтэрнатывамі: (ab|cd|ef)
незахопленыя групы: (?:ab|cd)
(прагны) раз ці ніводнага разу: а?, а??
(прагны) многа ці ніводнага: a*, a*?
(прагны) раз ці больш: а+, а+?
пачатак радка: ^
канец радка: $
Менеджэр зарадкі можа запытваць да 32 значэнняў уводу з розных рэестраў або элементаў JSON на прыладу. Уласцівасць Inputs - гэта масіў JSON. Вы павінны вызначыць наступныя ўласцівасці для кожнага ўваходу:
адрас: Адрас (рэестр Modbus або URL).
count: Колькасць уваходных бітаў, якія чытаюцца з гэтым запытам.
запыт: Для HTTP/JSON, мова запытаў, каб знайсці значэнне ў адказе.
З кожным абнаўленнем cFos Charging Manager счытвае ўсе ўводы, вызначаныя такім чынам, і змяшчае біты ўнутр у масіў, які потым можа быць запытаны ў формулах Input1..InputN.
Дыспетчар зарадкі можа пераключаць да 32 выхадаў на прыладу. Выхады вызначаюцца ў «выхадах» як масіў JSON аб'ектаў вываду. Усе выхады пераключаюцца ў канцы кожнага цыкла абнаўлення, калі статус адпаведнага выхаду змяніўся.
Для кожнага вываду вы павінны вызначыць наступныя ўласцівасці ў аб'екце вываду:
адрас: HTTP URL з неабавязковым метадам HTTP, напрыклад, GET//}. Каб усталяваць рэгістры Modbus, вы можаце выкарыстоўваць HTTP API cFos Charging Manager. Менеджэр аплаты выяўляе адпаведныя доступы да лакальнага хоста і перанакіроўвае запыт да ўнутранага апрацоўшчыка, так што вам не патрэбна аўтарызацыя, як пры доступе да знешніх HTTP API. Калі URL пусты пасля ўсіх замен, вывад не зададзены. Напрыклад, вы можаце пераключаць выхады, толькі калі існуюць пэўныя зменныя (гл. формулы: функцыя exists(). Вы таксама можаце ўказаць ${address} і ${id} у адрасе. Гэта бягучы адрас прылады і Modbus ID, зададзеныя ў наладах. 'address' і 'id' у асноўным выкарыстоўваюцца для выкарыстання Modbus API (гл. ніжэй).
цела: Дадатковае цела HTTP для POST або PUT.
У URL-адрасе і целе вы можаце выкарыстоўваць формулы ${expr}, якія спасылаюцца на глабальныя зменныя Charging Manager або адпаведны лічыльнік. Формула 'expr' вылічваецца пры наладжванні вываду і замяняецца ў тэксце URL або цела. У прыведзеным вышэй прыкладзе, калі http://www.example.com?output1=1 задае вывад, а http://www.example.com?output1=0 ачышчае яго, вы можаце вызначыць зменную 'var1' і ўсталяваць яе у 1 па жаданні або ўсталюйце 0. Вы таксама можаце запісаць лікавыя значэнні для кіравання прадукцыйнасцю памяці ў рэгістры Modbus, якія вы раней захавалі ў зменнай з дапамогай формулы.
Калі замест перадачы лікавага значэння вам трэба замяніць адзін тэкст у URL-адрасе іншым у залежнасці ад формулы, напрыклад, у выпадку з гняздамі Shelly WLAN, вы можаце напісаць гэта так: ${if expr`text1`text2}. "Апостраф" - гэта зваротная галачка (код ASCII 96). Калі 'expr' != 0, выкарыстоўваецца тэкст1, інакш тэкст2. Для гнязда WLAN Shelly URL-адрас выглядае наступным чынам: http://<ip-addr>/relay/0?turn=${if expr`on`off}, г. зн., калі expr != 0, Charging Manager выклікае тады http ://<ip-addr>/relay/0?turn=on уключана, інакш http://<ip-addr>/relay/0?turn=off.
Калі вы ўводзіце адносны шлях у якасці URL-адраса, Charging Manager прымае адрас, настроены для адпаведнай прылады. Калі ў якасці дамена пазначыць «лакальны хост», менеджэр аплаты прымае адрас прылады, на якой ён працуе. Калі ён выяўляе доступ да ўласнага API, ён выкарыстоўвае ўнутраны апрацоўшчык замест поўнага доступу HTTP, так што вам не трэба захоўваць імя карыстальніка і пароль у вызначэнні лічыльніка. URL-адрас, які пачынаецца з "*", прымушае Менеджар аплаты заўсёды выконваць поўны доступ HTTP.
Скінуць выхады: у дадатак да масіва «вывады», вы таксама можаце вызначыць масіў пад назвай «скіды», структураваны як масіў «вывады». Гэта дазваляе скінуць выхады да іх першапачатковых значэнняў, калі прылада адключана. Гэта, у спалучэнні з зададзенымі карыстальнікам зменнымі і «аднойчы»: праўда, дазваляе вярнуць прыладу ў зыходны стан.
Перыядычна запісваць высновы: на некаторых прыладах высновы трэба перыядычна запісваць, у адваротным выпадку прылада вяртае значэнні да «стандартных». Напрыклад, памяць Kostal вернецца да правілаў па змаўчанні, калі кантролер памяці некаторы час не запісваўся. Каб перыядычна задаваць вывады, вы можаце дадаць да адраса прэфікс #xxx#, дзе xxx паказвае, што вывад будзе перазапісвацца кожную секунду, нават калі значэнне, якое трэба запісаць, засталося ранейшым. Напрыклад, калі адрас /cnf?cmd=set_cm_vars&name=test&val=42, вы можаце выкарыстоўваць #30#/cnf?cmd=set_cm_vars&name=test&val=42, каб пераканацца, што гэта значэнне запісваецца кожны раз 30 секунд робіцца.
У цяперашні час імёны членаў і аператары «.» могуць выкарыстоўвацца ў пошукавых выразах «запыту». і "[]" выкарыстоўваюцца, прыклады:
тэст | Элемент з імем "тэст" |
name1.name2 | Элемент з імем "name2" у даччыным аб'екце "name1" |
імя [idx] | Элемент "idx" элемента аб'екта "імя". "idx" можа быць лікам, напрыклад, для масіваў або радка |
імя ["u2"] | Элемент "u2" элемента аб'екта "name" адпавядае "name.u2" |
імя [{"el1": "v1", "el2": 3}].значэнне | Выберыце элемент масіва, які задавальняе умовам абазначэння аб'екта, і ацаніце элемент з імем «значэнне». Вось, напрыклад, элемент выбіраецца ў масіве 'name', які мае элементы аб'екта 'el1' са значэннем 'v1' і 'el2' са значэннем 3, а затым з гэтага аб'екта вяртаецца значэнне элемента 'value' . |
Вы можаце ствараць зменныя ў канфігурацыі Charging Manager. У якасці значэння можна выкарыстоўваць фіксаванае значэнне або формулу. У канцы кожнага цыкла абнаўлення менеджэр спагнання можа пералічыць значэнне гэтай зменнай. Затым вы можаце выкарыстоўваць іх у (некаторых) параметрах дыспетчара зарадкі, правілах зарадкі або для кіравання выхадамі. Вы таксама можаце напісаць E x.member або M x.member у якасці зменнай. Тут E x і M x - ідэнтыфікатар прылады Wallbox або лічыльніка, наладжанага ў Charging Manager. "член" - гэта "карыстальніцкая" зменная, якая захоўваецца ў адпаведнай прыладзе. Некаторыя зменныя могуць мець асаблівае значэнне: для KEBA "out1" - гэта пераключальны выхад, для лічыльнікаў ABB B23 "out1" і "out2" - гэта пераключаючы выхад (на мадэлях, якія падтрымліваюць гэта). 1 пераключае выхад, 0 зноў выключае яго.
Калі ў вас ёсць прылады, якія павінны быць уключаны пры пэўных умовах, але потым павінны працаваць некаторы час (напрыклад, пральная машына, посудамыйная машына), вы таксама можаце вызначыць зменную як "трыгер". Тады формула зменнай - гэта ўмова, якая ўсталёўвае зменную ў 1. Пасля рэгуляванага часу ён скідаецца да 0. "Умова паўторнага запуску" дазваляе працягваць час да выключэння (г.зн. усталявання зменнай у 0) зноў і зноў, пакуль выконваецца ўмова.
Заўвага: у якасці імёнаў зменных можна выкарыстоўваць толькі лічбы і літары az і AZ.
У мэтах тэставання вы можаце адлюстраваць зменныя дыспетчара аплаты і лічыльніка, напрыклад, бягучыя цэны ад Awattar:
У канфігурацыі Charging Manager вы можаце наладзіць глабальныя выхады, як апісана вышэй у вызначэнні лічыльніка ў раздзеле "Выхад". Яны ўсталёўваюцца ў канцы кожнага цыкла абнаўлення, калі іх статус змяніўся. Калі вы хочаце кіраваць камутацыйнымі выхадамі ў прыладах, якія вызначаюцца карыстальнікам, рэкамендуецца прыведзенае вышэй пагадненне (гл. Зменныя дыспетчара зарадкі): вы ўсталёўваеце зменныя з імем "out1", "out2" і г.д. у лічыльніку, які вызначаецца карыстальнікам, і наладжваеце выхады ў вызначаным карыстальнікам лічыльніку пераключаюць выхад у залежнасці ад значэння гэтай зменнай.
API Modbus Charging Manager выкарыстоўваецца для кіравання прыладамі Modbus, якія маюць любы Modbus RTU або TCP-адрас (даступны Charging Manager). У якасці адраса для Modbus RTU увядзіце COMx,bd,8,p,s, як і ў канфігурацыі асобных прылад, дзе x - нумар COM-порта, bd - хуткасць перадачы дадзеных, p - цотнасць ('N', 'E' або 'O'), а s - колькасць стопавых бітаў (1 або 2). У Modbus TCP адрас - гэта IP-адрас прылады ў сетцы Charging Manager, уключаючы нумар порта.
URL (для HTTP GET) Modbus API:
/cnf?cmd=modbus_get або /cnf?cmd=modbus_set
cFos Charging Manager падтрымлівае наступныя дадатковыя параметры запыту:
addr: адрас прылады Modbus RTU або TCP, згаданы вышэй.
func: нумар функцыі Modbus, напрыклад, для чытання 3 або 4, для запісу 6 або 16.
id: Ідэнтыфікатар прылады Modbus.
reg: нумар рэгістра Modbus. Значэнне можа быць указана ў дзесятковай або шаснаццатковай форме (з прэфіксам 0x).
val: лік: Значэнне для запісу ў рэестр. Апусціць пры чытанні.
тып: 'w' 16 біт (па змаўчанні), d = 32 біты, f = плавае, q = 64 біты, s = радок.
cnt: лік: максімальная даўжыня радка ў рэгістрах, для іншых тыпаў прапускайце або ўсталёўвайце 1.
парадак: радок: парадак байтаў, альбо "hl", альбо "lh".
Заўвага: калі ваш «Лічыльнік» у асноўным выкарыстоўваецца ў мэтах кантролю, вы можаце праверыць опцыю «Схаваць прыладу» ў наладах гэтай пліткі, каб гэта прылада не адлюстроўвалася на пачатковай старонцы.
Заўвага: некаторыя лічыльнікі, якія чытаюць праз HTTP, патрабуюць імя карыстальніка/пароля ў якасці аўтарызацыі. Вы можаце пазначыць гэта ў адрасе для HTTP-доступу, напрыклад, праз http://username:password@192.168.2.111
. Калі ваша імя карыстальніка або пароль утрымліваюць "@", вы павінны замяніць яго на "%40".