Čítače definované uživatelem

Poznámka: Správce nabíjení cFos dokáže odečítat údaje z většiny solárních střídačů pomocí SunSpec (typ zařízení "SunSpec Solar Inverter / Meter"). V takovém případě nemusíte vytvářet vlastní definici měřiče.

Správce nabíjení cFos umožňuje vytvářet vlastní definice měřičů, které nejsou ve standardním repertoáru. V současné době existují tři typy: Čítače Modbus, čítače HTTP/JSON a čítače MQTT/JSON. Definiční soubory těchto čítačů jsou velmi podobné. Čítače Modbus načítají svá data prostřednictvím sběrnice Modbus ze specifických registrů, zatímco čítače HTTP/JSON načítají svá data prostřednictvím požadavku HTTP a jako odpověď zpracovávají JSON. V případě čítačů MQTT/JSON se cFos Charging Manager přihlásí k odběru témat MQTT a analyzuje zprávy publikované v rámci tématu jako JSON. Správce nabíjení cFos používá pro analýzu malý "dotazovací jazyk". Zde je dokumentace k možnostem MQTT ve správci cFos Charging Manager.

Kromě řady předdefinovaných proměnných, jako je proud a napětí, mohou uživatelské čítače také načítat neznámé uživatelsky definované proměnné, dotazovat se na vstupy a nastavovat výstupy. Čtení proměnných a nastavování výstupů umožňuje vyhodnocování vzorců. V kombinaci s proměnnými Charging Manageru a globálními výstupy Charging Manageru popsanými níže se jedná o výkonnou funkci, která dokonce umožňuje některé úlohy domácí automatizace a ovládání externích zařízení, jako jsou bateriová úložiště. Pokud si uvědomíte, že s tím souvisí kontrolní úkoly, dejte nám prosím zpětnou vazbu. Velmi nás zajímá, co lidé pomocí cFos Charging Manageru kontrolují, a pomáhá nám to dále vyvíjet Charging Manager podle potřeb zákazníků.

Zde je příklad definice pro Modbus a pro HTTP/JSON:
Stáhněte si vzorovou definici pro měřidlo Modbus
Stáhněte si vzorovou definici pro měřič HTTP/JSON

Správce nabíjení již obsahuje několik takových souborů, ale v části "Konfigurace systému" můžete nahrát vlastní soubory a také je opět odstranit.
Zde najdete většinu definic měřidel, které poskytujeme:
Stáhněte si dodané definice čítačů

Pokud jste vytvořili vlastní soubor čítače a mohl by být relevantní pro ostatní uživatele, budeme vám velmi vděční, pokud nám jej poskytnete. Pak jej dodáme s budoucími verzemi Správce poplatků.

Stáhněte si definice měřičů pro další měřiče

Struktura definičního souboru:

Definice měřidel jsou soubory JSON s globálním objektem JSON, který má vlastnosti a podřízené objekty. 'rtype' určuje typ operace čtení: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. Čísla lze volitelně zadat v desítkové nebo šestnáctkové soustavě s předponou 0x. Kromě toho jsou povoleny jednořádkové komentáře s použitím //. Doporučujeme prohnat definiční soubory validátorem JSON5, např. tímto validátorem JSON5

Určitě byste si měli přečíst kapitolu Vzorce, abyste pochopili, které hodnoty lze použít ve vzorcích v následujícím odkazu.

Definice Modbusu mají objekt 'rtu' s následujícími vlastnostmi:

silence_period, v msec. určeno, délka pauzy před přístupem Modbus RTU, aby zařízení rozpoznalo začátek zprávy.
silence_same_slave, true: Pauza se dodržuje i při více přístupech ke stejnému zařízení.
retries: Počet opakovaných pokusů, pokud zařízení neodpovídá.
rcv_timeout: v msec. maximální doba čekání na přístup, než zařízení odpoví.

Tyto globální vlastnosti platí pro protokoly Modbus TCP a RTU:

modbus_read: Číslo funkce příkazu Modbus read, obvykle 3 nebo 4.
modbus_read_max_registers: Maximální počet registrů, které lze číst najednou.
modbus_allow_gaps: true = Při operaci čtení lze číst nepoužité oblasti registrů.

Pro Modbus TCP a HTTP/JSON existuje objekt 'tcp' s následujícími vlastnostmi:

connect_timeout: je msec. maximální doba čekání na připojení TCP.
delay_after_connect: v msec. Po navázání spojení před odesláním prvního příkazu udělejte pauzu.

Oba typy definic (Modbus a HTTP/JSON) mají následující doplňkové vlastnosti:

upd_delay: v msec. určuje interval, ve kterém lze zařízení číst. Některá zařízení jsou přetížena, pokud jsou dotazována příliš často.
výrobce: String, název výrobce. Zobrazuje se v rozšířených informacích dlaždice.
delay_accumulated: true = kumulované hodnoty (kWh) jsou dotazovány pouze každé 3 sekundy nebo pokud je k dispozici dostatečný výkon. false = tyto hodnoty jsou dotazovány vždy.
ui_addr: URL, pokud se liší od adresy zařízení pro vyvolání webového rozhraní.
reserved: Pole s hodnotami, které jsou interpretovány jako 0 (užitečné, pokud zařízení podporuje určité hodnoty v závislosti na modelu).

Pokud výše uvedené vlastnosti vynecháte, Správce nabíjení cFos převezme výchozí hodnoty, které ve většině případů fungují dobře.

V definici JSON je dalším krokem definice proměnných, které měřič používá ke čtení nebo výpočtu hodnot proudu, napětí atd. Správce nabíjení používá následující proměnné. Správce nabíjení zná následující proměnné:
type_designation, version, firmware_version, serial: Ty tvoří název modelu, jak je uvedeno v rozšířených informacích dlaždice. Tyto údaje jsou dotazovány jednou při nastavení nebo resetování měřiče.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: Správce nabíjení cFos se z nich pokusí vypočítat hodnoty napětí_l1..l3, podepsaného proudu_l1..l3, výkonu_w a výkonu_va. Nemusíte zadávat všechny proměnné. Správce poplatků cFos se pokusí vypočítat hodnoty z existujících proměnných.
import_wh, export_wh: Správce poplatků použije tyto proměnné k výpočtu import_wh a export_wh. Nemusíte zadávat všechny proměnné. Správce nabíjení cFos se pokusí vypočítat hodnoty z existujících proměnných.

Kromě toho můžete definovat další proměnné s jiným názvem, které se při každé aktualizaci načtou nebo vypočítají pomocí vzorců.

Definice proměnné:

Objekt je pojmenován podle výše uvedené proměnné a má následující vlastnosti:
fixed: String s pevnou hodnotou. Užitečné, pokud např. nelze určit žádnou hodnotu, např. pro typ_označení nebo napětí.
expr: String, proměnná se nevyčte, ale vyhodnotí jako vzorec.
type: Pokud není pevný nebo expr, typ proměnné: int16, int32, float, int64, string. To je důležité pro Modbus, aby bylo možné číst registry ve správném formátu. Pro JSON/HTTP lze obvykle použít float.
resolution: float, načtená hodnota se vynásobí 'resolution'. Hodnoty napětí musí být ve voltech, proudy v miliampérech, výkon ve wattech, energie ve watthodinách (Wh). Záporné "rozlišení" umožňuje invertovat hodnotu, pokud má opačné znaménko.
adresa: číslo (Modbus) nebo řetězec (HTTP/JSON), číslo registru Modbus nebo URL HTTP hodnoty, která má být načtena.
dotaz: String, pro HTTP JSON specifikace v dotazovacím jazyce Charging Manageru, pomocí které najde hodnotu, která má být načtena v odpovědi JSON.
order: String, pro Modbus pořadí bajtů, buď "hl" nebo "lh", ve kterém se hodnota nachází. length: číslo, pro Modbus délka řetězce v registrech. U proměnných 'version' a 'firmware_version' se 'length' používá k převodu číselných verzí na řetězce s tečkami. Pro "length" jsou přípustné hodnoty 2 nebo 4, které pak vedou k formátům verzí a.b a a.b.c.d. Pro 'length' 2 a typ 'int16' odděluje Charging Manager nízký a vysoký bajt tečkou, pro int32 nízký a vysoký word, pro 'int64' nízký a vysoký dword. Pro 'lenth' 4 a 'int32' rozdělí správce nabíjení hodnotu na 4 bajty oddělené tečkou. Pro "int64" jsou to 4 slova.

Definice vstupů:

Správce nabíjení se může dotazovat až na 32 vstupních hodnot z různých registrů nebo prvků JSON na jedno zařízení. Vlastnost "Inputs" je pole JSON. Pro každý vstup je třeba definovat následující vlastnosti:
adresa: Adresa (registr Modbus nebo URL).
počet: Počet vstupních bitů, které budou tímto požadavkem přečteny.
query: Pro HTTP/JSON dotazovací jazyk pro vyhledání hodnoty v odpovědi.

Správce nabíjení cFos načte všechny takto definované vstupy při každé aktualizaci a interně umístí bity do pole, na které se pak lze dotazovat pomocí vzorců Input1..InputN..

Definice výstupů:

Charging Manager může přepínat až 32 výstupů na jednotku. Všechny výstupy jsou na konci každého aktualizačního cyklu přepnuty, pokud se stav příslušného výstupu změnil.
Pro každý vstup je nutné definovat následující vlastnosti:
adresa: HTTP URL s volitelnou metodou HTTP, např. GET http://www.example.com?output1=${var1}. K nastavení registrů Modbus můžete použít rozhraní HTTP API správce nabíjení cFos. Správce poplatků zjistí odpovídající přístupy na localhostu a přesměruje požadavek na interní obslužnou jednotku, takže není třeba autorizace jako u externích přístupů k rozhraní API HTTP.
body: Volitelné tělo HTTP pro POST nebo PUT.
V adrese URL a těle můžete použít vzorce ${expr}, které odkazují na globální proměnné Správce nabíjení nebo na příslušné počítadlo. Vzorec 'expr' je vyhodnocen při nastavování výstupu a nahrazen v textu adresy URL nebo v těle. Pokud ve výše uvedeném příkladu http://www.example.com?output1=1 nastaví výstup a http://www.example.com?output1=0 jej odstraní, můžete definovat proměnnou 'var1' a nastavit ji na 1 nebo 0 podle potřeby. Tímto způsobem lze také zapsat číselné hodnoty pro řízení výkonu paměti v registrech Modbus, které jste předtím uložili do proměnné pomocí vzorce.
Pokud místo číselné hodnoty v adrese URL potřebujete nahradit jeden text jiným v závislosti na vzorci, jako například u zásuvek Shelly WLAN, můžete to napsat takto: ${if expr`text1`text2}. Apostrof je zpětná tečka (kód ASCII 96). Pokud je 'expr' != 0, vloží se text1, jinak text2. Pro zásuvku Shelly WLAN pak URL vypadá takto: http://<ip-addr>/relay/0?turn=${if expr`on`off}, tj. pokud expr != 0, zavolá pak Charging Manager http://<ip-addr>/relay/0?turn=on, jinak http://<ip-addr>/relay/0?turn=off.

Pokud jako adresu URL zadáte relativní cestu, správce nabíjení převezme adresu nakonfigurovanou pro příslušné zařízení. Pokud jako doménu zadáte "localhost", Správce nabíjení převezme adresu zařízení, na kterém je spuštěn. Pokud zjistí přístup k vlastnímu rozhraní API, použije interní obslužnou rutinu namísto provedení úplného přístupu HTTP, takže není nutné ukládat uživatelské jméno a heslo do definice čítače. Adresa URL začínající znakem * způsobí, že Správce nabíjení vždy provede úplný přístup HTTP.

Definice dotazu langage:

V současné době lze ve vyhledávacích výrazech "query" používat názvy členů a operátory "." a "[]", příklady:

testElement s názvem "test"
name1.name2Element s názvem "name2" v podřízeném objektu "name1"
name[idx]Element "idx" prvku objektu "name". "idx" může být číslo, např. pro pole, nebo řetězec
name["u2"]Element "u2" prvku objektu "name", odpovídá "name.u2"
name[{"el1": "v1", "el2": 3}].valueVyberte prvek pole, který splňuje podmínku objektového zápisu, a vyhodnoťte prvek s názvem 'value'. Zde se například v poli "name" vybere prvek, který má jako objektové prvky "el1" s hodnotou "v1" a "el2" s hodnotou 3, a pak se z tohoto objektu vrátí hodnota prvku "value".

Globální proměnné správce nabíjení:

V konfiguraci Správce nabíjení můžete vytvořit proměnné. Jako hodnotu můžete použít pevnou hodnotu nebo vzorec. Na konci každého aktualizačního cyklu správce poplatků v případě potřeby přepočítá hodnotu těchto proměnných. Můžete je pak použít v (některých) parametrech Správce nabíjení, v Pravidlech nabíjení nebo k ovládání výstupů. Jako proměnné můžete zapsat také Ex.member nebo Mx.member. Exa Mxjsou zde ID zařízení wallboxu nebo měřiče nastaveného v Charging Manageru. member je "uživatelsky definovaná" proměnná, která je uložena v příslušném zařízení. Některé proměnné mohou mít zvláštní význam: U měřičů KEBA je "out1" spínací výstup, u měřičů ABB B23 jsou "out1" a "out2" spínací výstupy (u modelů, které to podporují). Jednička zapne výstup, nula jej opět vypne.

Výstupy globálního správce nabíjení:

V konfiguraci Charging Manageru můžete konfigurovat globální výstupy, jak je popsáno výše v definici čítače v části "Výstupy". Ty se nastavují na konci každého aktualizačního cyklu, pokud se jejich stav změnil. Pokud chcete ovládat spínací výstupy v zařízeních definovaných uživatelem, doporučuje se výše uvedená konvence (viz Proměnné správce nabíjení): V uživatelsky definovaném čítači nastavíte proměnné s názvy "out1", "out2" atd. a v uživatelsky definovaném čítači nastavíte výstupy, které přepínají výstup v závislosti na hodnotě těchto proměnných.

Globální rozhraní Modbus API správce nabíjení:

Rozhraní Modbus API nástroje Charging Manager slouží k ovládání zařízení Modbus s libovolnou adresou Modbus RTU nebo TCP (přístupnou z nástroje Charging Manager). Pro Modbus RTU zadejte jako adresu COMx,bd,8,p,s, kde x je číslo portu COM, bd je přenosová rychlost, p je parita ("N", "E" nebo "O") a s je počet stop bitů (1 nebo 2), stejně jako v konfiguraci jednotlivých zařízení. Pro Modbus TCP je adresátem IP adresa zařízení v síti Charging Manageru včetně čísla portu.
Adresa URL (pro HTTP GET) rozhraní Modbus API je:
/cnf?cmd=modbus_get nebo /cnf?cmd=modbus_set
Správce nabíjení cFos podporuje následující dodatečné parametry dotazu:
addr: Výše uvedená adresa zařízení Modbus RTU nebo TCP.
func: Číslo funkce Modbus, např. pro čtení 3 nebo 4, pro zápis 6 nebo 16.
id: ID zařízení Modbus.
reg: Číslo registru Modbus. Hodnotu lze zadat v desítkové nebo šestnáctkové soustavě (s předponou 0x).
val: číslo, hodnota, která má být zapsána do registru. Při čtení vynechte.
typ:'w' 16bit (výchozí), d = 32bit, f = float, q = 64bit, s = string.
cnt: číslo, maximální délka řetězce v registrech, u jiných typů vynechat nebo nastavit na 1.
order: String, pořadí bajtů, buď "hl" nebo "lh".

Poznámka: Pokud má vaše "počítadlo" především kontrolní úlohy, můžete v nastavení této dlaždice zaškrtnout možnost "Skrýt zařízení", aby se toto zařízení nezobrazovalo na úvodní stránce.

Poznámka: Některé měřiče, které se odečítají prostřednictvím protokolu HTTP, vyžadují jako autorizaci uživatelské jméno/heslo. To můžete zadat v adrese pro přístup HTTP, např. pomocí http://username:password@192.168.2.111. Pokud vaše uživatelské jméno nebo heslo obsahuje znak "@", musíte jej nahradit znakem "%40".