Τεκμηρίωση

Τομείς εφαρμογών MQTT

Το MQTT είναι ένα πρωτόκολλο διαδικτύου με έναν κεντρικό διαμεσολαβητή μηνυμάτων. Με αυτόν τον διαμεσολαβητή μηνυμάτων, οι συμμετέχοντες μπορούν να εγγραφούν σε ορισμένα "θέματα" και να στέλνουν μηνύματα σε θέματα. Ο Διαχειριστής χρέωσης cFos μπορεί να ακούει μηνύματα για συγκεκριμένα θέματα και, συνεπώς, να ελέγχεται μέσω MQTT. Μπορεί επίσης να κοινοποιεί την κατάσταση των συσκευών που διαχειρίζεται. Το cFos Power Brain Wallbox μπορεί επίσης να ελέγχεται μέσω MQTT και να μεταδίδει την κατάστασή του. Αυτό είναι χρήσιμο κατά τη σύνδεση με ένα σύστημα οικιακού αυτοματισμού, για βιομηχανικό έλεγχο (M2M) και για παρακολούθηση και καταγραφή. Όλα τα θέματα ξεκινούν με cfos_mqtt. Αν θέλετε να συνδέσετε πολλές συσκευές cFos MQTT σε έναν μεσίτη MQTT, το θέμα μπορεί προαιρετικά να ξεκινά με cfos_mqtt_<σειριακός αριθμός>/, ρυθμιζόμενο στο πλαίσιο διαμόρφωσης. Στη ρύθμιση παραμέτρων μπορείτε επίσης να ορίσετε μια διεύθυνση URL για τον προεπιλεγμένο μεσίτη MQTT. Οι διευθύνσεις URL μπορούν προαιρετικά να ξεκινούν με mqtt:// και mqtts: //. Με το mqtts://, ο Διαχειριστής φόρτισης cFos ή το Wallbox cFos Power Brain εγκαθιστά μια σύνδεση TLS. Χρησιμοποιούνται οι τυπικές θύρες 1883 για μη κρυπτογραφημένες συνδέσεις και 8883 για συνδέσεις TLS. Ωστόσο, μπορείτε επίσης να καθορίσετε μια θύρα στη διεύθυνση URL. Μπορείτε να καθορίσετε το όνομα χρήστη και τον κωδικό πρόσβασης με τη συνήθη σημειογραφία URL, π.χ. mqtt://user:password@192.168.2.111. Εάν καθορίσετε έναν μεσίτη MQTT στη ρύθμιση παραμέτρων του Διαχειριστή χρέωσης cFos, μπορείτε είτε να καθορίσετε έναν μεμονωμένο μεσίτη είτε να γράψετε απλώς mqtt. Στην περίπτωση αυτή, χρησιμοποιείται ο προεπιλεγμένος μεσίτης που είναι αποθηκευμένος στη ρύθμιση παραμέτρων.

Ο Διαχειριστής χρέωσης cFos υποστηρίζει τόσο το MQTT 3.1.1 όσο και το MQTT 5. Αν αφήσετε τη διεύθυνση URL να ξεκινά με mqtt3:// ή mqtt5:// (mqtts3:// και mqtts5:// για κρυπτογραφημένη σύνδεση), καθορίζετε την έκδοση πρωτοκόλλου. Η προεπιλογή είναι MQTT 3.1.1. Το cFos Charging Manager προσπαθεί να μεταβεί πίσω στο MQTT 3.1.1 για το MQTT 5, εάν εμφανιστεί μήνυμα σφάλματος. Αυτό λειτουργεί με παλαιότερους μεσίτες Mosquitto, αλλά όχι απαραίτητα με άλλους μεσίτες.

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

Σημείωση σχετικά με τους μεσίτες MQTT: Χάρη στον Stefan G. (#diebestenuserderwelt) μπορέσαμε να δοκιμάσουμε τον μεσίτη MQTT που είναι ενσωματωμένος στο ioBroker. Αυτός ο μεσίτης MQTT 3.1.1 συμπεριφέρεται (από τον Φεβρουάριο 2023) με διάφορους τρόπους που δεν είναι συμβατοί με το πρότυπο: οι προσπάθειες σύνδεσης τερματίζονται σιωπηρά χωρίς μήνυμα σφάλματος, το ωφέλιμο φορτίο λείπει μερικές φορές από τα πακέτα PUBLISH, τα πακέτα PUBLISH αποστέλλονται προφανώς δύο φορές (μπορεί αυτό να απενεργοποιηθεί με μια ρύθμιση παραμέτρων;). Αυτό σημαίνει ότι αυτός ο διαμεσολαβητής δεν είναι κατάλληλος για τον έλεγχο του API του Charging Manager, καθώς τα αιτήματα API ενδέχεται να εκτελεστούν περισσότερες από μία φορές. Παρόλο που μας ενδιαφέρει η υλοποίηση του MQTT να είναι συμβατή με όσο το δυνατόν περισσότερους μεσίτες, προς το παρόν συνιστούμε τη χρήση του Mosquitto για τον ioBroker.

Ενσωμάτωση μετρητών και wallboxes μέσω συσκευής τύπου "HTTP Input".

Αντί να προμηθεύετε αυτές τις συσκευές μέσω HTTP (βλ. HTTP API -> μετρητές HTTP και wallboxes), αυτές οι συσκευές μπορούν επίσης να ακούσουν MQTT. Πληκτρολογήστε mqtt ή μια διεύθυνση URL του μεσίτη MQTT ως διεύθυνση της συσκευής. Στη συνέχεια, ο αντίστοιχος μετρητής ή wallbox ακούει το θέμα cfos_mqtt/set/<ID συσκευής>, π.χ. για έναν μετρητή με ID συσκευής M1 στο cfos_mqtt/set/M1. Στη συνέχεια, ο μετρητής εισόδου HTTP αναμένει μια συμβολοσειρά JSON ως μήνυμα, όπως περιγράφεται στο API HTTP στην ενότητα "HTTP meters and wallboxes". Επομένως, η πηγή MQTT σας πρέπει να παραδίδει τα δεδομένα σε αυτή τη μορφή. Αυτό σας επιτρέπει να ενσωματώσετε συσκευές που δεν υποστηρίζονται από τον Διαχειριστή φόρτισης cFos, λαμβάνοντας τα δεδομένα από άλλη πηγή (π.χ. ένα σύστημα οικιακού αυτοματισμού) και στη συνέχεια τροφοδοτώντας τα στον Διαχειριστή φόρτισης.
Σημείωση: Εάν τα δεδομένα από την πηγή είναι σε διαφορετική μορφή από αυτή που αναμένει ο μετρητής HTTP, μπορείτε επίσης να δημιουργήσετε έναν προσαρμοσμένο μετρητή. Για το MQTT, αυτό περιγράφεται παρακάτω.


Παράδειγμα: Έχετε δημιουργήσει έναν μετρητή εισόδου HTTP και έχει ως αναγνωριστικό συσκευής το M3. Έχετε εισάγει τη διεύθυνση του διαμεσολαβητή Mosquitto ως διεύθυνση, π.χ. mqtt://192.168.2.30. Αν εισάγετε την ακόλουθη εντολή στη γραμμή εντολών στον υπολογιστή στον οποίο εκτελείται το Mosquitto:
mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
ο μετρητής θα πρέπει να περιέχει τις παραπάνω τιμές.

Μεταφορά της κατάστασης των συσκευών Charging Manager

Στη ρύθμιση παραμέτρων του Charging Manager, μπορείτε να καθορίσετε μια διεύθυνση URL του μεσίτη MQTT (ή mqtt για τον τυπικό μεσίτη), βάσει της οποίας ο Charging Manager δημοσιεύει στη συνέχεια την κατάσταση όλων των συσκευών στο θέμα cfos_mqtt/get/dev_info. Το μεταδίδει με τη μορφή που είναι γνωστή από το HTTP get_dev_info. Αυτό σας δίνει όλες τις τιμές των συσκευών όπως αυτές είναι επίσης ορατές στο UI, π.χ. τις τιμές ισχύος των μετρητών ή την κατάσταση των wallboxes. Εάν θέλετε να εγγραφείτε μόνο σε μεμονωμένες συσκευές, μπορείτε να απενεργοποιήσετε το πλαίσιο ελέγχου "Δημοσίευση πληροφοριών μέσω MQTT" και αντ' αυτού να επιλέξετε την επιλογή "Δημοσίευση πληροφοριών μέσω MQTT" στις ρυθμίσεις των μεμονωμένων συσκευών στην ενότητα "Εμφάνιση". Στη συνέχεια, ένα αντίστοιχο αλφαριθμητικό JSON σχετικά με την αντίστοιχη συσκευή δημοσιεύεται στο θέμα cfos_mqtt/get/<device-ID>. Επιπλέον, μπορείτε να εγγραφείτε σε όλες τις σφαιρικές τιμές κάτω από το θέμα cfos_mqtt/get/params, καθώς αυτές εξάγονται στη μορφή που είναι γνωστή από το HTTP get_dev_info κάτω από το "params".

έλεγχος του cFos Charging Manager API μέσω MQTT

Στη ρύθμιση παραμέτρων του Διαχειριστή χρέωσης cFos, μπορείτε να καθορίσετε μια διεύθυνση URL ενός μεσίτη MQTT (ή mqtt για τυπικούς μεσίτες) στην ενότητα "Μεσίτης για πρόσβαση API μέσω MQTT". Εάν αυτή η τιμή δεν είναι κενή, ο cFos Charging Manager εγγράφεται σε όλα τα θέματα που ξεκινούν με cfos_mqtt/api/. Στη συνέχεια, ερμηνεύει τα μηνύματα κάτω από τέτοια θέματα σαν το όνομα του θέματος να ήταν μια διεύθυνση URL HTTP που αρχίζει με /cnf? και τα προωθεί στο API HTTP. Στη συνέχεια, ο διαχειριστής χρέωσης δημοσιεύει την απόκριση του API HTTP ως JSON στο θέμα cfos_mqtt/api_res. Με αυτόν τον τρόπο, έχετε σχεδόν ολόκληρο το HTTP API υπό τον έλεγχό σας μέσω του MQTT. Εξαίρεση αποτελούν οι κλήσεις API που παραδίδουν μεγάλες απαντήσεις JSON. Παράδειγμα: Το cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 θέτει τη μεταβλητή x του Charging Manager σε 1 με τη συνάρτηση set_cm_var του API. Ένα μήνυμα στο πλαίσιο του cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 εισάγει το RFID 5678 για το wallbox με το αναγνωριστικό συσκευής E1 (δείτε επίσης τις εκτεταμένες λειτουργίες RFID).
Τα δεδομένα που διαβιβάζονται μέσω HTTP POST μπορούν να τοποθετηθούν στο μήνυμα κάτω από το θέμα.

Παράδειγμα: Αλλάξτε περιοδικά το μέγιστο συνολικό ρεύμα που είναι διαθέσιμο στο Charging Manager:
Εισάγετε τον διαμεσολαβητή σας στις γενικές ρυθμίσεις του Charging Manager στην ενότητα "Brokers for API access via MQTT" (ή απλά mqtt εάν πρόκειται να χρησιμοποιηθεί ο προεπιλεγμένος διαμεσολαβητής που είναι αποθηκευμένος στην ενότητα "Configuration"). Στη συνέχεια, χρησιμοποιώντας το MQTT, δημοσιεύστε στο θέμα
cfos_mqtt/api/cmd=set_params
ένα αντικείμενο JSON με το ακόλουθο περιεχόμενο:
{"max_total_cur_prc": p}
όπου p είναι μια ένδειξη σε ποσοστό επί τοις εκατό για το ποιο τμήμα της προκαθορισμένης μέγιστης συνολικής ροής θα πρέπει να ληφθεί.
Σημείωση: Ορισμένες από τις κλήσεις API HTTP προκαλούν την αποθήκευση των ρυθμίσεων από το Charging Manager. Αν τις εκτελείτε πολύ συχνά, το flash (στο cFos Power Brain ή στο cFos Wallbox Booster) ή η κάρτα SD στο Raspberry θα φθαρεί. Επομένως, η κλήση API "set_params" με τη μοναδική παράμετρο "max_total_cur_prc" δεν αποθηκεύει τις παραμέτρους.

Έλεγχος wallboxes μέσω MQTT

Εάν ο Διαχειριστής φόρτισης cFos δεν βρίσκεται σε λειτουργία "Διαχείριση φορτίου", αλλά σε λειτουργία "Παρακολούθηση", μπορείτε να χρησιμοποιήσετε το MQTT για να ελέγξετε όλα τα wallboxes μόνοι σας. Αυτό ισχύει ιδίως για τα wallboxes cFos Power Brain που λειτουργούν ως slaves στη λειτουργία "Observe". Για να το κάνετε αυτό, πρέπει να τσεκάρετε την επιλογή "Ενεργοποίηση ελέγχου των wallboxes" στις Ρυθμίσεις Charging Manager στην ενότητα MQTT. Στη συνέχεια, ο Διαχειριστής φόρτισης cFos ακούει το θέμα MQTT cfos_mqtt/ctl και αναμένει μηνύματα με ένα αντικείμενο JSON. Αυτό το αντικείμενο έχει υπο-αντικείμενα ως ιδιότητες με το αναγνωριστικό της συσκευής ως όνομα. Τα υποαντικείμενα έχουν την εξής μορφή: {"cur": c, "ena": b, "wke": b}, όπου c είναι το ρεύμα φόρτισης σε mA και b μπορεί να είναι true ή false αντίστοιχα. "ena": false απενεργοποιεί τη φόρτιση στο wallbox, "wke": true επιχειρεί να στείλει μια εντολή "wake up car" στο wallbox (προς το παρόν είναι δυνατή μόνο με wallboxes cFos Power Brain). Μπορείτε επίσης να παραλείψετε τα "cur", "ena" και "wke" και έτσι να εκτελέσετε μόνο ορισμένες λειτουργίες ελέγχου.
Παράδειγμα: {"E1":


{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000}}

Ρυθμίζει το ρεύμα φόρτισης του wallbox με το αναγνωριστικό συσκευής σε 8A, ενεργοποιεί τη φόρτιση και επιχειρεί να ξυπνήσει το αυτοκίνητο. Επιπλέον, το ρεύμα φόρτισης για το wallbox E2 ορίζεται σε 10A.

Αποστολή καταγραφής και καταγραφής συναλλαγών μέσω MQTT

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

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

Μπορείτε να δημιουργήσετε προσαρμοσμένους μετρητές χρησιμοποιώντας rtype = 2 για το MQTT. Αυτοί οι μετρητές ορίζονται παρόμοια με τους μετρητές HTTP (rtype = 1). Ωστόσο, οι διευθύνσεις εδώ δεν είναι διευθύνσεις HTTP, αλλά θέματα MQTT.




Παράδειγμα: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Εδώ ο μετρητής που ορίζει ο χρήστης εγγράφεται στο θέμα /test_topic3 και αναμένει ένα αντικείμενο JSON με την ιδιότητα "power_w", π.χ. {"power_w": 1234}. Διαφορετικές μεταβλητές μετρητών μπορούν να έχουν διαφορετικά θέματα και ενημερώνονται μόλις δημοσιευτεί ένα μήνυμα κάτω από το αντίστοιχο θέμα.