Opomba: Upravitelj za polnjenje cFos lahko odčitava podatke z večine solarnih pretvornikov, ki uporabljajo SunSpec (tip naprave "SunSpec Solar Inverter / Meter"). V tem primeru vam ni treba ustvariti lastne definicije števca.
Upravitelj zaračunavanja cFos omogoča ustvarjanje lastnih definicij števcev za podporo števcev, ki niso na voljo v standardnem repertoarju. Trenutno so na voljo tri vrste: Modbus števci, števci HTTP/JSON in števci MQTT/JSON. Datoteke z definicijami za te števce so si zelo podobne. Števci Modbus berejo podatke iz določenih registrov prek Modbusa, števci HTTP/JSON pa pridobivajo podatke prek zahteve HTTP in v odgovoru berejo v obliki JSON. Pri števcih MQTT/JSON se upravitelj zaračunavanja cFos naroči na teme MQTT in bere sporočila, objavljena v okviru teme, kot JSON. Upravitelj za zaračunavanje cFos Charging Manager za branje uporablja majhen "poizvedovalni jezik". Tukaj je dokumentacija o zmožnostih MQTT v upravitelju cFos Charging Manager.
Poleg vrste vnaprej določenih spremenljivk, kot sta tok in napetost, lahko uporabniško definirani števci berejo tudi neznane, uporabniško definirane spremenljivke, poizvedujejo po vhodih in nastavljajo izhode. Branje spremenljivk in nastavljanje izhodov omogoča analizo formul. V kombinaciji s spremenljivkami Charging Manager in globalnimi izhodi Charging Manager, opisanimi v nadaljevanju, je to zmogljiva funkcija, ki omogoča celo nekatere naloge avtomatizacije doma in nadzor zunanjih naprav, kot so akumulatorske enote. Če s tem uresničujete nadzorne naloge, nam sporočite povratne informacije. Zelo nas zanima, kaj naše stranke nadzorujejo s programom cFos Charging Manager, kar nam pomaga pri nadaljnjem razvoju programa Charging Manager v skladu s potrebami strank.
Tukaj je preprost primer definicije za Modbus, ki bere en sam register za aktivno moč. Številko registra lahko preprosto spremenite za svojo posebno aplikacijo:
Primer definicije za en sam register.
Tukaj je primer definicije za Modbus in primer definicije za HTTP/JSON:
Prenesite vzorec definicije za merilnik Modbus
Prenesite vzorčno opredelitev za merilnik HTTP/JSON
Charging Manager je že opremljen z nekaj takimi datotekami, vendar lahko v razdelku "Konfiguracija sistema" naložite svoje datoteke in jih tudi ponovno izbrišete.
Tu boste našli večino definicij merilnikov, ki jih ponujamo:
Prenesite priložene definicije števcev
Če ste ustvarili lastno datoteko števca in bi bila lahko pomembna za druge uporabnike, vam bomo zelo hvaležni, če nam jo boste dali na voljo. Nato jo bomo priložili prihodnjim različicam programa Charging Manager.
Prenesite definicije števcev za dodatne števceDefinicije števcev so datoteke JSON z globalnim objektom JSON, ki ima lastnosti in podobjekte. "rtype" določa vrsto operacije branja: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. "mtype" določa vrsto naprave: 0 = druga naprava, 1 = merilnik, 2 = inverter, 4 = baterijsko skladišče.
Številke lahko določite v desetiškem ali šestnajstiškem sistemu s predpono "0x". Dovoljeni so tudi enovrstični komentarji z "//".
Priporočamo, da svoje datoteke z definicijami poženete skozi validator JSON5, npr. ta JSON5 validator Vsekakor morate prebrati poglavje Formule, da boste razumeli, katere vrednosti lahko uporabite v formulah v naslednjem sklicevanju.
silence_period, v msec: Določa dolžino premora pred dostopom Modbus RTU, da naprava prepozna začetek sporočila. silence_same_slave, true: Premor se ohrani tudi pri več dostopih do iste naprave. retries: Število ponovitev, če se naprava ne odzove. rcv_timeout: v msec: Največji čas čakanja do odziva naprave na dostop.
modbus_read:
M odbus_read_max_registers: Največje število registrov, ki se lahko berejo naenkrat. modbus_allow_gaps: true = v operaciji branja se lahko berejo neuporabljena območja registrov.
connect_timeout: je msec: Najdaljši čas čakanja na povezavo TCP. delay_after_connect: je msec: Prekinitev po vzpostavitvi povezave, preden se pošlje prvi ukaz.
upd_delay: v msec: Določa interval, v katerem se lahko naprava bere.
Nekatere naprave so preobremenjene, če se po njih poizveduje prepogosto. manufacturer: String, ime proizvajalca.
To je prikazano v razširjenih informacijah ploščice. delay_accumulated: true = po nakopičenih vrednostih (kWh) se poizveduje samo vsake 3 sekunde ali če je dovolj energije. false = po teh vrednostih se poizveduje vedno. ui_addr: URL, če se razlikuje od naslova naprave za klicanje spletnega vmesnika. reserved: (uporabno, če naprava podpira določene vrednosti glede na model).
Če zgoraj navedene lastnosti izpustite, upravitelj polnjenja cFos Charging Manager uporabi privzete vrednosti, ki v večini primerov dobro delujejo.
Naslednji korak v opredelitvi JSON je opredelitev spremenljivk, ki jih merilnik uporablja za branje ali izračunavanje vrednosti za tok, napetost itd.
Upravitelj polnjenja prepozna naslednje spremenljivke: type_designation, version, firmware_version, serial: Te tvorijo oznako modela, kot je prikazana v razširjenih informacijah ploščice.
Po njih se poizveduje enkrat pri nastavitvi ali ponastavitvi merilnika. voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: Upravitelj polnjenja cFos poskuša iz teh vrednosti izračunati napetost_l1..l3, podpisani tok_l1..l3, power_w in power_va. Ni treba navesti vseh spremenljivk.
Program cFos Charging Manager poskuša izračunati vrednosti iz obstoječih spremenljivk. import_wh, export_wh: Program Charging Manager uporablja te spremenljivke za prikaz import_wh in export_wh. Za enosmerne števce (npr. inverterje) morate vedno opredeliti samo import_wh.
Samo za dvosmerne števce (kot so števci za shranjevanje ali števci za referenčno omrežje) je treba opredeliti export_wh. soc: Če je na voljo, se stanje napolnjenosti baterijskega skladišča tukaj prikaže v % v ploščici.
Opredelite lahko tudi druge spremenljivke z različnimi imeni, ki se odčitajo pri vsaki posodobitvi ali izračunajo z uporabo formul. Če določite spremenljivke, ki se začnejo s "CM.", npr. CM._set_price, se dodeljene vrednosti shranijo v globalne spremenljivke Charging Manager (glejte spodaj) in jih lahko ustrezno poizvedujete.
Spremenljivke z *: Če določite spremenljivke, ki se začnejo z "*", se te prikažejo v uporabniškem vmesniku v ploščici merilnika pod razširjenimi informacijami, npr. temperatura enote za shranjevanje baterije.
Opomba: Kot imena spremenljivk se lahko uporabljajo samo številke ter črke a-z in A-Z.
Objekt je poimenovan po imenu zgoraj navedene spremenljivke in ima naslednje lastnosti: fixed: String s fiksno vrednostjo.
Uporabno, če na primer ni mogoče določiti vrednosti, npr. za tip_oznaka ali napetost. expr: String.
Spremenljivka se ne prebere, temveč se ovrednoti kot formula. type: Če ni fixed ali expr, tip spremenljivke: int16, uint16, int32, uint32, float, int64, string. To je pomembno za Modbus, da lahko bere registre v pravilnem formatu. uint16 in uint32 sta tipa, ki lahko sprejemata samo pozitivna števila.
Pri JSON/HTTP lahko običajno uporabite float. resolucija: float. Prebrana vrednost se pomnoži z "resolution". Vrednosti za napetost morajo biti v voltih, tokovi v miliamperih, moč v vatih, energija v vatnih urah (Wh).
Z negativno 'resolucijo' lahko vrednost obrnete, če ima nasprotni znak. once: bool (true ali false).
Če je true, se vrednost prebere samo enkrat ob inicializaciji naprave, sicer se bere periodično. naslov: številka (Modbus) ali niz (HTTP/JSON).
Številka registra Modbus ali URL HTTP vrednosti, ki jo je treba prebrati. query (poizvedba): Niz: Podatkovni niz.
Za HTTP JSON specifikacija v poizvedovalnem jeziku Charging Managerja, s katerim v odgovoru JSON najde vrednost, ki jo je treba prebrati. order: String. Za Modbus vrstni red bajtov, bodisi "hl" ali "lh", v katerem je vrednost prisotna. length: number. Za Modbus dolžina niza v registrih; za spremenljivki "version" in "firmware_version" se "length" uporablja za pretvorbo številčnih različic v nize s pikami. Za 'length' sta dovoljeni vrednosti 2 ali 4, kar privede do oblik različic a.b in a.b.c.d. Pri 'length' 2 in vrsti 'int16' ali 'uint16' Charging Manager loči nizki in visoki bajt s piko, pri 'int32' ali 'uint32' nizko in visoko besedo, pri 'int64' nizko in visoko besedo. Z 'lenth' 4 in 'int32' ali 'uint32' upravitelj polnjenja razdeli vrednost na 4 bajte, ločene s piko.
Za 'int64' so to 4 besede. regex: String. Če je naveden regularni izraz, odgovoru števca ni treba biti v obliki JSON. Kot rezultat se ovrednoti celotno ujemanje regularnega izraza ali prva skupina. Uporabite samo, če naprava ne vrača JSON.
Tukaj je seznam funkcij naših regularnih izrazov: any char: . poimenovani razredi:
\d \s \w \D \S \W anonimni razredi: [a-z0-9_], [^0-9], [^\d] skupine z alternativami: (ab|cd|ef) nezajete skupine: (?:ab|cd) (pohlepno) enkrat ali nič: a?, a???
(pohlepno) veliko ali nič: a*, a*?
(pohlepno) enkrat ali večkrat: a+, a+? začetek niza: ^ konec niza: $
Upravitelj polnjenja lahko iz različnih registrov ali elementov JSON zahteva do 32 vhodnih vrednosti na napravo. Lastnost "Inputs" je polje JSON.
Za vsak vhod morate določiti naslednje lastnosti: Address: Naslov (register Modbus ali URL).
števec: Vnosni podatki: Vnosni podatki: Vnosni podatki: Vnosni podatki:
Število vhodnih bitov, ki se preberejo s to zahtevo: Za HTTP/JSON poizvedovalni jezik za iskanje vrednosti v odgovoru.
Upravitelj polnjenja cFos prebere vse tako opredeljene vhode z vsako posodobitvijo in bite interno shrani v polje, po katerem lahko nato poizvedujete v formulah, Input1..InputN.
Upravitelj polnjenja lahko preklopi do 32 izhodov na napravo. Izhodi so opredeljeni v razdelku "outputs" kot polje JSON izhodnih objektov. Vsi izhodi se preklopijo na koncu vsakega cikla posodabljanja, če se je stanje zadevnega izhoda spremenilo.
Za vsak izhod morate v izhodnem objektu opredeliti naslednje lastnosti: naslov: URL HTTP z neobvezno metodo HTTP, npr. GET http://www.example.com?output1=${var1}. Za nastavitev registrov Modbus lahko uporabite vmesnik API HTTP upravitelja polnjenja cFos Charging Manager. Upravitelj zaračunavanja prepozna ustrezne dostope na lokalnem gostitelju in zahtevo preusmeri na notranji upravljalnik, tako da ne potrebujete avtorizacije kot pri zunanjih dostopih HTTP API. Če je naslov URL po vseh zamenjavah prazen, se izhod ne nastavi. Izpise lahko na primer zamenjate le, če določene spremenljivke obstajajo (glejte formulo: funkcija exists()). V naslovu lahko navedete tudi ${naslov} in ${id}. To sta trenutni naslov naprave in ID Modbus, kot sta določena v nastavitvah.
'address' in 'id' se uporabljata predvsem za uporabo vmesnika Modbus API (glejte spodaj). body: Neobvezno telo HTTP za POST ali PUT.
V naslovu URL in telesu lahko uporabite ${expr} za uporabo formul, ki se sklicujejo na globalne spremenljivke upravitelja polnjenja ali iz ustreznega števca. Formula 'expr' se ovrednoti, ko se nastavi izhod, in se nadomesti v besedilu URL ali telesa. Če v zgornjem primeru http://www.example.com?output1=1 nastavi izhod, http://www.example.com?output1=0 pa ga izbriše, lahko določite spremenljivko 'var1' in jo po potrebi nastavite na 1 ali 0. Na ta način lahko v registre Modbus zapišete tudi številčne vrednosti za nadzor zmogljivosti pomnilnika, ki ste jih pred tem s formulo shranili v spremenljivko.
Če morate namesto posredovanja številčne vrednosti zamenjati eno besedilo v naslovu URL z drugim glede na formulo, npr. za vtičnice Shelly WLAN, lahko to zapišete na naslednji način: ${if expr`text1`text2}. Apostrof je oznaka za nazaj (koda ASCII 96). Če je 'expr' != 0, se uporabi besedilo1, v nasprotnem primeru besedilo2. Za vtičnico Shelly WLAN je URL potem videti na primer takole: http://<ip-addr>/relay/0?turn=${if expr`on`off}, tj. če expr != 0, upravitelj polnjenja potem pokliče http://<ip-addr>/relay/0?turn=on, sicer http://<ip-addr>/relay/0?turn=off.
Če kot naslov URL vnesete relativno pot, bo Charging Manager uporabil naslov, konfiguriran za ustrezno napravo. Če kot domeno vnesete 'localhost', bo Charging Manager uporabil naslov naprave, v kateri je zagnan. Če prepozna dostop do lastnega vmesnika API, namesto da bi izvedel celoten dostop HTTP, uporabi notranji upravljalnik, tako da vam v definicijo števca ni treba vnesti uporabniškega imena in gesla. URL, ki se začne z "*", povzroči, da Charging Manager vedno izvede popoln dostop HTTP.
Ponastavite izhode: Poleg polja "izhodi" lahko opredelite tudi polje z imenom "ponastavitve", ki je strukturirano kot polje "izhodi". To omogoča ponastavitev izhodov na začetne vrednosti, ko je naprava deaktivirana. To lahko uporabite v kombinaciji z uporabniško definiranimi spremenljivkami in "once": true za ponastavitev naprave v začetno stanje.
Periodično zapisovanje izhodov: Pri nekaterih napravah je treba izhode periodično zapisovati, sicer bo naprava ponastavila vrednosti na "privzeto". Na primer, pomnilnik Kostal se vrne na privzeta pravila, če krmilnik pomnilnika nekaj časa ni bil aktivno zapisan. Če želite periodično nastavljati izhode, lahko naslovu dodate predpono #xxx#, pri čemer xxx označuje, koliko sekund se izhod prepiše, tudi če je vrednost, ki jo je treba zapisati, ostala enaka. Če je na primer naslov /cnf?cmd=set_cm_vars&name=test&val=42, lahko uporabite #30#/cnf?cmd=set_cm_vars&name=test&val=42, da zagotovite, da se ta vrednost zapiše vsakih 30 sekund.
Trenutno lahko v iskalnih izrazih "poizvedba" uporabljate imena članov ter operatorja "." in "[]", na primer:
test | Element z imenom "test" |
ime1.ime2 | Element z imenom "name2" v podrejenem objektu "name1" |
name[idx] | Element "idx" elementa objekta "name". "idx" je lahko število, npr. za polja, ali niz |
ime["u2"] | Element "u2" elementa objekta "name", ustreza "name.u2" |
name[{"el1": "v1", "el2": 3}].value | Izberite element polja, ki izpolnjuje pogoj objektnega zapisa, in ovrednotite element z imenom 'value'. Tu se na primer v polju "name" izbere element, ki ima kot objektna elementa "el1" z vrednostjo "v1" in "el2" z vrednostjo 3, nato pa se iz tega objekta vrne vrednost elementa "value". |
Spremenljivke lahko ustvarite v konfiguraciji upravitelja polnjenja. Kot vrednost lahko uporabite fiksno vrednost ali formulo. Ob koncu vsakega cikla posodabljanja upravitelj zaračunavanja po potrebi ponovno izračuna vrednost teh spremenljivk. Te spremenljivke lahko nato uporabite v (nekaterih) parametrih Charging Managerja, pravilih za zaračunavanje ali za nadzor izhodov. Kot spremenljivko lahko zapišete tudi Ex.member ali Mx.member. V tem primeru sta Exin MxID naprave wallboxa ali števca, nastavljenega v Charging Managerju. 'member' je "uporabniško določena" spremenljivka, ki je shranjena v ustrezni napravi. Nekatere spremenljivke imajo lahko poseben pomen: Za KEBA je 'out1' preklopni izhod, za števce ABB B23 pa sta 'out1' in 'out2' preklopna izhoda (za modele, ki to podpirajo). Ena vklopi izhod, 0 ga ponovno izklopi.
Če imate naprave, ki jih je treba vklopiti pod določenimi pogoji, nato pa nekaj časa delujejo (npr. pralni stroj, pomivalni stroj), lahko spremenljivko opredelite tudi kot "sprožilec". Takrat je formula spremenljivke pogoj, s katerim se spremenljivka nastavi na vrednost 1. Po nastavljivem času se nato ponovno nastavi na 0. "Pogoj ponovnega sprožitve" omogoča, da se čas do izklopa (tj. nastavitve spremenljivke na 0) vedno znova podaljšuje, dokler je pogoj izpolnjen.
Opomba: Kot imena spremenljivk se lahko uporabljajo samo številke ter črke a-z in A-Z.
Za testne namene lahko prikažete spremenljivke upravitelja polnjenja in števca, npr. trenutne cene Awattar:
V konfiguraciji Charging Managerja lahko konfigurirate globalne izhode, kot je opisano zgoraj v opredelitvi števca v razdelku "Izhodi". Ti se nastavijo na koncu vsakega cikla posodabljanja, če se je njihovo stanje spremenilo. Če želite krmiliti preklopne izhode v uporabniško definiranih napravah, je priporočljiva zgornja konvencija (glejte Spremenljivke Charging Managerja): Nastavite spremenljivke z imeni "out1", "out2" itd. v uporabniško definiranem števcu in nastavite izhode v uporabniško definiranem števcu, ki preklapljajo izhod glede na vrednost teh spremenljivk.
Modbus API Charging Managerja se uporablja za nadzor naprav Modbus, ki imajo katerikoli naslov Modbus RTU ali TCP (dostopen iz Charging Managerja). Kot pri konfiguraciji posameznih naprav vnesite COMx,bd,8,p,s kot naslov za Modbus RTU, kjer je x številka vrat COM, bd hitrost prenosa, p pariteta ("N", "E" ali "O") in s število stop bitov (1 ali 2). Za Modbus TCP je naslov IP naprave v omrežju Charging Manager, vključno s številko vrat.
URL (za HTTP GET) vmesnika Modbus API je: /cnf?cmd=modbus_get ali /cnf?cmd=modbus_set Upravitelj polnjenja cFos podpira naslednje dodatne parametre poizvedbe: addr:
F unc: številka funkcije Modbus, npr. za branje 3 ali 4, za pisanje 6 ali 16. id: ID naprave Modbus. reg: številka registra Modbus.
Vrednost je lahko določena v desetiškem ali šestnajstiškem sistemu (s predpono 0x). val: številka: Vrednost, ki jo je treba zapisati v register.
Pri branju izpustite. type: 'w' 16bit (privzeto), d = 32bit, f = float, q = 64bit, s = string.
c nt: število: Največja dolžina niza v registrih, pri drugih vrstah izpustite ali nastavite na 1. order: niz: vrstni red bajtov, bodisi "hl" ali "lh".
Opomba: Če ima vaš števec predvsem kontrolne naloge, lahko v nastavitvah te ploščice označite možnost "Skrij napravo", tako da ta naprava ne bo prikazana na začetni strani.
Opomba: Pri nekaterih števcih, ki se odčitavajo prek protokola HTTP, je za avtorizacijo potrebno uporabniško ime/geslo. To lahko navedete v naslovu za dostop HTTP, npr. s http://username:password@192.168.2.111
. Če vaše uporabniško ime ali geslo vsebuje "@", ga morate nadomestiti z "%40".