Penghitung yang ditentukan pengguna

Catatan: Manajer Pengisian cFos dapat membaca sebagian besar inverter surya menggunakan SunSpec (tipe perangkat "SunSpec Solar Inverter / Meter"). Dalam hal ini, anda tidak perlu membuat definisi meteran anda sendiri.

CFos Charging Manager memungkinkan Anda untuk membuat definisi meteran Anda sendiri untuk mendukung meteran yang tidak ada dalam repertoar standar. Saat ini ada tiga jenis: Penghitung Modbus, penghitung HTTP/JSON dan penghitung MQTT/JSON. File-file definisi untuk counter-counter ini sangat mirip. Penghitung Modbus membaca datanya melalui Modbus dari register tertentu, sementara penghitung HTTP/JSON mengambil datanya melalui permintaan HTTP dan mengurai JSON sebagai respons. Untuk penghitung MQTT/JSON, Manajer Pengisian cFos berlangganan topik MQTT dan mengurai pesan yang diterbitkan di bawah topik sebagai JSON. Untuk penguraian, cFos Charging Manager menggunakan "bahasa kueri" kecil. Berikut ini adalah dokumentasi kemampuan MQTT di cFos Charging Manager.

Selain sejumlah variabel yang sudah ditentukan sebelumnya, seperti arus dan tegangan, penghitung yang ditentukan pengguna juga dapat membaca variabel yang ditentukan pengguna yang tidak diketahui, meminta input dan mengatur output. Membaca variabel dan mengatur output memungkinkan evaluasi formula. Dalam kombinasi dengan variabel Charging Manager dan output Charging Manager global yang dijelaskan di bawah ini, ini adalah fitur yang dahsyat dan bahkan memungkinkan tugas otomatisasi rumah tertentu dan kontrol perangkat eksternal seperti penyimpanan baterai. Jika Anda menyadari tugas kontrol dengan ini, mohon berikan umpan balik kepada kami. Kami sangat tertarik dengan apa yang dikontrol orang dengan cFos Charging Manager dan ini membantu kami untuk mengembangkan Charging Manager lebih lanjut sesuai dengan kebutuhan pelanggan.

Berikut ini adalah contoh definisi untuk Modbus dan satu untuk HTTP/JSON:
Unduh contoh definisi untuk Modbus meter
Unduh contoh definisi untuk HTTP/JSON meter

Charging Manager sudah dilengkapi dengan beberapa file seperti itu, tetapi Anda dapat mengunggah file Anda sendiri di bawah "System configuration" dan juga menghapusnya lagi.
Di sini Anda akan menemukan sebagian besar definisi meteran yang kami sediakan:
Unduh definisi penghitung yang disediakan

Jika Anda telah membuat file penghitung Anda sendiri dan mungkin relevan bagi pengguna lain, kami akan sangat berterima kasih jika Anda dapat menyediakannya bagi kami. Kemudian kami akan memberikannya dengan versi Charging Manager di masa mendatang.

Unduh definisi meteran untuk meteran tambahan

Struktur berkas definisi:

Definisi meter adalah file JSON dengan objek JSON global yang memiliki properti dan objek anak. 'rtype' menentukan jenis operasi baca: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. Angka dapat ditentukan secara opsional dalam desimal atau heksa dengan awalan 0x. Selain itu, komentar baris tunggal menggunakan // diperbolehkan. Kami merekomendasikan untuk menjalankan file definisi Anda melalui validator JSON5, misalnya validator JSON5 ini

Anda harus sudah membaca bab Rumus untuk memahami nilai mana yang dapat digunakan dalam rumus dalam referensi berikut.

Definisi Modbus memiliki objek 'rtu' dengan properti berikut:

silence_period, dalam msec. ditentukan, panjang jeda sebelum akses Modbus RTU, sehingga perangkat mengenali awal pesan.
silence_same_slave, true: Jeda juga diamati dengan beberapa akses ke perangkat yang sama.
retries: Jumlah retries jika perangkat tidak merespons.
rcv_timeout: dalam msec. waktu tunggu maksimum per akses hingga perangkat merespons.

Properti global ini berlaku untuk Modbus TCP dan RTU:

modbus_read: Nomor fungsi dari perintah baca Modbus, biasanya 3 atau 4.
modbus_read_max_registers: Jumlah maksimum register yang dapat dibaca dalam satu waktu.
modbus_allow_gaps: true = Area register yang tidak terpakai dapat dibaca dalam operasi baca.

Untuk Modbus TCP dan HTTP/JSON terdapat objek 'tcp' dengan properti berikut:

connect_timeout: dalam msec. waktu tunggu maksimum untuk koneksi TCP.
delay_after_connect: dalam msec. Jeda setelah koneksi terjalin sebelum mengirim perintah pertama.

Kedua jenis definisi (Modbus dan HTTP/JSON) memiliki properti tambahan berikut ini:

upd_delay: dalam msec. menentukan interval di mana perangkat dapat dibaca. Beberapa perangkat kelebihan beban jika terlalu sering ditanyakan.
manufacturer: String, nama produsen. Ini ditampilkan dalam informasi tambahan pada ubin.
delay_accumulated: true = Nilai akumulasi (kWh) hanya ditanyakan setiap 3 detik atau jika daya mencukupi. false = Nilai-nilai ini selalu ditanyakan.
ui_addr: URL, jika berbeda dari alamat perangkat untuk memanggil antarmuka web.
reserved: Array dengan nilai yang ditafsirkan sebagai 0 (berguna jika perangkat mendukung nilai tertentu tergantung pada model).

Jika Anda menghilangkan properti yang tercantum di atas, cFos Charging Manager mengambil nilai default yang bekerja dengan baik dalam kebanyakan kasus.

Dalam definisi JSON, langkah berikutnya adalah definisi variabel yang digunakan meteran untuk membaca atau menghitung nilai arus, tegangan, dll. Variabel berikut digunakan oleh Manajer Pengisian Daya. Charging Manager mengetahui variabel-variabel berikut ini:
type_designation, version, firmware_version, serial: Ini membentuk nama model seperti yang ditunjukkan dalam extended info tile. Ini ditanyakan sekali ketika mengatur atau mengatur ulang meteran.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: Manajer Pengisian cFos mencoba menghitung nilai untuk voltage_l1..l3, signed current_l1..l3, power_w dan power_va dari ini. Anda tidak harus menentukan semua variabel. Manajer Pengisian cFos mencoba menghitung nilai dari variabel yang ada.
import_wh, export_wh: Manajer Pengisian menggunakan variabel ini untuk menghitung import_wh dan export_wh. Anda tidak harus menentukan semua variabel. Manajer Pengisian cFos mencoba menghitung nilai dari variabel yang ada.

Selain itu, Anda bisa mendefinisikan variabel lebih lanjut dengan nama yang berbeda, yang dibacakan atau dikalkulasi dengan menggunakan formula pada setiap update.

Definisi variabel:

Objek ini dinamai sesuai dengan variabel yang tercantum di atas dan memiliki properti berikut:
fixed: String dengan nilai tetap. Berguna jika, misalnya, tidak ada nilai yang bisa ditentukan, misalnya untuk type_designation atau tegangan.
expr: String, variabel tidak dibaca tetapi dievaluasi sebagai formula.
type: Jika tidak tetap atau expr, tipe variabel: int16, int32, float, int64, string. Ini penting untuk Modbus agar dapat membaca register dalam format yang benar. Untuk JSON/HTTP Anda biasanya dapat mengambil float.
resolution: float, nilai yang dibaca dikalikan dengan 'resolution'. Nilai untuk tegangan harus dalam volt, arus dalam miliampere, daya dalam watt, energi dalam watt-jam (Wh). 'Resolusi' negatif memungkinkan Anda untuk membalikkan nilai jika dalam tanda terbalik.
address: nomor (Modbus) atau string (HTTP/JSON), nomor register Modbus atau URL HTTP dari nilai yang akan dibaca.
query: String, untuk HTTP JSON spesifikasi dalam bahasa kueri dari Charging Manager yang dengannya ia menemukan nilai yang akan dibaca dalam respons JSON.
order: String, untuk Modbus urutan byte, baik "hl" atau "lh", di mana nilainya ada. length: number, untuk Modbus panjang string dalam register. Dengan variabel 'version' dan 'firmware_version', 'length' digunakan untuk mengubah versi numerik menjadi string dengan titik-titik. Nilai 2 atau 4 diizinkan untuk 'length', yang kemudian menghasilkan format versi a.b, dan a.b.c.d. Untuk 'length' 2 dan tipe 'int16', Manajer Pengisian memisahkan byte rendah dan tinggi dengan titik, untuk int32 kata rendah dan tinggi, untuk 'int64' dword rendah dan tinggi. Untuk 'lenth' 4 dan 'int32', Charging Manager membagi nilai menjadi 4 byte yang dipisahkan oleh titik. Untuk 'int64', 4 kata yang sesuai.

Definisi input:

Charging Manager dapat menanyakan hingga 32 nilai input dari berbagai register atau elemen JSON per perangkat. Properti "Input" adalah larik JSON. Anda harus mendefinisikan properti berikut ini untuk masing-masing input:
address: Address (Modbus register atau URL).
hitung: Jumlah bit input yang akan dibaca dengan permintaan ini.
query: Untuk HTTP/JSON, bahasa kueri untuk menemukan nilai dalam respons.

Manajer Pengisian cFos membaca semua input yang didefinisikan dengan cara ini dengan setiap pembaruan dan menempatkan bit-bit secara internal dalam array, yang kemudian dapat ditanyakan dengan rumus, Input1..InputN...

Definisi output:

Manajer Pengisian Daya dapat mengalihkan hingga 32 output per unit. Semua output dialihkan pada akhir setiap siklus update jika status output masing-masing telah berubah.
Anda harus mendefinisikan properti berikut untuk setiap input:
address: URL HTTP dengan metode HTTP opsional, misalnya GET http://www.example.com?output1=${var1}. Untuk mengatur register Modbus, Anda dapat menggunakan HTTP API dari cFos Charging Manager. Manajer Pengisian mendeteksi akses yang cocok pada localhost dan mengalihkan permintaan ke penangan internal, sehingga Anda tidak memerlukan otorisasi seperti pada akses API HTTP eksternal.
body: Badan HTTP opsional untuk POST atau PUT.
Di URL dan badan, Anda dapat menggunakan rumus ${expr} yang merujuk variabel Manajer Pengisian global atau dari masing-masing penghitung. Rumus 'expr' dievaluasi ketika mengatur output dan diganti dalam teks URL atau body. Jika, dalam contoh di atas, http://www.example.com?output1=1 menetapkan output dan http://www.example.com?output1=0 menghapusnya, Anda dapat mendefinisikan variabel 'var1' dan mengaturnya ke 1 atau 0 seperti yang diinginkan. Dengan cara ini, Anda juga dapat menulis nilai numerik untuk mengontrol kinerja memori dalam register Modbus yang sebelumnya telah Anda simpan dalam variabel menggunakan formula.
Jika alih-alih melewatkan nilai numerik dalam URL Anda perlu mengganti satu teks dengan teks lain tergantung pada rumus, seperti dengan soket Shelly WLAN, Anda dapat menuliskannya seperti ini: ${if expr`text1`text2}. 'Apostrof' adalah backtick (kode ASCII 96). Jika 'expr' != 0, teks1 disisipkan, jika tidak, teks2. Untuk soket Shelly WLAN, URL kemudian terlihat seperti ini: http://<ip-addr>/relay/0?turn=${if expr`on`off}, yaitu jika expr != 0, Manajer Pengisian kemudian memanggil http://<ip-addr>/relay/0?turn=on, jika tidak http://<ip-addr>/relay/0?turn=off.

Jika Anda memasukkan jalur relatif sebagai URL, Charging Manager mengambil alamat yang dikonfigurasi untuk masing-masing perangkat. Jika Anda memasukkan 'localhost' sebagai domain, Charging Manager akan mengambil alamat perangkat yang menjalankannya. Jika mendeteksi akses ke API-nya sendiri, ia menggunakan handler internal alih-alih mengeksekusi akses HTTP penuh, sehingga Anda tidak perlu menyimpan nama pengguna dan kata sandi dalam definisi counter. URL yang dimulai dengan * menyebabkan Charging Manager selalu melakukan akses HTTP penuh.

Definisi bahasa permintaan:

Saat ini, nama anggota dan operator "." dan "[]" dapat digunakan dalam ekspresi pencarian "query", contoh:

tesElemen bernama "test"
nama1.nama2Elemen bernama "nama2" dalam objek anak "nama1"
nama[idx]Elemen "idx" dari elemen objek "nama". "idx" bisa berupa angka, misalnya untuk array atau string
nama["u2"]Elemen "u2" dari elemen objek "nama", sesuai dengan "nama.u2"
name[{"el1": "v1", "el2": 3}].valuePilih elemen larik yang memenuhi kondisi notasi objek dan evaluasi elemen bernama 'nilai'. Di sini, misalnya, dalam larik 'nama', elemen dipilih yang memiliki elemen objek 'el1' dengan nilai 'v1' dan 'el2' dengan nilai 3 dan kemudian nilai elemen 'nilai' dikembalikan dari objek ini.

Variabel Manajer Pengisian Global:

Anda bisa membuat variabel dalam konfigurasi Charging Manager. Anda bisa menggunakan nilai tetap atau formula sebagai nilainya. Pada akhir setiap siklus pembaruan, Charging Manager menghitung ulang nilai variabel-variabel ini jika perlu. Anda kemudian dapat menggunakannya dalam parameter Charging Manager (tertentu), Charging Rules (Aturan Pengisian Daya) atau untuk mengontrol output. Anda juga bisa menulis Ex.member atau Mx.member sebagai variabel. Di sini, Exdan Mxadalah ID perangkat dari wallbox atau meteran yang diatur dalam Charging Manager. member adalah variabel "yang ditentukan pengguna" yang disimpan dalam perangkat yang sesuai. Beberapa variabel mungkin memiliki makna khusus: Untuk KEBA "out1" adalah output switching, untuk ABB B23 meter "out1" dan "out2" adalah output switching (untuk model yang mendukung ini). Angka 1 mengaktifkan output, angka 0 mematikannya lagi.

Keluaran Manajer Pengisian Daya Global:

Dalam konfigurasi Charging Manager, Anda dapat mengonfigurasi output global seperti dijelaskan di atas dalam definisi penghitung di bawah 'Output'. Ini ditetapkan pada akhir setiap siklus pembaruan jika statusnya telah berubah. Jika Anda ingin mengontrol output switching pada perangkat yang ditentukan pengguna, konvensi di atas direkomendasikan (lihat Charging Manager Variables): Anda menetapkan variabel dengan nama "out1", "out2", dsb. di dalam penghitung yang ditentukan pengguna dan mengatur output di dalam penghitung yang ditentukan pengguna yang mengalihkan output tergantung pada nilai variabel-variabel ini.

API Modbus Global dari Manajer Pengisian Daya:

Modbus API dari Charging Manager digunakan untuk mengontrol perangkat Modbus yang memiliki alamat Modbus RTU atau TCP (dapat diakses dari Charging Manager). Untuk Modbus RTU, masukkan COMx,bd,8,p,s sebagai alamat, di mana x adalah nomor port COM, bd adalah baud rate, p adalah paritas ('N', 'E' atau 'O') dan s adalah jumlah stop bit (1 atau 2), seperti dalam konfigurasi masing-masing perangkat. Untuk Modbus TCP, penerima adalah alamat IP perangkat dalam jaringan Charging Manager termasuk nomor port.
URL (untuk HTTP GET) dari Modbus API adalah:
/cnf?cmd=modbus_get atau /cnf?cmd=modbus_set
Manajer Pengisian cFos mendukung parameter kueri tambahan berikut:
addr: Alamat perangkat Modbus RTU atau TCP yang disebutkan di atas.
func: Nomor fungsi Modbus, misalnya untuk membaca 3 atau 4, untuk menulis 6 atau 16.
id: ID perangkat dari perangkat Modbus.
reg: Nomor register Modbus. Nilai bisa diberikan dalam desimal atau hex (dengan prefix 0x).
val: angka, nilai yang akan ditulis ke dalam register. Hilangkan saat membaca.
type: 'w' 16bit (default), d = 32bit, f = float, q = 64bit, s = string.
cnt: angka, panjang maksimum string dalam register, hilangkan untuk tipe lain atau set ke 1.
order: String, urutan byte, baik "hl" atau "lh".

Catatan: Jika 'counter' Anda terutama memiliki tugas kontrol, Anda bisa mencentang opsi 'Hide device' dalam pengaturan ubin ini supaya perangkat ini tidak muncul pada halaman awal.

Catatan: Beberapa meter yang dibaca melalui HTTP memerlukan nama pengguna/kata sandi sebagai otorisasi. Anda bisa menentukan ini dalam alamat untuk akses HTTP, misalnya dengan http://username:password@192.168.2.111. Jika nama pengguna atau kata sandi Anda mengandung "@", Anda harus menggantinya dengan "%40".