شمارنده های تعریف شده توسط کاربر

توجه: مدیر شارژ cFos می تواند اکثر اینورترهای خورشیدی را با استفاده از SunSpec بخواند (نوع دستگاه "SunSpec Solar Inverter / Meter"). در این مورد نیازی نیست که تعریف ضد خود را ایجاد کنید.

مدیر شارژ cFos به شما امکان می دهد تعاریف کنتور خود را برای پشتیبانی از مترهایی که در مجموعه استاندارد نیستند ، ایجاد کنید. در حال حاضر دو نوع وجود دارد: شمارنده Modbus و شمارنده HTTP/JSON. فایل های تعریف این شمارنده ها بسیار شبیه به هم هستند. شمارنده های Modbus داده های خود را از طریق Modbus از رجیسترهای خاص می خوانند ، در حالی که/JSON داده های خود را از طریق درخواست HTTP دریافت می کنند و JSON را به عنوان پاسخ تجزیه می کنند. مدیر شارژ cFos از یک "زبان پرس و جو" کوچک برای تجزیه استفاده می کند.

علاوه بر تعدادی از متغیرهای از پیش تعریف شده، مانند جریان و ولتاژ، مترهای تعریف شده توسط کاربر نیز می توانند متغیرهای ناشناخته، تعریف شده توسط کاربر، ورودی های پرس و جو و خروجی های تنظیم شده را بخوانند. خواندن در متغیرها و تنظیم خروجی ها امکان ارزیابی فرمول ها را فراهم می کند. در ترکیب با متغیرهای مدیر شارژ و خروجی‌های مدیر شارژ جهانی که در زیر توضیح داده شده است، این یک ویژگی قدرتمند است و حتی برخی از وظایف اتوماسیون خانگی و کنترل دستگاه‌های خارجی مانند ذخیره‌سازی باتری را امکان‌پذیر می‌کند. اگر کارهای کنترلی را با این کار اجرا می کنید، لطفاً بازخورد خود را به ما بدهید. ما به آنچه افراد با مدیر شارژ cFos کنترل می کنند بسیار علاقه مندیم و این به ما کمک می کند تا مدیر شارژ را مطابق با نیاز مشتری توسعه دهیم.

در اینجا یک مثال تعریف برای Modbus و یک تعریف برای HTTP/JSON آورده شده است:
بارگیری تعریف نمونه برای متر Modbus
بارگیری تعریف نمونه برای HTTP/JSON متر

مدیر شارژ در حال حاضر با چند پرونده از این دست همراه است ، اما شما می توانید پرونده های خود را در بخش "پیکربندی سیستم" بارگذاری کنید و همچنین دوباره آنها را حذف کنید.
در اینجا بخش بزرگی از تعاریف شمارنده ای را که ما ارائه می دهیم پیدا خواهید کرد:
تعاریف کنتور ارائه شده را دانلود کنید

اگر پرونده پیشخوان خود را ایجاد کرده اید و می تواند برای سایر کاربران نیز مرتبط باشد ، بسیار ممنون می شویم اگر آن را در دسترس ما قرار دهید. سپس آن را با نسخه های بعدی Charging Manager تحویل خواهیم داد.

برای شمارنده های بیشتر تعاریف شمارنده را دانلود کنید

ساختار یک فایل تعریف:

تعاریف شمارنده فایل‌های JSON با یک شیء جهانی JSON هستند که دارای ویژگی‌ها و اشیاء فرعی است. 'rtype' نوع عملیات خواندن را تعیین می کند: 0 = Modbus، 1 = HTTP/JSON. می توانید اعداد را به صورت اعشاری یا هگز با پیشوند 0x مشخص کنید. علاوه بر این، نظرات تک خطی با استفاده از // مجاز است. توصیه می‌کنیم فایل‌های تعریف خود را از طریق اعتبارسنجی JSON5 اجرا کنید، به عنوان مثال این اعتبارسنجی JSON5

حتماً فصل فرمول ها را بخوانید تا بفهمید کدام مقادیر را می توان در فرمول ها در مرجع زیر استفاده کرد.

تعاریف Modbus یک شی "rtu" با ویژگی های زیر دارند:

silence_period ، در میلی ثانیه. طول مکث را قبل از دسترسی Modbus RTU تعیین می کند تا دستگاه شروع یک پیام را تشخیص دهد.
silence_same_slave ، true: مکث حتی با دسترسی های متعدد به یک دستگاه حفظ می شود.
تکرار: تعداد دفعات تکرار در صورت عدم پاسخگویی دستگاه.
rcv_timeout: در msec. حداکثر زمان انتظار برای هر دسترسی تا زمانی که دستگاه پاسخ دهد.

این ویژگی های جهانی برای Modbus TCP و RTU اعمال می شود:

modbus_read: شماره تابع دستور خواندن Modbus معمولاً 3 یا 4 است.
modbus_read_max_registers: حداکثر تعداد رجیسترهایی که می توان در یک حرکت خواند.
modbus_allow_gaps: true = مناطق ثبت نشده استفاده نشده ممکن است در عملیات خواندن خوانده شوند.

برای Modbus TCP و HTTP/JSON یک شی "tcp" با ویژگی های زیر وجود دارد:

connect_timeout: msec است. حداکثر زمان انتظار برای اتصال TCP
delay_after_connect: در msec. قبل از ارسال اولین فرمان، پس از برقراری ارتباط، مکث کنید.

هر دو نوع تعریف (Modbus و HTTP/JSON) دارای ویژگی های زیر هستند:

upd_delay: در msec. فاصله زمانی را که یک دستگاه می تواند خوانده شود را تعیین می کند. برخی از دستگاه‌ها هنگام نظرسنجی بیش از حد بارگذاری می‌شوند.
سازنده: رشته، نام سازنده. این در اطلاعات توسعه یافته کاشی نشان داده شده است.
delay_accumulated: true = مقادیر انباشته شده (کیلووات ساعت) فقط هر 3 ثانیه یا زمانی که توان کافی وجود دارد، درخواست می شود. false = این مقادیر همیشه پرس و جو می شوند.
ui_addr: URL، اگر با آدرس دستگاه برای تماس با رابط وب متفاوت باشد.
رزرو شده: آرایه ای با مقادیری که به صورت 0 تفسیر می شوند (مفید است اگر دستگاه از مقادیر خاصی بسته به مدل پشتیبانی می کند).

اگر ویژگی های ذکر شده در بالا را حذف کنید، مدیر شارژ cFos مقادیر پیش فرض را می گیرد که در بیشتر موارد به خوبی کار می کنند.

مرحله بعدی در تعریف 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، power_w_l1_minus..power_w_l3_minus، power_w_import، power_w_import، power_w_export، power_w_export، power_w_export، 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 سعی می کند مقادیر را از متغیرهای موجود محاسبه کند.

علاوه بر این، می توانید متغیرهای دیگری را با نام های مختلف تعریف کنید که با هر به روز رسانی خوانده می شوند یا با استفاده از فرمول ها محاسبه می شوند.

تعریف متغیر:

نام شی از متغیر ذکر شده در بالا گرفته شده است و دارای ویژگی های زیر است:
fixed: رشته ای با مقدار ثابت. اگر برای مثال، هیچ مقداری را نمی توان تعیین کرد، به عنوان مثال برای type_designation یا ولتاژ مفید است.
expr: رشته، متغیر خوانده نمی شود بلکه به عنوان یک فرمول ارزیابی می شود.
type: اگر ثابت یا expr نیست، نوع متغیر: int16, int32, float, int64, string.این برای Modbus مهم است که ثبات ها را با فرمت صحیح بخواند. با JSON/HTTP بیشتر می توانید از float استفاده کنید.
رزولوشن: شناور، مقدار خوانده شده در "رزولوشن" ضرب می شود. مقادیر ولتاژ باید بر حسب ولت، جریان به میلی آمپر، توان بر حسب وات، انرژی بر حسب وات ساعت (وات ساعت) باشد. با «رزولوشن» منفی، اگر مقداری دارای علامت مخالف باشد، می‌توانید معکوس کنید.
آدرس: شماره (Modbus) یا رشته (HTTP/JSON)، شماره ثبت Modbus یا URL HTTP مقداری که باید خوانده شود.
query: رشته، با HTTP JSON مشخصات در زبان جستجوی مدیر شارژ که با آن مقداری را که باید در پاسخ JSON خوانده شود پیدا می کند.
order: رشته، برای Modbus ترتیب بایت، یا "hl" یا "lh"، که در آن مقدار وجود دارد. length: عدد، با Modbus طول یک رشته در ثبات ها. برای متغیرهای 'version' و 'firmware_version'، 'length' برای ایجاد رشته هایی با نقطه از نسخه های عددی استفاده می شود. مقادیر 2 یا 4 برای "طول" مجاز است، که سپس فرمت های نسخه ab و abcd را ایجاد می کند. با «طول» 2 و نوع «int16»، مدیر شارژ بایت کم و زیاد را با یک نقطه، با کلمه int32 کم و زیاد، با «int64» کم و زیاد dword جدا می کند. با 'lenth' 4 و 'int32'، مدیر شارژ مقدار را به 4 بایت تقسیم می کند که با نقطه از هم جدا شده اند. با 'int64' 4 کلمه بر این اساس.

تعریف ورودی ها:

مدیر شارژ می تواند حداکثر 32 مقدار ورودی را از رجیسترهای مختلف یا عناصر JSON در هر دستگاه جستجو کند. ویژگی "Inputs" یک آرایه JSON است. برای هر ورودی باید ویژگی های زیر را تعریف کنید:
آدرس: آدرس (رجیستر Modbus یا URL).
count: تعداد بیت های ورودی خوانده شده با این درخواست.
query: برای HTTP/JSON، زبان پرس و جو را برای یافتن مقدار در پاسخ.

با هر به‌روزرسانی، مدیر شارژ cFos همه ورودی‌های تعریف‌شده به این روش را می‌خواند و بیت‌ها را به صورت داخلی در آرایه‌ای قرار می‌دهد که سپس می‌توان در فرمول‌های Input1..InputN جستجو کرد.

تعریف خروجی ها:

مدیر شارژ می تواند تا 32 خروجی را در هر دستگاه تغییر دهد. اگر وضعیت خروجی مربوطه تغییر کرده باشد، تمام خروجی ها در پایان هر چرخه به روز رسانی سوئیچ می شوند.
برای هر ورودی باید ویژگی های زیر را تعریف کنید:
آدرس: URL HTTP با روش HTTP اختیاری، به عنوان مثال//http://www.example.com?output1=${var1}. برای تنظیم رجیسترهای Modbus، می توانید از CFos Charging Manager HTTP API استفاده کنید. مدیر شارژ دسترسی مناسب به لوکال هاست را تشخیص می دهد و درخواست را به کنترل کننده داخلی هدایت می کند تا مانند دسترسی HTTP API خارجی به مجوز نیاز نداشته باشید.
بدنه: بدنه HTTP اختیاری برای POST یا PUT.
در URL و بدنه، می‌توانید از فرمول‌های ${expr} استفاده کنید که به متغیرهای مدیر شارژ جهانی یا از متر مربوطه اشاره می‌کنند. فرمول «expr» زمانی ارزیابی می‌شود که خروجی تنظیم و در متن URL یا بدنه جایگزین شود. در مثال بالا، اگر http://www.example.com?output1=1 خروجی را تنظیم کند و//آن را پاک کند، می توانید یک متغیر '//' تعریف کرده و آن را تنظیم کنید. به دلخواه روی 1 یا 0 را تنظیم کنید. به این ترتیب، می‌توانید مقادیر عددی را برای کنترل عملکرد حافظه در ثبات‌های Modbus که قبلاً در متغیری با استفاده از یک فرمول ذخیره کرده‌اید، بنویسید.
اگر به جای ارسال یک مقدار عددی در URL، باید بسته به فرمول، متنی را با متن دیگری جایگزین کنید، مانند سوکت های WLAN Shelly، می توانید آن را به این صورت بنویسید: ${if expr`text1`text2}. "آپوستروف" یک بک تیک است (کد اسکی 96). اگر 'expr' != 0، text1 استفاده می شود، در غیر این صورت text2 استفاده می شود. URL یک سوکت WLAN Shelly به این شکل است، به عنوان مثال: http://<ip-addr>/relay/0?turn=${if expr`on`off}، یعنی اگر expr != 0 مدیر شارژ سپس http ://<ip-addr>/relay/0?turn=on on را می خواند، در غیر این صورت http://<ip-addr>/relay/0?turn=off.

اگر یک مسیر نسبی را به عنوان URL وارد کنید، مدیر شارژ از آدرس پیکربندی شده برای دستگاه مربوطه استفاده می کند. اگر "localhost" را به عنوان دامنه وارد کنید، مدیر شارژ آدرس دستگاهی را که روی آن در حال اجرا است می گیرد. اگر دسترسی به API خود را تشخیص دهد، به جای اجرای یک دسترسی کامل HTTP از کنترل کننده داخلی استفاده می کند، به طوری که شما مجبور نیستید نام کاربری و رمز عبور را در تعریف متر ذخیره کنید. URL که با * شروع می شود باعث می شود مدیر شارژ همیشه دسترسی کامل HTTP را انجام دهد.

تعریف زبان پرس و جو:

در حال حاضر، نام اعضا و عملگرهای "." را می توان در عبارت جستجوی "پرس و جو" استفاده کرد. و "[]" استفاده می شود، به عنوان مثال:

تستعنصری به نام "آزمون"
name1.name2عنصری به نام "name2" در شی object کودک "name1"
نام [idx]عنصر "idx" عنصر شی "name". "idx" می تواند یک عدد باشد ، برای مثال برای آرایه ها یا یک رشته
نام ["u2"]عنصر "u2" عنصر شی "name" مربوط به "name.u2" است
name[{"el1": "v1"، "el2": 3}].valueعنصر آرایه ای را انتخاب کنید که شرایط نشانه گذاری شی را برآورده کند و عنصری به نام "value" را ارزیابی کنید. در اینجا، برای مثال، عنصری در آرایه «name» انتخاب می‌شود که دارای عناصر شی «el1» با مقدار «v1» و «el2» با مقدار 3 است و سپس مقدار عنصر «value» از این شی برگردانده می‌شود. .

متغیرهای مدیر شارژ جهانی:

می توانید متغیرهایی را در پیکربندی مدیر شارژ ایجاد کنید. می توانید از یک مقدار ثابت یا یک فرمول به عنوان مقدار استفاده کنید. در پایان هر چرخه به روز رسانی، مدیر شارژ مقدار این متغیر را در صورت لزوم دوباره محاسبه می کند. سپس می‌توانید از آن‌ها در (بعضی) پارامترهای مدیر شارژ، قوانین شارژ یا برای کنترل خروجی‌ها استفاده کنید. همچنین می توانید E x.member یا M x.member را به عنوان یک متغیر بنویسید. در اینجا E x و M x شناسه دستگاه یک جعبه دیواری یا متر است که در مدیر شارژ تنظیم شده است. عضو یک متغیر "تعریف شده توسط کاربر" است که در دستگاه مربوطه ذخیره می شود. برخی از متغیرها می توانند معنای خاصی داشته باشند: با KEBA "out1" یک خروجی سوئیچینگ است، با متر ABB B23 "out1" و "out2" خروجی های سوئیچینگ هستند (برای مدل هایی که این را پشتیبانی می کنند). 1 خروجی را تغییر می دهد و 0 دوباره آن را خاموش می کند.

خروجی های مدیر شارژ جهانی:

در پیکربندی مدیر شارژ، می‌توانید خروجی‌های سراسری را همانطور که در بالا در تعریف متر در زیر «خروجی‌ها» توضیح داده شد، پیکربندی کنید. اگر وضعیت آنها تغییر کرده باشد، اینها در پایان هر چرخه به روز رسانی تنظیم می شوند. اگر می‌خواهید خروجی‌های سوئیچینگ را در دستگاه‌های تعریف‌شده توسط کاربر کنترل کنید، قرارداد بالا توصیه می‌شود (به متغیرهای مدیر شارژ مراجعه کنید): متغیرهایی را با نام‌های «out1»، «out2» و غیره در متر تعریف‌شده توسط کاربر تنظیم کرده و تنظیم می‌کنید. خروجی ها در متر تعریف شده توسط کاربر که در آن هستند، خروجی را بسته به مقدار این متغیر تغییر دهید.

Global Modbus API مدیر شارژ:

Modbus API مدیر شارژ برای کنترل دستگاه های Modbus که دارای هر آدرس Modbus RTU یا TCP هستند (که توسط مدیر شارژ قابل دسترسی است) استفاده می شود. COMx,bd,8,p,s را به عنوان آدرس Modbus RTU وارد کنید، مانند پیکربندی هر دستگاه، که در آن x شماره پورت COM، bd نرخ باود، p برابری است ('N', '' E یا O) و s تعداد بیت های توقف (1 یا 2) است. با Modbus TCP، آدرس آدرس IP دستگاه در شبکه مدیر شارژ شامل شماره پورت است.
URL (برای HTTP GET) Modbus API این است:
/cnf?cmd=modbus_get یا /cnf?cmd=modbus_set
مدیر شارژ cFos از پارامترهای پرس و جو اضافی زیر پشتیبانی می کند:
addr: آدرس دستگاه Modbus RTU یا TCP بالا.
تابع: شماره تابع Modbus، به عنوان مثال 3 یا 4 برای خواندن، 6 یا 16 برای نوشتن.
id: شناسه دستگاه دستگاه Modbus.
reg: شماره ثبت Modbus. مقدار را می توان به صورت اعشاری یا هگزا (با پیشوند 0x) مشخص کرد.
val: عدد، مقداری که باید در رجیستر نوشته شود. حذف در هنگام خواندن
نوع: 'w' 16bit (پیش فرض)، d = 32bit، f = float، q = 64bit، s = رشته.
cnt: عدد، حداکثر طول رشته در رجیسترها، برای انواع دیگر حذف کنید یا روی 1 تنظیم کنید.
مرتبه: رشته حاوی ترتیب بایت، یا "hl" یا "lh".

توجه: اگر «متر» شما عمدتاً برای اهداف کنترلی استفاده می‌شود، می‌توانید گزینه «مخفی کردن دستگاه» را در تنظیمات این کاشی علامت بزنید تا این دستگاه در صفحه شروع ظاهر نشود.

توجه: برخی از مترهای خوانده شده از طریق HTTP به نام کاربری/رمز عبور به عنوان مجوز نیاز دارند. می توانید این را در آدرس دسترسی HTTP مشخص کنید، به عنوان مثال با http://username:password@192.168.2.111. اگر نام کاربری یا رمز عبور شما حاوی "@" است، باید آن را با "%40" جایگزین کنید.