MQTT एक केंद्रीय संदेश ब्रोकर वाला एक इंटरनेट प्रोटोकॉल है। इस संदेश दलाल के साथ, प्रतिभागी कुछ "विषयों" की सदस्यता ले सकते हैं और विषयों पर संदेश भेज सकते हैं। cFos चार्जिंग मैनेजर विशिष्ट विषयों पर संदेशों को सुन सकता है और इसलिए इसे MQTT के माध्यम से नियंत्रित किया जा सकता है। यह उन उपकरणों की स्थिति भी प्रसारित कर सकता है जिन्हें वह प्रबंधित करता है। cFos Power Brain Wallbox को MQTT के माध्यम से भी नियंत्रित किया जा सकता है और इसकी स्थिति को प्रसारित किया जा सकता है। औद्योगिक नियंत्रण (M2M) और निगरानी और रिकॉर्डिंग के लिए होम ऑटोमेशन सिस्टम से कनेक्ट करते समय यह उपयोगी होता है। सभी विषय cfos_mqtt
से शुरू होते हैं। यदि आप एक MQTT ब्रोकर के साथ कई cFos MQTT डिवाइस कनेक्ट करना चाहते हैं, तो विषय वैकल्पिक रूप से cfos_mqtt_<Seriennummer>/
के साथ शुरू हो सकता है, जिसे कॉन्फ़िगरेशन के तहत एडजस्ट किया जा सकता है। कॉन्फ़िगरेशन में आप मानक MQTT ब्रोकर के लिए URL भी निर्दिष्ट कर सकते हैं। URL वैकल्पिक रूप से mqtt://
और mqtts://
से शुरू हो सकते हैं। mqtts://
cFos चार्जिंग मैनेजर या cFos Power Brain Wallbox एक TLS कनेक्शन स्थापित करता है। अनएन्क्रिप्टेड कनेक्शन के लिए मानक पोर्ट 1883 और टीएलएस कनेक्शन के लिए 8883 का उपयोग किया जाता है। हालाँकि, आप URL में एक पोर्ट भी निर्दिष्ट कर सकते हैं। आप सामान्य URL संकेतन में उपयोगकर्ता नाम और पासवर्ड दर्ज कर सकते हैं, जैसे mqtt://user:[email protected]
। यदि आप cFos चार्जिंग मैनेजर कॉन्फ़िगरेशन में एक MQTT ब्रोकर निर्दिष्ट करते हैं, तो आप या तो एक व्यक्तिगत ब्रोकर निर्दिष्ट कर सकते हैं या केवल mqtt
लिख सकते हैं। फिर कॉन्फ़िगरेशन में संग्रहीत डिफ़ॉल्ट ब्रोकर का उपयोग किया जाता है।
cFos चार्जिंग प्रबंधक MQTT 3.1.1 और MQTT 5 दोनों का समर्थन करता है। यदि आप URL को mqtt3:// या mqtt5:// (mqtts3:// और mqtts5:// एन्क्रिप्टेड कनेक्शन के लिए) से शुरू करते हैं, तो आप प्रोटोकॉल संस्करण निर्धारित करते हैं। डिफ़ॉल्ट MQTT 3.1.1 है। MQTT 5 के साथ, cFos चार्जिंग मैनेजर संबंधित त्रुटि संदेश होने पर MQTT 3.1.1 पर वापस स्विच करने का प्रयास करता है। यह पुराने मच्छर दलालों के साथ काम करता है, लेकिन जरूरी नहीं कि अन्य दलालों के साथ।
नोट: चूंकि MQTT के सेटअप के लिए एडमिन पासवर्ड की आवश्यकता होती है, इसलिए चार्जिंग मैनेजर डेटा को उसी के अनुसार संभालता है। इसलिए डेटा जानबूझकर भेजा जाता है जिसे केवल व्यवस्थापक पासवर्ड से ही एक्सेस किया जा सकता है।
MQTT ब्रोकर्स पर ध्यान दें: Stefan G. (#diebestenuserderwelt) के लिए धन्यवाद, हम ioBroker में निर्मित MQTT ब्रोकर के खिलाफ परीक्षण करने में सक्षम थे। यह MQTT 3.1.1 ब्रोकर (फरवरी 2023 तक) कई मामलों में मानक के अनुसार व्यवहार नहीं करता है: कनेक्ट करने के प्रयासों को त्रुटि संदेश के बिना चुपचाप समाप्त कर दिया जाता है, पेलोड कभी-कभी PUBLISH पैकेट में गायब होता है, PUBLISH पैकेट स्पष्ट रूप से दो बार भेजे जाते हैं (क्या यह कॉन्फ़िगरेशन सेटिंग के साथ किया जा सकता है?) इसलिए यह ब्रोकर चार्जिंग मैनेजर एपीआई को नियंत्रित करने के लिए उपयुक्त नहीं है, क्योंकि एपीआई अनुरोधों को कई बार निष्पादित किया जा सकता है। भले ही हम अपने MQTT कार्यान्वयन में अधिक से अधिक ब्रोकरों के साथ संगत होने में रुचि रखते हैं, हम वर्तमान में ioBroker के लिए मच्छर का उपयोग करने की सलाह देते हैं।
इन उपकरणों को HTTP के माध्यम से आपूर्ति करने के बजाय (HTTP API -> HTTP काउंटर और वॉलबॉक्स देखें), ये डिवाइस MQTT को भी सुन सकते हैं। डिवाइस पते के रूप में mqtt
या MQTT ब्रोकर URL दर्ज करें। संबंधित मीटर या वॉलबॉक्स तब cfos_mqtt/set/<Geräte-ID>
विषय को सुनता है, उदाहरण के लिए डिवाइस आईडी M1 से cfos_mqtt/set/M1
वाले मीटर के लिए। HTTP इनपुट काउंटर तब संदेश के रूप में JSON स्ट्रिंग की अपेक्षा करता है, जैसा कि "HTTP काउंटर और वॉलबॉक्स" के तहत HTTP API में वर्णित है। इसलिए आपके MQTT स्रोत को इस प्रारूप में डेटा डिलीवर करना चाहिए। आप उन उपकरणों को एकीकृत कर सकते हैं जो cFos चार्जिंग मैनेजर किसी अन्य स्रोत (जैसे होम ऑटोमेशन सिस्टम) से डेटा प्राप्त करके और फिर इसे चार्जिंग मैनेजर में आयात करके समर्थित नहीं करता है।
नोट: यदि स्रोत डेटा HTTP काउंटर की अपेक्षा से भिन्न प्रारूप में है, तो आप एक कस्टम काउंटर भी बना सकते हैं। MQTT के लिए यह नीचे वर्णित है।
उदाहरण:
आपने एक HTTP इनपुट काउंटर बनाया है और इसमें M3 डिवाइस आईडी के रूप में है। पते के तौर पर आपने मच्छरदानी का पता दिया है, जैसे mqtt://। यदि आप मच्छर चलाने वाले कंप्यूटर पर कमांड लाइन पर निम्न आदेश दर्ज करते हैं: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] }'
काउंटर में तब उपरोक्त मान होने चाहिए।
चार्जिंग मैनेजर कॉन्फ़िगरेशन में, आप एक MQTT ब्रोकर URL (या मानक ब्रोकर के लिए mqtt) निर्दिष्ट कर सकते हैं, जिसके तहत चार्जिंग मैनेजर तब cfos_mqtt/get/dev_info
विषय के तहत सभी उपकरणों की स्थिति प्रकाशित करता है। यह HTTP get_dev_info से ज्ञात प्रारूप में इसे प्रसारित करता है। यह आपको उपकरणों के सभी मान देता है जैसे वे यूआई में दिखाई दे रहे हैं, उदाहरण के लिए मीटर के प्रदर्शन मान या वॉलबॉक्स की स्थिति। यदि आप केवल अलग-अलग उपकरणों की सदस्यता लेना चाहते हैं, तो आप "MQTT के बारे में जानकारी प्रकाशित करें" चेकबॉक्स को निष्क्रिय कर सकते हैं और इसके बजाय "डिस्प्ले" के तहत अलग-अलग उपकरणों के लिए सेटिंग्स में "MQTT के बारे में जानकारी प्रकाशित करें" विकल्प को चेक कर सकते हैं। संबंधित डिवाइस के लिए संबंधित JSON स्ट्रिंग तब cfos_mqtt/get/<डिवाइस आईडी> विषय के तहत प्रकाशित की जाती है। आप cfos_mqtt/get/params
विषय के तहत सभी वैश्विक मूल्यों की सदस्यता भी ले सकते हैं, क्योंकि वे "पैराम्स" के तहत HTTP get_dev_info के रूप में ज्ञात प्रारूप में आउटपुट हैं।
सीएफओएस चार्जिंग मैनेजर कॉन्फ़िगरेशन में आप "एमक्यूटीटी के माध्यम से एपीआई एक्सेस के लिए ब्रोकर" के तहत एक एमक्यूटीटी ब्रोकर यूआरएल (या मानक ब्रोकर के लिए एमक्यूटीटी) निर्दिष्ट कर सकते हैं। यदि यह मान खाली नहीं है, तो cFos चार्जिंग मैनेजर cfos_mqtt/api/ से शुरू होने वाले सभी विषयों की सदस्यता लेता है। फिर यह ऐसे विषय के अंतर्गत संदेशों की व्याख्या करता है जैसे कि विषय का नाम /cnf के साथ समाप्त होने वाला HTTP URL था? प्रारंभ करता है और इसे HTTP API पर अग्रेषित करता है। चार्जिंग मैनेजर फिर HTTP API प्रतिक्रिया को cfos_mqtt/api_res विषय के तहत JSON के रूप में प्रकाशित करता है। MQTT के माध्यम से आपके नियंत्रण में लगभग संपूर्ण HTTP API है। अपवाद एपीआई कॉल हैं जो लंबी JSON प्रतिक्रियाएँ लौटाते हैं। उदाहरण: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
चार्जिंग मैनेजर वेरिएबल x को 1 पर सेट करने के लिए API फ़ंक्शन set_cm_var का उपयोग करता है cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
के अंतर्गत एक संदेश है cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
डिवाइस आईडी E1 के साथ वॉलबॉक्स के लिए RFID 5678 दर्ज करें (हमारे विस्तारित RFID फ़ंक्शन भी देखें)।
आप विषय के अंतर्गत संदेश में HTTP POST के माध्यम से स्थानांतरित किए गए डेटा को डाल सकते हैं।
उदाहरण: चार्जिंग मैनेजर के लिए उपलब्ध अधिकतम कुल करंट को समय-समय पर बदलना:
"एमक्यूटीटी के माध्यम से एपीआई एक्सेस के लिए ब्रोकर" के तहत सामान्य चार्जिंग मैनेजर सेटिंग्स के तहत अपना ब्रोकर दर्ज करें (या यदि "कॉन्फ़िगरेशन" के तहत संग्रहीत डिफ़ॉल्ट ब्रोकर का उपयोग किया जाना है तो बस एमक्यूटीटी करें)। फिर MQTT का उपयोग करके विषय पर प्रकाशित करें
cfos_mqtt/api/cmd=set_params
निम्नलिखित सामग्री वाला एक JSON ऑब्जेक्ट:
{"max_total_cur_prc": p}
जहां पी, ली जाने वाली पूर्व निर्धारित अधिकतम कुल धारा का प्रतिशत है।
ध्यान दें: कुछ HTTP एपीआई कॉल के परिणामस्वरूप चार्जिंग मैनेजर कॉन्फ़िगरेशन को सहेज लेता है। यदि आप उन्हें बहुत बार चलाते हैं, तो फ़्लैश (cFos पावर ब्रेन या cFos वॉलबॉक्स बूस्टर में) या रास्पबेरी में SD कार्ड खराब हो जाएगा। इसलिए व्यक्तिगत पैरामीटर "max_total_cur_prc" के साथ एपीआई कॉल "set_params" से पैरामीटर की बचत नहीं होती है।
यदि सीएफओएस चार्जिंग मैनेजर "लोड प्रबंधन" मोड में नहीं है, लेकिन "मॉनिटरिंग" मोड में है, तो आप एमक्यूटीटी का उपयोग करके सभी वॉलबॉक्स का नियंत्रण स्वयं ले सकते हैं। यह विशेष रूप से cFos पावर ब्रेन वॉलबॉक्स पर लागू होता है जो "ऑब्जर्व" मोड में स्लेव के रूप में संचालित होते हैं। ऐसा करने के लिए, आपको चार्जिंग मैनेजर सेटिंग्स में एमक्यूटीटी के तहत "वॉलबॉक्स नियंत्रण सक्रिय करें" विकल्प पर टिक करना होगा। फिर cFos चार्जिंग मैनेजर MQTT विषय cfos_mqtt/ctl
को सुनता है और JSON ऑब्जेक्ट वाले संदेशों की अपेक्षा करता है। इस ऑब्जेक्ट में नाम के रूप में डिवाइस आईडी के साथ गुणों के रूप में उप-ऑब्जेक्ट हैं। उप-ऑब्जेक्ट इस तरह दिखते हैं: {"cur": c, "ena": b, "wke": b, "phs": p}, जहां c mA में चार्जिंग करंट है, और b सही या गलत हो सकता है . "एना": गलत वॉलबॉक्स पर चार्जिंग को निष्क्रिय कर देता है, "डब्ल्यूके": ट्रू वॉलबॉक्स पर "ऑटो वेक अप" कमांड भेजने की कोशिश करता है (वर्तमान में केवल सीएफओ पावर ब्रेन वॉलबॉक्स के साथ संभव है)। 1-चरण और 3-चरण चार्जिंग के बीच स्विच करने के लिए p 1 या 3 हो सकता है। आप केवल कुछ नियंत्रण कार्य करने के लिए "cur", "ena", "wke" और "phs" को भी छोड़ सकते हैं। उदाहरण:{"E1":
{cur: 8000, ena: true, wke: true},
"E2":
{cur: 10000, phs: 3}}
डिवाइस आईडी के साथ वॉलबॉक्स के चार्जिंग करंट को 8A पर सेट करता है, चार्जिंग सक्रिय करता है और कार को जगाने का प्रयास करता है। इसके अलावा, वॉलबॉक्स E2 के लिए चार्जिंग करंट को 10A पर सेट किया गया है और 3-चरण चार्जिंग पर स्विच किया गया है।
आप "कॉन्फ़िगरेशन" के तहत सिस्टम लॉग में लॉग प्रविष्टियों के हस्तांतरण के लिए एक MQTT ब्रोकर URL निर्दिष्ट कर सकते हैं। फिर cFos चार्जिंग मैनेजर cfos_mqtt/log
विषय के तहत सभी लॉग प्रविष्टियों को प्रकाशित करता है। यह आपको चार्जिंग मैनेजर की निगरानी के लिए दूरस्थ रूप से लॉग का मूल्यांकन करने की अनुमति देता है। आप "कॉन्फ़िगरेशन" के तहत लेन-देन लॉग में प्रविष्टियों के लिए MQTT ब्रोकर URL भी निर्दिष्ट कर सकते हैं। फिर सभी लोड लेनदेन विषय cfos_mqtt/ta_log
के तहत भेजे जाते हैं। यह चार्जिंग लेनदेन के बिलिंग डेटा को दूरस्थ रूप से मूल्यांकन करने की अनुमति देता है और चार्जिंग लेनदेन का बैकअप किसी अन्य सिस्टम पर बनाया जाता है। चार्ज करने का लेन-देन तब शुरू होता है जब चार्जिंग कनेक्टर प्लग इन होता है और अनप्लग होने पर समाप्त होता है।
आप MQTT के लिए rtype=2 का उपयोग करके कस्टम काउंटर बना सकते हैं। इन काउंटरों को HTTP काउंटरों (rtype = 1) के समान परिभाषित किया गया है। हालाँकि, यहाँ पते HTTP URL नहीं हैं, लेकिन MQTT विषय हैं। उदाहरण:"power_w": {
"address": "/test_topic3",
"type": "float",
"query": "power_w"
}
यहां उपयोगकर्ता-परिभाषित काउंटर विषय /test_topic3 की सदस्यता लेता है और "power_w", यानी {"power_w": 1234} के साथ JSON ऑब्जेक्ट की अपेक्षा करता है। अलग-अलग काउंटर चर के अलग-अलग विषय हो सकते हैं और संबंधित विषय के तहत संदेश प्रकाशित होते ही इसे अपडेट कर दिया जाएगा।