بالشرح الوثائقي

عدادات معرّفة من قبل المستخدم

ملاحظة: يمكن لـ cFos Charging Manager قراءة معظم محولات الطاقة الشمسية باستخدام SunSpec (نوع الجهاز "SunSpec Solar Inverter / Meter"). في هذه الحالة لا تحتاج إلى إنشاء تعريف العداد الخاص بك.

يسمح لك cFos Charging Manager بإنشاء تعريفات العدادات الخاصة بك لدعم العدادات غير الموجودة في المرجع القياسي. يوجد حاليًا ثلاثة أنواع: عدادات Modbus وعدادات HTTP/JSON وعدادات MQTT/JSON. ملفات التعريف لهذه العدادات متشابهة جدًا. تقرأ عدادات Modbus بياناتها عبر Modbus من سجلات محددة ، بينما تحصل عدادات HTTP/JSON على بياناتها عبر طلب HTTP وتحلل JSON استجابةً لذلك. بالنسبة لمقاييس MQTT/JSON ، يشترك cFos Charging Manager في موضوعات MQTT ويوزع الرسائل المنشورة تحت الموضوع كـ JSON. يستخدم cFos Charging Manager "لغة استعلام" صغيرة للتحليل. هنا هو توثيق قدرات MQTT في cFos Charging Manager.

بالإضافة إلى عدد من المتغيرات المحددة مسبقًا ، مثل التيار والجهد ، يمكن للعدادات التي يحددها المستخدم أيضًا قراءة المتغيرات غير المعروفة والمعرفة من قبل المستخدم ومدخلات الاستعلام والمخرجات المحددة. تسمح القراءة في المتغيرات وتحديد المخرجات بتقييم الصيغ. بالاقتران مع متغيرات Charging Manager ومخرجات Charging Manager العالمية الموضحة أدناه ، تعد هذه ميزة قوية وتسمح ببعض مهام أتمتة المنزل والتحكم في الأجهزة الخارجية مثل تخزين البطارية. إذا قمت بتنفيذ مهام التحكم بهذا ، فيرجى إرسال ملاحظات إلينا. نحن مهتمون جدًا بما يتحكم به الأشخاص من خلال cFos Charging Manager ويساعدنا على تطوير مدير الشحن وفقًا لاحتياجات العملاء.

فيما يلي مثال بسيط لتعريف Modbus يقرأ سجل طاقة نشط واحد. يمكنك ببساطة تغيير رقم التسجيل لتطبيقك المحدد:
تعريف مثال لسجل واحد.

فيما يلي تعريف نموذجي لـ Modbus وواحد لـ HTTP/JSON:
قم بتنزيل نموذج تعريف لمقياس Modbus
تنزيل تعريف عينة لجهاز قياس/

يأتي Charging Manager بالفعل مع عدد قليل من هذه الملفات ، ولكن يمكنك تحميل ملفاتك الخاصة ضمن "تكوين النظام" وحذفها أيضًا مرة أخرى.
ستجد هنا جزءًا كبيرًا من تعريفات العداد التي نقدمها:
قم بتنزيل تعريفات العداد المرفقة

إذا أنشأت ملفًا مضادًا خاصًا بك ويمكن أن يكون ذا صلة بالمستخدمين الآخرين ، سنكون ممتنين جدًا إذا أمكنك إتاحته لنا. ثم سنقوم بتسليمه مع الإصدارات المستقبلية من Charging Manager.

تحميل تعريفات العداد لمزيد من العدادات

هيكل ملف التعريف:

تعريفات العداد هي ملفات JSON مع كائن JSON عام له خصائص وكائنات فرعية. يحدد 'rtype' نوع عملية القراءة: 0 = Modbus، 1 = HTTP/JSON، 2 = MQTT/JSON. يمكنك تحديد الأرقام في النظام العشري أو السداسي مع بادئة من 0x. بالإضافة إلى ذلك ، يُسمح بالتعليقات أحادية السطر باستخدام // . نوصي بتشغيل ملفات التعريف الخاصة بك من خلال مدقق JSON5 ، مثل مدقق JSON5 هذا

تأكد من قراءة فصل الصيغ لفهم القيم التي يمكن استخدامها في الصيغ في المرجع التالي.

تحتوي تعريفات Modbus على كائن "rtu" بالخصائص التالية:

silence_period ، بالمللي ثانية. يحدد طول الإيقاف المؤقت قبل وصول Modbus RTU بحيث يتعرف الجهاز على بداية الرسالة.
silence_same_slave ، true: يتم الحفاظ على الإيقاف المؤقت حتى مع الوصول المتعدد إلى نفس الجهاز.
عمليات إعادة المحاولة: عدد مرات إعادة المحاولة إذا لم يستجب الجهاز.
rcv_timeout: بالمللي ثانية. أقصى وقت انتظار لكل وصول حتى يستجيب الجهاز.

تنطبق هذه الخصائص العامة على Modbus TCP و RTU:

modbus_read: رقم وظيفة أمر قراءة Modbus ، عادةً 3 أو 4.
modbus_read_max_registers: الحد الأقصى لعدد السجلات التي يمكن قراءتها دفعة واحدة.
modbus_allow_gaps: صحيح = يمكن قراءة مناطق التسجيل غير المستخدمة في عملية القراءة.

بالنسبة إلى Modbus TCP و HTTP/JSON ، يوجد كائن "tcp" بالخصائص التالية:

connect_timeout: هو مللي ثانية. أقصى وقت انتظار لاتصال TCP.
delay_after_connect: بالمللي ثانية. توقف مؤقتًا بعد إنشاء الاتصال قبل إرسال الأمر الأول.

كلا نوعي التعريف (Modbus و HTTP/JSON) لهما أيضًا الخصائص التالية:

upd_delay: بالمللي ثانية. يحدد الفاصل الزمني الذي يمكن قراءة الجهاز فيه. تصبح بعض الأجهزة محملة بشكل زائد عند الاستقصاء كثيرًا.
الشركة المصنعة: سلسلة ، اسم الشركة المصنعة. يظهر هذا في المعلومات الموسعة للبلاط.
delay_accumulated: صحيح = يتم الاستعلام عن القيم المتراكمة (kWh) كل 3 ثوانٍ فقط أو عندما تكون هناك طاقة كافية. خطأ = يتم الاستعلام دائمًا عن هذه القيم.
ui_addr: عنوان URL ، إذا كان مختلفًا عن عنوان الجهاز لاستدعاء واجهة الويب.
محجوز: صفيف يحتوي على قيم يتم تفسيرها على أنها 0 (مفيد إذا كان الجهاز يدعم قيمًا معينة وفقًا للطراز).

إذا حذفت الخصائص المذكورة أعلاه ، سيأخذ cFos Charging Manager القيم الافتراضية ، والتي تعمل بشكل جيد في معظم الحالات.

الخطوة التالية في تعريف JSON هي تعريف المتغيرات التي يستخدمها العداد لقراءة أو حساب قيم التيار والجهد ، إلخ. يتعرف مدير الشحن على المتغيرات التالية:
type_designation ، version ، firmware_version ، serial: تشكل هذه تسمية النموذج كما هو موضح في المعلومات الموسعة للبلاط. يتم الاستعلام عنها مرة واحدة عند إعداد العداد أو إعادة ضبطه.
voltage_l1..voltage_l3 ، current_l1..current_l3 ، power_w ، power_var ، power_va ، power_w_l1..power_w_l3: يحاول مدير شحن cFos حساب current_l1..l3 و power_w و power_va من هذه القيم للجهد_ l1..l3. ليس عليك تحديد كل المتغيرات. يحاول cFos Charging Manager حساب القيم من المتغيرات الموجودة.
import_wh، export_wh: مدير الشحن يستخدم هذه المتغيرات لعرض import_wh و export_wh. مع العدادات أحادية الاتجاه (مثل العواكس) ، يجب عليك فقط تحديد import_wh. يجب تعريف export_wh فقط للعدادات ثنائية الاتجاه (مثل الذاكرة أو عدادات الكهرباء المشتراة).

soc: متوفر على الفور ، يتم عرض حالة شحن بطارية تخزين هنا في٪ في المربع.
بالإضافة إلى ذلك ، يمكنك تحديد متغيرات أخرى بأسماء مختلفة ، والتي تتم قراءتها مع كل تحديث أو حسابها باستخدام الصيغ. إذا قمت بتعريف المتغيرات التي تستخدم CM. ابدأ ، على سبيل المثال CM._set_price ، يتم تخزين القيم المعينة في متغيرات Charging Manager العالمية (انظر أدناه) ويمكن الاستعلام عنها وفقًا لذلك.
المتغيرات بـ *: إذا قمت بتعريف المتغيرات التي تبدأ بـ * ، يتم عرضها في واجهة المستخدم في لوحة العداد تحت معلومات موسعة ، على سبيل المثال درجة حرارة تخزين البطارية.

تعريف المتغير:

يتم تسمية الكائن على اسم المتغير المذكور أعلاه وله الخصائص التالية:
ثابت: سلسلة ذات قيمة ثابتة. مفيد إذا ، على سبيل المثال ، لا يمكن تحديد قيمة ، على سبيل المثال من أجل type_designation أو الجهد.
expr: سلسلة ، المتغير لا يُقرأ ولكن يتم تقييمه كصيغة.
النوع: إذا لم يكن ثابتًا أو expr ، فنوع المتغير: int16 ، int32 ، float ، int64 ، string. هذا مهم لـ Modbus لقراءة السجلات بالتنسيق الصحيح. باستخدام JSON/HTTP ، يمكنك في الغالب استخدام تعويم.
الدقة: عائم ، يتم ضرب قيمة القراءة بـ "الدقة". يجب أن تكون قيم الجهد بالفولت ، والتيارات بالمللي أمبير ، والطاقة بالواط ، والطاقة بالواط / ساعة (Wh). باستخدام "الدقة" السلبية ، يمكنك عكس القيمة إذا كانت لها علامة معاكسة.
مرة واحدة: منطقي (صواب أو خطأ) ، إذا كانت القيمة صحيحة ، تتم قراءة القيمة مرة واحدة فقط عند تهيئة الجهاز ، وإلا بشكل دوري.
العنوان: الرقم (Modbus) أو السلسلة (HTTP/JSON) أو رقم تسجيل Modbus أو عنوان HTTP URL للقيمة المراد قراءتها.
الاستعلام: سلسلة ، مع HTTP JSON المواصفات في لغة الاستعلام الخاصة بـ Charging Manager والتي يتم من خلالها العثور على القيمة التي سيتم قراءتها في استجابة JSON.
الترتيب: سلسلة ، بالنسبة إلى Modbus ، ترتيب البايت ، إما "hl" أو "lh" ، حيث توجد القيمة. length: رقم ، مع Modbus طول سلسلة في السجلات. بالنسبة لمتغيري "الإصدار" و "إصدار البرامج الثابتة" ، يتم استخدام "الطول" لإنشاء سلاسل بنقاط من الإصدارات الرقمية. يُسمح بقيم 2 أو 4 لـ "length" ، والتي ينتج عنها بعد ذلك تنسيقات الإصدار ab و abcd. باستخدام 'length' 2 والنوع 'int16' ، يفصل Charging Manager البايت المنخفض والعالي بنقطة ، مع كلمة int32 المنخفضة والعالية ، مع الكلمة المزدوجة المنخفضة والعالية 'int64'. باستخدام 'lenth' 4 و 'int32' ، يقسم مدير الشحن القيمة إلى 4 بايت مفصولة بنقاط. مع "int64" الكلمات الأربعة وفقًا لذلك.
regex: سلسلة. إذا تم تحديد تعبير عادي ، فلا يجب أن تكون استجابة العداد بتنسيق JSON. نتيجة لذلك ، يتم تقييم إما المطابقة الكاملة للتعبير العادي أو المجموعة الأولى. يُرجى الاستخدام فقط إذا كان الجهاز لا يُرجع JSON. فيما يلي قائمة ميزات تعبيراتنا النمطية:
أي حرف:.
الفئات المسماة: \d \s \w \D \S \W
فئات مجهولة: [a-z0-9_] ، [^ 0-9] ، [^\d]
مجموعات ذات بدائل: (ab | cd | ef)
المجموعات غير الملتقطة: (؟: ab | cd)
(الجشع) مرة واحدة أو لا شيء: أ؟ ، أ ؟؟
(جشع) كثير أم لا شيء: أ*، أ*؟
(الجشع) مرة أو أكثر: أ + ، أ +؟
بداية السلسلة: ^
نهاية السلسلة: $

تعريف المدخلات:

يمكن لـ Charging Manager الاستعلام عن ما يصل إلى 32 قيمة إدخال من سجلات مختلفة أو عناصر JSON لكل جهاز. خاصية "المدخلات" هي مصفوفة JSON. يجب تحديد الخصائص التالية لكل إدخال:
العنوان: العنوان (سجل Modbus أو URL).
count: عدد بتات الإدخال التي تمت قراءتها مع هذا الطلب.
الاستعلام: بالنسبة إلى HTTP/JSON ، استعلام عن اللغة للعثور على القيمة في الاستجابة.

مع كل تحديث ، يقرأ cFos Charging Manager جميع المدخلات المحددة بهذه الطريقة ويضع البتات داخليًا في مصفوفة يمكن الاستعلام عنها بعد ذلك في الصيغ ، Input1..InputN.

تعريف المخرجات:

يمكن لـ Charging Manager تبديل ما يصل إلى 32 إخراجًا لكل جهاز. يتم تعريف النواتج ضمن "المخرجات" كمصفوفة JSON لكائنات المخرجات. يتم تبديل جميع المخرجات في نهاية كل دورة تحديث إذا تغيرت حالة المخرجات المعنية.
يجب تحديد الخصائص التالية في كائن الإخراج لكل ناتج:
العنوان: عنوان HTTP URL بأسلوب HTTP اختياري ، على سبيل المثال GET//}. لتعيين سجلات Modbus ، يمكنك استخدام cFos Charging Manager HTTP API. يتعرف Charging Manager على الوصول المناسب إلى المضيف المحلي ويعيد توجيه الطلب إلى المعالج الداخلي بحيث لا تحتاج إلى إذن ، كما هو الحال مع الوصول إلى واجهة برمجة تطبيقات HTTP الخارجية. إذا كان عنوان URL فارغًا بعد كل عمليات الاستبدال ، فلن يتم تعيين أي إخراج. على سبيل المثال ، يمكنك فقط تبديل المخرجات في حالة وجود متغيرات معينة (انظر الصيغ: وظيفة موجودة ()). يمكنك أيضًا تحديد $ {address} و $ {id} في العنوان. هذا هو عنوان الجهاز الحالي ومعرف Modbus كما تم تعيينهما في الإعدادات. يتم استخدام العنوان والمعرف بشكل أساسي لاستخدام Modbus API (انظر أدناه).
body: نص HTTP اختياري لـ POST أو PUT.
في عنوان URL والجسم ، يمكنك استخدام صيغ $ {expr} التي تشير إلى متغيرات Charging Manager العالمية أو من المقياس المعني. يتم تقييم صيغة "expr" عند تعيين الإخراج واستبداله في نص عنوان URL أو النص الأساسي. في المثال أعلاه ، إذا كان//يعيّن الإخراج و//يمسحها ، يمكنك تحديد متغير "var1" وتعيينه إلى 1 حسب الرغبة أو قم بتعيين 0. بهذه الطريقة ، يمكنك أيضًا كتابة قيم عددية للتحكم في أداء الذاكرة في سجلات Modbus التي قمت بتخزينها مسبقًا في متغير باستخدام صيغة.
إذا ، بدلاً من تمرير قيمة رقمية في عنوان URL ، يجب عليك استبدال نص بآخر اعتمادًا على الصيغة ، مثل مآخذ Shelly WLAN ، يمكنك كتابتها على النحو التالي: $ {if expr`text1`text2}. "الفاصلة العليا" هي علامة خلفية (رمز ASCII 96). إذا كان 'expr'! = 0 ، يتم استخدام text1 ، وإلا فإنه text2. يبدو عنوان URL لمقبس Shelly WLAN هكذا ، على سبيل المثال: http://<>/relay/0؟ turn = $ {if expr`on`off} ، أي إذا expr! = 0 فإن Charging Manager ثم يستدعي http://<>/relay/0؟ turn = on ، وإلا http://<>/relay/0؟ turn = off.

إذا قمت بإدخال مسار نسبي كعنوان URL ، فإن Charging Manager يستخدم العنوان الذي تم تكوينه للجهاز المعني. إذا أدخلت "localhost" باعتباره المجال ، فإن Charging Manager يأخذ عنوان الجهاز الذي يعمل عليه. إذا اكتشف الوصول إلى واجهة برمجة التطبيقات الخاصة به ، فإنه يستخدم المعالج الداخلي بدلاً من تنفيذ وصول HTTP كامل ، بحيث لا تضطر إلى تخزين اسم مستخدم وكلمة مرور في تعريف جهاز القياس. يؤدي عنوان URL الذي يبدأ بـ * إلى قيام Charging Manager بأداء وصول HTTP كامل دائمًا.

إعادة تعيين المخرجات: بالإضافة إلى مصفوفة "المخرجات" ، يمكنك أيضًا تحديد مصفوفة تسمى "إعادة التعيين" والتي تم تنظيمها مثل مصفوفة "المخرجات". هذا يعني أنه يمكن إعادة تعيين المخرجات إلى قيمها الأولية عند إلغاء تنشيط الجهاز. هذا ، إلى جانب المتغيرات المحددة من قبل المستخدم و "مرة واحدة": صحيح ، يسمح لك باستعادة الجهاز إلى حالته الأولية.
كتابة المخرجات بشكل دوري: في بعض الأجهزة ، يجب كتابة المخرجات بشكل دوري ، وإلا يقوم الجهاز بإعادة تعيين القيم إلى "افتراضي". على سبيل المثال ، تستخدم ذاكرة Kostal قواعدها القياسية مرة أخرى إذا لم تتم كتابة عنصر التحكم في الذاكرة بشكل نشط لفترة من الوقت. لتعيين المخرجات بشكل دوري ، يمكنك أن تسبق العنوان بـ # xxx # ، حيث يحدد xxx عدد الثواني التي تتم إعادة كتابة المخرجات ، حتى إذا ظلت القيمة المراد كتابتها كما هي. على سبيل المثال ، إذا كان العنوان /cnf؟ cmd = set_cm_vars&name = test&val = 42 ، يمكنك استخدام # 30 #/cnf؟ cmd = set_cm_vars&name = test&val = 42 للتأكد من كتابة هذه القيمة كل 30 ثانية تصبح.

تعريف لغة الاستعلام:

حاليًا ، يمكن استخدام أسماء الأعضاء وعوامل التشغيل "." في تعبيرات البحث "الاستعلام". و "[]" ، أمثلة:

اختبارالعنصر المسمى "اختبار"
name1.name2عنصر يسمى "name2" في الكائن الفرعي "name1"
اسم [معرف]عنصر "معرف" لعنصر الكائن "اسم". يمكن أن يكون "idx" رقمًا ، على سبيل المثال للمصفوفات أو سلسلة
اسم ["u2"]العنصر "u2" لعنصر الكائن "name" يتوافق مع "name.u2"
الاسم [{"el1": "v1"، "el2": 3}]. القيمةحدد عنصر مصفوفة يلبي شرط تدوين الكائن وقم بتقييم العنصر المسمى "القيمة". هنا ، على سبيل المثال ، يتم تحديد العنصر في مصفوفة "الاسم" التي تحتوي على عناصر الكائن "el1" بالقيمة "v1" و "el2" بالقيمة 3 ثم يتم إرجاع قيمة العنصر "القيمة" من هذا الكائن .

متغيرات مدير الشحن العالمي:

يمكنك إنشاء متغيرات في تكوين Charging Manager. يمكنك استخدام قيمة ثابتة أو صيغة كقيمة. في نهاية كل دورة تحديث ، يقوم Charging Manager بإعادة حساب قيمة هذا المتغير إذا لزم الأمر. يمكنك بعد ذلك استخدام هذه في (معينة) معلمات مدير الشحن أو قواعد الشحن أو للتحكم في المخرجات. يمكنك أيضًا كتابة E x.member أو M x.member كمتغير. هنا E x و M x هو معرف الجهاز الخاص بصندوق الحائط أو العداد الذي تم إعداده في Charging Manager. العضو هو متغير "معرف من قبل المستخدم" يتم تخزينه في الجهاز المقابل. يمكن أن يكون لبعض المتغيرات معنى خاص: مع KEBA "out1" هو إخراج تبديل ، مع ABB B23 متر "out1" و "out2" يقومان بتبديل المخرجات (للنماذج التي تدعم ذلك). يقوم A 1 بتبديل الإخراج ، بينما يقوم 0 بإيقاف تشغيله مرة أخرى.

إذا كان لديك أجهزة يجب تشغيلها في ظل ظروف معينة ولكن بعد ذلك يجب تشغيلها لفترة (مثل الغسالة وغسالة الصحون) ، يمكنك أيضًا تحديد المتغير على أنه "مشغل". ثم صيغة المتغير هي الشرط الذي يحدد المتغير على 1. بعد وقت قابل للتعديل ، تتم إعادة تعيينه بعد ذلك إلى 0. يسمح "شرط retrigger" بتمديد الوقت حتى إيقاف التشغيل (أي ضبط المتغير على 0) مرارًا وتكرارًا طالما تم استيفاء الشرط.

لأغراض الاختبار، يمكنك عرض مدير الشحن ومتغيرات العداد، على سبيل المثال الأسعار الحالية من أوتار:


                        عرض لقطة شاشة لمتغيرات العداد

مخرجات مدير الشحن العالمي:

في تكوين Charging Manager ، يمكنك تكوين مخرجات عامة كما هو موضح أعلاه في تعريف العداد ضمن "Outputs". يتم تعيين هذه في نهاية كل دورة تحديث إذا تغيرت حالتها. إذا كنت ترغب في التحكم في تحويل المخرجات في الأجهزة المحددة من قبل المستخدم ، يوصى بالاتفاق أعلاه (انظر متغيرات Charging Manager): يمكنك تعيين المتغيرات بأسماء "out1" و "out2" وما إلى ذلك في العداد المحدد من قبل المستخدم والإعداد المخرجات في العداد المحدد من قبل المستخدم والموجودة في تبديل الإخراج اعتمادًا على قيمة هذا المتغير.

Global Modbus API لمدير الشحن:

يتم استخدام Modbus API الخاص بـ Charging Manager للتحكم في أجهزة Modbus التي تحتوي على أي عنوان Modbus RTU أو TCP (يمكن الوصول إليه بواسطة Charging Manager). أدخل COMx ، bd ، 8 ، p ، s كعنوان لـ Modbus RTU ، كما هو الحال في تكوين الأجهزة الفردية ، حيث x هو رقم منفذ COM ، bd معدل الباود ، p هو التكافؤ ("N" ، " E 'أو' O ') و s هو عدد بتات التوقف (1 أو 2). باستخدام Modbus TCP ، يكون العنوان هو عنوان IP للجهاز في شبكة Charging Manager بما في ذلك رقم المنفذ.
عنوان URL (لـ HTTP GET) الخاص بواجهة برمجة تطبيقات Modbus هو:
/cnf؟ cmd = modbus_get أو /cnf؟ cmd = modbus_set
يدعم cFos Charging Manager معلمات الاستعلام الإضافية التالية:
addr: عنوان جهاز Modbus RTU أو TCP أعلاه.
func: رقم وظيفة Modbus ، على سبيل المثال 3 أو 4 للقراءة ، 6 أو 16 للكتابة.
المعرف: معرف الجهاز لجهاز Modbus.
reg: رقم سجل Modbus. يمكن تحديد القيمة في النظام العشري أو السداسي (مع البادئة 0x).
val: الرقم ، القيمة المراد كتابتها في السجل. إغفال أثناء القراءة.
اكتب: 'w' 16 بت (افتراضي) ، d = 32 بت ، f = تعويم ، q = 64 بت ، s = سلسلة.
cnt: الرقم ، الحد الأقصى لطول السلسلة في السجلات ، حذف لأنواع أخرى أو تعيينه على 1.
الترتيب: سلسلة تحتوي على ترتيب البايت ، إما "hl" أو "lh".

ملاحظة: إذا تم استخدام "جهاز القياس" بشكل أساسي لأغراض التحكم ، فيمكنك تحديد خيار "إخفاء الجهاز" في إعدادات هذا المربع بحيث لا يظهر هذا الجهاز في صفحة البداية.

ملاحظة: تتطلب بعض المقاييس التي تتم قراءتها عبر HTTP اسم المستخدم/كلمة المرور كتخويل. يمكنك تحديد هذا في العنوان الخاص بوصول HTTP ، على سبيل المثال مع http://username:password@192.168.2.111. إذا كان اسم المستخدم أو كلمة المرور يحتويان على "@" ، فيجب استبدالهما بـ "%40".