MQTT adalah protokol internet dengan broker pesan pusat. Dengan perantara pesan ini, para peserta dapat berlangganan "topik" tertentu dan mengirim pesan ke topik. CFos Charging Manager dapat mendengarkan pesan pada topik tertentu dan dengan demikian dapat dikontrol melalui MQTT. Ia juga dapat mengomunikasikan status perangkat yang dikelolanya. CFos Power Brain Wallbox juga dapat dikontrol melalui MQTT dan mengirimkan statusnya. Hal ini berguna apabila menyambungkan ke sistem otomatisasi rumah, untuk kontrol industri (M2M) dan untuk pemantauan serta perekaman. Semua topik dimulai dengan cfos_mqtt
. Jika anda ingin menghubungkan beberapa perangkat cFos MQTT ke satu broker MQTT, topik dapat dimulai dengan cfos_mqtt_<serial number>/
, dapat disesuaikan di bawah konfigurasi. Dalam konfigurasi, Anda juga dapat menetapkan URL untuk broker MQTT default. URL secara opsional dapat dimulai dengan mqtt://
dan mqtts:
//. Dengan mqtts://
, cFos Charging Manager atau cFos Power Brain Wallbox membuat koneksi TLS. Port standar 1883 untuk koneksi tidak terenkripsi dan 8883 untuk koneksi TLS digunakan. Namun demikian, Anda juga bisa menentukan port dalam URL. Anda dapat menentukan nama pengguna dan kata sandi dalam notasi URL yang biasa, misalnya mqtt://user:[email protected].
Jika Anda menentukan broker MQTT dalam konfigurasi cFos Charging Manager, Anda dapat menentukan broker individual atau cukup menulis mqtt
. Dalam hal ini, broker default yang disimpan dalam konfigurasi digunakan.
CFos Charging Manager mendukung MQTT 3.1.1 dan MQTT 5. Jika Anda membiarkan URL dimulai dengan mqtt3:// atau mqtt5:// (mqtts3:// dan mqtts5:// untuk koneksi terenkripsi), Anda akan menentukan versi protokol. Standarnya adalah MQTT 3.1.1. cFos Charging Manager mencoba untuk beralih kembali ke MQTT 3.1.1 untuk MQTT 5 jika pesan kesalahan ditampilkan. Hal ini bekerja dengan broker Mosquito yang lebih lama, tetapi belum tentu dengan broker lain.
Catatan: Karena penyiapan MQTT memerlukan kata sandi admin, maka Manajer Pengisian Daya menangani data yang sesuai. Oleh karena itu, data sengaja dikirim yang hanya dapat diakses dengan kata sandi admin.
Catatan tentang broker MQTT: Terima kasih kepada Stefan G. (#diebestenuserderwelt), kami dapat menguji broker MQTT yang ada di ioBroker. Broker MQTT 3.1.1 ini berperilaku (per Februari 2023) dalam beberapa hal yang tidak sesuai dengan standar: Upaya koneksi dihentikan secara diam-diam tanpa pesan kesalahan, payload terkadang hilang dalam paket PUBLISH, paket PUBLISH tampaknya dikirim dua kali (dapatkah hal ini dimatikan dengan pengaturan konfigurasi?). Ini berarti bahwa broker ini tidak cocok untuk mengendalikan API Charging Manager, karena permintaan API dapat dieksekusi lebih dari satu kali. Meskipun kami tertarik dengan implementasi MQTT kami yang kompatibel dengan sebanyak mungkin broker, saat ini kami merekomendasikan penggunaan Mosquitto untuk ioBroker.
Selain memasok perangkat ini melalui HTTP (lihat HTTP API -> HTTP meter dan wallbox), perangkat ini juga dapat mendengarkan MQTT. Masukkan mqtt
atau URL broker MQTT sebagai alamat perangkat. Kemudian pengukur atau wallbox yang sesuai mendengarkan topik cfos_mqtt/set/<device ID>,
misalnya untuk pengukur dengan ID perangkat M1 ke cfos_mqtt/set/M1
. Pengukur input HTTP kemudian mengharapkan string JSON sebagai pesan, seperti yang dijelaskan dalam API HTTP di bawah "Pengukur HTTP dan kotak dinding". Oleh karena itu, sumber MQTT Anda harus mengirimkan data dalam format ini. Hal ini memungkinkan anda untuk mengintegrasikan perangkat yang tidak didukung oleh cFos Charging Manager dengan mendapatkan data dari sumber lain (misal: sistem otomasi rumah) dan kemudian memasukkannya ke dalam Charging Manager.
Catatan: Jika data dari sumber dalam format yang berbeda dari yang diharapkan penghitung HTTP, Anda juga dapat membuat penghitung khusus. Untuk MQTT, hal ini dijelaskan di bawah ini.
Contoh: Anda telah membuat penghitung input HTTP dan memiliki M3 sebagai ID perangkat. Anda telah memasukkan alamat perantara Mosquitto sebagai alamat, misalnya mqtt://192.168.2.30. Jika Anda memasukkan perintah berikut ini pada baris perintah di komputer tempat Mosquitto berjalan: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] }'
penghitung kemudian harus berisi nilai di atas.
Dalam konfigurasi Charging Manager, Anda dapat menentukan URL broker MQTT (atau mqtt untuk broker standar), di mana Charging Manager kemudian mempublikasikan status semua perangkat di bawah topik cfos_mqtt/get/dev_info
. Ini mentransmisikan ini dalam format yang dikenal dari HTTP get_dev_info. Ini memberi Anda semua nilai perangkat karena mereka juga terlihat di UI, misalnya nilai daya dari meteran atau status wallbox. Jika Anda hanya ingin berlangganan ke masing-masing perangkat, Anda dapat menonaktifkan kotak centang "Publikasikan info melalui MQTT" dan sebagai gantinya, centang opsi "Publikasikan info melalui MQTT" di pengaturan masing-masing perangkat di bawah "Tampilan". Kemudian string JSON yang sesuai tentang masing-masing perangkat dipublikasikan di bawah topik cfos_mqtt/get/<device-ID>. Selain itu, Anda dapat berlangganan ke semua nilai global di bawah topik cfos_mqtt/get/params
, karena mereka adalah output dalam format yang dikenal dari HTTP get_dev_info di bawah "params".
Dalam konfigurasi cFos Charging Manager, Anda dapat menentukan URL broker MQTT (atau mqtt untuk broker standar) di bawah "Broker untuk akses API melalui MQTT". Jika nilai ini tidak kosong, cFos Charging Manager akan berlangganan ke semua topik yang dimulai dengan cfos_mqtt/api/. Kemudian menginterpretasikan pesan di bawah topik tersebut seolah-olah nama topik adalah URL HTTP yang dimulai dengan /cnf? dan meneruskannya ke HTTP API. Charging Manager kemudian mempublikasikan respons HTTP API sebagai JSON di bawah topik cfos_mqtt/api_res. Dengan cara ini, Anda memiliki hampir seluruh HTTP API di bawah kendali Anda melalui MQTT. Pengecualian adalah pemanggilan API yang memberikan respons JSON yang panjang. Contoh: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
mengatur variabel Charging Manager x ke 1 dengan fungsi API set_cm_var. Sebuah pesan di bawah cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
memasukkan RFID 5678 untuk kotak dinding dengan ID perangkat E1 (lihat juga fungsi RFID yang diperluas).
Data yang dikirim melalui HTTP POST dapat ditempatkan dalam pesan di bawah topik.
Contoh: Secara berkala ubah total arus maksimum yang tersedia untuk Manajer Pengisian Daya:
Masukkan broker Anda di bawah pengaturan Manajer Pengisian Daya umum di bawah "Broker untuk akses API melalui MQTT" (atau cukup mqtt jika broker default yang disimpan di bawah "Konfigurasi" akan digunakan). Kemudian, dengan menggunakan MQTT, publikasikan ke topik
cfos_mqtt/api/cmd=set_params
objek JSON dengan konten berikut:
{"max_total_cur_prc": p}
di mana p adalah indikasi dalam persen dari bagian mana dari total aliran maksimum yang telah ditetapkan yang harus diambil.
Catatan: Beberapa panggilan HTTP API menyebabkan Charging Manager menyimpan konfigurasi. Jika anda menjalankannya terlalu sering, flash (di cFos Power Brain atau cFos Wallbox Booster) atau kartu SD di Raspberry akan aus. Panggilan API "set_params" dengan parameter tunggal "max_total_cur_prc" oleh karena itu tidak menyimpan parameter.
Jika cFos Charging Manager tidak berada dalam mode "Load management", tetapi dalam mode "Observe", Anda dapat menggunakan MQTT untuk mengendalikan semua wallbox sendiri. Hal ini berlaku khususnya untuk wallbox cFos Power Brain yang dioperasikan sebagai slave dalam mode "Observe". Untuk melakukan ini, Anda harus mencentang opsi "Activate control of wallboxes" di bawah MQTT dalam pengaturan Charging Manager. Charging Manager cFos kemudian mendengarkan topik MQTT cfos_mqtt/ctl
dan mengharapkan pesan dengan objek JSON. Objek ini memiliki sub-objek dengan ID perangkat sebagai nama sebagai properti. Sub-objek terlihat seperti ini: {"cur": c, "ena": b, "wke": b, "phs": p}, di mana c adalah arus pengisian daya dalam mA, dan b masing-masing dapat bernilai benar atau salah. "ena": false menonaktifkan pengisian daya pada wallbox, "wke": true mencoba mengirim perintah "wake up car" ke wallbox (saat ini hanya dapat dilakukan dengan wallbox cFos Power Brain). p dapat berupa 1 atau 3 untuk beralih antara pengisian daya 1 fase dan 3 fase. Anda juga dapat menghilangkan "cur", "ena", "wke" dan "phs" dan dengan demikian hanya menjalankan fungsi kontrol tertentu.
Contoh: {"E1":
{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000, phs: 3}}
Mengatur arus pengisian daya wallbox dengan ID perangkat ke 8A, mengaktifkan pengisian daya dan mencoba membangunkan mobil. Selanjutnya, arus pengisian daya untuk wallbox E2 diatur ke 10A dan dialihkan ke pengisian daya 3 fase.
Anda bisa menentukan URL broker MQTT untuk transmisi entri log dalam log sistem di bawah "Configuration". Manajer Pengisian cFos kemudian mempublikasikan semua entri log di bawah topik cfos_mqtt/log
. Hal ini memungkinkan Anda memantau log Charging Manager dari jarak jauh. Anda juga bisa menentukan URL broker MQTT untuk entri log transaksi di bawah "Configuration". Kemudian semua transaksi pengisian dikirim di bawah topik cfos_mqtt/ta_log
. Hal ini memungkinkan evaluasi jarak jauh data akuntansi transaksi pengisian daya dan pembuatan cadangan transaksi pengisian daya pada sistem lain. Transaksi pengisian daya dimulai ketika colokan pengisian daya dicolokkan dan berakhir ketika dicabut.
Anda dapat membuat penghitung khusus menggunakan rtype = 2 untuk MQTT. Penghitung ini didefinisikan dengan cara yang sama dengan penghitung HTTP (rtype = 1). Namun, alamat di sini bukan URL HTTP, tetapi topik MQTT.
Contoh: "power_w": {"alamat": "/test_topic3", "type": "float", "query": "power_w"}
Di sini penghitung yang ditentukan pengguna berlangganan ke topik /test_topic3 dan mengharapkan objek JSON dengan properti "power_w", misalnya {"power_w": 1234}. Variabel penghitung yang berbeda dapat memiliki topik yang berbeda dan diperbarui segera setelah pesan dipublikasikan di bawah topik yang sesuai.