Μετρητές που ορίζονται από τον χρήστη

Σημείωση: Ο Διαχειριστής φόρτισης cFos μπορεί να διαβάσει τους περισσότερους ηλιακούς μετατροπείς που χρησιμοποιούν το SunSpec (τύπος συσκευής "SunSpec Solar Inverter / Meter"). Σε αυτή την περίπτωση, δεν χρειάζεται να δημιουργήσετε το δικό σας ορισμό μετρητή.

Ο Διαχειριστής χρέωσης cFos σας επιτρέπει να δημιουργήσετε τους δικούς σας ορισμούς μετρητών για την υποστήριξη μετρητών που δεν περιλαμβάνονται στο τυποποιημένο ρεπερτόριο. Επί του παρόντος υπάρχουν δύο τύποι: Μετρητές Modbus και μετρητές HTTP/JSON. Τα αρχεία ορισμού για αυτούς τους μετρητές είναι πολύ παρόμοια. Οι μετρητές Modbus διαβάζουν τα δεδομένα τους μέσω Modbus από συγκεκριμένους καταχωρητές, ενώ οι μετρητές HTTP/JSON αντλούν τα δεδομένα τους μέσω αίτησης HTTP και αναλύουν JSON ως απάντηση. Ο Διαχειριστής χρέωσης cFos χρησιμοποιεί μια μικρή "γλώσσα ερωτημάτων" για την ανάλυση.

Εκτός από έναν αριθμό προκαθορισμένων μεταβλητών, όπως το ρεύμα και η τάση, οι μετρητές που έχουν οριστεί από τον χρήστη μπορούν επίσης να διαβάζουν άγνωστες μεταβλητές που έχουν οριστεί από τον χρήστη, να ρωτούν εισόδους και να ορίζουν εξόδους. Η ανάγνωση μεταβλητών και ο καθορισμός εξόδων επιτρέπει την αξιολόγηση τύπων. Σε συνδυασμό με τις μεταβλητές Charging Manager και τις συνολικές εξόδους Charging Manager που περιγράφονται παρακάτω, πρόκειται για ένα ισχυρό χαρακτηριστικό που επιτρέπει ακόμη και ορισμένες εργασίες οικιακού αυτοματισμού και τον έλεγχο εξωτερικών συσκευών, όπως η αποθήκευση μπαταριών. Αν έχετε αντιληφθεί καθήκοντα ελέγχου με αυτό, παρακαλούμε να μας δώσετε σχόλια. Μας ενδιαφέρει πολύ το τι ελέγχουν οι χρήστες με τον Διαχειριστή φόρτισης cFos και μας βοηθάει να αναπτύξουμε περαιτέρω τον Διαχειριστή φόρτισης σύμφωνα με τις ανάγκες των πελατών.

Ακολουθεί ένα παράδειγμα ορισμού για Modbus και ένα για HTTP/JSON:
Λήψη δείγματος ορισμού για μετρητή Modbus
Λήψη δείγματος ορισμού για μετρητή HTTP/JSON

Η Διαχείριση φόρτισης διαθέτει ήδη μερικά τέτοια αρχεία, αλλά μπορείτε να ανεβάσετε τα δικά σας αρχεία στην ενότητα "Διαμόρφωση συστήματος" και να τα διαγράψετε ξανά.
Εδώ θα βρείτε τους περισσότερους από τους ορισμούς μετρητών που παρέχουμε:
Κατεβάστε τους παρεχόμενους ορισμούς μετρητών

Αν έχετε δημιουργήσει το δικό σας αρχείο μετρητών και θα μπορούσε να είναι χρήσιμο για άλλους χρήστες, θα σας ήμασταν ευγνώμονες αν μπορούσατε να μας το διαθέσετε. Στη συνέχεια, θα το παραδώσουμε με τις μελλοντικές εκδόσεις του Charging Manager.

Λήψη ορισμών μετρητών για πρόσθετους μετρητές

Δομή ενός αρχείου ορισμού:

Οι ορισμοί μετρητών είναι αρχεία JSON με ένα συνολικό αντικείμενο JSON που έχει ιδιότητες και αντικείμενα-παιδιά. 'rtype' καθορίζει τον τύπο της λειτουργίας ανάγνωσης: 0 = Modbus, 1 = HTTP/JSON. Οι αριθμοί μπορούν προαιρετικά να καθοριστούν σε δεκαδικό ή δεκαεξαδικό σύστημα με πρόθεμα 0x. Επιπλέον, επιτρέπονται σχόλια μίας γραμμής με χρήση //. Συνιστούμε να εκτελείτε τα αρχεία ορισμού σας μέσω ενός επικυρωτή JSON5, π.χ. αυτού του επικυρωτή JSON5

Θα πρέπει οπωσδήποτε να έχετε διαβάσει το κεφάλαιο Τύποι για να καταλάβετε ποιες τιμές μπορούν να χρησιμοποιηθούν σε τύπους στην ακόλουθη αναφορά.

Οι ορισμοί Modbus διαθέτουν ένα αντικείμενο 'rtu' με τις ακόλουθες ιδιότητες:

silence_period, σε msec. προσδιορίζεται, η διάρκεια της παύσης πριν από μια πρόσβαση Modbus RTU, ώστε η συσκευή να αναγνωρίζει την έναρξη ενός μηνύματος.
silence_same_slave, true: Η παύση παρατηρείται και με πολλές προσβάσεις στην ίδια συσκευή.
retries: Ο αριθμός των επαναληπτικών προσπαθειών αν η συσκευή δεν απαντήσει.
rcv_timeout: σε msec. ο μέγιστος χρόνος αναμονής ανά πρόσβαση μέχρι να απαντήσει η συσκευή.

Αυτές οι συνολικές ιδιότητες ισχύουν για το Modbus TCP και το RTU:

modbus_read: Ο αριθμός λειτουργίας της εντολής ανάγνωσης Modbus, συνήθως 3 ή 4.
modbus_read_max_registers: Ο μέγιστος αριθμός καταχωρητών που μπορούν να διαβαστούν ταυτόχρονα.
modbus_allow_gaps: true = Οι αχρησιμοποίητες περιοχές καταχωρητών μπορούν να διαβαστούν σε μια λειτουργία ανάγνωσης.

Για το Modbus TCP και το HTTP/JSON υπάρχει ένα αντικείμενο 'tcp' με τις ακόλουθες ιδιότητες:

connect_timeout: είναι msec. ο μέγιστος χρόνος αναμονής για μια σύνδεση TCP.
delay_after_connect: σε msec. Κάντε παύση μετά την εγκαθίδρυση της σύνδεσης πριν από την αποστολή της πρώτης εντολής.

Και οι δύο τύποι ορισμού (Modbus και HTTP/JSON) έχουν τις ακόλουθες πρόσθετες ιδιότητες:

upd_delay: σε msec. καθορίζει το διάστημα στο οποίο μπορεί να διαβαστεί μια συσκευή. Ορισμένες συσκευές υπερφορτώνονται εάν ερωτώνται πολύ συχνά.
κατασκευαστής: Συμβολοσειρά, όνομα του κατασκευαστή. Αυτό εμφανίζεται στις εκτεταμένες πληροφορίες του πλακιδίου.
delay_accumulated: true = Οι συσσωρευμένες τιμές (kWh) ζητούνται μόνο κάθε 3 δευτερόλεπτα ή εάν υπάρχει επαρκής ισχύς. false = Οι τιμές αυτές ζητούνται πάντα.
ui_addr: URL, εάν διαφέρει από τη διεύθυνση της συσκευής για την κλήση του web interface.
reserved: Συστοιχία με τιμές που ερμηνεύονται ως 0 (χρήσιμο εάν η συσκευή υποστηρίζει ορισμένες τιμές ανάλογα με το μοντέλο).

Εάν παραλείψετε τις ιδιότητες που αναφέρονται παραπάνω, ο Διαχειριστής φόρτισης cFos λαμβάνει προεπιλεγμένες τιμές που λειτουργούν ικανοποιητικά στις περισσότερες περιπτώσεις.

Στον ορισμό JSON, το επόμενο βήμα είναι ο ορισμός των μεταβλητών που χρησιμοποιεί ο μετρητής για την ανάγνωση ή τον υπολογισμό των τιμών ρεύματος, τάσης κ.λπ. Ο Διαχειριστής φόρτισης γνωρίζει τις ακόλουθες μεταβλητές:
type_designation, version, firmware_version, serial: Αυτές αποτελούν το όνομα του μοντέλου, όπως φαίνεται στις εκτεταμένες πληροφορίες του πλακιδίου. Αυτά τα στοιχεία ζητούνται μία φορά κατά τη ρύθμιση ή την επαναφορά του μετρητή.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3, power_w_l1_minus..power_w_l3_minus, power_w_import, power_w_export: Ο διαχειριστής φόρτισης cFos προσπαθεί να υπολογίσει τιμές για την τάση_l1..l3, το υπογεγραμμένο ρεύμα_l1..l3, την power_w και την power_va από αυτές. Δεν χρειάζεται να καθορίσετε όλες τις μεταβλητές. Ο διαχειριστής χρέωσης cFos προσπαθεί να υπολογίσει τις τιμές από τις υπάρχουσες μεταβλητές.
import_wh, export_wh, import_wh_l1..import_wh_l3, export_wh_l1..export_wh_l3: Ο Διαχειριστής χρέωσης χρησιμοποιεί αυτές τις μεταβλητές για τον υπολογισμό των import_wh και export_wh. Δεν χρειάζεται να καθορίσετε όλες τις μεταβλητές. Ο διαχειριστής χρέωσης cFos προσπαθεί να υπολογίσει τις τιμές από τις υπάρχουσες μεταβλητές.

Επιπλέον, μπορείτε να ορίσετε άλλες μεταβλητές με διαφορετικά ονόματα που διαβάζονται ή υπολογίζονται με τη χρήση τύπων σε κάθε ενημέρωση.

Ορισμός μιας μεταβλητής:

Το αντικείμενο έχει το όνομα της μεταβλητής που αναφέρεται παραπάνω και έχει τις ακόλουθες ιδιότητες:
fixed: Συμβολοσειρά με σταθερή τιμή. Χρήσιμο εάν, για παράδειγμα, δεν μπορεί να προσδιοριστεί καμία τιμή, π.χ. για type_designation ή voltage.
expr: String, η μεταβλητή δεν διαβάζεται αλλά αξιολογείται ως τύπος.
type: Εάν δεν είναι fixed ή expr, ο τύπος της μεταβλητής: int16, int32, float, int64, string. Αυτό είναι σημαντικό για το Modbus προκειμένου να διαβαστούν οι καταχωρητές στη σωστή μορφή. Για JSON/HTTP μπορείτε συνήθως να χρησιμοποιήσετε float.
resolution: float, η τιμή ανάγνωσης πολλαπλασιάζεται με το 'resolution'. Οι τιμές για την τάση πρέπει να είναι σε βολτ, τα ρεύματα σε χιλιοστά του αμπέρ, η ισχύς σε βατ, η ενέργεια σε βατ-ώρες (Wh). Η αρνητική "ανάλυση" σας επιτρέπει να αντιστρέψετε μια τιμή εάν έχει αντίθετο πρόσημο.
διεύθυνση: αριθμός (Modbus) ή συμβολοσειρά (HTTP/JSON), ο αριθμός μητρώου Modbus ή η διεύθυνση URL HTTP της τιμής προς ανάγνωση.
ερώτημα: Συμβολοσειρά, για HTTP JSON η προδιαγραφή στη γλώσσα ερωτημάτων του Διαχειριστή χρέωσης με την οποία βρίσκει την τιμή προς ανάγνωση στην απάντηση JSON.
order: Συμβολοσειρά, για Modbus η σειρά byte, είτε "hl" είτε "lh", στην οποία υπάρχει η τιμή. length: αριθμός, για Modbus το μήκος μιας συμβολοσειράς σε καταχωρητές. Με τις μεταβλητές 'version' και 'firmware_version', το 'length' χρησιμοποιείται για να μετατρέψει τις αριθμητικές εκδόσεις σε συμβολοσειρές με τελείες. Επιτρέπονται οι τιμές 2 ή 4 για το "length", οι οποίες οδηγούν στις μορφές έκδοσης a.b και a.b.c.d. Για "μήκος" 2 και τύπο "int16" ο διαχειριστής χρέωσης διαχωρίζει το χαμηλό και το υψηλό byte με τελεία, για int32 τη χαμηλή και την υψηλή λέξη, για "int64" τη χαμηλή και την υψηλή λέξη dword. Για "lenth" 4 και "int32", ο διαχειριστής χρέωσης χωρίζει την τιμή σε 4 bytes που χωρίζονται με τελεία. Για το 'int64', οι 4 λέξεις αναλόγως.

Ορισμός των εισροών:

Ο Διαχειριστής φόρτισης μπορεί να ζητήσει έως και 32 τιμές εισόδου από διαφορετικούς καταχωρητές ή στοιχεία JSON ανά συσκευή. Η ιδιότητα "Inputs" είναι ένας πίνακας JSON. Πρέπει να ορίσετε τις ακόλουθες ιδιότητες για κάθε είσοδο: Διεύθυνση
: Διεύθυνση (καταχωρητής Modbus ή URL).
μετρήστε: Αριθμός bits εισόδου που θα διαβαστούν με αυτό το αίτημα.
query: Για HTTP/JSON, γλώσσα ερωτήματος για την εύρεση της τιμής στην απόκριση.

Ο Διαχειριστής χρέωσης cFos διαβάζει όλες τις εισόδους που ορίζονται με αυτόν τον τρόπο με κάθε ενημέρωση και τοποθετεί τα bits εσωτερικά σε έναν πίνακα, ο οποίος μπορεί στη συνέχεια να ερωτηθεί με τους τύπους Input1..InputN..

Ορισμός των εξόδων:

Ο διαχειριστής φόρτισης μπορεί να ενεργοποιήσει έως και 32 εξόδους ανά μονάδα. Όλες οι έξοδοι αλλάζουν στο τέλος κάθε κύκλου ενημέρωσης εάν η κατάσταση της αντίστοιχης εξόδου έχει αλλάξει.
Πρέπει να ορίσετε τις ακόλουθες ιδιότητες για κάθε είσοδο:
διεύθυνση: διεύθυνση URL HTTP με προαιρετική μέθοδο HTTP, π.χ. GET http://www.example.com?output1=${var1}. Για να ορίσετε τους καταχωρητές Modbus, μπορείτε να χρησιμοποιήσετε το API HTTP του Διαχειριστή χρέωσης cFos. Ο Διαχειριστής χρέωσης εντοπίζει τις αντίστοιχες προσβάσεις στο localhost και ανακατευθύνει την αίτηση στον εσωτερικό χειριστή, οπότε δεν χρειάζεται εξουσιοδότηση όπως στις εξωτερικές προσβάσεις API HTTP.
body: Προαιρετικό σώμα HTTP για POST ή PUT.
Στη διεύθυνση URL και στο σώμα, μπορείτε να χρησιμοποιήσετε τύπους ${expr} που παραπέμπουν σε παγκόσμιες μεταβλητές του Charging Manager ή από τον αντίστοιχο μετρητή. Ο τύπος 'expr' αξιολογείται κατά τον καθορισμό της εξόδου και αντικαθίσταται στο κείμενο της διεύθυνσης URL ή του σώματος. Αν, στο παραπάνω παράδειγμα, το http://www.example.com?output1=1 θέτει την έξοδο και το http://www.example.com?output1=0 τη διαγράφει, μπορείτε να ορίσετε μια μεταβλητή 'var1' και να την ορίσετε σε 1 ή 0 όπως επιθυμείτε. Με αυτόν τον τρόπο, μπορείτε επίσης να γράψετε αριθμητικές τιμές για τον έλεγχο της απόδοσης της μνήμης στους καταχωρητές Modbus, τις οποίες έχετε προηγουμένως αποθηκεύσει σε μια μεταβλητή χρησιμοποιώντας έναν τύπο.
Αν αντί να περάσετε μια αριθμητική τιμή στη διεύθυνση URL πρέπει να αντικαταστήσετε ένα κείμενο με ένα άλλο ανάλογα με τον τύπο, όπως για παράδειγμα με τις υποδοχές WLAN της Shelly, μπορείτε να το γράψετε ως εξής: ${if expr`text1`text2}. Η "απόστροφος" είναι ένα backtick (κωδικός ASCII 96). Εάν το 'expr' != 0, εισάγεται το κείμενο1, διαφορετικά το κείμενο2. Για την υποδοχή Shelly WLAN, η διεύθυνση URL έχει τότε την εξής μορφή: http://<ip-addr>/relay/0?turn=${if expr`on`off}, δηλαδή εάν expr != 0, ο διαχειριστής χρέωσης καλεί τότε το http://<ip-addr>/relay/0?turn=on, διαφορετικά το http://<ip-addr>/relay/0?turn=off.

Εάν εισαγάγετε μια σχετική διαδρομή ως διεύθυνση URL, η Διαχείριση φόρτισης λαμβάνει τη διεύθυνση που έχει ρυθμιστεί για την αντίστοιχη συσκευή. Εάν πληκτρολογήσετε "localhost" ως τομέα, η Διαχείριση φόρτισης λαμβάνει τη διεύθυνση της συσκευής στην οποία εκτελείται. Εάν ανιχνεύσει πρόσβαση στο δικό του API, χρησιμοποιεί τον εσωτερικό χειριστή αντί να εκτελέσει μια πλήρη πρόσβαση HTTP, ώστε να μην χρειάζεται να αποθηκεύσετε όνομα χρήστη και κωδικό πρόσβασης στον ορισμό του μετρητή. Μια διεύθυνση URL που αρχίζει με * αναγκάζει τον Διαχειριστή χρέωσης να εκτελεί πάντα πλήρη πρόσβαση HTTP.

Ορισμός του query langage:

Επί του παρόντος, τα ονόματα μελών και οι τελεστές "." και "[]" μπορούν να χρησιμοποιηθούν στις εκφράσεις αναζήτησης "ερώτημα", παραδείγματα:

δοκιμήΣτοιχείο με όνομα "test"
name1.name2Στοιχείο με όνομα "name2" σε αντικείμενο-παιδί "name1"
name[idx]Στοιχείο "idx" του στοιχείου αντικειμένου "name". το "idx" μπορεί να είναι ένας αριθμός, π.χ. για πίνακες ή μια συμβολοσειρά
name["u2"]Στοιχείο "u2" του στοιχείου αντικειμένου "name", αντιστοιχεί στο "name.u2"
name[{"el1": "v1", "el2": 3}].valueΕπιλέξτε το στοιχείο του πίνακα που πληροί τη συνθήκη του συμβολισμού του αντικειμένου και αξιολογήστε το στοιχείο με το όνομα "value". Εδώ, για παράδειγμα, στον πίνακα 'name' επιλέγεται το στοιχείο που έχει ως αντικείμενα τα στοιχεία 'el1' με τιμή 'v1' και 'el2' με τιμή 3 και στη συνέχεια επιστρέφεται από το αντικείμενο αυτό η τιμή του στοιχείου 'value'.

Μεταβλητές του Global Charging Manager:

Μπορείτε να δημιουργήσετε μεταβλητές στη διαμόρφωση της Διαχείρισης χρέωσης. Μπορείτε να χρησιμοποιήσετε μια σταθερή τιμή ή έναν τύπο ως τιμή. Στο τέλος κάθε κύκλου ενημέρωσης, ο διαχειριστής χρέωσης υπολογίζει εκ νέου την τιμή αυτών των μεταβλητών, εάν είναι απαραίτητο. Στη συνέχεια, μπορείτε να τις χρησιμοποιήσετε σε (ορισμένες) παραμέτρους του Charging Manager, σε κανόνες χρέωσης ή για τον έλεγχο των εξόδων. Μπορείτε επίσης να γράψετε Ex.member ή Mx.member ως μεταβλητές. Εδώ, Exκαι Mxείναι το αναγνωριστικό συσκευής ενός wallbox ή μετρητή που έχει ρυθμιστεί στο Charging Manager. member είναι μια "καθορισμένη από το χρήστη" μεταβλητή που αποθηκεύεται στην αντίστοιχη συσκευή. Ορισμένες από τις μεταβλητές μπορεί να έχουν ειδική σημασία: Για την KEBA το "out1" είναι έξοδος μεταγωγής, για τους μετρητές ABB B23 τα "out1" και "out2" είναι έξοδοι μεταγωγής (για τα μοντέλα που το υποστηρίζουν). Ένα 1 ενεργοποιεί την έξοδο, ένα 0 την απενεργοποιεί ξανά.

Global Charging Manager Έξοδοι:

Στη διαμόρφωση του Charging Manager, μπορείτε να διαμορφώσετε τις συνολικές εξόδους όπως περιγράφεται παραπάνω στον ορισμό του μετρητή στην ενότητα "Έξοδοι". Αυτά τίθενται στο τέλος κάθε κύκλου ενημέρωσης εάν έχει αλλάξει η κατάστασή τους. Εάν θέλετε να ελέγχετε τις εξόδους μεταγωγής σε συσκευές που ορίζονται από τον χρήστη, συνιστάται η παραπάνω σύμβαση (βλ. Μεταβλητές διαχειριστή φόρτισης): Ορίζετε μεταβλητές με ονόματα "out1", "out2", κ.λπ. στον μετρητή που έχει οριστεί από τον χρήστη και δημιουργείτε εξόδους στον μετρητή που έχει οριστεί από τον χρήστη, οι οποίες αλλάζουν την έξοδο ανάλογα με την τιμή αυτών των μεταβλητών.

Παγκόσμιο API Modbus του διαχειριστή φόρτισης:

Το API Modbus του Charging Manager χρησιμοποιείται για τον έλεγχο συσκευών Modbus που έχουν οποιαδήποτε διεύθυνση Modbus RTU ή TCP (προσβάσιμη από το Charging Manager). Για Modbus RTU, εισαγάγετε COMx,bd,8,p,s ως διεύθυνση, όπου x είναι ο αριθμός θύρας COM, bd είναι ο ρυθμός baud, p είναι η ισοτιμία ('N', 'E' ή 'O') και s είναι ο αριθμός των stop bits (1 ή 2), όπως στη διαμόρφωση των μεμονωμένων συσκευών. Για το Modbus TCP, ο παραλήπτης είναι η διεύθυνση IP της συσκευής στο δίκτυο του Charging Manager, συμπεριλαμβανομένου του αριθμού θύρας.
Η διεύθυνση URL (για HTTP GET) του Modbus API είναι:
/cnf?cmd=modbus_get ή /cnf?cmd=modbus_set
Ο διαχειριστής χρέωσης cFos υποστηρίζει τις ακόλουθες πρόσθετες παραμέτρους ερωτήματος:
addr: Η προαναφερθείσα διεύθυνση συσκευής Modbus RTU ή TCP.
func: Αριθμός λειτουργίας Modbus, π.χ. για ανάγνωση 3 ή 4, για εγγραφή 6 ή 16.
id: Αναγνωριστικό συσκευής της συσκευής Modbus.
reg: Ο αριθμός μητρώου Modbus. Η τιμή μπορεί να δοθεί σε δεκαδική ή δεκαεξαδική μορφή (με πρόθεμα 0x).
val: αριθμός, τιμή που πρέπει να εγγραφεί στον καταχωρητή. Παραλείπεται κατά την ανάγνωση.
τύπος: "w" 16bit (προεπιλογή), d = 32bit, f = float, q = 64bit, s = string.
cnt: αριθμός, το μέγιστο μήκος της συμβολοσειράς σε καταχωρητές, παραλείπεται για άλλους τύπους ή τίθεται σε 1.
order: Συμβολοσειρά, η σειρά των byte, είτε "hl" είτε "lh".

Σημείωση: Εάν ο "μετρητής" σας έχει πρωτίστως εργασίες ελέγχου, μπορείτε να επιλέξετε την επιλογή "Απόκρυψη συσκευής" στις ρυθμίσεις αυτού του πλακιδίου, ώστε η συσκευή αυτή να μην εμφανίζεται στην αρχική σελίδα.

Σημείωση: Ορισμένοι μετρητές που διαβάζονται μέσω HTTP απαιτούν όνομα χρήστη/κωδικό πρόσβασης ως εξουσιοδότηση. Μπορείτε να το καθορίσετε στη διεύθυνση για πρόσβαση HTTP, π.χ. με http://username:password@192.168.2.111. Εάν το όνομα χρήστη ή ο κωδικός πρόσβασής σας περιέχει ένα "@", πρέπει να το αντικαταστήσετε με "%40".