Merk: cFos Charging Manager kan lese ut de fleste solcelleomformere som bruker SunSpec (enhetstype "SunSpec Solar Inverter / Meter"). I dette tilfellet trenger du ikke å opprette en egen målerdefinisjon.
Med cFos Charging Manager kan du lage dine egne målerdefinisjoner for å støtte målere som ikke er tilgjengelige i standardrepertoaret. Det finnes for øyeblikket tre typer: Modbus-tellere, HTTP/JSON-tellere og MQTT/JSON-tellere. Definisjonsfilene for disse tellerne er svært like. Modbus-tellere leser data fra bestemte registre via Modbus, mens HTTP/JSON-tellere henter data via HTTP-forespørsler og leser inn JSON som svar. For MQTT/JSON-tellere abonnerer cFos Charging Manager på MQTT-emner og leser meldinger som er publisert under emnet, som JSON. CFos Charging Manager bruker et lite "Query Language" for lesing. Her er dokumentasjonen av MQTT-funksjonene i cFos Charging Manager.
I tillegg til en rekke forhåndsdefinerte variabler, for eksempel strøm og spenning, kan brukerdefinerte tellere også lese inn ukjente, brukerdefinerte variabler, spørre om innganger og angi utganger. Ved å lese inn variabler og angi utganger kan formler analyseres. I kombinasjon med Charging Manager-variablene og de globale Charging Manager-utgangene som er beskrevet nedenfor, er dette en kraftig funksjon som til og med muliggjør visse hjemmeautomatiseringsoppgaver og styring av eksterne enheter, for eksempel batterilagringsenheter. Gi oss gjerne tilbakemelding hvis du utfører kontrolloppgaver med dette. Vi er svært interessert i hva kundene våre kontrollerer med cFos Charging Manager, og det hjelper oss med å videreutvikle Charging Manager i henhold til kundenes behov.
Her er en enkel eksempeldefinisjon for Modbus som leser et enkelt register for aktiv effekt. Du kan enkelt endre registernummeret for din spesifikke applikasjon:
Eksempel på definisjon for et enkelt register.
Her er et eksempel på en definisjon for Modbus og en for HTTP/JSON:
Last ned eksempel på definisjon for Modbus-teller
Last ned eksempeldefinisjon for HTTP/JSON-teller
Noen få slike filer er allerede inkludert i Charging Manager, men du kan laste opp dine egne filer under "System Configuration" og også slette dem igjen.
Her finner du de fleste av målerdefinisjonene vi tilbyr:
Last ned medfølgende tellerdefinisjoner
Hvis du har opprettet din egen målerfil og den kan være relevant for andre brukere, vil vi være veldig takknemlige hvis du kan gjøre den tilgjengelig for oss. Vi vil da levere den med fremtidige versjoner av Charging Manager.
Last ned tellerdefinisjoner for flere tellereTellerdefinisjoner er JSON-filer med et globalt JSON-objekt som har egenskaper og underobjekter. "rtype" bestemmer typen leseoperasjon: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. "mtype" bestemmer enhetstypen: 0 = Annen enhet, 1 = Måler, 2 = Vekselretter, 4 = Batterilager.
Du kan angi tall enten i desimal eller hex med prefikset "0x". Kommentarer på én linje med '//' er også tillatt.
Vi anbefaler at du kjører definisjonsfilene dine gjennom en JSON5-validator, f.eks. denne JSON5-validatoren Du bør absolutt ha lest kapitlet Formler for å forstå hvilke verdier som kan brukes i formler i den følgende referansen.
silence_period, i ms: Bestemmer pauselengden før en Modbus RTU-tilgang, slik at enheten gjenkjenner starten på en melding. silence_same_slave, true: Pausen opprettholdes også for flere tilganger til samme enhet. retries: Antall nye forsøk hvis enheten ikke svarer. rcv_timeout: i ms: Den maksimale ventetiden til enheten svarer, per tilgang.
modbus_read: modbus_read:
Funksjonsnummeret til Modbus-kommandoen for lesing, vanligvis 3 eller 4. modbus_read_max_registers: Det maksimale antallet registre som kan leses om gangen. modbus_allow_gaps: true = ubenyttede registerområder kan leses i en leseoperasjon.
connect_timeout: i msek: Maksimal ventetid for en TCP-tilkobling. delay_after_connect: i msek: Pause etter at tilkoblingen er opprettet, før den første kommandoen sendes.
upd_delay: i msek: Bestemmer intervallet for når en enhet kan leses.
Noen enheter blir overbelastet hvis de blir forespurt for ofte. manufacturer: String, navnet på produsenten.
Dette vises i den utvidede informasjonen på flisen. delay_accumulated: true = Akkumulerte verdier (kWh) avleses bare hvert 3. sekund eller hvis det er nok strøm. false = Disse verdiene avleses alltid. ui_addr: URL, hvis forskjellig fra enhetens adresse for oppkalling av webgrensesnittet. reserved: Array med verdier som tolkes som 0 (nyttig hvis enheten støtter visse verdier avhengig av modell).
Hvis du utelater egenskapene som er oppført ovenfor, bruker cFos Charging Manager standardverdier, noe som fungerer bra i de fleste tilfeller.
Det neste trinnet i JSON-definisjonen er definisjonen av variabler som måleren bruker til å lese eller beregne verdier for strøm, spenning osv.
Charging Manager gjenkjenner følgende variabler: type_designation, version, firmware_version, serial: Disse danner modellbetegnelsen, som vist i den utvidede informasjonen på flisen.
Disse forespørres én gang når måleren settes opp eller tilbakestilles. voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: CFos Charging Manager forsøker å beregne ut fra disse verdiene for voltage_l1..l3, signed current_l1..l3, power_w og power_va. Du trenger ikke å spesifisere alle variablene.
CFos Charging Manager forsøker å beregne verdiene fra de eksisterende variablene. import_wh, export_wh: Charging Manager bruker disse variablene til å vise import_wh og export_wh. For enveismålere (f.eks. vekselrettere) bør du bare definere import_wh.
Bare for toveis målere (f.eks. lagrings- eller nettreferansemålere) bør export_wh defineres. soc: Hvis tilgjengelig, vises ladetilstanden til et batterilager her i % i flisen.
Du kan også definere andre variabler med andre navn, som leses ut ved hver oppdatering eller beregnes ved hjelp av formler. Hvis du definerer variabler som begynner med "CM.", f.eks. CM._set_price, lagres de tilordnede verdiene i de globale Charging Manager-variablene (se nedenfor) og kan spørres ut på tilsvarende måte.
Variabler med *: Hvis du definerer variabler som begynner med "*", vises disse i brukergrensesnittet i målerflisen under utvidet informasjon, f.eks. temperaturen til en batterilagringsenhet.
Merk: Bare tall og bokstavene a-z og A-Z kan brukes som variabelnavn.
Objektet er oppkalt etter navnet på variabelen som er oppført ovenfor, og har følgende egenskaper: fixed: String med en fast verdi.
Nyttig hvis det for eksempel ikke er mulig å bestemme noen verdi, f.eks. for type_betegnelse eller spenning. expr: String.
Variabelen leses ikke ut, men evalueres som en formel. type: Hvis ikke fixed eller expr, variabelens type: int16, uint16, int32, uint32, float, int64, string. Dette er viktig for Modbus for å kunne lese registrene i riktig format. uint16 og uint32 er typer som bare kan akseptere positive tall.
Med JSON/HTTP kan du vanligvis bruke float. oppløsning: float. Den avleste verdien multipliseres med "resolution". Verdier for spenning må være i volt, strøm i milliampere, effekt i watt, energi i watt-timer (Wh).
Med negativ "oppløsning" kan du invertere en verdi hvis den har motsatt fortegn. once: bool (true eller false).
Hvis true, leses verdien bare én gang når enheten initialiseres, ellers leses den med jevne mellomrom. address: nummer (Modbus) eller streng (HTTP/JSON).
Modbus-registernummeret eller HTTP-URL-en til verdien som skal leses. query: Streng.
For HTTP JSON, spesifikasjonen i spørrespråket til Charging Manager som den finner verdien som skal leses i JSON-svaret med. order: String. For Modbus, byte-rekkefølgen, enten "hl" eller "lh", som verdien er tilstede i. length: number. For Modbus, lengden på en streng i registre; for variablene "version" og "firmware_version" brukes "length" til å gjøre numeriske versjoner om til strenger med prikker. Verdier på 2 eller 4 er tillatt for "length", som da resulterer i versjonsformatene a.b og a.b.c.d. Med 'lengde' 2 og type 'int16' eller 'uint16' skiller Charging Manager lav og høy byte med en prikk, med 'int32' eller 'uint32' lavt og høyt ord, med 'int64' lavt og høyt dword. Med 'lenth' 4 og 'int32' eller 'uint32' deler Charging Manager opp verdien i 4 byte adskilt av en prikk.
For 'int64' er de 4 ordene tilsvarende. regex: Streng. Hvis et regulært uttrykk er spesifisert, trenger ikke tellerresponsen å være i JSON. Enten hele det regulære uttrykket eller den første gruppen evalueres som resultat. Bruk kun denne funksjonen hvis enheten ikke returnerer JSON.
Her er en liste over funksjonene i de regulære uttrykkene våre: any char: . named classes:
\d \s \w \D \S \W anonyme klasser: [a-z0-9_], [^0-9], [^\d] grupper med alternativer: (ab|cd|ef) ikke-innfangede grupper: (?:ab|cd) (grådig) én eller ingen: a??, a????
(grådig) mange eller ingen: a*, a*?
(grådig) én eller flere ganger: a+, a+? begynnelsen av strengen: ^ slutten av strengen: $
Charging Manager kan be om opptil 32 inngangsverdier per enhet fra ulike registre eller JSON-elementer. Egenskapen "Inputs" er en JSON-array.
Du må definere følgende egenskaper for hver inngang: address: Adresse (Modbus-register eller URL).
count: Antall:
Antall inngangsbiter som leses med denne forespørselen. query: For HTTP/JSON, spørrespråk for å finne verdien i svaret.
CFos Charging Manager leser alle innganger som er definert på denne måten ved hver oppdatering, og lagrer bitene internt i en matrise, som deretter kan spørres ved hjelp av formlene Input1..InputN.
Charging Manager kan bytte opptil 32 utganger per enhet. Utgangene er definert i "outputs" som en JSON-array med utgangsobjekter. Alle utganger byttes på slutten av hver oppdateringssyklus hvis statusen til den respektive utgangen har endret seg.
Du må definere følgende egenskaper i utgangsobjektet for hver utgang: adresse: HTTP-URL med valgfri HTTP-metode, f.eks. GET http://www.example.com?output1=${var1}. For å angi Modbus-registre kan du bruke HTTP-API-et til cFos Charging Manager. Charging Manager gjenkjenner passende tilganger på localhost og omdirigerer forespørselen til den interne behandleren, slik at du ikke trenger autorisasjon som ved eksterne HTTP API-tilganger. Hvis URL-adressen er tom etter alle utskiftninger, angis ingen utdata. Du kan for eksempel bare bytte utdata hvis visse variabler finnes (se formler: exists()-funksjonen). Du kan også spesifisere ${address} og ${id} i adressen. Dette er den gjeldende enhetsadressen og Modbus-ID-en som er definert i innstillingene.
"address" og "id" brukes hovedsakelig til å bruke Modbus API (se nedenfor). body: Valgfri HTTP-body for POST eller PUT.
I URL-adressen og brødteksten kan du bruke formler som refererer til globale ladeadministratorvariabler eller fra den respektive telleren ved hjelp av ${expr}. Formelen "expr" evalueres når utdataene angis og erstattes i teksten i URL-adressen eller brødteksten. Hvis http://www.example.com?output1=1 i eksempelet ovenfor angir utdata og http://www.example.com?output1=0 sletter den, kan du definere en variabel 'var1' og angi den til 1 eller 0 etter behov. På denne måten kan du også skrive numeriske verdier for å kontrollere minneytelsen i Modbus-registre, som du tidligere har lagret i en variabel ved hjelp av en formel.
Hvis du i stedet for å sende en tallverdi må erstatte en tekst i URL-en med en annen avhengig av formelen, f.eks. for Shelly WLAN-stikkontakter, kan du skrive dette på følgende måte: ${if expr`text1`text2}. Apostrofen er en backtick (ASCII-kode 96). Hvis 'expr' != 0, brukes tekst1, ellers tekst2. For Shelly WLAN-sokkelen ser URL-en slik ut, for eksempel: http://<ip-addr>/relay/0?turn=${if expr`on`off}, dvs. hvis expr != 0, kaller Charging Manager http://<ip-addr>/relay/0?turn=on, ellers http://<ip-addr>/relay/0?turn=off.
Hvis du angir en relativ bane som URL-adresse, vil Charging Manager bruke adressen som er konfigurert for den respektive enheten. Hvis du angir "localhost" som domene, bruker Charging Manager adressen til enheten den kjører på. Hvis den gjenkjenner tilgang til sitt eget API, bruker den den interne håndteringen i stedet for å utføre en full HTTP-tilgang, slik at du ikke trenger å oppgi brukernavn og passord i tellerdefinisjonen. En URL-adresse som begynner med en "*", fører til at Charging Manager alltid utfører en full HTTP-tilgang.
Tilbakestill utganger: I tillegg til en "outputs"-matrise kan du også definere en matrise med navnet "resets" som er strukturert på samme måte som "outputs"-matrisen. Dette gjør det mulig å tilbakestille utgangene til deres opprinnelige verdier når enheten deaktiveres. Dette kan brukes i kombinasjon med brukerdefinerte variabler og "once": true for å tilbakestille enheten til den opprinnelige tilstanden.
Skriv utganger med jevne mellomrom: For noen enheter må utgangene skrives med jevne mellomrom, ellers vil enheten tilbakestille verdiene til "standard". Kostal-minnet går for eksempel tilbake til standardreglene hvis minnekontrollen ikke har blitt skrevet aktivt på en stund. For å angi utganger med jevne mellomrom kan du prefikse adressen med #xxx#, der xxx angir hvor mange sekunder utgangen skal skrives på nytt, selv om verdien som skal skrives, er den samme. Hvis adressen for eksempel er /cnf?cmd=set_cm_vars&name=test&val=42, kan du bruke #30#/cnf?cmd=set_cm_vars&name=test&val=42 for å sikre at denne verdien blir skrevet hvert 30. sekund.
For øyeblikket kan medlemsnavn og operatorene "." og "[]" brukes i søkeuttrykkene "query", eksempler:
test | Element kalt "test |
navn1.navn2 | Elementet "name2" i underobjektet "name1" |
navn[idx] | Elementet "idx" av objektelementet "name". "idx" kan være et tall, f.eks. for matriser eller en streng |
navn["u2"] | Element "u2" av objektelementet "name", tilsvarer "name.u2" |
name[{"el1": "v1", "el2": 3}].value | Velg matriseelementet som oppfyller betingelsen i objektnotasjonen, og evaluer elementet med navnet "value". Her velges for eksempel i matrisen "name" det elementet som har objektelementene "el1" med verdien "v1" og "el2" med verdien 3, og deretter returneres verdien av elementet "value" fra dette objektet. |
Du kan opprette variabler i Charging Manager-konfigurasjonen. Du kan bruke en fast verdi eller en formel som verdi. På slutten av hver oppdateringssyklus beregner Charging Manager verdien av disse variablene på nytt hvis det er nødvendig. Du kan deretter bruke disse i (visse) Charging Manager-parametere, ladningsregler eller til å kontrollere utganger. Du kan også skrive Ex.member eller Mx.member som en variabel. I dette tilfellet er Exog Mxenhets-ID-en til en Wallbox-ladestasjon eller måler som er satt opp i Charging Manager. 'member' er en "brukerdefinert" variabel som lagres i den tilsvarende enheten. Noen av variablene kan ha en spesiell betydning: For KEBA er 'out1' en koblingsutgang, for ABB B23-målere er 'out1' og 'out2' koblingsutganger (for modeller som støtter dette). En 1 kobler inn utgangen, en 0 kobler den ut igjen.
Hvis du har apparater som må slås på under visse betingelser, men som deretter går en stund (f.eks. vaskemaskin, oppvaskmaskin), kan du også definere variabelen som en "trigger". Formelen for variabelen er da betingelsen som setter variabelen til 1. Etter en justerbar tid settes den deretter til 0 igjen. En "retriggerbetingelse" gjør det mulig å forlenge tiden frem til utkobling (dvs. sette variabelen til 0) igjen og igjen så lenge betingelsen er oppfylt.
Merk: Bare tall og bokstavene a-z og A-Z kan brukes som variabelnavn.
For testformål kan du vise ladeadministrator- og målervariabler, f.eks. gjeldende Awattar-priser:
I Charging Manager-konfigurasjonen kan du konfigurere globale utganger som beskrevet ovenfor i tellerdefinisjonen under "Utganger". Disse stilles inn på slutten av hver oppdateringssyklus hvis statusen deres har endret seg. Hvis du ønsker å styre koblingsutganger i brukerdefinerte enheter, anbefales ovennevnte konvensjon (se Charging Manager-variabler): Du angir variabler med navnene "out1", "out2" osv. i den brukerdefinerte telleren, og setter opp utganger i den brukerdefinerte telleren som bytter utgang avhengig av verdien til disse variablene.
Modbus API i Charging Manager brukes til å styre Modbus-enheter som har en hvilken som helst Modbus RTU- eller TCP-adresse (tilgjengelig fra Charging Manager). Som i konfigurasjonen av de individuelle enhetene, angir du COMx,bd,8,p,s som adresse for Modbus RTU, der x er COM-portnummeret, bd baud-hastigheten, p pariteten ('N', 'E' eller 'O') og s antall stoppbiter (1 eller 2). For Modbus TCP er adressen IP-adressen til enheten i Charging Manager-nettverket, inkludert portnummeret.
URL-adressen (for HTTP GET) til Modbus API er: /cnf?cmd=modbus_get eller /cnf?cmd=modbus_set cFos Charging Manager støtter følgende ekstra spørringsparametere: addr:
Modbus RTU- eller TCP-enhetsadressen nevnt ovenfor. func: Modbus-funksjonsnummer, f.eks. for lesing 3 eller 4, for skriving 6 eller 16. id: Enhets-ID for Modbus-enheten. reg: Modbus-registernummeret.
Verdien kan angis i desimal eller hex (med prefikset 0x). val: number: Verdi som skal skrives til registeret.
Utelates ved lesing. type: 'w' 16bit (standard), d = 32bit, f = float, q = 64bit, s = string.
c nt: number: Den maksimale lengden på strengen i registre, utelat for andre typer eller sett til 1. order: String: Byte-rekkefølgen, enten "hl" eller "lh".
Merk: Hvis "telleren" din primært har kontrolloppgaver, kan du krysse av for alternativet "Skjul enhet" i innstillingene for denne flisen slik at denne enheten ikke vises på startsiden.
Merk: Noen målere som avleses via HTTP krever et brukernavn/passord som autorisasjon. Du kan angi dette i adressen for HTTP-tilgang, f.eks. med http://username:password@192.168.2.111.
Hvis brukernavnet eller passordet ditt inneholder en "@", må du erstatte den med "%40".