उपयोगकर्ता-परिभाषित काउंटर

नोट: cFos चार्जिंग मैनेजर SunSpec (डिवाइस प्रकार "SunSpec Solar Inverter / Meter") का उपयोग करके अधिकांश सोलर इनवर्टर को पढ़ सकता है। इस मामले में आपको अपनी स्वयं की काउंटर परिभाषा बनाने की आवश्यकता नहीं है।

cFos चार्जिंग मैनेजर आपको उन मीटरों का समर्थन करने के लिए अपनी खुद की मीटर परिभाषाएँ बनाने की अनुमति देता है जो मानक प्रदर्शनों की सूची में नहीं हैं। वर्तमान में दो प्रकार हैं: मोडबस काउंटर और HTTP/JSON काउंटर। इन काउंटरों के लिए परिभाषा फ़ाइलें बहुत समान हैं। मोडबस काउंटर कुछ रजिस्टरों से मोडबस के माध्यम से अपना डेटा पढ़ते हैं, जबकि HTTP/JSON काउंटर HTTP अनुरोध के माध्यम से अपना डेटा प्राप्त करते हैं और JSON को प्रतिक्रिया के रूप में पार्स करते हैं। cFos चार्जिंग मैनेजर पार्सिंग के लिए एक छोटी "क्वेरी भाषा" का उपयोग करता है।

कई पूर्वनिर्धारित चरों के अलावा, जैसे कि वर्तमान और वोल्टेज, उपयोगकर्ता-परिभाषित मीटर अज्ञात, उपयोगकर्ता-परिभाषित चर, क्वेरी इनपुट और सेट आउटपुट भी पढ़ सकते हैं। चरों में पढ़ना और आउटपुट सेट करना सूत्रों के मूल्यांकन की अनुमति देता है। नीचे वर्णित चार्जिंग मैनेजर वैरिएबल और ग्लोबल चार्जिंग मैनेजर आउटपुट के संयोजन में, यह एक शक्तिशाली विशेषता है और यहां तक कि कुछ होम ऑटोमेशन कार्यों और बैटरी स्टोरेज जैसे बाहरी उपकरणों के नियंत्रण की भी अनुमति देता है। यदि आप इसके साथ नियंत्रण कार्यों को लागू करते हैं, तो कृपया हमें प्रतिक्रिया दें। हम इस बात में बहुत रुचि रखते हैं कि लोग cFos चार्जिंग मैनेजर के साथ क्या नियंत्रित करते हैं और यह हमें ग्राहकों की जरूरतों के अनुसार चार्जिंग मैनेजर को और विकसित करने में मदद करता है।

/JSON के लिए एक उदाहरण परिभाषा दी गई है:
डाउनलोड मोडबस मीटर के लिए नमूना परिभाषा
/JSON मीटर के लिए नमूना परिभाषा डाउनलोड करें

चार्जिंग मैनेजर पहले से ही ऐसी कुछ फाइलों के साथ आता है, लेकिन आप "सिस्टम कॉन्फ़िगरेशन" के तहत अपनी खुद की फाइलें अपलोड कर सकते हैं और उन्हें फिर से हटा भी सकते हैं।
यहां आपको काउंटर परिभाषाओं का एक बड़ा हिस्सा मिलेगा जो हम प्रदान करते हैं:
आपूर्ति की गई काउंटर परिभाषाएं डाउनलोड करें

यदि आपने अपनी स्वयं की काउंटर फ़ाइल बनाई है और यह अन्य उपयोगकर्ताओं के लिए प्रासंगिक हो सकती है, तो यदि आप इसे हमें उपलब्ध करा सकते हैं, तो हम बहुत आभारी होंगे। फिर हम इसे चार्जिंग मैनेजर के भविष्य के संस्करणों के साथ वितरित करेंगे।

अधिक काउंटरों के लिए काउंटर परिभाषाएं डाउनलोड करें

परिभाषा फ़ाइल की संरचना:

काउंटर परिभाषाएँ एक वैश्विक JSON ऑब्जेक्ट वाली JSON फ़ाइलें हैं जिनमें गुण और उप-ऑब्जेक्ट होते हैं। 'rtype' रीड ऑपरेशन के प्रकार को निर्धारित करता है: 0 = मोडबस, 1 = HTTP/JSON। आप दशमलव या हेक्स में 0x के उपसर्ग के साथ संख्या निर्दिष्ट कर सकते हैं। इसके अलावा, // का उपयोग करके सिंगल-लाइन टिप्पणियों की अनुमति है। हम अनुशंसा करते हैं कि आपकी परिभाषा फ़ाइलें JSON5 सत्यापनकर्ता के माध्यम से चलाएँ, उदाहरण के लिए यह JSON5 सत्यापनकर्ता

निम्नलिखित संदर्भ में सूत्रों में किन मूल्यों का उपयोग किया जा सकता है, यह समझने के लिए सूत्र अध्याय को पढ़ना सुनिश्चित करें।

मोडबस परिभाषाओं में निम्नलिखित गुणों के साथ एक 'आरटीयू' ऑब्जेक्ट है:

साइलेंस_पीरियोड, मिसे में। मोडबस आरटीयू एक्सेस से पहले विराम की लंबाई निर्धारित करता है ताकि डिवाइस एक संदेश की शुरुआत को पहचान सके।
Silence_same_slave, true: एक ही डिवाइस पर कई एक्सेस के साथ भी पॉज़ को बनाए रखा जाता है।
पुनर्प्रयास: यदि उपकरण प्रतिसाद नहीं देता है तो पुनर्प्रयासों की संख्या।
rcv_timeout: मिसे में। डिवाइस प्रतिसाद देने तक प्रति एक्सेस अधिकतम प्रतीक्षा समय।

ये वैश्विक गुण मोडबस टीसीपी और आरटीयू पर लागू होते हैं:

modbus_read: मोडबस रीड कमांड का फंक्शन नंबर, आमतौर पर 3 या 4।
modbus_read_max_registers: रजिस्टरों की अधिकतम संख्या जिन्हें एक बार में पढ़ा जा सकता है।
modbus_allow_gaps: true = अप्रयुक्त रजिस्टर क्षेत्रों को रीड ऑपरेशन में पढ़ा जा सकता है।

मोडबस टीसीपी और एचटीटीपी/जेएसओएन के लिए निम्नलिखित गुणों के साथ एक वस्तु 'टीसीपी' है:

कनेक्ट_टाइमआउट: मिसे है। टीसीपी कनेक्शन के लिए अधिकतम प्रतीक्षा समय।
देरी_आफ्टर_कनेक्ट: मिसे में। पहला आदेश भेजने से पहले कनेक्शन स्थापित करने के बाद रुकें।

दोनों परिभाषा प्रकारों (मोडबस और HTTP/JSON) में भी निम्नलिखित गुण हैं:

upd_delay: मिसे में। उस अंतराल को निर्धारित करता है जिसमें एक उपकरण पढ़ा जा सकता है। बहुत बार पोल किए जाने पर कुछ डिवाइस ओवरलोड हो जाते हैं।
निर्माता: स्ट्रिंग, निर्माता का नाम। यह टाइल की विस्तारित जानकारी में दिखाया गया है।
देरी_संचित: सत्य = संचित मान (kWh) केवल हर 3 सेकंड में या पर्याप्त शक्ति होने पर ही पूछे जाते हैं। असत्य = ये मान हमेशा पूछे जाते हैं।
ui_addr: यूआरएल, अगर वेब इंटरफेस को कॉल करने के लिए डिवाइस के पते से अलग है।
आरक्षित: 0 के रूप में व्याख्या किए गए मानों के साथ सरणी (उपयोगी यदि डिवाइस मॉडल के आधार पर कुछ मानों का समर्थन करता है)।

यदि आप ऊपर सूचीबद्ध गुणों को छोड़ देते हैं, तो cFos चार्जिंग प्रबंधक डिफ़ॉल्ट मान लेगा, जो ज्यादातर मामलों में ठीक काम करता है।

JSON परिभाषा में अगला चरण वेरिएबल्स की परिभाषा है जो मीटर वर्तमान, वोल्टेज आदि के मूल्यों को पढ़ने या गणना करने के लिए उपयोग करता है। चार्जिंग मैनेजर निम्नलिखित चरों को पहचानता है:
टाइप_डिजाइनेशन, वर्जन, फर्मवेयर_वर्जन, सीरियल: ये मॉडल पदनाम बनाते हैं जैसा कि टाइल की विस्तारित जानकारी में दिखाया गया है। काउंटर सेट अप या रीसेट करते समय इन्हें एक बार पूछताछ की जाती है।
वोल्टेज_एल1..वोल्टेज_एल3, करंट_एल1..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 चार्जिंग मैनेजर इन मानों से साइन किए गए current_l1..l वोल्टेज के लिए प्रयास करता है। 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 चार्जिंग मैनेजर मौजूदा चरों से मानों की गणना करने का प्रयास करता है।

इसके अतिरिक्त, आप अन्य चरों को भिन्न नामों से परिभाषित कर सकते हैं, जिन्हें प्रत्येक अद्यतन के साथ पढ़ा जाता है या सूत्रों का उपयोग करके परिकलित किया जाता है।

एक चर की परिभाषा:

वस्तु का नाम ऊपर सूचीबद्ध चर के नाम पर रखा गया है और इसमें निम्नलिखित गुण हैं:
फिक्स्ड: निश्चित मूल्य के साथ स्ट्रिंग। उपयोगी है, उदाहरण के लिए, कोई मान निर्धारित नहीं किया जा सकता है, उदाहरण के लिए type_designation या वोल्टेज के लिए।
expr: स्ट्रिंग, चर को पढ़ा नहीं जाता है, लेकिन एक सूत्र के रूप में मूल्यांकन किया जाता है।
प्रकार: यदि निश्चित या expr नहीं है, तो चर का प्रकार: int16, int32, float, int64, string। मोडबस के लिए रजिस्टरों को सही प्रारूप में पढ़ना महत्वपूर्ण है। JSON/HTTP के साथ आप ज्यादातर फ्लोट का उपयोग कर सकते हैं।
रिज़ॉल्यूशन: फ्लोट, रीड वैल्यू को 'रिज़ॉल्यूशन' से गुणा किया जाता है। वोल्टेज के लिए मान वोल्ट में होना चाहिए, मिलीमीटर में धाराएं, वाट में शक्ति, वाट-घंटे (Wh) में ऊर्जा होनी चाहिए। नकारात्मक 'रिज़ॉल्यूशन' के साथ आप किसी मान को उल्टा कर सकते हैं यदि उसका विपरीत चिन्ह है।
पता: संख्या (मोडबस) या स्ट्रिंग (HTTP/JSON), मोडबस रजिस्टर नंबर या पढ़ने के लिए मान का HTTP URL।
क्वेरी: स्ट्रिंग, HTTP JSON के साथ चार्जिंग मैनेजर की क्वेरी भाषा में विनिर्देश जिसके साथ इसे JSON प्रतिक्रिया में पढ़ा जाने वाला मान मिलता है।
ऑर्डर: स्ट्रिंग, मोडबस के लिए बाइट ऑर्डर, या तो "एचएल" या "एलएच", जिसमें मान मौजूद है। लंबाई: संख्या, मोडबस के साथ रजिस्टरों में एक स्ट्रिंग की लंबाई। चर 'संस्करण' और 'फर्मवेयर_वर्जन' के लिए, 'लंबाई' का उपयोग अंकीय संस्करणों में से बिंदुओं के साथ तार बनाने के लिए किया जाता है। 'लंबाई' के लिए 2 या 4 के मानों की अनुमति है, जिसके परिणामस्वरूप संस्करण प्रारूप ab, और abcd होता है। 'लंबाई' 2 और 'int16' टाइप के साथ, चार्जिंग मैनेजर निम्न और उच्च बाइट को एक डॉट के साथ अलग करता है, int32 निम्न और उच्च शब्द के साथ, 'int64' निम्न और उच्च डॉर्ड के साथ। 'दसवीं' 4 और 'int32' के साथ, चार्जिंग मैनेजर मान को डॉट्स द्वारा अलग किए गए 4 बाइट्स में विभाजित करता है। 'Int64' के साथ 4 शब्द तदनुसार।

इनपुट की परिभाषा:

चार्जिंग मैनेजर विभिन्न रजिस्टरों या प्रति डिवाइस JSON तत्वों से 32 इनपुट मान तक क्वेरी कर सकता है। "इनपुट" संपत्ति एक JSON सरणी है। आपको प्रत्येक इनपुट के लिए निम्नलिखित गुणों को परिभाषित करना होगा:
पता: पता (मोडबस रजिस्टर या यूआरएल)।
गिनती: इस अनुरोध के साथ पढ़े गए इनपुट बिट्स की संख्या।
क्वेरी: HTTP/JSON के लिए, प्रतिक्रिया में मान खोजने के लिए क्वेरी भाषा।

प्रत्येक अद्यतन के साथ, cFos चार्जिंग प्रबंधक इस तरह से परिभाषित सभी इनपुट को पढ़ता है और बिट्स को आंतरिक रूप से एक सरणी में रखता है जिसे फिर सूत्रों, Input1..InputN में क्वेरी किया जा सकता है।

आउटपुट की परिभाषा:

चार्जिंग मैनेजर प्रति डिवाइस 32 आउटपुट तक स्विच कर सकता है। यदि संबंधित आउटपुट की स्थिति बदल गई है, तो प्रत्येक अद्यतन चक्र के अंत में सभी आउटपुट स्विच कर दिए जाते हैं।
आपको प्रत्येक इनपुट के लिए निम्नलिखित गुणों को परिभाषित करना होगा:
पता: वैकल्पिक HTTP पद्धति के साथ HTTP URL, जैसे http://www.example.com?output1=${var1}//करें। मोडबस रजिस्टर सेट करने के लिए, आप cFos चार्जिंग मैनेजर HTTP API का उपयोग कर सकते हैं। चार्जिंग मैनेजर लोकलहोस्ट के लिए उपयुक्त एक्सेस को पहचानता है और अनुरोध को आंतरिक हैंडलर पर रीडायरेक्ट करता है ताकि आपको बाहरी HTTP एपीआई एक्सेस के साथ प्राधिकरण की आवश्यकता न हो।
बॉडी: पोस्ट या पुट के लिए वैकल्पिक HTTP बॉडी।
URL और बॉडी में, आप ${expr} फ़ार्मुलों का उपयोग कर सकते हैं जो वैश्विक चार्जिंग प्रबंधक चर या संबंधित मीटर से संदर्भित करते हैं। जब आउटपुट सेट किया जाता है और URL या बॉडी के टेक्स्ट में बदल दिया जाता है, तो 'expr' फॉर्मूला का मूल्यांकन किया जाता है। ऊपर के उदाहरण में, यदि http://www.example.com?output1=1 आउटपुट सेट करता है और//इसे साफ़ करता है, तो आप एक वेरिएबल '//' को परिभाषित कर सकते हैं और इसे सेट कर सकते हैं वांछित के रूप में 1 या 0 सेट करें। इस तरह, आप मोडबस रजिस्टरों में मेमोरी प्रदर्शन को नियंत्रित करने के लिए संख्यात्मक मान भी लिख सकते हैं जिसे आपने पहले एक सूत्र का उपयोग करके एक चर में संग्रहीत किया था।
यदि, URL में एक संख्यात्मक मान पास करने के बजाय, आपको सूत्र के आधार पर एक टेक्स्ट को दूसरे के साथ बदलना है, जैसे शेली WLAN सॉकेट, तो आप इसे इस तरह लिख सकते हैं: ${if expr`text1`text2}। "एस्ट्रोफ़े" एक बैकटिक (ASCII कोड 96) है। यदि 'expr' != 0, text1 का उपयोग किया जाता है, अन्यथा text2। शेली WLAN सॉकेट के लिए URL इस तरह दिखता है, उदाहरण के लिए: http://<ip-addr>/रिले/0?turn=${if expr`on`off}, यानी अगर expr != 0 चार्जिंग मैनेजर तो कॉल http ://<ip-addr>/रिले/0?टर्न=ऑन ऑन, अन्यथा http://<ip-addr>/रिले/0?टर्न=ऑफ।

यदि आप URL के रूप में एक सापेक्ष पथ दर्ज करते हैं, तो चार्जिंग प्रबंधक संबंधित डिवाइस के लिए कॉन्फ़िगर किए गए पते का उपयोग करता है। यदि आप डोमेन के रूप में 'लोकलहोस्ट' दर्ज करते हैं, तो चार्जिंग मैनेजर उस डिवाइस का पता लेता है जिस पर वह चल रहा है। यदि यह अपने स्वयं के एपीआई तक पहुंच का पता लगाता है, तो यह पूर्ण HTTP एक्सेस निष्पादित करने के बजाय आंतरिक हैंडलर का उपयोग करता है, ताकि आपको मीटर परिभाषा में उपयोगकर्ता नाम और पासवर्ड संग्रहीत न करना पड़े। एक * से शुरू होने वाला यूआरएल चार्जिंग मैनेजर को हमेशा पूर्ण HTTP एक्सेस करने का कारण बनता है।

क्वेरी भाषा की परिभाषा:

वर्तमान में, सदस्य नाम और ऑपरेटर "।" का उपयोग "क्वेरी" खोज अभिव्यक्तियों में किया जा सकता है। और "[]" का उपयोग किया जाता है, उदाहरण:

परीक्षातत्व का नाम "परीक्षण"
name1.name2तत्व का नाम "name2" चाइल्ड ऑब्जेक्ट "name1" में रखा गया है
नाम [idx]वस्तु तत्व "नाम" का तत्व "idx"। "idx" एक संख्या हो सकती है, उदाहरण के लिए सरणियों या एक स्ट्रिंग के लिए
नाम ["u2"]वस्तु तत्व "नाम" का तत्व "u2" "name.u2" से मेल खाता है
नाम [{"el1": "v1", "el2": 3}]। मानऐरे एलीमेंट का चयन करें जो ऑब्जेक्ट नोटेशन कंडीशन को संतुष्ट करता है और 'वैल्यू' नाम के एलिमेंट का मूल्यांकन करता है। यहां, उदाहरण के लिए, तत्व को 'नाम' सरणी में चुना जाता है जिसमें ऑब्जेक्ट तत्व 'el1' मान 'v1' और 'el2' मान 3 के साथ होता है और फिर तत्व 'मान' का मान इस ऑब्जेक्ट से वापस कर दिया जाता है .

वैश्विक चार्जिंग प्रबंधक चर:

आप चार्जिंग मैनेजर कॉन्फ़िगरेशन में वेरिएबल बना सकते हैं। आप मान के रूप में एक निश्चित मान या सूत्र का उपयोग कर सकते हैं। प्रत्येक अद्यतन चक्र के अंत में, चार्जिंग प्रबंधक यदि आवश्यक हो तो इस चर के मान की पुनर्गणना करता है। फिर आप इनका उपयोग (कुछ) चार्जिंग मैनेजर मापदंडों, चार्जिंग नियमों या आउटपुट को नियंत्रित करने के लिए कर सकते हैं। आप E x.member या M x.member को एक वेरिएबल के रूप में भी लिख सकते हैं। यहां एक्स और एम एक्स चार्जिंग मैनेजर में स्थापित वॉल बॉक्स या मीटर की डिवाइस आईडी है। सदस्य एक "उपयोगकर्ता-परिभाषित" चर है जो संबंधित डिवाइस में संग्रहीत होता है। कुछ चर का एक विशेष अर्थ हो सकता है: केईबीए के साथ "आउट 1" एक स्विचिंग आउटपुट है, एबीबी बी 23 मीटर "आउट 1" और "आउट 2" आउटपुट स्विच कर रहे हैं (इसका समर्थन करने वाले मॉडल के लिए)। ए 1 आउटपुट स्विच करता है, 0 इसे फिर से बंद कर देता है।

ग्लोबल चार्जिंग मैनेजर आउटपुट:

चार्जिंग मैनेजर कॉन्फ़िगरेशन में, आप 'आउटपुट' के तहत मीटर परिभाषा में ऊपर वर्णित वैश्विक आउटपुट को कॉन्फ़िगर कर सकते हैं। ये प्रत्येक अद्यतन चक्र के अंत में सेट किए जाते हैं यदि उनकी स्थिति बदल गई है। यदि आप उपयोगकर्ता-परिभाषित उपकरणों में स्विचिंग आउटपुट को नियंत्रित करना चाहते हैं, तो उपरोक्त सम्मेलन की सिफारिश की जाती है (देखें प्रबंधक चर चार्ज करना): आप उपयोगकर्ता द्वारा परिभाषित मीटर में "आउट 1", "आउट 2", आदि नामों के साथ चर सेट करते हैं और सेट करते हैं उपयोगकर्ता-परिभाषित मीटर में आउटपुट जो इस चर के मान के आधार पर आउटपुट स्विच करें।

चार्जिंग मैनेजर का ग्लोबल मोडबस एपीआई:

चार्जिंग मैनेजर के मोडबस एपीआई का उपयोग मोडबस उपकरणों को नियंत्रित करने के लिए किया जाता है जिनमें कोई मोडबस आरटीयू या टीसीपी पता होता है (जिसे चार्जिंग मैनेजर द्वारा पहुंचा जा सकता है)। मोडबस आरटीयू के पते के रूप में COMx,bd,8,p,s दर्ज करें, जैसा कि व्यक्तिगत उपकरणों के विन्यास में है, जहां x COM पोर्ट नंबर है, bd बॉड दर है, p समता है ('N', ' E' या 'O') और s स्टॉप बिट्स (1 या 2) की संख्या है। मोडबस टीसीपी के साथ, पता पोर्ट नंबर सहित चार्जिंग मैनेजर नेटवर्क में डिवाइस का आईपी पता है।
मोडबस एपीआई का URL (HTTP GET के लिए) है:
/cnf?cmd=modbus_get या /cnf?cmd=modbus_set
cFos चार्जिंग मैनेजर निम्नलिखित अतिरिक्त क्वेरी पैरामीटर का समर्थन करता है:
addr: उपरोक्त मोडबस आरटीयू या टीसीपी डिवाइस का पता।
func: मोडबस फंक्शन नंबर, जैसे पढ़ने के लिए 3 या 4, लिखने के लिए 6 या 16।
आईडी: मोडबस डिवाइस की डिवाइस आईडी।
reg: मोडबस रजिस्टर नंबर। मान दशमलव या हेक्स (उपसर्ग 0x के साथ) में निर्दिष्ट किया जा सकता है।
वैल: संख्या, मान रजिस्टर में लिखा जाना है। पढ़ते समय चूक।
टाइप करें: 'डब्ल्यू' 16 बिट (डिफ़ॉल्ट), डी = 32 बिट, एफ = फ्लोट, क्यू = 64 बिट, एस = स्ट्रिंग।
cnt: संख्या, रजिस्टरों में स्ट्रिंग की अधिकतम लंबाई, अन्य प्रकारों के लिए छोड़ दें या 1 पर सेट करें।
ऑर्डर: स्ट्रिंग जिसमें बाइट ऑर्डर होता है, या तो "एचएल" या "एलएच"।

नोट: यदि आपका 'मीटर' मुख्य रूप से नियंत्रण उद्देश्यों के लिए उपयोग किया जाता है, तो आप इस टाइल की सेटिंग में 'डिवाइस छुपाएं' विकल्प की जांच कर सकते हैं ताकि यह डिवाइस प्रारंभ पृष्ठ पर दिखाई न दे।

नोट: HTTP के माध्यम से पढ़े जाने वाले कुछ मीटरों को प्राधिकरण के रूप में उपयोगकर्ता नाम/पासवर्ड की आवश्यकता होती है। आप इसे HTTP एक्सेस के लिए पते में निर्दिष्ट कर सकते हैं, उदाहरण के लिए http://username:password@192.168.2.111 के साथ। अगर आपके यूज़रनेम या पासवर्ड में "@" है, तो आपको इसे "%40" से बदलना होगा।