מרכז ידע
מה זה MQTT ואיך הוא מחבר בין כל מה שיש לכם בבית
אם התחלתם לעבוד עם Home Assistant, בשלב מסוים תיתקלו במונח MQTT. בדרך כלל זה קורה כשמנסים להתקין משהו כמו Zigbee2MQTT או ESPHome, ופתאום מבקשים מכם להתקין קודם משהו שנקרא Broker.
זה נשמע מסובך יותר ממה שהוא. MQTT הוא אחד הפרוטוקולים הפשוטים בעולם הבית החכם, ואחרי שמבינים את העיקרון הוא מפסיק להיות מפחיד. הנה מה ששווה לדעת עליו לפני שמתקינים.
מה זה בעצם MQTT
MQTT הוא פרוטוקול להעברת הודעות קצרות בין התקנים. הוא נבנה להיות קל, מהיר וחסכוני במשאבים, ולכן הוא נמצא בשימוש בעולם ה-IoT כבר שנים לפני שמישהו דיבר על בתים חכמים.
העיקרון פשוט. במקום שכל התקן יכיר את כל שאר ההתקנים וידבר איתם ישירות, כולם מדברים מול שרת קטן אחד. השרת הזה נקרא Broker, והוא מקבל את ההודעות ומעביר אותן למי שביקש לשמוע אותן.
למה בכלל צריך את זה
קחו בית ממוצע שאנחנו מתכננים: חיישני תנועה, נורות Zigbee, בקר תריסים, מערכת השקיה, כמה מכשירי ESPHome שבנינו לבד, ו-Home Assistant שמנהל את הכל.
בלי שכבת תיווך, כל התקן היה צריך לדעת מי עוד קיים במערכת ואיך לדבר איתו. כל תוספת חדשה הייתה דורשת לעדכן את כל השאר.
עם MQTT כל התקן צריך לדעת דבר אחד בלבד: איפה נמצא ה-Broker. אם מחר מוסיפים חיישן, הוא פשוט מתחיל לפרסם הודעות והמערכת קולטת אותן. אף אחד מההתקנים הקיימים לא צריך לדעת שמשהו השתנה.
Broker
הלב של המערכת. כל הודעה עוברת דרכו, והוא מחליט למי להעביר אותה. הוא רץ על אותו מחשב שעליו רץ Home Assistant וכמעט לא צורך משאבים. במערכות שאנחנו בונים זה תמיד Mosquitto.
Topic
הכתובת שאליה נשלחת ההודעה, משהו בסגנון home/kitchen/light או garden/irrigation/status. אפשר לחשוב על זה כמו על כתובת דואר. מי שמאזין לכתובת יקבל את מה שנשלח אליה.
Payload
תוכן ההודעה עצמה. לפעמים זה פשוט ON, OFF או 25.4, ולפעמים מבנה JSON שלם עם עשרה ערכים. הפרוטוקול לא מתעניין בתוכן, הוא רק מעביר אותו.
Publish ו-Subscribe
שני הצדדים של אותו מטבע. מי ששולח הודעה מבצע Publish, ומי שרוצה לקבל הודעות מכתובת מסוימת מבצע Subscribe. Home Assistant מאזין בדרך כלל לענף שלם, וכך מקבל את כל מה שקורה בבית.
איך זה נראה בפועל
חיישן דלת נפתח ומפרסם הודעה לכתובת שלו. ה-Broker מקבל אותה. Home Assistant, שנרשם מראש להאזין לכתובת הזו, מקבל את ההודעה ומפעיל את האוטומציה שמדליקה את האור במסדרון.
כל השרשרת הזו לוקחת מילישניות וקורית כולה בתוך הבית. אם ספק האינטרנט נופל באמצע, שום דבר מזה לא משתנה.
שלוש תכונות ששווה להכיר
אלה הדברים שעושים את ההבדל בין מערכת שעובדת למערכת שעובדת גם אחרי הפסקת חשמל.
Retained Messages
ה-Broker שומר את ההודעה האחרונה שנשלחה לכל כתובת. בלי זה, אחרי כל הפעלה מחדש של Home Assistant כל המכשירים היו מופיעים כלא ידועים עד שמישהו נוגע בהם. עם Retain, המערכת יודעת מיד מה המצב של כל אחד.
QoS
רמת האמינות של העברת ההודעה. ברמה 0 ההודעה נשלחת פעם אחת בלי אישור, ברמה 1 היא תישלח שוב עד שתתקבל, וברמה 2 מובטח שהיא תגיע בדיוק פעם אחת. בבתים רגילים רמות 0 ו-1 מספיקות בשפע.
Last Will and Testament
התכונה האלגנטית ביותר בפרוטוקול. כל התקן משאיר אצל ה-Broker הודעה שתפורסם במקומו אם הוא יתנתק באופן בלתי צפוי. כך Home Assistant יודע תוך שניות שהתקן ירד, במקום להציג לכם ערך ישן עוד שעות.
MQTT Discovery, ולמה זה חוסך שעות
כשהתקן חדש עולה לראשונה, הוא יכול לפרסם הודעה שמתארת מה הוא ומה הוא יודע לעשות. Home Assistant קורא את ההודעה ומוסיף את המכשיר למערכת עם כל הישויות והכפתורים המתאימים.
בבית עם שמונים מכשירי Zigbee, זה ההבדל בין עשר דקות ליום שלם של הגדרות ידניות. זו גם הסיבה ש-Zigbee2MQTT משתלב כל כך בקלות.
אבטחה, בקצרה
MQTT נולד בעולם תעשייתי סגור, ולכן בברירת מחדל הוא לא מנסה להגן על עצמו. ארבעה דברים שאנחנו מגדירים בכל פרויקט:
- שם משתמש וסיסמה לכל התקן שמתחבר
- ה-Broker לא חשוף לאינטרנט, רק לרשת הביתית
- סיסמאות שונות למערכות שונות ולא אחת לכולן
- עדכון שוטף של Mosquitto יחד עם שאר המערכת
חייבים MQTT?
לא. Home Assistant יודע לעבוד מצוין גם בלעדיו, ויש מערכות שלמות שבנינו בלי לגעת בו.
אבל ברגע שנכנסים Zigbee2MQTT, ESPHome, Tasmota או כמעט כל פרויקט קוד פתוח בתחום, MQTT מופיע בדרישות. בפועל זה רכיב שמתקינים פעם אחת וכמעט לא נוגעים בו אחר כך.
לסיכום
MQTT הוא אחת מאבני היסוד של הבית החכם המודרני. הוא פשוט, מהיר, ועובד בלי לצאת מהבית. המונחים Publish, Subscribe ו-Broker נשמעים מרתיעים בשלב הראשון, אבל מדובר בשלושה רעיונות שאפשר להסביר בדקה.
אם אתם מתכננים להעמיק ב-Home Assistant, כדאי להכיר את MQTT מוקדם. הוא ילווה אתכם כמעט בכל פרויקט שתבנו.
שאלות נפוצות
בהחלט לא. הוא נמצא בשימוש במערכות תעשייתיות, בחקלאות חכמה, ברובוטיקה ובמערכות ניטור של ערים שלמות. הבית החכם הוא רק אחד מהשימושים שלו.
כמעט בכלל לא. Mosquitto רץ בנוחות מלאה על Raspberry Pi ומצריך מעט מאוד זיכרון. ברוב המערכות שלנו הוא רץ על אותו מחשב של Home Assistant ולא מורגש בכלל.
כל מה שעובר דרכו מפסיק לדווח עד שהוא חוזר. בגלל זה אנחנו לא מעבירים דרך MQTT דברים קריטיים כמו גלאי גז או עשן כשאפשר לחבר אותם ישירות. בפועל Mosquitto יציב מאוד והמקרים האלה נדירים.
כן, וזה כלי אבחון מעולה. באמצעות לקוח MQTT פשוט אפשר להאזין לכל התעבורה ולראות בדיוק מה כל מכשיר שולח. כשמשהו לא עובד, זה המקום הראשון שאני בודק.
טכנית כן, אבל זה מבטל את רוב היתרון. ברגע שה-Broker יושב בחו״ל, כל הודעה מחיישן בסלון לנורה בסלון עושה דרך ארוכה מאוד, והכל נעצר כשהאינטרנט נופל. אנחנו מריצים אותו תמיד בבית.
רוצים מערכת שעובדת גם בלי אינטרנט?
אנחנו בונים מערכות שכל הלוגיקה שלהן רצה אצלכם בארון. שיחת אפיון קצרה תגיד לכם אם זה מתאים לנכס שלכם.
המשך קריאה
מתאם Zigbee/Thread SONOFF Dongle Max - בחנות שלנו
- מה זה Zigbee: הפרוטוקול שרוב החיישנים בבית רצים עליו.
- Zigbee2MQTT: המדריך המלא: המקום הנפוץ ביותר שבו תפגשו MQTT.
- בית חכם בלי ענן: למה אנחנו מתעקשים שהכל ירוץ בתוך הבית.
- MQTT.org: אתר התקן הרשמי.
- Eclipse Mosquitto: ה-Broker הנפוץ ביותר, קוד פתוח.
עד כמה המאמר הזה היה שימושי?
לחצו על כוכב כדי לדרג אותו!