Dokumentace

Čí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 k dispozici ve standardním repertoáru. V současné době jsou k dispozici tři typy: Modbus čítače, HTTP/JSON čítače a MQTT/JSON čítače. Definiční soubory pro tato počítadla jsou si velmi podobné. Čítače Modbus načítají svá data z určitých registrů prostřednictvím sběrnice Modbus, zatímco čítače HTTP/JSON získávají svá data prostřednictvím požadavku HTTP a v odpovědi je čtou ve formátu JSON. V případě čítačů MQTT/JSON se správce cFos Charging Manager přihlásí k odběru témat MQTT a čte zprávy publikované v rámci tématu jako JSON. Správce cFos Charging Manager používá pro čtení malý "Query Language". Zde je dokumentace funkcí MQTT v nástroji cFos Charging Manager.

Kromě řady předdefinovaných proměnných, jako je proud a napětí, mohou uživatelsky definované čítače také načítat neznámé, uživatelem definované proměnné, dotazovat se na vstupy a nastavovat výstupy. Čtení proměnných a nastavování výstupů umožňuje analyzovat vzorce. V kombinaci s proměnnými Charging Manager a globálními výstupy Charging Manager 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 například bateriová úložiště. Pokud s ní realizujete řídicí úlohy, poskytněte nám prosím zpětnou vazbu. Velmi nás zajímá, co naši zákazníci pomocí aplikace cFos Charging Manager ovládají, a pomáhá nám to dále rozvíjet Charging Manager podle potřeb zákazníků.

Zde je jednoduchý příklad definice pro Modbus, který čte jediný registr činného výkonu. Číslo registru můžete snadno upravit pro konkrétní aplikaci:
Příklad definice pro jeden registr.

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 čítačů jsou soubory JSON s globálním objektem JSON, který má vlastnosti a podobjekty. "rtype" určuje typ operace čtení: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. "mtype" určuje typ zařízení: 0 = jiné zařízení, 1 = měřič, 2 = měnič, 4 = bateriové úložiště.

Čísla můžete zadat buď v desítkové, nebo šestnáctkové soustavě s předponou '0x'. Povoleny jsou také jednořádkové komentáře pomocí '//'.

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čuje délku pauzy před přístupem Modbus RTU, aby zařízení rozpoznalo začátek zprávy. silence_same_slave, true: Pauza je zachována i pro vícenásobné přístupy 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 odpověď zařízení, na jeden přístup.

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

modbus_read:

M odbus_read_max_registers: Maximální počet registrů, které lze číst najednou. modbus_allow_gaps: true = při č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: Pauza po navázání spojení před odesláním prvního příkazu.

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. manufacturer: 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 volá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, použije cFos Charging Manager výchozí hodnoty, které ve většině případů fungují dobře.

Dalším krokem v definici JSON je definice proměnných, které měřič používá ke čtení nebo výpočtu hodnot proudu, napětí atd.
Správce nabíjení rozpoznává následující proměnné: type_designation, version, firmware_version, serial: Ty tvoří označení modelu, jak se zobrazuje v rozšířených informacích dlaždice.
Dotazuje se na ně jednou při nastavování 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 těchto hodnot pokusí vypočítat napětí_l1..l3, podepsaný proud_l1..l3, výkon_w a výkon_va. Není nutné zadávat všechny proměnné.
Správce nabíjení cFos se pokusí vypočítat hodnoty z existujících proměnných. import_wh, export_wh: Správce nabíjení používá tyto proměnné k zobrazení import_wh a export_wh. U jednosměrných měřičů (např. střídačů) byste měli vždy definovat pouze import_wh.

Pouze pro obousměrné měřiče (např. měřiče pro ukládání nebo referenční měřiče sítě) by měl být definován export_wh. soc: Pokud je k dispozici, zobrazuje se zde stav nabití bateriového úložiště v % v dlaždici.
Můžete také definovat další proměnné s různými názvy, které se načítají při každé aktualizaci nebo se vypočítávají pomocí vzorců. Pokud definujete proměnné začínající na "CM.", např. CM._set_price, přiřazené hodnoty se uloží do globálních proměnných Charging Manager (viz níže) a lze se na ně odpovídajícím způsobem dotazovat.
Proměnné s *: Pokud definujete proměnné začínající na '*', zobrazí se v uživatelském rozhraní v dlaždici měřiče pod rozšířenými informacemi, např. teplota akumulátorové jednotky.
Poznámka: Jako názvy proměnných lze používat pouze čísla a písmena a-z a A-Z.

Definice proměnné:


Objekt je pojmenován podle názvu výše uvedené proměnné a má následující vlastnosti: fixed: String s pevnou hodnotou.
Užitečné, pokud například nelze určit žádnou hodnotu, např. pro typ_označení nebo napětí. expr: String.
Proměnná se nečte, ale vyhodnocuje jako vzorec. type: Pokud není fixed nebo expr, typ proměnné: int16, uint16, int32, uint32, float, int64, string. To je důležité pro Modbus, aby bylo možné číst registry ve správném formátu. uint16 a uint32 jsou typy, které mohou přijímat pouze kladná čísla.
U JSON/HTTP můžete obvykle použít float. rozlišení: float. Čtená hodnota se vynásobí hodnotou 'resolution'. Hodnoty pro napětí musí být ve voltech, proudy v miliampérech, výkon ve wattech, energie ve watthodinách (Wh).
Se záporným 'resolution' můžete hodnotu invertovat, pokud má opačné znaménko. once: bool (true nebo false).
Je-li true, hodnota se načte pouze jednou při inicializaci zařízení, jinak se načítá pravidelně. address: číslo (Modbus) nebo řetězec (HTTP/JSON).
Číslo registru Modbus nebo HTTP URL hodnoty, která má být načtena. query ( dotaz): Řetězec.
V případě 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; pro proměnné "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 verze a.b a a.b.c.d. Při 'length' 2 a typu 'int16' nebo 'uint16' odděluje Charging Manager nízký a vysoký bajt tečkou, při 'int32' nebo 'uint32' nízký a vysoký word, při 'int64' nízký a vysoký dword. Pro 'lenth' 4 a 'int32' nebo 'uint32' rozdělí Charging Manager hodnotu na 4 bajty oddělené tečkou.
Pro 'int64' odpovídajícím způsobem 4 slova. regex: String. Je-li zadán regulární výraz, nemusí být odpověď čítače ve formátu JSON. Jako výsledek se vyhodnotí buď celá shoda regulárního výrazu, nebo první skupina. Použijte pouze v případě, že zařízení nevrací JSON.

Zde je seznam funkcí našich regulárních výrazů: libovolný znak: . pojmenované třídy:



\d \s \w \D \S \W anonymní třídy: [a-z0-9_], [^0-9], [^\d] skupiny s alternativami: (ab|cd|ef) nezachycené skupiny: (?:ab|cd) (greedy) jednou nebo vůbec: a?, a????
(greedy) mnoho nebo žádné: a*, a*?


(greedy) jednou nebo vícekrát: a+, a+? začátek řetězce: ^ konec řetězce: $

Definice vstupů:

Správce nabíjení si může vyžádat až 32 vstupních hodnot pro každé zařízení z různých registrů nebo prvků JSON. Vlastnost "Inputs" je pole JSON.
Pro každý vstup je třeba definovat následující vlastnosti: Adresa: Adresa (registr Modbus nebo URL).
count: vstupy: počet vstupů:
Počet vstupních bitů, které jsou tímto požadavkem načteny. dotaz: 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ě uloží bity do pole, na které se pak lze dotazovat pomocí vzorců Input1..InputN.

Definice výstupů:

Správce nabíjení může přepínat až 32 výstupů na jedno zařízení. Výstupy jsou definovány v poli "outputs" jako pole výstupních objektů JSON. Všechny výstupy se přepínají na konci každého aktualizačního cyklu, pokud se změnil stav příslušného výstupu.

Pro každý výstup je třeba v objektu výstupu definovat následující vlastnosti: Adresa: URL HTTP s volitelnou metodou HTTP, například GET http://www.example.com?output1=${var1}. Pro nastavení registrů Modbus můžete použít rozhraní HTTP API správce nabíjení cFos. Správce nabíjení rozpozná vhodné přístupy na localhost a přesměruje požadavek na interní obslužný program, takže nepotřebujete autorizaci jako u externích přístupů HTTP API. Pokud je adresa URL po všech záměnách prázdná, není nastaven žádný výstup. Výstupy lze například přepínat pouze v případě, že existují určité proměnné (viz vzorce: funkce exists()). V adrese můžete také zadat ${adresa} a ${id}. Jedná se o aktuální adresu zařízení a Modbus ID definované v nastavení.
položky 'address' a 'id' se používají hlavně pro použití rozhraní Modbus API (viz níže). body: Nepovinné tělo protokolu HTTP pro POST nebo PUT.
V adrese URL a těle můžete použít ${expr} pro použití vzorců, které odkazují na globální proměnné správce nabíjení nebo z příslušného čítače. Vzorec 'expr' se vyhodnotí při nastavení výstupu a nahradí se v textu adresy URL nebo těla. 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 můžete 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 předání číselné hodnoty potřebujete nahradit jeden text v URL jiným v závislosti na vzorci, např. pro zásuvky Shelly WLAN, můžete to napsat takto: ${if expr`text1`text2}. Apostrof" je zpětný znak (kód ASCII 96). Pokud je 'expr' != 0, použije se text1, jinak text2. Pro zásuvku Shelly WLAN pak adresa URL vypadá například takto: http://<ip-addr>/relay/0?turn=${if expr`on`off}, tj. pokud expr != 0, pak Charging Manager zavolá http://<ip-addr>/relay/0?turn=on, jinak http://<ip-addr>/relay/0?turn=off.

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

Obnovení výstupů: Kromě pole "výstupy" můžete definovat také pole s názvem "reset", které má stejnou strukturu jako pole "výstupy". To umožňuje resetovat výstupy na jejich původní hodnoty, když je zařízení deaktivováno. To lze použít v kombinaci s uživatelsky definovanými proměnnými a funkcí "once": true k obnovení počátečního stavu zařízení.
Periodický zápis výstupů: U některých zařízení je třeba výstupy zapisovat periodicky, jinak zařízení obnoví hodnoty na "výchozí". Například paměť Kostal se vrátí ke svým výchozím pravidlům, pokud se do řídicí paměti nějakou dobu aktivně nezapisovalo. Chcete-li výstupy nastavovat periodicky, můžete před adresu předřadit #xxx#, kde xxx udává, za kolik sekund se výstup přepíše, i když hodnota, která se má zapsat, zůstala stejná. Pokud je například adresa /cnf?cmd=set_cm_vars&name=test&val=42, můžete použít #30#/cnf?cmd=set_cm_vars&name=test&val=42, abyste zajistili, že se tato hodnota zapíše každých 30 sekund.

Definice dotazovacího jazyka:

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. Ty pak můžete použít v (některých) parametrech Charging Manageru, pravidlech nabíjení nebo k řízení výstupů. Jako proměnnou můžete zapsat také Ex.member nebo Mx.member. V tomto případě jsou Exa MxID zařízení wallboxu nebo měřiče nastaveného ve Správci nabíjení. 'member' je "uživatelsky definovaná" proměnná, která je uložena v příslušném zařízení. Některé z proměnných mohou mít zvláštní význam: Pro KEBA je 'out1' spínací výstup, pro měřiče ABB B23 jsou 'out1' a 'out2' spínací výstupy (u modelů, které to podporují). Jednička výstup zapne, nula jej opět vypne.

Pokud máte spotřebiče, které se musí za určitých podmínek zapnout, ale pak ještě chvíli běžet (např. pračka, myčka), můžete také definovat proměnnou jako "spouštěč". Pak je vzorec proměnné podmínkou, při které se proměnná nastaví na hodnotu 1. Po nastavitelné době se pak opět nastaví na 0. "Opakovací podmínka" umožňuje, aby se doba do vypnutí (tj. nastavení proměnné na 0) znovu a znovu prodlužovala, dokud je podmínka splněna.

Poznámka: Jako názvy proměnných lze používat pouze čísla a písmena a-z a A-Z.

Pro testovací účely můžete zobrazit proměnné správce nabíjení a měřiče, např. aktuální ceny Awattaru:


                        Zobrazení proměnných čítače na obrazovce

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 nastaví na konci každého aktualizačního cyklu, pokud se jejich stav změnil. Pokud chcete ovládat spínací výstupy v uživatelsky definovaných zařízeních, doporučuje se výše uvedená konvence (viz proměnné Charging Manageru): 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). Stejně jako v konfiguraci jednotlivých zařízení zadejte jako adresu pro Modbus RTU COMx,bd,8,p,s, kde x je číslo portu COM, bd přenosová rychlost, p parita ("N", "E" nebo "O") a s počet stop bitů (1 nebo 2). Pro Modbus TCP je adresou IP adresa zařízení v síti Charging Manager 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 tyto další parametry dotazu: addr:


F unc: Čí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. type: "w" 16bit (výchozí), d = 32bit, f = float, q = 64bit, s = string.

c nt: číslo: Maximální délka řetězce v registrech, u jiných typů vynechat nebo nastavit na 1. order: řetězec: 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".