Dokumentasi

Kawasan aplikasi MQTT

MQTT ialah protokol internet dengan broker mesej pusat. Dengan broker mesej ini, peserta boleh melanggan "topik" tertentu dan menghantar mesej mengenai topik. Pengurus Pengecasan cFos boleh mendengar mesej mengenai topik tertentu dan oleh itu boleh dikawal melalui MQTT. Ia juga boleh menghantar status peranti yang diuruskannya. Kotak Dinding Otak Kuasa cFos juga boleh dikawal melalui MQTT dan menghantar statusnya. Ini berguna apabila menyambung ke sistem automasi rumah, untuk kawalan industri (M2M) dan untuk pemantauan dan rakaman. Semua topik bermula dengan cfos_mqtt. Jika anda ingin menyambungkan beberapa peranti cFos MQTT dengan broker MQTT, topik pilihan boleh bermula dengan cfos_mqtt_<Seriennummer>/, boleh laras di bawah konfigurasi. Dalam konfigurasi anda juga boleh menentukan URL untuk broker MQTT standard. URL secara pilihan boleh bermula dengan mqtt:// dan mqtts://. Dengan mqtts:// Pengurus Pengecasan cFos atau Kotak Dinding Otak Kuasa cFos mewujudkan sambungan TLS. Port standard 1883 untuk sambungan tidak disulitkan dan 8883 untuk sambungan TLS digunakan. Walau bagaimanapun, anda juga boleh menentukan port dalam URL. Anda boleh memasukkan nama pengguna dan kata laluan dalam notasi URL biasa, cth mqtt://user:password@192.168.2.111. Jika anda menentukan broker MQTT dalam konfigurasi Pengurus Pengecasan cFos, anda boleh sama ada menentukan broker individu atau hanya menulis mqtt. Kemudian broker lalai yang disimpan dalam konfigurasi digunakan.

Pengurus Pengecasan cFos menyokong kedua-dua MQTT 3.1.1 dan MQTT 5. Jika anda memulakan URL dengan mqtt3:// atau mqtt5:// (mqtts3:// dan mqtts5:// untuk sambungan yang disulitkan), anda menentukan versi protokol . Lalai ialah MQTT 3.1.1. Dengan MQTT 5, Pengurus Pengecasan cFos cuba menukar kembali kepada MQTT 3.1.1 jika terdapat mesej ralat yang sepadan. Ini berfungsi dengan broker Mosquitto yang lebih lama, tetapi tidak semestinya dengan broker lain.

Nota: Memandangkan persediaan MQTT memerlukan kata laluan pentadbir, pengurus pengecasan mengendalikan data dengan sewajarnya. Jadi data sengaja dihantar yang hanya boleh diakses dengan kata laluan admin.

Nota tentang broker MQTT: Terima kasih kepada Stefan G. (#diebestenuserderwelt) kami dapat menguji terhadap broker MQTT yang terbina dalam ioBroker. Broker MQTT 3.1.1 ini (setakat Feb. 2023) tidak berkelakuan mengikut piawaian dalam beberapa aspek: Percubaan Sambung ditamatkan secara senyap tanpa mesej ralat, muatan kadangkala tiada dalam paket PUBLISH, paket PUBLISH nampaknya dihantar dua kali (bolehkah ini dilakukan dengan tetapan konfigurasi dimatikan?). Oleh itu, broker ini tidak sesuai untuk mengawal API Pengurus Pengecasan, kerana permintaan API boleh dilaksanakan beberapa kali. Walaupun kami berminat untuk pelaksanaan MQTT kami serasi dengan seberapa banyak broker yang mungkin, pada masa ini kami mengesyorkan menggunakan Mosquitto untuk ioBroker.

Penyepaduan meter dan kotak dinding menggunakan jenis peranti "Input HTTP".

Daripada membekalkan peranti ini melalui HTTP (lihat HTTP API -> HTTP Counter dan Wallboxes), peranti ini juga boleh mendengar MQTT. Masukkan mqtt atau URL broker MQTT sebagai alamat peranti. Meter atau kotak dinding yang sepadan kemudian mendengar topik cfos_mqtt/set/<Geräte-ID>, cth. untuk meter dengan ID peranti M1 hingga cfos_mqtt/set/M1. Kaunter Input HTTP kemudiannya menjangkakan rentetan JSON sebagai mesej, seperti yang diterangkan dalam API HTTP di bawah "Kaunter HTTP dan Kotak Dinding". Oleh itu, sumber MQTT anda mesti menghantar data dalam format ini. Anda boleh menyepadukan peranti yang tidak disokong oleh Pengurus Pengecasan cFos dengan mendapatkan data daripada sumber lain (cth. sistem automasi rumah) dan kemudian mengimportnya ke dalam Pengurus Pengecasan.
Nota: Jika data sumber dalam format yang berbeza daripada jangkaan pembilang HTTP, anda juga boleh membuat pembilang tersuai. Untuk MQTT ini diterangkan di bawah.

Contoh:
Anda telah membuat kaunter input HTTP dan ia mempunyai M3 sebagai ID peranti. Sebagai alamat yang telah anda berikan, alamat Mosquitto Broker, cth. mqtt://. Jika anda memasukkan arahan berikut pada baris arahan pada komputer yang menjalankan 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] }'
pembilang kemudiannya harus mengandungi nilai di atas.

Pindahkan status peranti Pengurus Pengecasan

Dalam konfigurasi Pengurus Pengecasan, anda boleh menentukan URL broker MQTT (atau mqtt untuk broker standard), di mana Pengurus Pengecasan kemudiannya menerbitkan status semua peranti di bawah topik cfos_mqtt/get/dev_info. Ia menghantar ini dalam format yang diketahui daripada HTTP get_dev_info. Ini memberi anda semua nilai peranti kerana ia boleh dilihat dalam UI, cth. nilai prestasi meter atau status kotak dinding. Jika anda hanya mahu melanggan peranti individu, anda boleh menyahaktifkan kotak pilihan "Terbitkan maklumat tentang MQTT" dan sebaliknya semak pilihan "Terbitkan maklumat tentang MQTT" dalam tetapan untuk peranti individu di bawah "Paparan". Rentetan JSON yang sepadan untuk peranti masing-masing kemudian diterbitkan di bawah topik cfos_mqtt/get/<device ID>. Anda juga boleh melanggan semua nilai global di bawah topik cfos_mqtt/get/params, kerana ia dikeluarkan dalam format yang diketahui oleh HTTP get_dev_info di bawah "params".

Kawal API Pengurus Pengecasan cFos melalui MQTT

Dalam konfigurasi Pengurus Pengecasan cFos anda boleh menentukan URL broker MQTT (atau mqtt untuk broker standard) di bawah "Broker untuk akses API melalui MQTT". Jika nilai ini tidak kosong, Pengurus Pengecasan cFos melanggan semua topik yang bermula dengan cfos_mqtt/api/ . Ia kemudian mentafsirkan mesej di bawah topik sedemikian seolah-olah nama topik itu adalah URL HTTP yang berakhir dengan /cnf? memulakan dan memajukannya ke API HTTP. Pengurus Pengecasan kemudiannya menerbitkan respons API HTTP sebagai JSON di bawah topik cfos_mqtt/api_res. Anda mempunyai hampir keseluruhan API HTTP di bawah kawalan anda melalui MQTT. Pengecualian ialah panggilan API yang mengembalikan respons JSON yang panjang. Contoh: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 menggunakan fungsi API set_cm_var untuk menetapkan pembolehubah Pengurus Pengecasan x kepada 1. Terdapat mesej di bawah cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 Masukkan RFID 5678 untuk Kotak Dinding dengan ID peranti E1 (lihat juga fungsi RFID lanjutan kami).
Anda boleh meletakkan data yang dipindahkan melalui HTTP POST dalam mesej di bawah topik.

Contoh: Mengubah jumlah arus maksimum yang tersedia untuk Pengurus Pengecasan secara berkala:
Masukkan broker anda di bawah tetapan Pengurus Pengecasan am di bawah "Broker untuk akses API melalui MQTT" (atau hanya mqtt jika broker lalai yang disimpan di bawah "Konfigurasi" akan digunakan). Kemudian terbitkan ke topik menggunakan MQTT
cfos_mqtt/api/cmd=set_params
objek JSON dengan kandungan berikut:
{"max_total_cur_prc": p}
di mana p ialah peratusan daripada jumlah arus maksimum pratetap yang perlu diambil.
Nota: Sesetengah panggilan API HTTP menyebabkan Pengurus Pengecasan menyimpan konfigurasi. Jika anda menjalankannya terlalu kerap, denyar (dalam cFos Power Brain atau cFos Wallbox Booster) atau kad SD dalam Raspberry akan haus. Panggilan API "set_params" dengan parameter individu "max_total_cur_prc" oleh itu tidak membawa kepada penjimatan parameter.

Kawal kotak dinding melalui MQTT

Jika Pengurus Pengecasan cFos tidak berada dalam mod "pengurusan beban" tetapi dalam mod "pemantauan", anda boleh mengambil alih kawalan sendiri semua kotak dinding menggunakan MQTT. Ini terpakai khususnya pada kotak dinding cFos Power Brain yang dikendalikan sebagai hamba dalam mod "Perhatikan". Untuk melakukan ini, anda mesti menandakan pilihan "Aktifkan kawalan kotak dinding" di bawah MQTT dalam Tetapan Pengurus Pengecasan. Kemudian Pengurus Pengecasan cFos mendengar topik MQTT cfos_mqtt/ctl dan menjangkakan mesej dengan objek JSON. Objek ini mempunyai sub-objek sebagai sifat dengan ID peranti sebagai nama. Sub-objek kelihatan seperti ini: {"cur": c, "ena": b, "wke": b, "phs": p}, dengan c ialah arus pengecasan dalam mA, dan b boleh benar atau salah . "ena": palsu menyahaktifkan pengecasan pada kotak dinding, "wke": benar cuba menghantar arahan "bangun automatik" ke kotak dinding (pada masa ini hanya boleh dilakukan dengan kotak dinding cFos Power Brain). p boleh menjadi 1 atau 3 untuk bertukar antara pengecasan 1 fasa dan 3 fasa. Anda juga boleh meninggalkan "cur", "ena", "wke" dan "phs" untuk hanya melaksanakan fungsi kawalan tertentu. Contoh:
{"E1":
{cur: 8000, ena: true, wke: true},
"E2":
{cur: 10000, phs: 3}}

Tetapkan arus pengecasan kotak dinding dengan ID peranti kepada 8A, mengaktifkan pengecasan dan cuba membangunkan kereta. Tambahan pula, arus pengecasan untuk Wallbox E2 ditetapkan kepada 10A dan ditukar kepada pengecasan 3 fasa.

Hantar pengelogan dan log transaksi melalui MQTT

Anda boleh menentukan URL broker MQTT untuk pemindahan entri log dalam log sistem di bawah "Konfigurasi". Kemudian Pengurus Pengecasan cFos menerbitkan semua entri log di bawah topik cfos_mqtt/log. Ini membolehkan anda menilai log dari jauh untuk memantau Pengurus Pengecasan. Anda juga boleh menentukan URL broker MQTT untuk entri dalam log transaksi di bawah "Konfigurasi". Kemudian semua transaksi beban dihantar di bawah topik cfos_mqtt/ta_log. Ini membolehkan data pengebilan transaksi pengecasan dinilai dari jauh dan sandaran transaksi pengecasan dibuat pada sistem lain. Transaksi pengecasan bermula apabila penyambung pengecasan dipalamkan dan berakhir apabila ia dicabut.

Kaunter tersuai dengan MQTT

Anda boleh membuat pembilang tersuai menggunakan rtype=2 untuk MQTT. Kaunter ini ditakrifkan serupa dengan kaunter HTTP (rtype = 1). Walau bagaimanapun, alamat di sini bukan URL HTTP, tetapi topik MQTT. Contoh:
"power_w": {
"address": "/test_topic3",
"type": "float",
"query": "power_w"
}

Di sini kaunter yang ditentukan pengguna melanggan topik /test_topic3 dan mengharapkan objek JSON dengan sifat "power_w", iaitu {"power_w": 1234}. Pembolehubah pembilang yang berbeza boleh mempunyai topik yang berbeza dan akan dikemas kini sebaik sahaja mesej diterbitkan di bawah topik yang sepadan.