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 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 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. Přípustné 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č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.
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 dostatek energie. 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, převezme správce nabíjení cFos 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ěřicí přístroj používá ke čtení nebo výpočtu hodnot proudu, napětí atd. Správce nabíjení používá následující proměnné. Charging Manager 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. 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 nich pokusí vypočítat hodnoty napětí_l1..l3, podepsaného proudu_l1..l3, power_w a power_va. 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.
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. Export_wh by měl být definován pouze pro obousměrné měřiče (např. akumulační nádrže nebo referenční měřiče sítě).

soc: Pokud je k dispozici, zobrazuje se v dlaždici stav nabití akumulační nádrže v %.
Kromě toho můžete definovat další proměnné s různými názvy, které se odečí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 bateriového úložiště.

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 nevyčte, ale vyhodnotí 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 lze obvykle použít float. resolution: float, načítaná hodnota se vynásobí 'resolution'. Hodnoty pro napětí musí být ve voltech, proudy v miliampérech, výkon ve wattech, energie ve watthodinách (Wh).


Při záporném 'rozlišení' můžete hodnotu invertovat, pokud má opačné znaménko. once: bool (true nebo false), pokud true, hodnota se čte pouze jednou při inicializaci zařízení, jinak periodicky. address: number (Modbus) nebo string (HTTP/JSON), číslo registru Modbus nebo URL HTTP hodnoty, která se má číst. query:
String, pro HTTP JSON specifikace v dotazovacím jazyce Charging Manageru, pomocí kterého 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 povoleny hodnoty 2 nebo 4, které pak vedou k formátům verzí 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. Pokud je 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í 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ů:

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 ve výstupním objektu definovat následující vlastnosti:
adresa: HTTP URL 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í detekuje odpovídající 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ů přes HTTP API. Pokud je adresa URL po všech záměnách prázdná, není nastaven žádný výstup. Výstupy můžete přepínat například pouze v případě, že existují určité proměnné (viz vzorce: funkce exists()). V adrese můžete navíc zadat ${adresa} a ${id}. Jedná se o aktuální adresu zařízení a Modbus ID definované v nastavení. Adresa a id se používají hlavně pro použití rozhraní Modbus API (viz níže).
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é Charging Manageru nebo z příslušného čítače. Vzorec 'expr' je vyhodnocen při nastavování výstupu a nahrazen v textu adresy URL nebo těla. Pokud ve výše uvedeném příkladu http://www.example.com?output1=1 nastavuje výstup a http://www.example.com?output1=0 jej maže, 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 v URL potřebujete nahradit jeden text jiným v závislosti na vzorci, například u zásuvek Shelly WLAN, můžete to zapsat takto: ${if expr`text1`text2}. Apostrof' je zpětný znak (kód ASCII 96). Pokud je 'expr' != 0, vloží se text1, jinak text2. Pro zásuvku Shelly WLAN pak adresa 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, převezme 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 zjistí přístup k vlastnímu rozhraní API, použije interní obslužnou rutinu namísto provedení úplného přístupu HTTP, takže v definici počítadla nemusíte ukládat 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 lze použít k resetování výstupů na jejich původní hodnoty, když je zařízení deaktivováno. Pomocí něj, v kombinaci s uživatelsky definovanými proměnnými a funkcí "once": true, můžete přístroj uvést zpět do počátečního stavu.
Periodický zápis výstupů: U některých zařízení je nutné výstupy zapisovat periodicky, jinak zařízení obnoví hodnoty na "výchozí". Například paměť Kostal znovu použije svá výchozí pravidla, pokud se do paměti řízení po nějakou dobu aktivně nezapisovalo. Chcete-li výstupy nastavovat periodicky, můžete adresu předřadit pomocí #xxx#, kde xxx udává, kolik sekund se výstup přepisuje, 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 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.

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.

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 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".