MQTT הוא פרוטוקול אינטרנט עם מתווך הודעות מרכזי. עם מתווך הודעות זה, המשתתפים יכולים להירשם ל"נושאים" מסוימים ולשלוח הודעות בנושאים. מנהל הטעינה של cFos יכול להאזין להודעות בנושאים ספציפיים ולכן ניתן לשלוט בו באמצעות MQTT. הוא יכול גם לשדר את מצב המכשירים שהוא מנהל. ניתן לשלוט ב-cFos Power Brain Wallbox גם באמצעות MQTT ולשדר את מצבו. זה שימושי בעת חיבור למערכת אוטומציה ביתית, עבור בקרה תעשייתית (M2M) ולניטור והקלטה. כל הנושאים מתחילים עם cfos_mqtt
. אם ברצונך לחבר מספר מכשירי cFos MQTT עם מתווך MQTT, הנושא יכול להתחיל עם cfos_mqtt_<Seriennummer>/
, המתכוונן תחת תצורה. בתצורה ניתן גם לציין כתובת URL עבור הברוקר הסטנדרטי של MQTT. כתובות אתרים יכולות להתחיל עם mqtt://
ו- mqtts://
. עם mqtts://
ה-cFos Charging Manager או cFos Power Brain Wallbox מייצרים חיבור TLS. נעשה שימוש ביציאות הסטנדרטיות 1883 עבור חיבורים לא מוצפנים ו -8883 עבור חיבורי TLS. עם זאת, אתה יכול גם לציין יציאה בכתובת האתר. אתה יכול להזין את שם המשתמש והסיסמה בסימון כתובת האתר הרגיל, למשל mqtt://user:password@192.168.2.111
. אם אתה מציין מתווך MQTT בתצורת cFos Charging Manager, אתה יכול לציין מתווך בודד או פשוט לכתוב mqtt
. אז נעשה שימוש ברוקר ברירת המחדל המאוחסן בתצורה.
ה-cFos Charging Manager תומך גם ב-MQTT 3.1.1 וגם ב-MQTT 5. אם אתה מתחיל את כתובת האתר עם mqtt3:// או mqtt5:// (mqtts3:// ו-mqtts5:// עבור חיבור מוצפן), אתה קובע את גרסת הפרוטוקול. ברירת המחדל היא MQTT 3.1.1. עם MQTT 5, מנהל הטעינה של cFos מנסה לחזור ל-MQTT 3.1.1 אם יש הודעת שגיאה מתאימה. זה עובד עם מתווכים ותיקים יותר של Mosquito, אבל לא בהכרח עם מתווכים אחרים.
הערה: מכיוון שההגדרה של MQTT דורשת את סיסמת המנהל, מנהל הטעינה מטפל בנתונים בהתאם. אז נתונים נשלחים בכוונה שאליהם ניתן לגשת רק עם סיסמת מנהל.
הערה על ברוקרים MQTT: הודות לסטפן ג'י (#diebestenuserderwelt) הצלחנו לבדוק מול ברוקר MQTT המובנה ב-ioBroker. מתווך MQTT 3.1.1 זה (נכון לפברואר 2023) אינו מתנהג בהתאם לתקן מכמה בחינות: ניסיונות חיבור מסתיימים בשקט ללא הודעת שגיאה, המטען חסר לפעמים במנות PUBLISH, מנות PUBLISH נשלחות כנראה פעמיים (האם ניתן לעשות זאת עם הגדרת תצורה?). לכן מתווך זה אינו מתאים לשליטה ב- Charging Manager API, מכיוון שבקשות API עשויות להתבצע מספר פעמים. למרות שאנו מעוניינים שהטמעת MQTT שלנו תהיה תואמת לכמה שיותר מתווכים, אנו ממליצים כרגע להשתמש ב- Mosquitto עבור ioBroker.
במקום לספק מכשירים אלה באמצעות HTTP (ראה HTTP API -> מונים של HTTP ו-Wallbox), מכשירים אלה יכולים גם להאזין ל-MQTT. הזן את mqtt
או כתובת URL של מתווך MQTT ככתובת המכשיר. המונה או ה-wallbox המתאים לאחר מכן מאזינים לנושא cfos_mqtt/set/<Geräte-ID>
, למשל עבור מד עם מזהה המכשיר M1 עד cfos_mqtt/set/M1
. לאחר מכן, מונה הקלט HTTP מצפה למחרוזת JSON כהודעה, כמתואר ב- HTTP API תחת "מוני HTTP ו-Wallboxes". מקור ה-MQTT שלך חייב אפוא לספק את הנתונים בפורמט זה. ניתן לשלב מכשירים שמנהל הטעינה של cFos אינו תומך על ידי השגת הנתונים ממקור אחר (למשל מערכת אוטומציה ביתית) ואז ייבואם למנהל הטעינה.
הערה: אם נתוני המקור הם בפורמט שונה ממה שמונה ה-HTTP מצפה, תוכל גם ליצור מונה מותאם אישית. עבור MQTT זה מתואר להלן.
דוגמא:
יצרת מונה קלט HTTP ויש לו M3 כמזהה מכשיר. ככתובת שנתת את הכתובת של מתווך היתושים, למשל mqtt://. אם תזין את הפקודה הבאה בשורת הפקודה במחשב שבו פועל Mosquitto:mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
המונה אמור להכיל את הערכים שלעיל.
בתצורת Charging Manager, אתה יכול לציין כתובת URL של מתווך MQTT (או mqtt עבור מתווך סטנדרטי), שבמסגרתה מנהל הטעינה מפרסם את הסטטוס של כל המכשירים תחת הנושא cfos_mqtt/get/dev_info
. זה משדר את זה בפורמט הידוע מ-HTTP get_dev_info. זה נותן לך את כל הערכים של המכשירים כפי שהם גלויים בממשק המשתמש, למשל ערכי ביצועים של המונים או מצב ה-wallboxes. אם ברצונך להירשם רק למכשירים בודדים, תוכל לבטל את תיבת הסימון "פרסם מידע אודות MQTT" ובמקום זאת לסמן את האפשרות "פרסם מידע אודות MQTT" בהגדרות של המכשירים הבודדים תחת "תצוגה". מחרוזת JSON מתאימה עבור המכשיר המתאים מתפרסמת לאחר מכן תחת הנושא cfos_mqtt/get/<Device ID>. אתה יכול גם להירשם לכל הערכים הגלובליים תחת הנושא cfos_mqtt/get/params
, מכיוון שהם מופקים בפורמט המכונה HTTP get_dev_info תחת "params".
בתצורת cFos Charging Manager אתה יכול לציין כתובת URL של מתווך MQTT (או mqtt עבור מתווך סטנדרטי) תחת "ברוקר לגישה ל-API דרך MQTT". אם ערך זה אינו ריק, מנהל הטעינה של cFos נרשם לכל הנושאים שמתחילים ב-cfos_mqtt/api/ . לאחר מכן הוא מפרש הודעות תחת נושא כזה כאילו שם הנושא היה כתובת URL של HTTP המסתיימת ב- /cnf? מתחיל ומעביר אותו ל-HTTP API. לאחר מכן, מנהל הטעינה מפרסם את תגובת ה-API של HTTP בתור JSON תחת הנושא cfos_mqtt/api_res. יש לך כמעט את כל ה-API של HTTP בשליטה שלך באמצעות MQTT. חריגים הם קריאות API שמחזירות תגובות JSON ארוכות. דוגמה: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
משתמש בפונקציית ה-API set_cm_var כדי להגדיר את המשתנה Charging Manager x ל-1. יש הודעה תחת cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
הזן את ה-RFID 5678 עבור ה-Wallbox עם מזהה ההתקן E1 (ראה גם את פונקציות ה-RFID המורחבות שלנו).
אתה יכול לשים נתונים שמועברים באמצעות HTTP POST בהודעה מתחת לנושא.
דוגמה: שינוי תקופתי של הזרם הכולל המרבי הזמין למנהל הטעינה:
הזן את הברוקר שלך תחת ההגדרות הכלליות של Charging Manager תחת "ברוקר לגישה ל-API דרך MQTT" (או פשוט mqtt אם יש להשתמש ברוקר ברירת המחדל המאוחסן תחת "תצורה"). לאחר מכן פרסם לנושא באמצעות MQTT
cfos_mqtt/api/cmd=set_params
אובייקט JSON עם התוכן הבא:
{"max_total_cur_prc": p}
כאשר p הוא אחוז מהזרם הכולל המרבי שנקבע מראש.
הערה: חלק מקריאות ה-API של HTTP מביאות לכך שמנהל הטעינה שומר את התצורה. אם תפעיל אותם לעתים קרובות מדי, הפלאש (ב-cFos Power Brain או cFos Wallbox Booster) או כרטיס ה-SD ב-Raspberry יישחק. קריאת ה-API "set_params" עם הפרמטר הבודד "max_total_cur_prc" לא מובילה אפוא לשמירת הפרמטרים.
אם cFos Charging Manager אינו במצב "ניהול עומסים" אלא במצב "ניטור", אתה יכול להשתלט על כל קופסאות ה-wallbox בעצמך באמצעות MQTT. זה חל במיוחד על קופסאות קיר של cFos Power Brain המופעלות כעבדים במצב "תבונן". כדי לעשות זאת, עליך לסמן את האפשרות "הפעל שליטה ב-wallbox" תחת MQTT בהגדרות מנהל הטעינה. לאחר מכן, מנהל הטעינה של cFos מאזין לנושא MQTT cfos_mqtt/ctl
ומצפה להודעות עם אובייקט JSON. לאובייקט זה יש תת-אובייקטים כמאפיינים עם מזהה המכשיר כשם. אובייקטי המשנה נראים כך: {"cur": c, "ena": b, "wke": b, "phs": p}, כאשר c הוא זרם הטעינה ב-mA, ו-b יכול להיות נכון או לא נכון . "ena": false מבטל את הטעינה ב-wallbox, "wke": true מנסה לשלוח פקודת "התעוררות אוטומטית" ל-wallbox (כרגע אפשרי רק עם cFos Power Brain wallboxes). p יכול להיות 1 או 3 כדי לעבור בין טעינה חד פאזית לתלת פאזית. אתה יכול גם להשמיט "cur", "ena", "wke" ו-"phs" כדי לבצע רק פונקציות בקרה מסוימות. דוגמא:{"E1":
{cur: 8000, ena: true, wke: true},
"E2":
{cur: 10000, phs: 3}}
מגדיר את זרם הטעינה של ה-wallbox עם מזהה המכשיר ל-8A, מפעיל טעינה ומנסה להעיר את המכונית. יתר על כן, זרם הטעינה עבור Wallbox E2 מוגדר ל-10A ומועבר לטעינה תלת פאזית.
אתה יכול לציין כתובת URL של מתווך MQTT להעברת ערכי יומן ביומן המערכת תחת "תצורה". לאחר מכן, מנהל הטעינה של cFos מפרסם את כל רשומות היומן תחת הנושא cfos_mqtt/log
. זה מאפשר לך להעריך מרחוק יומנים כדי לנטר את מנהל הטעינה. אתה יכול גם לציין כתובת URL של מתווך MQTT עבור ערכים ביומן העסקאות תחת "תצורה". אז כל עסקאות הטעינה נשלחות תחת הנושא cfos_mqtt/ta_log
. זה מאפשר להעריך את נתוני החיוב של עסקאות החיוב מרחוק וליצור גיבויים של עסקאות החיוב במערכת אחרת. עסקת טעינה מתחילה כאשר מחבר הטעינה מחובר ומסתיימת כאשר הוא מנותק.
אתה יכול ליצור מונים מותאמים אישית באמצעות rtype=2 עבור MQTT. מונים אלו מוגדרים בדומה למוני HTTP (rtype = 1). עם זאת, הכתובות כאן אינן כתובות URL של HTTP, אלא נושאי MQTT. דוגמא:"power_w": {
"address": "/test_topic3",
"type": "float",
"query": "power_w"
}
כאן המונה המוגדר על ידי המשתמש נרשם לנושא /test_topic3 ומצפה לאובייקט JSON עם המאפיין "power_w", כלומר {"power_w": 1234}. למשתני מונה שונים יכולים להיות נושאים שונים והם יעודכנו ברגע שתתפרסם הודעה תחת הנושא המתאים.