דוקומנטציה

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

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

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

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

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

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

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

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

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

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

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

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

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

silence_period, ב-msec. קובע את משך ההשהיה לפני גישת Modbus RTU כך שההתקן יזהה את תחילת ההודעה.
silence_same_slave, נכון: ההשהיה נשמרת אפילו עם מספר גישה לאותו מכשיר.
נסיונות חוזרים: מספר הניסיונות החוזרים אם המכשיר אינו מגיב.
rcv_timeout: ב-msec. זמן ההמתנה המקסימלי לכל גישה עד שהמכשיר מגיב.

מאפיינים גלובליים אלה חלים על Modbus TCP ו-RTU:

modbus_read: מספר הפונקציה של פקודת Modbus read, בדרך כלל 3 או 4.
modbus_read_max_registers: המספר המרבי של רגיסטרים שניתן לקרוא במכה אחת.
modbus_allow_gaps: true = אזורי רישום שאינם בשימוש עשויים להיקרא בפעולת קריאה.

עבור Modbus TCP ו-HTTP/JSON יש אובייקט 'tcp' עם המאפיינים הבאים:

connect_timeout: הוא שניות שניות. זמן ההמתנה המקסימלי לחיבור TCP.
delay_after_connect: ב-msec. השהה לאחר יצירת החיבור לפני שליחת הפקודה הראשונה.

לשני סוגי ההגדרות (Modbus ו-HTTP/JSON) יש גם את המאפיינים הבאים:

upd_delay: ב-msec. קובע את המרווח שבו ניתן לקרוא מכשיר. חלק מהמכשירים הופכים לעומס יתר כאשר נשאלים לעתים קרובות מדי.
יצרן: מחרוזת, שם היצרן. זה מוצג במידע המורחב של האריח.
delay_accumulated: true = ערכים מצטברים (kWh) נשאלים רק כל 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: מנהל הטעינה של cFos מנסה לחשב זרם_l1..l3 חתום, power_w ו-power_va מתוך ערכים אלה עבור voltage_l1..l. אתה לא צריך לציין את כל המשתנים. מנהל הטעינה של cFos מנסה לחשב את הערכים מהמשתנים הקיימים.
import_wh, export_wh: מנהל הטעינה משתמש במשתנים אלה כדי להציג import_wh ו-export_wh. עם מונים חד-כיווניים (למשל ממירים) עליך להגדיר רק import_wh. יש להגדיר export_wh רק עבור מונים דו-כיווניים (כגון זיכרון או מדי חשמל שנרכשו).

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

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

האובייקט נקרא על שם המשתנה המופיע למעלה ויש לו את המאפיינים הבאים:
קבוע: מחרוזת עם ערך קבוע. שימושי אם, למשל, לא ניתן לקבוע ערך, למשל עבור type_signation או מתח.
expr: מחרוזת, המשתנה לא נקרא אלא מוערך כנוסחה.
type: אם לא קבוע או expr, סוג המשתנה: int16, int32, float, int64, string. זה חשוב ל-Modbus לקרוא את הרגיסטרים בפורמט הנכון. עם JSON/HTTP אתה יכול להשתמש בעיקר ב-float.
רזולוציה: לצוף, ערך הקריאה מוכפל ב'רזולוציה'. ערכים למתח חייבים להיות בוולטים, זרמים במיליאמפר, הספק בוואט, אנרגיה בוואט-שעה (Wh). עם 'רזולוציה' שלילית אתה יכול להפוך ערך אם יש לו סימן הפוך.
פעם: bool (true או false), אם נכון, הערך נקרא רק פעם אחת כשהמכשיר מאותחל, אחרת מעת לעת.
כתובת: מספר (Modbus) או מחרוזת (HTTP/JSON), מספר האוגר של Modbus או כתובת ה-HTTP של הערך שיש לקרוא.
query: String, עם HTTP JSON המפרט בשפת השאילתה של Charging Manager שאיתו הוא מוצא את הערך לקריאה בתגובת JSON.
order: String, עבור Modbus סדר הביטים, או "hl" או "lh", שבו הערך קיים. length: number, עם Modbus באורך של מחרוזת ברגיסטרים. עבור המשתנים 'version' ו-'firmware_version', 'אורך' משמש ליצירת מחרוזות עם נקודות מתוך גרסאות מספריות. ערכים של 2 או 4 מותרים עבור 'אורך', שמביאים לאחר מכן לפורמטים של הגרסה ab, ו-abcd. עם 'אורך' 2 וסוג 'int16', מנהל הטעינה מפריד בתים נמוכים וגבוהים עם נקודה, עם מילה נמוכה וגבוהה int32, עם 'int64' נמוך וגבוה dword. עם 'lenth' 4 ו-'int32', מנהל הטעינה מפצל את הערך ל-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 לכל מכשיר. המאפיין "כניסות" הוא מערך JSON. עליך להגדיר את המאפיינים הבאים עבור כל קלט:
כתובת: כתובת (רישום Modbus או URL).
count: מספר סיביות קלט שנקראו עם בקשה זו.
query: עבור HTTP/JSON, שפת שאילתה כדי למצוא את הערך בתגובה.

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

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

מנהל הטעינה יכול להעביר עד 32 יציאות לכל מכשיר. פלטים מוגדרים תחת "פלטים" כמערך JSON של אובייקטי פלט. כל היציאות מוחלפות בסוף כל מחזור עדכון אם המצב של הפלט המתאים השתנה.
עליך להגדיר את המאפיינים הבאים באובייקט הפלט עבור כל פלט:
כתובת: כתובת אתר HTTP עם שיטת HTTP אופציונלית, למשל GET//}. כדי להגדיר אוגרי Modbus, אתה יכול להשתמש ב-cFos Charging Manager HTTP API. מנהל הטעינה מזהה גישה מתאימה ל-localhost ומפנה את הבקשה למטפל הפנימי כך שאינך זקוק להרשאה, כמו בגישה חיצונית של HTTP API. אם כתובת האתר ריקה לאחר כל ההחלפות, לא הוגדר פלט. לדוגמה, אתה יכול להחליף פלטים רק אם קיימים משתנים מסוימים (ראה נוסחאות: הפונקציה exists()). אתה יכול גם לציין ${address} ו-${id} בכתובת. זוהי כתובת המכשיר הנוכחית ומזהה Modbus כפי שהוגדרו בהגדרות. כתובת ומזהה משמשים בעיקר לשימוש ב- Modbus API (ראה להלן).
body: גוף HTTP אופציונלי עבור POST או PUT.
בכתובת האתר ובגוף, אתה יכול להשתמש בנוסחאות ${expr} המתייחסות למשתנים גלובליים של Charging Manager או מהמד המתאים. הנוסחה 'expr' מוערכת כאשר הפלט מוגדר ומוחלף בטקסט של כתובת האתר או הגוף. בדוגמה למעלה, אם//מגדיר את הפלט ו-//מנקה אותו, אתה יכול להגדיר משתנה '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' מוחזר מהאובייקט הזה .

משתנים של מנהל הטעינה הגלובלי:

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

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

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


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

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

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

API גלובלי של Modbus של מנהל הטעינה:

ה-API של Modbus של מנהל הטעינה משמש לשליטה בהתקני Modbus שיש להם כתובת Modbus RTU או TCP כלשהי (שאליה ניתן להגיע על ידי מנהל הטעינה). הזן COMx,bd,8,p,s ככתובת עבור Modbus RTU, כמו בתצורה של ההתקנים הבודדים, כאשר 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: מספר, ערך שייכתב במאגר. השמטה בזמן הקריאה.
סוג: 'w' 16bit (ברירת מחדל), d = 32bit, f = float, q = 64bit, s = מחרוזת.
cnt: מספר, האורך המרבי של המחרוזת ברגיסטרים, השמט עבור סוגים אחרים או הגדר ל-1.
order: מחרוזת המכילה סדר בתים, "hl" או "lh".

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

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