Dokumentaatio

Käyttäjän määrittelemät laskurit

Huomautus: cFos Charging Manager voi lukea useimpia SunSpecin avulla toimivia aurinkovaihtosuuntaajia (laitetyyppi "SunSpec Solar Inverter / Meter"). Tässä tapauksessa sinun ei tarvitse luoda omaa mittarimääritelmää.

CFos Charging Managerin avulla voit luoda omia mittarimäärityksiäsi tukeaksesi mittareita, joita ei ole saatavilla vakiovalikoimassa. Tällä hetkellä on kolme tyyppiä: Modbus-laskurit, HTTP/JSON-laskurit ja MQTT/JSON-laskurit. Näiden laskureiden määrittelytiedostot ovat hyvin samanlaisia. Modbus-laskurit lukevat tietonsa tietyistä rekistereistä Modbusin kautta, kun taas HTTP/JSON-laskurit hakevat tietonsa HTTP-pyynnöllä ja jäsentävät JSON:n vastauksena. MQTT/JSON-mittareiden osalta cFos Charging Manager tilaa MQTT-aiheita ja jäsentää aiheen alla julkaistut viestit JSON-muodossa. CFos Charging Manager käyttää jäsentämiseen pientä "kyselykieltä". Tässä on dokumentaatio cFos Charging Managerin MQTT-ominaisuuksista.

Käyttäjän määrittelemillä laskureilla voidaan lukea tuntemattomia, käyttäjän määrittelemiä muuttujia, kysyä tuloja ja asettaa lähtöjä ennalta määritettyjen muuttujien, kuten virran ja jännitteen, lisäksi. Muuttujien lukeminen ja lähtöjen asettaminen mahdollistaa kaavojen analysoinnin. Yhdessä jäljempänä kuvattujen Charging Manager -muuttujien ja yleisten Charging Manager -lähtöjen kanssa tämä on tehokas ominaisuus, joka mahdollistaa jopa tietyt kotiautomaatiotehtävät ja ulkoisten laitteiden, kuten akkuvarastojen, ohjauksen. Jos toteutat ohjaustehtäviä tämän avulla, anna meille palautetta. Olemme hyvin kiinnostuneita siitä, mitä ihmiset ohjaavat cFos Charging Managerilla, ja se auttaa meitä kehittämään Charging Manageria edelleen asiakkaiden tarpeiden mukaan.

Tässä on yksinkertainen esimerkki Modbus-määrittelystä, joka lukee yhden rekisterin aktiivitehon. Voit helposti muuttaa rekisterinumeroa sovellustasi varten:
Esimerkki yhden rekisterin määritelmästä.

Tässä on esimerkkimääritelmä Modbus- ja HTTP/JSON-määritelmää varten:
Lataa esimerkkimääritelmä Modbus-laskureita varten
Lataa esimerkkimäärittely HTTP/JSON-laskuria varten

Charging Managerin mukana toimitetaan jo muutamia tällaisia tiedostoja, mutta voit ladata ja poistaa omia tiedostojasi kohdassa "Järjestelmän konfigurointi".
Täältä löydät suuren osan toimittamistamme mittarimäärityksistä:
Lataa toimitetut laskurin määritelmät

Jos olet luonut oman laskuritiedostosi ja se voisi olla merkityksellinen muille käyttäjille, olisimme hyvin kiitollisia, jos voisit antaa sen saatavillemme. Toimitamme sen sitten Charging Managerin tulevien versioiden mukana.

Lataa lisälaskureiden laskurimääritykset

Määrittelytiedoston rakenne:

Laskurimääritykset ovat JSON-tiedostoja, joissa on yleinen JSON-objekti, jolla on ominaisuuksia ja aliobjekteja. 'rtype' määrittää lukutoiminnon tyypin: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. 'mtype' määrittää laitetyypin: 0 = Muu laite, 1 = Mittari, 2 = Invertteri, 4 = Akkuvarasto.

Voit määrittää numerot joko desimaalilukuna tai heksadesimaalilukuna etuliitteellä 0x. Yksiriviset kommentit, joissa käytetään //, ovat myös sallittuja.

Suosittelemme, että määrittelytiedostot ajetaan JSON5-validointiohjelman läpi, esimerkiksi tämän JSON5-validointiohjelman avulla Sinun on ehdottomasti luettava Kaavat-kappale, jotta ymmärrät, mitä arvoja voidaan käyttää seuraavassa viitteessä olevissa kaavoissa.

Modbus-määrityksillä on objekti 'rtu', jolla on seuraavat ominaisuudet:




silence_period, msec. määrittää tauon pituuden ennen Modbus RTU -yhteyttä, jotta laite tunnistaa viestin alkamisen. silence_same_slave, true: Tauko säilytetään myös useiden samaan laitteeseen kohdistuvien yhteyksien yhteydessä. retries: Uusintayritysten määrä, jos laite ei vastaa. rcv_timeout: msec. enimmäisodotusaika yhteyttä kohti, kunnes laite vastaa.

Nämä yleiset ominaisuudet koskevat Modbus TCP:tä ja RTU:ta:

modbus_read:

M odbus_read_max_registers: Maksimimäärä rekistereitä, jotka voidaan lukea kerrallaan. modbus_allow_gaps: true = Käyttämättömät rekisterialueet voidaan lukea lukutoiminnolla. modbus_allow_gaps: true = Käyttämättömät rekisterialueet voidaan lukea lukutoiminnolla.

Modbus TCP:lle ja HTTP/JSONille on olemassa 'tcp'-olio, jolla on seuraavat ominaisuudet:


connect_timeout: on msec. TCP-yhteyden enimmäisodotusaika. delay_after_connect: on msec. Tauko yhteyden muodostamisen jälkeen ennen ensimmäisen komennon lähettämistä.

Molemmilla määritelmätyypeillä (Modbus ja HTTP/JSON) on myös seuraavat ominaisuudet:

upd_delay: msec. määrittää aikavälin, jolla laite voidaan lukea.
Jotkin laitteet ylikuormittuvat, jos niitä kysytään liian usein. manufacturer: String, valmistajan nimi.


Tämä näytetään laatan laajennetuissa tiedoissa. delay_accumulated: true = Kertyneet arvot (kWh) kysytään vain 3 sekunnin välein tai jos virta riittää. false = Nämä arvot kysytään aina. ui_addr: URL-osoite, jos se on eri kuin laitteen osoite web-käyttöliittymän kutsumista varten. reserved: Array, jossa on arvoja, jotka tulkitaan 0:ksi (hyödyllinen, jos laite tukee tiettyjä arvoja mallista riippuen).

Jos jätät edellä luetellut ominaisuudet pois, cFos Charging Manager käyttää oletusarvoja, jotka toimivat hyvin useimmissa tapauksissa.

Seuraava vaihe JSON-määrityksessä on niiden muuttujien määrittely, joita mittari käyttää virran, jännitteen jne. arvojen lukemiseen tai laskemiseen.
Charging Manager tunnistaa seuraavat muuttujat: type_designation, version, firmware_version, serial: Nämä muodostavat mallinimityksen, joka näkyy laatan laajennetuissa tiedoissa.
Näitä kysytään kerran, kun mittaria asetetaan tai nollataan. voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: CFos Charging Manager yrittää laskea näistä arvoista jännite_l1..l3, allekirjoitettu virta_l1..l3, power_w ja power_va. Kaikkia muuttujia ei tarvitse määrittää.
CFos Charging Manager yrittää laskea arvot olemassa olevista muuttujista. import_wh, export_wh: Charging Manager käyttää näitä muuttujia näyttämään import_wh ja export_wh. Yksisuuntaisille mittareille (esim. invertterit) kannattaa määritellä aina vain import_wh.

Ainoastaan kaksisuuntaisille mittareille (kuten varasto- tai verkkoviitemittareille) tulisi määritellä export_wh. soc: Jos käytettävissä, akkuvaraston varaustila näytetään tässä laatassa prosentteina.
Voit määritellä myös muita eri nimisiä muuttujia, jotka luetaan jokaisen päivityksen yhteydessä tai lasketaan kaavojen avulla. Jos määrittelet muuttujia, jotka alkavat kirjaimella CM., esim. CM._set_price, määritetyt arvot tallennetaan globaaleihin Charging Manager -muuttujiin (ks. jäljempänä) ja niitä voidaan kysyä vastaavasti.
Muuttujat, joissa on *: Jos määrittelet muuttujia, jotka alkavat *-alkuisilla kirjaimilla, ne näytetään käyttöliittymässä mittarilaatassa laajennettujen tietojen alla, esim. akkuvarastoyksikön lämpötila.

Muuttujan määritelmä:


Objekti on nimetty edellä mainitun muuttujan nimen mukaan, ja sillä on seuraavat ominaisuudet: fixed: merkkijono, jolla on kiinteä arvo.

Hyödyllinen, jos esimerkiksi arvoa ei voida määrittää, esim. type_designation tai voltage. expr: merkkijono, muuttujaa ei lueta vaan se arvioidaan kaavana. type: Jos ei fixed tai expr, muuttujan tyyppi: int16, uint16, int32, uint32, float, int64, string. Tämä on tärkeää Modbusin kannalta, jotta rekisterit voidaan lukea oikeassa muodossa. uint16 ja uint32 ovat tyyppejä, jotka voivat hyväksyä vain positiivisia lukuja.
JSON/HTTP:n kanssa voit yleensä käyttää float-tyyppiä. resolution: float, luettu arvo kerrotaan 'resolution'-arvolla. Jännitteen arvojen on oltava voltteina, virtojen milliampeereina, tehon watteina ja energian wattitunteina (Wh).


Negatiivisella 'resoluutiolla' voit kääntää arvon, jos sillä on vastakkainen merkki. once: bool (true tai false), jos true, arvo luetaan vain kerran, kun laite alustetaan, muutoin jaksoittain. address: numero (Modbus) tai merkkijono (HTTP/JSON), luettavan arvon Modbus-rekisterin numero tai HTTP-URL-osoite. query:
Järjestys: Merkkijono, Modbusin osalta tavujärjestys, joko "hl" tai "lh", jossa arvo on. pituus: luku, Modbusin osalta merkkijonon pituus rekistereinä. Muuttujien "version" ja "firmware_version" osalta "length" käytetään muuttamaan numeeriset versiot merkkijonoiksi, joissa on pisteitä. Pituuden arvot 2 tai 4 ovat sallittuja, jolloin tuloksena ovat versiomuodot a.b ja a.b.c.d. Kun 'length' on 2 ja tyyppi 'int16' tai 'uint16', latauksenhallinta erottelee matalan ja korkean tavun pisteellä, kun 'int32' tai 'uint32' matalan ja korkean sanan, kun 'int64' matalan ja korkean dwordin. Jos "lenth" 4 ja "int32" tai "uint32", veloitustenhallinta jakaa arvon neljään tavuun, jotka on erotettu pisteellä.
Jos kyseessä on 'int64', 4 sanaa vastaavasti. regex: String. Jos säännöllinen lauseke on määritetty, laskurin vastauksen ei tarvitse olla JSON-muotoinen. Tulokseksi arvioidaan joko säännöllisen lausekkeen koko vastaavuus tai ensimmäinen ryhmä. Käytä tätä vain, jos laite ei palauta JSONia.

Tässä on luettelo säännöllisten lausekkeiden ominaisuuksista: any char: . named classes:



\d \s \w \D \S \W nimettömät luokat: [a-z0-9_], [^0-9], [^\d] ryhmät, joissa on vaihtoehtoja: (ab|cd|ef) ei-kiinnitetyt ryhmät: (?:ab|cd) (ahne) kerran tai ei yhtään: a?, a?????
(ahne) monta tai ei yhtään: a*, a*?


(ahne) kerran tai useammin: a+, a+? merkkijonon alku: ^ merkkijonon loppu: $

Panosten määritelmä:

Latauksenhallinta voi kysyä enintään 32 tuloarvoa laitetta kohti eri rekistereistä tai JSON-elementeistä. "Syötteet"-ominaisuus on JSON-joukko.
Kullekin syötteelle on määriteltävä seuraavat ominaisuudet: Osoite: Osoite (Modbus-rekisteri tai URL-osoite).
count:
Niiden tulobittien lukumäärä, jotka luetaan tällä pyynnöllä. query: HTTP/JSON:n osalta kyselykieli, jolla arvo etsitään vastauksesta.

CFos Charging Manager lukee kaikki tällä tavoin määritellyt tulot jokaisen päivityksen yhteydessä ja tallentaa bitit sisäisesti matriisiin, jota voidaan sitten kysyä kaavoilla Input1..InputN.

Tuotosten määritelmä:

Charging Manager voi kytkeä enintään 32 ulostuloa laitetta kohti. Lähdöt määritellään kohdassa "outputs" JSON-massana lähtöobjekteja. Kaikki lähdöt kytketään jokaisen päivityssyklin lopussa, jos kyseisen lähdön tila on muuttunut.

Kunkin lähdön lähtöobjektissa on määriteltävä seuraavat ominaisuudet: address: HTTP-URL-osoite, jossa on valinnainen HTTP-menetelmä, esim. GET http://www.example.com?output1=${var1}. Modbus-rekisterien asettamiseen voit käyttää cFos Charging Managerin HTTP-API:tä. Charging Manager tunnistaa localhostin sopivat käyttöoikeudet ja ohjaa pyynnön sisäiseen käsittelijään, joten et tarvitse valtuutusta kuten ulkoisten HTTP API -käyttöoikeuksien yhteydessä. Jos URL-osoite on tyhjä kaikkien korvausten jälkeen, tulostetta ei aseteta. Voit esimerkiksi vaihtaa ulostuloja vain, jos tietyt muuttujat ovat olemassa (katso kaavat: exists()-funktio). Voit myös määrittää osoitteessa ${address} ja ${id}. Tämä on nykyinen laiteosoite ja Modbus-ID, jotka on määritelty asetuksissa.
Osoitetta ja id:tä käytetään pääasiassa Modbus API:n käyttämiseen (ks. alla). body: Valinnainen HTTP-runko POST- tai PUT-toimintoa varten.
URL-osoitteessa ja rungossa voit käyttää ${expr}, jos haluat käyttää kaavoja, jotka viittaavat globaaleihin Charging Manager -muuttujiin tai vastaavasta laskurista. Kaava 'expr' arvioidaan, kun tulosta asetetaan ja korvataan URL-osoitteen tai rungon tekstissä. Jos yllä olevassa esimerkissä http://www.example.com?output1=1 asettaa tulosteen ja http://www.example.com?output1=0 poistaa sen, voit määritellä muuttujan 'var1' ja asettaa sen arvoksi 1 tai 0 tarpeen mukaan. Tällä tavoin voit myös kirjoittaa Modbus-rekistereihin muistin suorituskykyä ohjaavia numeerisia arvoja, jotka olet aiemmin tallentanut muuttujaan kaavan avulla.
Jos sen sijaan, että välittäisit URL-osoitteessa numeerisen arvon, sinun on korvattava yksi teksti toisella tekstillä kaavan mukaan, esim. Shellyn WLAN-pistorasioita varten, voit kirjoittaa tämän seuraavasti: ${if expr`text1`text2}. "Apostrofi" on backtick (ASCII-koodi 96). Jos "expr" != 0, käytetään tekstiä1, muuten tekstiä2. Shelly WLAN-pistokkeen URL-osoite näyttää tällöin esimerkiksi seuraavalta: http://<ip-addr>/relay/0?turn=${if expr`on`off}, eli jos expr != 0, lataushallinta kutsuu http://<ip-addr>/relay/0?turn=on, muuten http://<ip-addr>/relay/0?turn=off.

Jos annat URL-osoitteeksi suhteellisen polun, Charging Manager käyttää kyseiselle laitteelle määritettyä osoitetta. Jos annat toimialueeksi "localhost", Charging Manager käyttää sen laitteen osoitetta, jossa se on käynnissä. Jos se tunnistaa pääsyn omaan API-rajapintaansa, se käyttää sisäistä käsittelijää sen sijaan, että se suorittaisi täydellisen HTTP-yhteyden, jolloin laskurin määrittelyssä ei tarvitse antaa käyttäjänimeä ja salasanaa. URL-osoite, joka alkaa *-kirjaimella, aiheuttaa sen, että latauksenhallinta suorittaa aina täydellisen HTTP-yhteyden.

Nollaa lähdöt: Voit määritellä "ulostulot"-joukon lisäksi myös "nollaukset"-nimisen joukon, joka on rakenteeltaan samanlainen kuin "ulostulot"-joukko. Näin lähdöt voidaan nollata alkuarvoihinsa, kun laite poistetaan käytöstä. Tätä voidaan käyttää yhdessä käyttäjän määrittelemien muuttujien ja "once": true:n kanssa laitteen palauttamiseksi alkutilaansa.
Kirjoita lähdöt jaksoittain: Joidenkin laitteiden lähdöt on kirjoitettava säännöllisesti, muuten laite palauttaa arvot "oletusarvoihin". Esimerkiksi Kostal-muisti palautuu oletussääntöihinsa, jos muistinohjaukseen ei ole kirjoitettu aktiivisesti vähään aikaan. Jos haluat asettaa lähdöt määräajoin, voit liittää osoitteen eteen #xxx#, jossa xxx ilmoittaa, kuinka monta sekuntia lähtö kirjoitetaan uudelleen, vaikka kirjoitettava arvo olisi pysynyt samana. Jos osoite on esimerkiksi /cnf?cmd=set_cm_vars&name=test&val=42, voit käyttää #30#/cnf?cmd=set_cm_vars&name=test&val=42 varmistaaksesi, että tämä arvo kirjoitetaan 30 sekunnin välein.

Määritelmä query langage:

Tällä hetkellä jäsennimiä ja operaattoreita "." ja "[]" voidaan käyttää "query"-hakulausekkeissa, esimerkkejä:

testiElementti nimeltä "test"
nimi1.nimi2Elementti "nimi2" alaobjektissa "nimi1"
name[idx]Elementin "idx" elementin "name" elementti. 'idx' voi olla numero, esim. matriisien tapauksessa, tai merkkijono
name["u2"]Elementti "u2" objektielementistä "nimi", vastaa elementtiä "nimi.u2"
name[{"el1": "v1", "el2": 3}].valueValitse array-elementti, joka täyttää objektin merkintätavan ehdon, ja arvioi elementti nimeltä 'value'. Esimerkiksi tässä tapauksessa valitaan joukko-osasta 'name' elementti, jolla on objektielementit 'el1', jonka arvo on 'v1' ja 'el2', jonka arvo on 3, ja tämän jälkeen palautetaan tästä objektista elementin 'value' arvo.

Global Charging Manager -muuttujat:

Voit luoda muuttujia Charging Manager -määrityksessä. Voit käyttää arvona kiinteää arvoa tai kaavaa. Kunkin päivityssyklin lopussa Charging Manager laskee tarvittaessa näiden muuttujien arvon uudelleen. Voit sitten käyttää näitä muuttujia (tietyissä) Charging Manager -parametreissa, lataussäännöissä tai lähtöjen ohjaamiseen. Voit myös kirjoittaa Ex.member- tai Mx.member-muuttujan muuttujaksi. Tässä Exja Mxovat Charging Managerissa määritetyn seinälaatikon tai mittarin laitetunnukset. member on "käyttäjän määrittelemä" muuttuja, joka tallennetaan vastaavaan laitteeseen. Joillakin muuttujilla voi olla erityinen merkitys: KEBA:n osalta "out1" on kytkentälähtö; ABB B23 -mittareiden osalta "out1" ja "out2" ovat kytkentälähdöt (malleissa, jotka tukevat tätä). Merkki 1 kytkee ulostulon päälle, 0 kytkee sen taas pois päältä.

Jos sinulla on laitteita, jotka on kytkettävä päälle tietyissä olosuhteissa, mutta joiden on sitten oltava käynnissä jonkin aikaa (esim. pesukone, astianpesukone), voit myös määritellä muuttujan "laukaisijaksi". Tällöin muuttujan kaava on ehto, jonka täyttyessä muuttuja asetetaan arvoon 1. Säädettävän ajan kuluttua se asetetaan taas arvoon 0. "Uudelleenlaukaisuehdon" avulla voidaan sammumiseen (eli muuttujan asettamiseen 0:aan) kuluvaa aikaa pidentää yhä uudelleen niin kauan kuin ehto täyttyy.

Testitarkoituksiin voit näyttää Charging Managerin ja mittarin muuttujat, esimerkiksi nykyiset Awattar-hinnat:


                        Kuvakaappaus laskurimuuttujien näytöstä

Global Charging Manager Lähdöt:

Charging Managerin konfiguroinnissa voit määrittää globaalit ulostulot, kuten edellä on kuvattu laskurin määrittelyssä kohdassa "Ulostulot". Nämä asetetaan kunkin päivityssyklin lopussa, jos niiden tila on muuttunut. Jos haluat ohjata kytkentäulostuloja käyttäjän määrittelemissä laitteissa, suositellaan edellä mainittua käytäntöä (katso Charging Manager -muuttujat): Asetat muuttujat, joiden nimet ovat "out1", "out2" jne. käyttäjän määrittelemässä laskurissa, ja määrität käyttäjän määrittelemässä laskurissa lähdöt, jotka kytkevät lähdön näiden muuttujien arvosta riippuen.

Latauspäällikön yleinen Modbus API:

Charging Managerin Modbus API:n avulla voidaan ohjata Modbus-laitteita, joilla on mikä tahansa Modbus RTU- tai TCP-osoite (johon pääsee käsiksi Charging Managerista). Kuten yksittäisten laitteiden konfiguroinnissa, kirjoita Modbus RTU -osoitteeksi COMx,bd,8,p,s, jossa x on COM-portin numero, bd baudinopeus, p pariteetti ("N", "E" tai "O") ja s stop-bittien määrä (1 tai 2). Modbus TCP:n osalta osoite on Charging Manager -verkon laitteen IP-osoite, mukaan lukien porttinumero.



Modbus API:n URL-osoite (HTTP GET) on: /cnf?cmd=modbus_get tai /cnf?cmd=modbus_set cFos Charging Manager tukee seuraavia lisäkyselyparametreja: addr:


Modbus RTU- tai TCP-laitteen edellä mainittu osoite. func: Modbus-toiminnon numero, esim. lukemiseen 3 tai 4, kirjoittamiseen 6 tai 16. id: Modbus-laitteen laitetunnus. reg: Modbus-rekisterin numero.
Arvo voidaan ilmoittaa desimaali- tai heksadesimaalilukuna (etuliitteellä 0x). val: numero, rekisteriin kirjoitettava arvo.
Type: 'w' 16bit (oletus), d = 32bit, f = float, q = 64bit, s = string.

c nt: luku, merkkijonon enimmäispituus rekistereissä, jätetään pois muiden tyyppien osalta tai asetetaan arvoksi 1. order: merkkijono, tavujärjestys, joko "hl" tai "lh".

Huomautus: Jos laskurissasi on ensisijaisesti valvontatehtäviä, voit valita tämän laatan asetuksissa vaihtoehdon "Piilota laite", jolloin laite ei näy aloitussivulla.

Huomautus: Jotkin HTTP:n kautta luettavat laskurit edellyttävät käyttäjätunnusta/salasanaa valtuutuksena. Voit määrittää tämän HTTP-käytön osoitteessa, esimerkiksi osoitteessa http://username:password@192.168.2.111. Jos käyttäjänimi tai salasana sisältää "@"-merkin, se on korvattava merkillä "%40".