פרסומת
חינם לא אומר תמיד "לא כל כך טוב בתשלום", ו- OpenHAB אינו יוצא מן הכלל. תוכנת האוטומציה הביתית של קוד פתוח חורגת בהרבה מהיכולות של כל מערכת אוטומציה ביתית אחרת הקיימת בשוק - אך לא קל להתקין אותה. למעשה, זה יכול להיות מתסכל לחלוטין.
בחלק 1 של המדריך, עברתי אותך התקנת OpenHAB על פטל Pi תחילת העבודה עם אוטומציה ביתית של OpenHAB ב- Raspberry PiOpenHAB היא פלטפורמת אוטומציה ביתית לבוגרת עם קוד פתוח הפועלת על מגוון חומרה והיא פרוטוקול אגנוסטי, כלומר זה יכול להתחבר כמעט לכל חומרת אוטומציה ביתית בשוק היום. קרא עוד , הציג את מושגי הליבה של OpenHAB והראה לך כיצד להוסיף את הפריטים הראשונים שלך למערכת. היום נלך רחוק יותר:
- הוספת מכשירי ZWave
- הוספת בקר הרמוני Ultimate
- הצגת כללים
- הכירו את MQTT, והתקנו מתווך MQTT ב- Pi שלכם, עם חיישנים בארדואינו
- הקלטת נתונים ותרשימים
מבוא ל- Z-Wave
Z-Wave הוא פרוטוקול האוטומציה הביתית הדומיננטי במשך שנים: הוא אמין, פותח בהרחבה ועובד על טווח ארוך בהרבה מכל מוצרי הבית החכם האחרים. ישנם מאות חיישני Z-Wave העומדים לרשותכם המבצעים מגוון רחב של משימות. OpenHAB
פחית לעבוד עם Z-Wave, אך הוא טרחה להתקנה, ואמינות אינה מובטחת.אם אתה שוקל לרכוש בית מלא בחיישני Z-Wave במיוחד לשימוש עם OpenHAB, אני קורא לך לשקול מחדש. זה עשוי להסתדר נהדר עבורך, או שהוא יכול להיות מכה בבעיות קטנות אך מתמשכות. לפחות אל תקנו בית מלא חיישנים עד שהיה לכם סיכוי לנסות כמה. הסיבה היחידה לבחור ב- Z-Wave היא אם אינכם מסתפקים במאת האחוזים ב- OpenHAB ומעוניינים להשאיר את האפשרויות שלכם פתוחות בעתיד: Z-Wave למשל עובד עם סמסונג סמארטינגס איזה רכזת חכמה לאוטומציה ביתית מתאימה לך?במשך זמן מה אנשים חשבו על הרעיון לא יותר מאשר גימיק, אך עדכוני המוצר האחרונים הראו כי אוטומציה לבית חכם מתחילה לעמוד בהבטחותיו. קרא עוד רכזת, כמו גם רכזות ספציפיות ל- Z-Wave כמו Homeseer, ומגוון אפשרויות תוכנה אחרות כגון דומוטיץ.
למרות ש- OpenHAB כולל כריכת Z-Wave, אתה עדיין צריך קבע את התצורה הראשונה של רשת Z-Wave, לפני ש- OpenHAB תוכל להתחיל לשאול אותו לגבי נתונים. אם יש לך לוח בקר של Rasberry, יש לך תוכנות המסופקות להגדרת התצורה של הרשת, כך שלא נעסוק בזה כאן. אם קנית בקר USB Aeotec Z-Stick או דומה, סביר להניח שלא כלולה תוכנה, אז המשך לקרוא.
Aeotec Z-Stick Gen5, Z-Wave Plus USB ליצירת שערAeotec Z-Stick Gen5, Z-Wave Plus USB ליצירת שער קנו עכשיו באמזון $44.95
אם כבר יש לך הגדרת רשת Z-Wave, אתה יכול פשוט לחבר את הבקר שלך ל- Pi ולהתחיל להגדיר את הכריכה והפריטים. אם זו ההפעלה הראשונה שלך ל- Z-Wave, זה קצת יותר מורכב.
ראשית, בצד החומרה: לכל בקר יש דרך משלו להתאים למכשירים (המכונה טכנית "מצב הכללה" בו מוקצה מזהה צומת). במקרה של ה- Aotec Z-Stick פירוש הדבר לנתק אותו מיציאת ה- USB ולחץ על הכפתור פעם אחת כדי להכניס אותו למצב הכללה. ואז קח אותו קרוב למכשיר שאתה משווה ולחץ על כפתור ההכללה גם בזה (זה גם ישתנה: שקע ה- Everspring שלי מחייב את הכפתור ללחוץ 3 פעמים ברצף מהיר, כך שהשיעור כאן הוא לקרוא את המדריך למכשיר שלך).
ה- Z-Stick מהבהב בקצרה כדי להצביע על הצלחה. זה מציג בעיות בעת חיבורו חזרה ל- Pi, שכן מוקצה לו יציאה חדשה. הפעל מחדש את ה- Pi שלך כדי לאפס אותו חזרה ליציאה הסטנדרטית אם אתה מוצא שהוא הוקצה מחדש באופן דינמי לאחר שונה. עדיף שעוד לא: אל תחבר אותו ל- Pi עד שתעשה את כל צימוד החומרה תחילה.
התקנת כריכות HABmin ו- Z-Wave
מכיוון ש- OpenHAB אין למעשה כלי תצורה עבור Z-Wave, אנו מתכוונים להתקין כלי ניהול אינטרנט נוסף שעושה זאת - דבר שנקרא HABmin. המשך אל הכביש מאגר HABmin Github הורד את המהדורה הנוכחית. לאחר שתפתח את הרוכסן, תמצא 2 .jar קבצים בספריית התוספים - אלה צריכים להיות ממוקמים בספריית התוספים המתאימה במניית OpenHAB Home שלך (אם אתה משתמש גם ב- Aotec gen5 Z-Stick, וודא שיש לך לפחות גרסה 1.8 לכריכת Z-Wave).
בשלב הבא, צור תיקיה חדשה בספריית ה- webapps, וקראה לה "habmin" (אותיות קטנות חשובות). העתק לשם את שאר הקבצים שהורדת.
הערה: יש גם א HABmin 2 בפיתוח פעיל. ההתקנה זהה במידה רבה, אך עם תוספת ג'אר אחת נוספת. אולי כדאי לנסות את שניהם רק כדי לראות את מי אתה מעדיף.
אם עדיין לא עשית זאת, חבר את הבקר ל- Pi שלך. הקלד את הדברים הבאים כדי למצוא את היציאה הנכונה.
ls / dev / tty *
אתה מחפש משהו עם USB בשם, או במקרה המסויים שלי, ה- Z-stick הציג את עצמו כ /dev/ttyACM0 (מודם). יתכן שיהיה קל יותר לבצע את הפקודה פעם אחת לפני שתחבר אותה ופעם אחר כך, כדי שתוכל לראות אילו משתנה אם אינך בטוח.

פתח את קובץ ה- config של OpenHAB ושנה את הקטע ב- Z-Wave, מבטל את שתי השורות ומצרף את כתובת המכשיר שלך בפועל. צעד אחרון עבורי היה לאפשר למשתמש OpenHAB לגשת למודם.
sudo usermod -a-G בחיוג פתוח
כעת, כדי להפעיל הכל לפעולה, הפעל מחדש את OpenHAB
הפעלה מחדש של שירותי סודו
אני מקווה שאם אתה בודק את יומן הבאגים, תראה משהו כזה. מזל טוב, אתה מדבר עכשיו Z-Wave. ייתכן שתמצא את יומן הבאגים מוצף בהודעות מצמתי Z-Wave שונים. נתחיל בבדיקת HABMIN כדי לראות מה הוא נמצא: http://openhab.local: 8080 / habmin / index.html (החלפת openhab.local בשם המארח או כתובת ה- IP של Raspberry Pi).

יש הרבה מה לראות ב- HABMIN, אבל אנו עוסקים רק בנושא תצורה -> כריכות -> Z-Wave -> מכשירים, כפי שתוכלו לראות בהמשך. הרחב את הצומת כדי לערוך את תווית המיקום והשם לשם קלות ההתייחסות שלך.

קביעת תצורה של פריטי Z-Wave
לכל מכשיר Z-Wave תהיה תצורה ספציפית עבור OpenHAB. למרבה המזל, רוב המכשירים כבר נבדקו וכבר יהיו שם דוגמאות משלך. קביעת התצורה של מכשירים מותאמים אישית שאינם מוכרים עוברת הרבה מעבר לתחום המדריך הזה, אך נניח שהוא נתמך לעת עתה.
ראשית, יש לי מתג חשמל בסיסי Everspring AN158 ומונה בצומת 3. גוגללינג מהיר הוביל אותי לפוסט בבלוג ב- Wetwa.re, עם תצורת פריט לדוגמה. התאמתי זאת באופן הבא:
החלף Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} מספר Dehumidifier_Watts "צריכת החשמל של מסיר הלחות [% .1f W]" {zwave = "3: command = meter"}
מושלם.
הבא הוא Aeotec Gen5 רב חיישן.
מעבדות Aeon Aeotec Z-Wave Gen5 רב חיישן (Z-Wave Plus)מעבדות Aeon Aeotec Z-Wave Gen5 רב חיישן (Z-Wave Plus) קנו עכשיו באמזון $69.27
עבור זה, מצאתי דוגמת תצורה ב iwasdot.com, והסנס-סנסור שלי נמצא בצומת 2.
מספר מסדרון_טמפרטורה "טמפרטורת המסדרון [% .1f ° C]" (מסדרון, טמפרטורה) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} מספר מסדרון_ לחות "לחות במסדרון [% .0f%%]" (מסדרון, לחות) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 5"} מסדרון מסדרון_Luminance "Luminance Hallway [% .0f Lux]" (מסדרון) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} צור קשר עם Hallway_Motion "מסדרון תנועה [% s]" (מסדרון, תנועה) {zwave = "2: 0: command = sensor_binary, respond_to_basic = true"} חיישן המספרים_1_מרחב "סוללה [% s%%]" (תנועה) {zwave = "2: 0: command = battery"}
אם הפורמט של זה נראה לך מוזר, אנא המשך לראשון מדריך למתחיל תחילת העבודה עם אוטומציה ביתית של OpenHAB ב- Raspberry PiOpenHAB היא פלטפורמת אוטומציה ביתית לבוגרת עם קוד פתוח הפועלת על מגוון חומרה והיא פרוטוקול אגנוסטי, כלומר זה יכול להתחבר כמעט לכל חומרת אוטומציה ביתית בשוק היום. קרא עוד , בפרט את החלק המחייב של הגוון, בו אני מסביר כיצד להוסיף פריטים. ככל הנראה תצטרך רק להעתיק דוגמאות כמו זה, אך במקרה שיש לך מכשיר חדש, התיעוד המחייב מפרט את כל פקודות.
כריכת הרמוניה של לוג'יטק
לפני שקפיצנו על כללים, רציתי להוסיף הערה מהירה על העבודה עם הכריכה של הרמוניה. אני מעריץ גדול של סדרת הרמוניה של שלטים מרוחקים סקירה וגינה שלהסלון שלך הוא כאוס - תודו. נסלח לך על התוהה איזה מרחוק שולט באיזה מכשיר. מה עם הטלוויזיה, המגבר, TiVO, נגן BluRay, אולי אפילו התאורה - פעילויות המיתוג הופכות להיות ארוכות ... קרא עוד כדי לפשט את חוויית מרכז המדיה הביתית, אך לעתים קרובות הם משמשים כמערכת נפרדת בתוך הבית החכם. עם OpenHAB, פעילויות Logitech Harmony ושליטה מלאה במכשירים יכולות כעת להיות חלק מהמערכת הריכוזית שלך, ואף לכלול בכללי האוטומציה.
התחל בהתקנת שלושת קבצי הכריכה שתמצא באמצעות apt-cache לחיפוש "הרמוניה":

אל תשכח לעשות זאת מפלגה את תיקיית הכריכות שוב לאחר שתסיים:
sudo apt - לקבל התקנת openhab-addon-action-harmonyhub. sudo apt - לקבל התקנת openhab-addon-binding-harmonyhub. sudo apt - לקבל התקנת openhab-addon-io-harmonyhub. sudo chown - hh openhab: openhab / usr / share / openhab
כדי להגדיר את התצורה של הכריכה, פתח את קובץ openhab.cfg והוסף קטע חדש באופן הבא:
########## בקרות מרחוק הרמוניות ########## הרמוניהוב: מארח = 192.168.1.181או ה- ip שלך הרמוניהוב: שם משתמש =כניסה שלך להרמוניה-אימייל הרמוניהוב: סיסמה =הסיסמה שלך
כתובת ה- IP היא של מרכז ההרמוניה שלך. השתמש בסורק רשת כדי לגלות זאת. תצטרך להזין גם את פרטי ההתחברות שלך, אלה שתזין כשאתה מפעיל את כלי התצורה הרגיל של הרמוניה. זהו זה. לאחר הפעלה מחדש של הגוון שלך, יומן הבאגים שלך אמור להיות פרץ פתאומי של הפלט מהכריכה.
זוהי רשימה מעוצבת של JSON של כל הפעילויות, המכשירים והפקודות שלך שניתן לשלוח. כדאי להעתיק זאת לעיון עתידי. אתה יכול להקל עוד יותר על קריאה עם צמתים מתקפלים על ידי הדבקה למעצב מקוון של JSON כמו זה.

כמו גם פעילות ה- PowerOff הרגילה שהיא ברירת מחדל, תוכלו למצוא פעילויות מוגדרות משלכם הרשומות כאן לפי שם. כעת בואו ליצור בקרת כפתור אחת פשוטה להפעלת פעילויות. ראשית, בקובץ הפריטים שלך, הוסף את השורה הבאה. שנה את הקבוצה ואת הסמל אם תרצו.
/ * רכזת הרמוניה * / מחרוזת Harmony_Aktivity "הרמוניה [% s]"(Living_Room) {harmonyhub = "* [currentActivity]"}
זה כבל מיתר דו כיווני, שמסוגל גם להביא את הפעילות הנוכחית, ולפקד על הפעילות הנוכחית להיות משהו אחר. כעת נוכל ליצור כפתור עבורו, בקובץ ה- Sitemap.
החלף פריט = מיפוי הרמוניה / פעילויות = [PowerOff = 'כבוי', תרגיל = 'תרגיל', 13858434 = 'טלוויזיה', קריוקי = 'קריוקי']
בסוגר המרובע תראה כל פעילות יחד עם התווית. באופן כללי אתה יכול להתייחס ישירות לפעילויות כפי שקראת להם בשלט שלך, אבל החריג לזה שמצאתי היה כל דבר עם רווח בשם הפעילות, כגון "צפה בטלוויזיה". במקרה זה, תצטרך להשתמש במזהה הפעילות. שוב, אתה יכול למצוא את המזהה בפלט הבאגים של JSON. שמור ורענן את הממשק שלך, אתה אמור לראות משהו דומה לזה:

תוכל גם להתייחס לפעילויות בכללים שלך, כפי שנראה בהמשך. קרא את דף הוויקי למידע נוסף על מחייבת הרמוניה.
מבוא כללי לכללים
רוב רכזות הבית החכם כוללים סוג כלשהו של יצירת כללים, כך שתוכלו להגיב אוטומטית לנתוני חיישנים ואירועים בבית. למען האמת, הייתי טוענת שבית חכם באמת איננו כזה שאתה צריך לבזבז זמן באינטראקציה עם אפליקציות לנייד - הוא כזה שאינו נראה למשתמש הקצה וממומן לחלוטין. לשם כך, OpenHAB כוללת גם שפת סקריפט כללים חזקה שתוכלו לתכנת, ועולה בהרבה על המורכבות של רובם רכזות בית חכם קרב רכזות הבית החכם: מה שם ומה קורה? קרא עוד או מתכוני IFTTT IFTTT מתחבר עכשיו לכל דבר: הצגת ערוץ ה- Makerהשימושים הפוטנציאליים עבור IFTTT הם אינסופיים. אבל עד עכשיו, קשה היה ממשק אותו לפרויקטים של חומרה משלך. היום זה הכל השתנה. קרא עוד .
כללי התכנות נשמעים גרועים ממה שהוא. בואו נתחיל פשוט עם זוג כללים שמכבים או מכבים את האור בהתאם לחיישן הנוכחות:
הכלל "אור במשרד כאשר ג'יימס נוכח" כאשר הפריט JamesInOffice עבר מ- OFF ל- ON. ואז שלח את הפקודה (Office_Hue, ON) סיום כלל "נורת המשרד כבה כאשר ג'יימס עוזב" כאשר הפריט JamesInOffice עבר מ- ON למצב OFF. ואז שלח את הפקודה (Office_Hue, OFF) סוף
ראשית, אנו מכנים את הכלל - היו תיאורים, כך שתדעו איזה אירוע יורה. בשלב הבא אנו מגדירים את הכלל הפשוט שלנו באמירה כאשר x נכון, עשה זאת y. סוף מסמל את סגירת הכלל הספציפי הזה. יש מספר מילים מיוחדות בהן אתה יכול להשתמש בכללים, אך לעת עתה אנו מתמודדים עם שני חלקים פשוטים של תחביר - פריט, המאפשרת לך לשאול במצב של משהו; ו שלח פקודה, שעושה בדיוק את מה שאתה חושב שזה יעשה. אמרתי לך שזה קל.
כנראה שזה מיותר להשתמש בזוג כללים, אבל ככל שההיגיון שלי מורכב יותר, יהיה מועיל להפריד ביניהם אם אני כניסה או יציאה לאזור - וזה יכול להיות רעיון טוב להוסיף חיישן אור איפשהו למשוואה, כך שלא נדלק שלא לצורך אורות.
בואו נראה דוגמא נוספת ליצירת כלל מתוזמן.
הכלל "התעמל בכל בוקר" מתי הזמן cron "0 0 8 1/1 *? *" ואז HarmonyStartActivity ("תרגיל") סוף.
שוב, אנו מכנים את הכלל, מציינים תנאים מתי עליו לירות, ואת הפעולות לנקוט. אבל במקרה זה אנו מגדירים דפוס זמן. הקוד המצחיק שרואים בציטוטים הוא ביטוי CRON למתזמן קוורץ (הפורמט שונה במקצת מ- CRONtab רגיל). השתמשתי cronmaker.com כדי לסייע ביצירת הביטוי, אך תוכלו גם לקרוא את מדריך הפורמט [לא ארוך יותר זמין] להסבר מפורט ודוגמאות נוספות.

הכללים שלי אומרים בפשטות "08:00 כל בוקר, כל יום בשבוע, תגיד למערכת ההרמוני שלי Ultimate להתחיל בפעילות האימונים", מה שמפעיל את הטלוויזיה, ה- Xbox, המגבר ולחץ על כפתור ה- A לאחר דקה כדי להפעיל את הדיסק בכונן.
למרבה הצער, OpenHAB עדיין לא מצליח לבצע את התרגיל בשבילי.
כלל אחד נוסף שאני רוצה להראות לכם הוא משהו שאני משתמש בו כדי לנהל את רמות הלחות בביתי. יש לי מסיר לחות יחיד שאני צריך להסתובב בו בכל מקום שצריך, ולכן החלטתי להסתכל על כל חיישני הלחות שלי, למצוא איזה מהם הוא הגבוה ביותר ולאחסן אותו במשתנה. הוא מופעל כרגע בכל דקה, אך ניתן להוריד אותו בקלות. תסתכל קודם:
ייבא org.openhab.core.library.types. * ייבא org.openhab.model.script.actions. * יבוא. כלל המיתרים "מוניטור לחות" כאשר הזמן cron "0 * * * *?" ואז var prevHigh = 0 var highHum = "" לחות?. חברים.עבור כל [זמזום | logDebug ("לחות. שורות", hum.name); if (hum.state כמו DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("humidity.rules", highHum); הודעה עדכנית (Dehumidifier_Needed, highHum); סוף.
ליבת השלטון היא ב לחות?. חברים.למד קו. לחות היא שם קבוצה עבור חיישני הלחות שלי; חברים תופס את כל הפריטים בקבוצה ההיא; לכל אחד חוזר עליהם (עם פורמט סוגר מרובע מוזר שאתה כנראה לא מכיר). תחביר הכללים הוא נגזרת של Xtend, כך שתוכל לקרוא את ה- תיעוד Xtend אם אינך מוצא דוגמה להסתגלות.
סביר להניח שלא תצטרך לעשות זאת - ישנם מאות כללים לדוגמה שם בחוץ:
- הסבר מפורט על כללים בויקי הרשמי
- ה דוגמאות לכללים רשמיים עמוד ויקי
- לוקח חוקים לגבהים חדשים
- דוגמאות מתקדמות באתר IngeniousFool.net
MQTT עבור OpenHAB ואינטרנט של הדברים
MQTT היא מערכת הודעות קלות לתקשורת מכונה למכונה - סוג של טוויטר עבורכם ארדואינוס או Raspberry Pis לדבר אחד עם השני (אם כי כמובן שזה עובד עם הרבה יותר מסתם אלה). זה צובר במהירות פופולריות ומוצא לעצמו בית עם מכשירי Internet of Things, שהם בדרך כלל נמוכים בקרי מיקרו משאב הזקוקים לדרך אמינה להעברת נתוני חיישן בחזרה לרכזת שלך או לקבל מרחוק פקודות. זה בדיוק מה שנעשה עם זה.
אבל מדוע להמציא את הגלגל מחדש?
MQ Telemetry Transport הומצא כבר בשנת 1999 לחיבור צינורות נפט באמצעות לוויין איטי חיבורים, שתוכננו במיוחד כדי למזער את השימוש בסוללה ורוחב הפס, תוך מתן אמינות מסירת נתונים. לאורך השנים עקרונות העיצוב נותרו זהים, אך מקרה השימוש עבר ממערכות משובצות מיוחדות למכשירי אינטרנט כלליים. בשנת 2010 הפרוטוקול שוחרר ללא תמלוגים, פתוח לכל אחד לשימוש וליישום. אנחנו אוהבים חופשי.
אתה אולי תוהה מדוע אנחנו בכלל טורחים בפרוטוקול נוסף - כבר יש לנו את HTTP אחרי הכל - וזה יכול ישמש לשליחת הודעות מהירות בין כל מערכות המערכות המחוברות לרשת (כמו OpenHAB ו- IFTTT, בפרט עם החדש יצרנית ערוץ IFTTT מתחבר עכשיו לכל דבר: הצגת ערוץ ה- Makerהשימושים הפוטנציאליים עבור IFTTT הם אינסופיים. אבל עד עכשיו, קשה היה ממשק אותו לפרויקטים של חומרה משלך. היום זה הכל השתנה. קרא עוד ). ואתה צודק. עם זאת, עיבוד העיבוד של שרת HTTP הוא די גדול - עד כדי כך שלא תוכלו להריץ בקלות אחד על גבי אחד בקר מיקרו משובץ כמו הארדואינו (לפחות אתה יכול, אבל לא נשאר לך הרבה זיכרון לשום דבר אחרת). MQTT הוא מצד שני קל משקל, כך ששליחת הודעות ברשת שלך לא תסתום את הצינורות והיא יכולה בקלות להתאים לחלל הזיכרון הקטן של ארדואינו שלנו.
איך MQTT עובד?
MQTT דורש גם שרת (המכונה "מתווך") ולקוח אחד או יותר. השרת פועל כמתווך, מקבל הודעות ושידר אותם מחדש לכל לקוחות שמעוניינים בכך.
נמשיך עם ה- טוויטר למכונות אנלוגיה. בדיוק כמו שמשתמשים בטוויטר יכולים לצייץ 140 תווים חסרי משמעות שלהם, והמשתמשים יכולים "לעקוב" אחר משתמשים אחרים כדי לראות זרם של הודעות שנאצרו, לקוחות MQTT יכולים להירשם לערוץ מסוים כדי לקבל את כל ההודעות משם, כמו גם לפרסם את ההודעות שלהם בעצמם ערוץ. דפוס פרסום זה ומינוי זה מכונה פאב / תתבניגוד למסורת לקוח / שרת דגם של HTTP.
HTTP דורש שתפנה למכונה שאיתם אתה מתקשר, תגיד שלום, ואז יש קדימה ואחורה של הכרה כל הזמן זה בזה בזמן שאתה מקבל או מכניס נתונים. עם פאב / סאב, הלקוח שעושה את ההוצאה לאור אינו צריך לדעת לאילו לקוחות נרשמים: הוא רק שואב את ההודעות, והמתווך מחלק אותם מחדש לכל לקוחות הרשומים. כל לקוח יכול גם לפרסם וגם להירשם לנושאים, ממש כמו משתמש בטוויטר.
אולם בניגוד לטוויטר, MQTT אינו מוגבל ל -140 תווים. זה נתונים אגנוסטיים, כך שתוכלו לשלוח מספרים קטנים או חסימות טקסט גדולות, תרשימים מעוצבים JSON, או אפילו תמונות וקבצים בינאריים.
זה לא ש- MQTT עדיף על HTTP לכל דבר - אלא זה הוא יותר מתאים אם עומדים לרשותנו הרבה חיישנים ברחבי הבית, כל הזמן מדווחים עליהם.
חשוב גם לדעת ש OpenHAB לא ישמש כמתווך MQTT שלך - אנו נתייחס לאותה מעט מאוחר יותר. עם זאת, OpenHAB ישמש כלקוח: היא יכולה לפרסם את יומן הפעילות שלך ב- OpenHAB, כמו גם לחייב בפרט לערוצים למכשירים, כך שתוכלו למשל לקבל מתג שנשלט על ידי הודעות MQTT על מסוים ערוץ. זה אידיאלי ליצירת בית מלא בחיישנים.
התקן את יתוש על ה- Pi שלך
למרות ש OpenHAB כולל לקוח MQTT כך שתוכלו להירשם לנושא וגם לפרסם הודעות, הוא לא ישמש כשרת. לשם כך, עליך להשתמש במתווך MQTT מבוסס אינטרנט (בתשלום או בחינם), או להתקין את התוכנה החינמית ב- Pi שלך. הייתי רוצה לשמור על הכל בבית, אז התקנתי את Mosquitto ב- Pi.
לרוע המזל, הגרסה הזמינה דרך apt-get הרגילה אינה מעודכנת לחלוטין. במקום זאת, נוסיף את המקורות האחרונים.
ווגט http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. מקש sudo apt הוסף מוסקיטו-repo.gpg.key. cd /etc/apt/sources.list.d/ סודו ווגט http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt - קבל להתקין יתוש.
זה כל מה שאנחנו צריכים לעשות כדי ששרת MQTT יפעל ברשת המקומית. המתווך שלך פועל בנמל 1883 כברירת מחדל.
בדוק ששרת MQTT שלך עובד באמצעות MQTT.fx החינמי, שהוא פלטפורמה חוצה. לחץ על סמל ההגדרות כדי ליצור פרופיל חדש והזן את כתובת ה- IP או ה- Raspberry Pi של Raspberry Pi שלך. שמור ולחץ על חיבור. אם הרמזור הקטן בצד ימין למעלה הופך לירוק, כדאי לך ללכת.

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

לפני שאנו מוסיפים כמה חיישנים בפועל לרשת שלנו, עלינו ללמוד על רמות הנושא, המאפשרות לנו לבנות ולסנן את רשת MQTT. שמות נושאים רגישים לאותיות רישיות, לא אמורים להתחיל ב- $, או לכלול רווח או תווים שאינם ASCII - נוהלי תכנות סטנדרטיים לשמות משתנים, באמת.
המפריד / מציין רמת נושא שהיא היררכית, לדוגמה להלן כל רמות הנושא התקפות.
inTopic / smallSubdivision / evenSmallerSubdivision. myHome / Living Room / טמפרטורה. myHome / Living Room / לחות. myHome / מטבח / טמפרטורה. myHome / מטבח / לחות
אתה כבר אמור לראות כיצד מבנה העץ הזה מושלם לבית חכם מלא חיישנים ומכשירים. השיטה הטובה ביותר לשימוש עם מספר חיישנים בחדר בודד היא לפרסם כל משתנה חיישן כרמת הנושא שלו - להסתעף ליותר ספציפיות (כמו בדוגמאות שלמעלה) - במקום לנסות לפרסם מספר סוגים של חיישן לאותו דבר ערוץ.
לקוחות יכולים לפרסם או להירשם כמנוי לכל מספר רמות נושא בודדות, או להשתמש בכמה תווים כלליים מיוחדים כדי לסנן מגובה העץ.
תחליפי התווים + עבור כל רמת נושא אחת. לדוגמה:
myHome / + / טמפרטורה
היה מנוי את הלקוח לשניהם
myHome / Living Room / טמפרטורה. myHome / מטבח / טמפרטורה
... אבל לא את רמות הלחות.
המס 'הוא תו כללי ברמות רמות, כך שתוכל להביא כל דבר ממערך חיישני LivingRoom עם:
myHome / livingRoom / #
מבחינה טכנית, אתה יכול גם להירשם לרמת השורש שתביא לך לחלוטין את כל מה שקורה עוברים דרך המתווך, אבל זה יכול להיות כמו לתקוע צינור אש בפניכם: קצת מהמם. נסה להתחבר למתווך MQTT הציבורי מ- HiveMQ ולהירשם ל- #. קיבלתי בערך 300 הודעות תוך מספר שניות לפני שהלקוח שלי פשוט התרסק.
טיפ למתחילים MQTT: “/myHome/” הוא נושא אחר ל"הבית שלי/" - כולל חתוך בתחילת הדרך יוצר רמת נושא ריקה, שלמרות שהיא תקפה טכנית, אינה מומלצת מכיוון שהיא יכולה להיות מבלבלת.
עכשיו כשאנחנו מכירים את התיאוריה, בואו ונלך עם חיישן ארדואינו, אתרנט, וחיישן טמפרטורה ולחות DHT11 - כנראה שיש לך ערכת המתנע שלך, אבל אם לא, פשוט החלף את חיישן הסביבה לקבלת חיישן תנועה (או אפילו כפתור).
פרסום MQTT מארנדינו עם חיבור אתרנט
אם יש לך מכשיר תואם Arduino תואם עם Wi-Fi או Ethernet מובנה, זה אמור לעבוד גם. בסופו של דבר נרצה דרך טובה / זולה יותר לתקשר כי צורך להשתמש בחיבור רשת בכל חדר, אך הדבר משמש ללמוד את היסודות.
התחל בהורדה ספריית הציבור בפאב מגיתוב. אם השתמשת בלחצן "הורד כ- ZIP", המבנה קצת שגוי. שחרר את הדף, שנה את שם התיקיה לסך הכל פאביםואז הוצא את שני הקבצים מה - src התיקייה והעבר אותם במעלה אחת לשורש התיקיה שהורדת. ואז העבירו את כל התיקיה לתיקייה שלכם ארדואינו / ספריות ספרייה.
הנה קוד הדגימה שלי שתוכל להתאים: פלט האות DHT11 נמצא בסיכה 7. שנה את ה- IP של השרת עבור ה- Pi שלך בשורה הבאה:
client.setServer ("192.168.1.99", 1883);
למרבה הצער, איננו יכולים להשתמש בשם הידידותי שלו (OpenHAB.local במקרה שלי) מכיוון שערימת ה- TCP / IP בארדואינו מאוד פשטנית והוספת הקוד לשמות Bonjour יהיה הרבה זיכרון שלא נרצה לבזבז. כדי לשנות את הנושאים עליהם משודרים נתוני חיישן, גלול מטה לשורות הבאות:
מאגר char [10]; dtostrf (t, 0, 0, חיץ); client.publish ("openhab / himitsu / temperature", חיץ); dtostrf (ח, 0, 0, חיץ); client.publish ("openhab / himitsu / לחות", חיץ);
הקוד כולל גם מנוי לערוץ פקודה. מצא והתאם את השורה הבאה:
client.subscribe ("openhab / himitsu / command");
בחן את הקוד שם ותראה שתוכל לשלוט בקלות על נורית LED או ממסר, למשל על ידי שליחת פקודות לערוצים ספציפיים. בקוד הדוגמה, זה פשוט שולח הודעה בחזרה המאשרת את קבלת הפקודה.
העלה את הקוד שלך, חבר את Arduino שלך לרשת, והשתמש ב- MQTT.fx הירשם כמנוי לשני # או openhab / himitsu / # (או כל מה ששנית את שם החדר, אך אל תשכח לכלול את המספר בסוף). די מהר אתה אמור לראות הודעות נכנסות; ואם אתה שולח ON או OFF לנושא הפקודה, תראה גם אישורים חוזרים.

MQTT מחייב עבור OpenHAB
השלב האחרון במשוואה הוא לחבר זאת ל- OpenHAB. לשם כך, כמובן, אנו זקוקים לכריכה.
sudo apt-get להתקין openhab-addon-binding-mqtt. sudo chown - hh openhab: openhab / usr / share / openhab
וערוך את קובץ התצורה כדי לאפשר את הכריכה.
mqtt: broker.url = tcp: // localhost: 1883. mqtt: מתווך .clientId = openhab
הפעל מחדש את OpenHAB
הפעלה מחדש של שירותי סודו
ואז נוסיף פריט או שניים:
/ * חיישני MQTT * / מספר Himitsu_Temp "טמפרטורת Himitsu [% .1f ° C]"(Himitsu, טמפרטורה) {mqtt = " (Himitsu, לחות) {mqtt = "
כעת עליך להבין את הפורמט; זה מתחיל פריט מספר מכריכת MQTT, בנושא מוגדר. דוגמה פשוטה זו, אולי תרצה להתייחס לדף הוויקי בו הוא נמצא יכול להיות הרבה יותר מורכב.
מזל טוב, כעת יש לך בסיס למערך חיישנים זול מבוסס ארדואינו. אנו נבדוק זאת בעתיד ונציב את הארדואינו לרשת RF נפרדת לחלוטין. יצרתי גם גרסה זהה עבור לוחות Wizwiki 7500 אם במקרה יש לך אחד כזה.
נתוני התמדה ותרשימים
עכשיו אתה כנראה חבורה של חיישנים שהוקמה, בין אם מ- Z-Wave או מארדואינו מותאם אישית שמריצים MQTT - אז אתה יכולים לצפות במצב הנוכחי של אותם חיישנים בכל עת, ועליכם להיות גם להגיב לערכם ב חוקים. אך הדבר המעניין בערכי חיישנים הוא בדרך כלל שהם משתנים עם הזמן: לשם נכנסים התמדה ותרשימים. התמדה ב- OpenHAB פירושו שמירת הנתונים לאורך זמן. בואו ונמשיך להתקין את RRD4J (מסד נתונים רובין עגול לג'אווה), שנקרא מכיוון שהנתונים נשמרים בצורה רובין עגולה - נתונים ישנים מושלכים כדי לדחוס את גודל בסיס הנתונים.
התקן חבילות rrd4j עם הפקודות הבאות.
sudo apt - קבל להתקין openhab-addon-persistence-rrd4j. sudo chown - hh openhab: openhab / usr / share / openhab.
ואז צור קובץ חדש בשם rrd4j.persist בתוך ה תצורות / התמדה תיקיה. הדבק את הדברים הבאים:
אסטרטגיות {everyMinute: "0 * * * *?" כל שעה: "0 0 * * *?" כל יום: "0 0 0 * *?" ברירת מחדל = כל שינוי. } פריטים {// ממשיכים הכל כאשר הערך מתעדכן, רק ברירת מחדל ושחזור אותם ממסד הנתונים בהפעלה *: אסטרטגיה = כל שינוי, RestoreOnStartup // הבא אנו מגדירים אסטרטגיות ספציפיות של כל שעה לכל דבר בקבוצת הטמפרטורה, ובכל דקה לטמפרטורת לחות *: אסטרטגיה = לחות לכל שעה *: אסטרטגיה = כל דק // לחלופין אתה יכול להוסיף פריטים ספציפיים כאן, כגון // חדר שינה_ לחות, JamesInOffice: אסטרטגיה = כל רגע. }
בחלק הראשון של קובץ זה אנו מגדירים אסטרטגיות, שפשוט פירושן לתת שם לביטוי CRON. זה אותו דבר כמו שכבר עשינו עם שלי. OpenHAB, אך הפעם אנו יוצרים כמה אסטרטגיות חדשות בהן אנו יכולים להשתמש בכל יום, כל שעה וכל דקה. עוד לא השתמשתי בכולם, אבל אולי אהיה בעתיד.
במחצית השנייה של הקובץ אנו אומרים ל- rr4dj אילו ערכי נתונים לשמור. כברירת מחדל, אנו הולכים לשמור את הכל בכל פעם שהוא מתעדכן, אך ציינתי גם כמה אסטרטגיות מבוססות זמן עבור חיישנים ספציפיים. טמפרטורות שאני לא מפריע להן מדי, אז קבעתי את זה כדי לחסוך כל שעה בלבד, אבל הלחות היא דאגה גדולה עבורי, אז אני רוצה לראות איך זה משתנה בכל רגע. אם יש נתונים אחרים שתרצה לשמור באופן ספציפי בשעות קבועות, הוסף אותם כאן עכשיו או התאם לפי הצורך.
הערה: אם גם תרצו לתאר את הנתונים, עליכם לאחסן אותם לפחות פעם בדקה. לא משנה אם נתוני החיישן שלך אפילו יעודכנו במהירות הזו, אתה פשוט צריך לומר ל rr4dj לאחסן אותם פעם בדקה.
עם ההגדרה, עליך להתחיל לראות פלט ניפוי באגים שמאחסן ערכים.

בשלב הבא, בואו נעשה כמה גרפים יפים של כל הנתונים האלה. זה ממש קל. כדי ליצור גרף של חיישן בודד, הוסף את הדברים הבאים למפת האתר שלך:
פריט תרשים = תקופת לחות חדר שינה = ח
זה פשוט כל מה שאתה צריך. ערכים תקפים לתקופה הם שעות, 4 שעות, 8 שעות, 12 שעות, D, 3D, W, 2W, M, 2M, 4M, Y; צריך להיות ברור למה המשמעות של אלה. ברירת המחדל היא ל- D ליום שלם של נתונים אם לא צוין.
ליצירת גרף עם פריטים מרובים, פשוט תרשים את שם הקבוצה במקום זאת:
פריט תרשים = תקופת לחות = ח

יתכן שתהיה מעוניין לדעת שאתה יכול להשתמש בתרשים זה במקום אחר; היא יוצרת תמונה באמצעות כתובת האתר הבאה: http://YOUROPENHABURL: 8080 / תרשים? קבוצות = לחות ותקופה = ח
איך זה שלך מערכת OpenHAB מגיעה?
זהו זה לפרק הזה של המדריך, אך אל תצפו שזה יהיה האחרון שתשמעו מאיתנו על OpenHAB. אני מקווה שזה ומדריך למתחילים העניקו לך יסוד מוצק לפתח מערכת OpenHAB שלמה משלך - אבל זה תהליך שלעולם לא סיים לגמרי.
למרבה המזל, OpenHAB יכול לשנות את המידה ממספר מכשירים למאות, ממורכבות כלל פשוטה ועד האוטומציה האולטימטיבית הביתית - אז איך המערכת שלך מסתדרת? באילו מכשירים בחרתם? מה הפרויקט הגדול הבא שאתה מתמודד?
בואו נדבר בתגובות - ובבקשה, אם גילית שמדריך זה מועיל, לחץ על לחצני השיתוף כדי לספר לחבריך כיצד גם הם יכולים להתקין מערכת OpenHAB משלהם.
ג'יימס הוא בעל תואר ראשון בבינה מלאכותית, והוא מוסמך CompTIA A + ו- Network +. הוא המפתח הראשי של MakeUseOf, ומבלה את זמנו הפנוי במשחקי פיינטבול VR ומשחקי לוח. הוא בנה מחשבים אישיים מאז שהיה ילד.