דוקומנטציה

דלפקים המוגדרים על ידי המשתמש

הערה: מנהל הטעינה של cFos יכול לקרוא את רוב הממירים הסולאריים באמצעות SunSpec (סוג מכשיר "מהפך שמש / מד של SunSpec"). במקרה זה אינך צריך ליצור הגדרת מונה משלך.

ה-cFos Charging Manager מאפשר לך ליצור הגדרות מד משלך לתמיכה במונים שאינם ברפרטואר הסטנדרטי. ישנם כיום שלושה סוגים: מוני Modbus, מוני HTTP/JSON ומוני MQTT/JSON. קבצי ההגדרות עבור מונים אלה דומים מאוד. מדי Modbus קוראים את הנתונים שלהם מאוגרים ספציפיים דרך Modbus, בעוד מדי HTTP/JSON מביאים את הנתונים שלהם באמצעות בקשת HTTP וקוראים JSON כתגובה. עבור מדי MQTT/JSON, מנהל הטעינה של cFos נרשם ל-MQTT Topics וקורא הודעות שפורסמו תחת הנושא בשם JSON. מנהל הטעינה של cFos משתמש ב"שפת שאילתה" קטנה כדי לקרוא אותו. הנה התיעוד של יכולות MQTT במנהל הטעינה של cFos.

בנוסף למספר משתנים מוגדרים מראש כגון זרם ומתח, מונים המוגדרים על ידי המשתמש יכולים לקרוא גם משתנים לא ידועים, המוגדרים על ידי המשתמש, כניסות שאילתות ויציאות מוגדרות. קריאה במשתנים והגדרת תפוקות מאפשרת להעריך נוסחאות. זוהי תכונה רבת עוצמה בשילוב עם משתני מנהל הטעינה ויציאות מנהל הטעינה העולמיות המתוארות להלן ואף מאפשרת משימות אוטומציה ביתיות מסוימות ושליטה במכשירים חיצוניים כגון אחסון סוללה. אם אתה משתמש בזה כדי ליישם משימות בקרה, תן לנו משוב. אנחנו מאוד מתעניינים במה הלקוחות שלנו שולטים עם cFos Charging Manager וזה עוזר לנו להמשיך ולפתח את Charging Manager בהתאם לצרכי הלקוח.

הנה דוגמה פשוטה להגדרת Modbus שקוראת אוגר כוח פעיל יחיד. אתה יכול פשוט לשנות את מספר הרישום עבור היישום הספציפי שלך:
דוגמה להגדרה עבור אוגר בודד.

להלן דוגמה להגדרה עבור Modbus ואחת עבור HTTP/JSON:
הורד הגדרת דוגמה למוד Modbus
הורד הגדרת דוגמה עבור מד/

מנהל הטעינה כבר מגיע עם כמה קבצים כאלה, אך אתה יכול להעלות קבצים משלך תחת "תצורת המערכת" וגם למחוק אותם שוב.
כאן תמצא חלק גדול מהגדרות המונה שאנו מספקים:
הורד את הגדרות המונה שסופקו

אם יצרת קובץ דלפק משלך וזה יכול להיות רלוונטי למשתמשים אחרים, אנו נודה מאוד אם תוכל להעמיד אותו לרשותנו. לאחר מכן נעביר אותו עם גרסאות עתידיות של מנהל הטעינה.

הורד הגדרות מונה עבור מונים נוספים

מבנה של קובץ הגדרות:

הגדרות מונה הן קבצי JSON עם אובייקט JSON גלובלי שיש לו מאפיינים ותתי אובייקטים. 'rtype' קובע את סוג פעולת הקריאה: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. 'mtype' קובע את סוג ההתקן: 0 = התקן אחר, 1 = מד, 2 = מהפך, 4 = אחסון סוללה.

אתה יכול לציין מספרים בעשרוניות או hex עם הקידומת '0x'. מותרות גם הערות בשורה אחת באמצעות '//'. אנו ממליצים להפעיל את קבצי ההגדרה שלך באמצעות אימות JSON5, למשל אימות JSON5

הקפד לקרוא את פרק הנוסחאות כדי להבין באילו ערכים ניתן להשתמש בנוסחאות בהפניה הבאה.

להגדרות Modbus יש אובייקט 'rtu' עם המאפיינים הבאים:

silence_period, in msec: קובע את משך ההשהיה לפני גישת Modbus RTU כך שההתקן יזהה את תחילתה של הודעה.
silence_same_slave, נכון: ההשהיה נשמרת גם אם יש מספר גישה לאותו מכשיר.
נסיונות חוזרים: מספר הניסיונות החוזרים אם המכשיר לא מגיב.
rcv_timeout: in 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 = ערכים מצטברים (kWh) נשאלים רק כל 3 שניות או כאשר יש מספיק כוח. false = ערכים אלה תמיד נשאלים בשאילתה.
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 מנסה לחשב מתוך ערכים אלו עבור voltage_l1..l3, חתום הנוכחי_l1..l3, power.w ו-power.w אתה לא צריך לציין את כל המשתנים. מנהל הטעינה של cFos מנסה לחשב את הערכים מהמשתנים הקיימים.
import_wh, export_wh: מנהל הטעינה משתמש במשתנים אלה כדי להציג import_wh ו-export_wh. עבור מונים חד-כיווניים (למשל ממירים) תמיד צריך להגדיר רק import_wh. יש להגדיר Export_wh רק עבור מונים דו-כיווניים (כגון מדי צריכת אחסון או רשת).

soc: אם זמין, מצב הטעינה של יחידת אחסון סוללה מוצג כאן ב-% באריח.
בנוסף, ניתן להגדיר משתנים נוספים בעלי שמות שונים, הנקראים או מחושבים באמצעות נוסחאות בכל עדכון. אם אתה מגדיר משתנים המתחילים ב-'CM.' start, למשל CM._set_price, הערכים שהוקצו מאוחסנים במשתני Charging Manager (ראה להלן) וניתן לשאול אותם בהתאם.
משתנים עם *: אם אתה מגדיר משתנים שמתחילים ב'*', הם יוצגו בממשק המשתמש באריח המונה תחת מידע מורחב, למשל הטמפרטורה של אחסון סוללה.
הערה: ניתן להשתמש רק במספרים ובאותיות az ו-AZ כשמות משתנים.

הגדרה של משתנה:

האובייקט נקרא על שם המשתנה המופיע למעלה ויש לו את המאפיינים הבאים:
קבוע: מחרוזת עם ערך קבוע. שימושי אם, למשל, לא ניתן לקבוע ערך, למשל עבור type_signation או מתח.
expr: מחרוזת. המשתנה אינו נקרא, אלא מוערך כנוסחה.
type: אם לא קבוע או expr, סוג המשתנה: int16, uint16, int32, uint32, float, int64, string זה חשוב ל-Modbus כדי לקרוא את הרגיסטרים בפורמט הנכון. uint16 ו-uint32 הם סוגים שיכולים לקבל רק מספרים חיוביים. עם JSON/HTTP אתה יכול בדרך כלל להשתמש ב-float.
רזולוציה: לצוף. ערך הקריאה מוכפל ב'רזולוציה'. ערכי המתח חייבים להיות בוולטים, זרמים במיליאמפר, הספק בוואט ואנרגיה בוואט-שעה (Wh). עם 'רזולוציה' שלילית אתה יכול להפוך ערך אם יש לו סימן הפוך.
פעם אחת: bool (נכון או לא נכון). אם נכון, הערך נקרא רק פעם אחת כאשר המכשיר מאותחל, אחרת מדי פעם.
כתובת: מספר (Modbus) או מחרוזת (HTTP/JSON). מספר האוגר של Modbus או כתובת ה-HTTP של הערך שיש לקרוא.
שאילתה: מחרוזת. עבור HTTP JSON, המידע בשפת השאילתות של מנהל החיובים שבה הוא מוצא את הערך לקריאה בתגובת ה-JSON.
סדר: מחרוזת. עבור Modbus, סדר הביטים, "hl" או "lh", שבו הערך זמין. אורך: מספר. עם Modbus אורך מחרוזת ברגיסטרים, עם המשתנים 'version' ו-'firmware_version' 'אורך' משמש כדי להפוך גרסאות מספריות למחרוזות עם נקודות. ערכים של 2 או 4 מותרים עבור 'אורך', אשר מובילים לאחר מכן לפורמטים של הגרסה ab, ו-abcd. עבור 'אורך' 2 והקלד 'int16' או 'uint16', מנהל הטעינה מפריד בייט נמוך וגבוה עם נקודה, עבור 'int32' או 'uint32' מילה נמוכה וגבוהה, עבור 'int64' נמוך וגבוה dword. עם 'lenth' 4 ו-'int32' או 'uint32', מנהל הטעינה מפרק את הערך ל-4 בתים מופרדים בנקודות. עבור 'int64' 4 המילים מתאימות.
Regex: מחרוזת. אם צוין ביטוי רגולרי, תגובת הנגד אינה צריכה להיות ב-JSON. כתוצאה מכך, כל ההתאמה של הביטוי הרגולרי או הקבוצה הראשונה מוערכת. נא להשתמש רק אם המכשיר לא מחזיר JSON. להלן רשימת התכונות של הביטויים הרגולריים שלנו:
כל char: .
מחלקות בשם: \d \s \w \D \S \W
כיתות אנונימיות: [a-z0-9_], [^0-9], [^\d]
קבוצות עם חלופות: (ab|cd|ef)
קבוצות שלא נלכדו: (?:ab|cd)
(חמדן) פעם אחת או אף אחת: א?, א??
(חמדן) רבים או אף אחד: א*, א*?
(חמדן) פעם אחת או יותר: a+, a+?
תחילת המחרוזת: ^
סוף המחרוזת: $

הגדרת תשומות:

מנהל הטעינה יכול לבצע שאילתות של עד 32 ערכי קלט מאוגרים שונים או רכיבי JSON לכל מכשיר. המאפיין Inputs הוא מערך JSON. עליך להגדיר את המאפיינים הבאים עבור כל קלט:
כתובת: כתובת (רישום Modbus או URL).
count: מספר סיביות קלט שנקראו עם בקשה זו.
query: עבור HTTP/JSON, Query Language כדי למצוא את הערך בתגובה.

עם כל עדכון, ה-cFos Charging Manager קורא את כל התשומות המוגדרות בצורה זו וממקם את הביטים באופן פנימי במערך שניתן לבצע שאילתה לאחר מכן בנוסחאות, Input1..InputN.

הגדרה של תפוקות:

מנהל הטעינה יכול להעביר עד 32 יציאות לכל מכשיר. פלטים מוגדרים ב"פלטים" כמערך JSON של אובייקטי פלט. כל היציאות מוחלפות בסוף כל מחזור עדכון אם המצב של הפלט המתאים השתנה.
עבור כל פלט עליך להגדיר את המאפיינים הבאים באובייקט הפלט:
כתובת: כתובת URL של HTTP עם שיטת HTTP אופציונלית, למשל GET//}. כדי להגדיר אוגרי Modbus, אתה יכול להשתמש ב-cFos Charging Manager HTTP API. מנהל הטעינה מזהה גישה מתאימות ל-localhost ומפנה את הבקשה למטפל הפנימי, כך שאינך זקוק להרשאה כמו בגישה חיצונית של HTTP API. אם כתובת האתר ריקה לאחר כל ההחלפות, לא הוגדר פלט. לדוגמה, אתה יכול להחליף פלטים רק אם קיימים משתנים מסוימים (ראה נוסחאות: הפונקציה exists()). אתה יכול גם לציין ${address} ו-${id} בכתובת. זוהי כתובת המכשיר הנוכחית ומזהה Modbus כפי שהוגדרו בהגדרות. 'כתובת' ו-'id' משמשות בעיקר לשימוש ב- Modbus API (ראה להלן).
body: גוף HTTP אופציונלי עבור POST או PUT.
בכתובת האתר ובגוף אתה יכול להשתמש בנוסחאות ${expr} המתייחסות למשתנים גלובליים של Charging Manager או למטר המתאים. הנוסחה 'expr' מוערכת בעת הגדרת הפלט ומוחלפת בטקסט של כתובת האתר או הגוף. בדוגמה למעלה, אם http://www.example.com?output1=1 מגדיר את הפלט ו-http://www.example.com?output1=0 מנקה אותו, אתה יכול להגדיר משתנה 'var1' ולהגדיר אותו ל-1 כרצונך או הגדר 0. אתה יכול גם לכתוב ערכים מספריים כדי לשלוט בביצועי הזיכרון לתוך אוגרי Modbus שאחסנת בעבר במשתנה באמצעות נוסחה.
אם במקום להעביר ערך מספרי, אתה צריך להחליף טקסט אחד בכתובת ה-URL באחר בהתאם לנוסחה, כמו למשל עם שקעי WLAN של Shelly, אתה יכול לכתוב זאת כך: ${if expr`text1`text2}. ה"אפוסתרוף" הוא תקתק לאחור (קוד ASCII 96). אם 'expr' != 0, נעשה שימוש ב-text1, אחרת ב-text2. עבור שקע Shelly WLAN, כתובת האתר נראית כך: 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.

אם תזין נתיב יחסי ככתובת האתר, מנהל הטעינה לוקח את הכתובת שהוגדרה עבור המכשיר המתאים. אם אתה מציין 'localhost' כדומיין, מנהל הטעינה לוקח את הכתובת של המכשיר שבו הוא פועל. אם הוא מזהה גישה ל-API משלו, הוא משתמש במטפל הפנימי במקום לבצע גישת HTTP מלאה, כך שלא תצטרך לאחסן שם משתמש וסיסמה בהגדרת המונה. כתובת URL שמתחילה ב-'*' גורמת למנהל הטעינה לבצע תמיד גישת HTTP מלאה.

איפוס יציאות: בנוסף למערך "פלטים", ניתן גם להגדיר מערך שנקרא "איפוסים" בנוי כמו מערך ה"פלטים". זה מאפשר לאפס את היציאות לערכים ההתחלתיים שלהן כאשר המכשיר מושבת. זה, בשילוב עם משתנים המוגדרים על ידי המשתמש ו"פעם": אמת, מאפשר להחזיר את המכשיר למצבו ההתחלתי.
כתוב פלטים מעת לעת: במכשירים מסוימים יש לכתוב את הפלטים מעת לעת, אחרת המכשיר מחזיר את הערכים ל"סטנדרטי". לדוגמה, זיכרון Kostal יחזור לכללי ברירת המחדל שלו אם בקר הזיכרון לא נכתב באופן פעיל במשך זמן מה. כדי להגדיר פלטים מעת לעת, אתה יכול להוסיף את הכתובת עם #xxx#, כאשר xxx מציין כל שנייה שהפלט ייכתב מחדש, גם אם הערך שייכתב נשאר זהה. לדוגמה, אם הכתובת היא /cnf?cmd=set_cm_vars&name=test&val=42, אתה יכול להשתמש ב-#30#/cnf?cmd=set_cm_vars&name=test&val=42 כדי להבטיח שערך זה נכתב בכל 30 שניות הופכות.

הגדרה של שפת שאילתה:

נכון לעכשיו, ניתן להשתמש בשמות החברים ובאופרטורים "." בביטויי החיפוש "שאילתה". ו-"[]" משמשים, דוגמאות:

מִבְחָןאלמנט בשם "מבחן"
שם 1. שם 2אלמנט בשם "שם 2" באובייקט הצאצא "שם 1"
שם [idx]רכיב "idx" של רכיב האובייקט "שם". "idx" יכול להיות מספר, למשל עבור מערכים או מחרוזת
שם ["u2"]רכיב "u2" של רכיב האובייקט "שם" תואם "name.u2"
name[{"el1": "v1", "el2": 3}].valueבחר רכיב מערך שמקיים את תנאי סימון האובייקט והעריך רכיב בשם 'ערך'. כאן, למשל, האלמנט נבחר במערך 'name' הכולל את רכיבי האובייקט 'el1' עם הערך 'v1' ו-'el2' עם ערך 3 ואז הערך של האלמנט 'value' מוחזר מהאובייקט הזה .

משתני Global Charging Manager:

ניתן ליצור משתנים בתצורת Charging Manager. אתה יכול להשתמש בערך קבוע או בנוסחה בתור הערך. בסוף כל מחזור עדכון, מנהל הטעינה עשוי לחשב מחדש את הערך של משתנה זה. לאחר מכן תוכל להשתמש באלה בפרמטרים (מסוימים) של Charging Manager, כללי הטעינה או כדי לשלוט ביציאות. אתה יכול גם לכתוב E x.member או M x.member כמשתנה. כאן E x ו- M x הם מזהה המכשיר של wallbox או מד שהוגדר במנהל הטעינה. 'חבר' הוא משתנה "מותאם אישית" המאוחסן במכשיר המתאים. לחלק מהמשתנים יכולה להיות משמעות מיוחדת: עבור KEBA "out1" הוא פלט מיתוג, עבור ABB B23 מטר "out1" ו-"out2" הם יציאות מיתוג (בדגמים התומכים בכך). 1 משנה את הפלט, 0 מכבה אותו שוב.

אם יש לך מכשירים שצריך להפעיל בתנאים מסוימים אבל אז צריך לפעול לזמן מה (למשל מכונת כביסה, מדיח כלים), אתה יכול גם להגדיר את המשתנה כ"טריגר". אז הנוסחה של המשתנה היא התנאי שקובע את המשתנה ל-1. לאחר זמן מתכוונן, הוא מאופס ל-0. "תנאי מחדש" מאפשר להאריך את הזמן עד לכיבוי (כלומר הגדרת המשתנה ל-0) שוב ושוב כל עוד התנאי מתקיים.

הערה: ניתן להשתמש רק במספרים ובאותיות az ו-AZ כשמות משתנים.

למטרות בדיקה, אתה יכול להציג את מנהל הטעינה ומשתני מונה, למשל המחירים הנוכחיים מ-Awattar:


                        תצוגת צילום מסך של משתני מונה

פלטי מנהל הטעינה הגלובלי:

בתצורת מנהל הטעינה תוכל להגדיר יציאות גלובליות כמתואר לעיל בהגדרת המונה תחת 'יציאות'. אלה מוגדרים בסוף כל מחזור עדכון אם הסטטוס שלהם השתנה. אם ברצונך לשלוט ביציאות מיתוג במכשירים המוגדרים על ידי המשתמש, המומלצת המומלצת לעיל (ראה משתני מנהל הטעינה): אתה מגדיר משתנים עם השם "out1", "out2" וכו' במונה המוגדר על ידי המשתמש ומגדיר פלטים במונה המוגדר על ידי המשתמש מחליפים את הפלט בהתאם לערך של משתנה זה.

Charging Manager Global Modbus API:

ה-Modbus API של מנהל הטעינה משמש לשליטה בהתקני Modbus שיש להם כתובת Modbus RTU או TCP כלשהי (ניתן להגיע אליו על ידי מנהל הטעינה). ככתובת עבור Modbus RTU, הזן COMx,bd,8,p,s, כמו בתצורה של ההתקנים הבודדים, כאשר x הוא מספר יציאת ה-COM, bd הוא קצב ה-baud, p הוא השוויון ('N', 'E' או 'O') ו-s הוא מספר סיביות העצירה (1 או 2). עם Modbus TCP, הכתובת היא כתובת ה-IP של המכשיר ברשת Charging Manager כולל מספר היציאה.
כתובת האתר (עבור HTTP GET) של Modbus API היא:
/cnf?cmd=modbus_get או /cnf?cmd=modbus_set
ה-cFos Charging Manager תומך בפרמטרי השאילתה הנוספים הבאים:
addr: כתובת התקן Modbus RTU או TCP שהוזכרה לעיל.
func: מספר פונקציית Modbus, למשל לקריאה של 3 או 4, לכתיבת 6 או 16.
id: מזהה מכשיר של התקן Modbus.
reg: מספר הרישום של Modbus. ניתן לציין את הערך בעשרוני או ב-hex (עם הקידומת 0x).
val: number: ערך שייכתב לפנקס. השמט בעת הקריאה.
סוג: 'w' 16bit (ברירת מחדל), d = 32bit, f = float, q = 64bit, s = מחרוזת.
cnt: number: האורך המרבי של המחרוזת ברגיסטרים, עבור סוגים אחרים השמט או הגדר ל-1.
order: String: סדר הביטים, "hl" או "lh".

הערה: אם ה'מד' שלך משמש בעיקר למטרות בקרה, תוכל לסמן את האפשרות 'הסתר מכשיר' בהגדרות של אריח זה כדי שהמכשיר לא יופיע בדף הפתיחה.

הערה: מונים מסוימים הנקראים באמצעות HTTP דורשים שם משתמש/סיסמה כהרשאה. אתה יכול לציין זאת בכתובת עבור גישת HTTP, למשל עם http://username:password@192.168.2.111. אם שם המשתמש או הסיסמה שלך מכילים "@", עליך להחליף אותם ב-%40".