מדריך למתחילים OpenHAB חלק 2: ZWave, MQTT, חוקים ותרשים

מדריך למתחילים OpenHAB חלק 2: ZWave, MQTT, חוקים ותרשים

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





בחלק 1 של המדריך, הדרכתי אותך התקנת OpenHAB ב- Raspberry Pi , הציגה את מושגי הליבה של OpenHAB, והראתה לך כיצד להוסיף את הפריטים הראשונים שלך למערכת. היום נלך רחוק יותר:





  • הוספת התקני ZWave
  • הוספת בקר Harmony Ultimate
  • הצגת כללים
  • היכרות עם MQTT והתקנת מתווך MQTT ב- Pi שלך, עם חיישנים בארדואינו
  • הקלטת נתונים וגרף אותם

היכרות עם Z-Wave

Z-Wave הייתה פרוטוקול אוטומציה ביתית דומיננטית במשך שנים: הוא אמין, פותח בהרחבה ועובד בטווח ארוך הרבה יותר מכל מוצרי בית חכם אחר. ישנם מאות חיישני Z-Wave הזמינים עבורך המבצעים מגוון רחב של משימות. OpenHAB פחית לעבוד עם Z-Wave, אך היא מהווה טרחה להתקנה, והאמינות אינה מובטחת.





אם אתה שוקל לרכוש בית מלא בחיישני Z-Wave במיוחד לשימוש עם OpenHAB, הייתי קורא לך לשקול מחדש. זה עשוי להסתדר מצוין עבורך, או שהוא עלול להטריד בעיות קטנות אך מתמשכות. לפחות, אל תקנו בית מלא בחיישנים עד שהזדמן לכם לנסות כמה. הסיבה היחידה לבחור ב- Z-Wave היא אם אינך מסתפק במאה אחוז ב- OpenHAB, ותרצה להשאיר את האפשרויות פתוחות בעתיד: Z-Wave למשל עובד עם רכזת SmartThings של Samsung, כמו גם רכזות ספציפיות ל- Z-Wave כגון Homeseer, ומגוון אפשרויות תוכנה אחרות כגון domoticz .

למרות OpenHAB כולל כריכה של Z-Wave, אתה עדיין צריך הגדר תחילה את רשת Z-Wave , לפני ש- OpenHAB תוכל להתחיל לבצע שאילתות לגבי נתונים. אם יש לך לוח בקר של Rasberry, יש לך תוכנות מסופקות להגדרת הרשת, כך שלא נעסוק בזה כאן. אם רכשת בקר Aeotec USB Z-Stick או דומה, סביר להניח שאין לך תוכנה כלשהי, אז המשך לקרוא.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB ליצירת שער (לבן רגיל) קנה עכשיו ב- AMAZON

אם כבר יש לך הגדרת רשת Z-Wave , אתה יכול פשוט לחבר את הבקר שלך ל- Pi ולהתחיל להגדיר את הכריכה והפריטים. אם זו הגיחה הראשונה שלך ל- Z-Wave, זה קצת יותר מורכב.

ראשית, בצד החומרה: לכל בקר יש דרך התאמה משלו למכשירים (המכונה טכנית 'מצב הכללה' בו מוקצה מזהה צומת). במקרה של ה- Aotec Z-Stick, פירוש הדבר הוא לנתק אותו מיציאת ה- USB וללחוץ פעם אחת על הכפתור כדי להכניס אותו למצב הכללה. לאחר מכן קח אותו ליד המכשיר שאתה מזווג ולחץ על כפתור ההכללה גם עליו (גם זה ישתנה: שקע Everspring שלי מחייב לחיצה על הכפתור 3 פעמים ברצף מהיר, כך שהשיעור כאן הוא קריאת המדריך למכשיר שלך) .





ה- Z-Stick מהבהב לזמן קצר כדי להצביע על הצלחה. זה יוצר בעיות בעת חיבורו חזרה ל- Pi, מכיוון שהוקצה יציאה חדשה. הפעל מחדש את ה- Pi כדי לאפס אותו בחזרה ליציאה הסטנדרטית אם תגלה שהוא הוקצה מחדש באופן דינאמי ליחידה אחרת. עדיף: אל תחבר אותו ל- Pi עד שתעשה את כל זיווגי החומרה תחילה.

התקנת כבלי HABmin ו- Z-Wave

מכיוון ש- OpenHAB אינו ממש כלי תצורה עבור Z-Wave, אנו הולכים להתקין עוד כלי לניהול אתרים-מה שנקרא HABmin. ראש אל מאגר Github של HABmin להוריד את המהדורה הנוכחית. לאחר שתפרק את רוכסן, תמצא 2 .קַנקַן קבצים בספריית התוספים - אלה צריכים להיות ממוקמים בספריית התוספות המתאימה במשיתף הבית שלך ב- OpenHAB (אם אתה משתמש גם ב- Aotec gen5 Z-Stick, וודא שיש לך לפחות גרסה 1.8 של כריכת Z-Wave) .





לאחר מכן, צור תיקייה חדשה בספריית webapps, וכינה אותה 'habmin' (חשוב באותיות קטנות). העתק את שאר הקבצים שהורדו לשם.

הערה: יש גם א HABmin 2 תחת פיתוח פעיל. ההתקנה זהה במידה רבה אך עם תוספת אחת .jar. אולי כדאי לנסות את שניהם רק כדי לראות מה אתה מעדיף.

אם עדיין לא עשית זאת, חבר את הבקר שלך ל- Pi. הקלד את הדברים הבאים כדי למצוא את היציאה הנכונה.

ls /dev /tty*

אתה מחפש משהו עם USB בשם, או במקרה הספציפי שלי, מקל ה- Z הציג את עצמו כ / dev / ttyACM0 (מודם). אולי יהיה קל יותר לבצע את הפקודה פעם אחת לפני שתחבר אותה ופעם לאחר מכן, כדי שתוכל לראות מה משתנה אם אינך בטוח.

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

sudo usermod -a -G חיוג פתוח

עכשיו, כדי לבעוט הכל לפעולה, הפעל מחדש את OpenHAB

sudo service 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'}

צריכת החשמל של מסיר הלחות של מספר לחות [%.1f W] '{zwave =' 3: command = meter '}

מושלם.

הבא הוא Aeotec Gen5 Multi-Sensor.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) קנה עכשיו ב- AMAZON

עבור זה, מצאתי דוגמא config ב 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'}

מספר Hallway_Luminance 'מסדר זוהר [%.0f Lux]' (מסדרון) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

צור קשר עם Hallway_Motion 'Motion Hallway [%s]' (Hallway, Motion) {zwave = '2: 0: command = sensor_binary, respond_to_basic = true'}

חיישן מספר_1_ סוללה 'סוללה [%s %%]' (תנועה) {zwave = '2: 0: command = battery'}

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

כריכת Logitech Harmony

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

התחל בהתקנת שלושת קבצי הכריכה שאתה מוצא באמצעות apt-cache לחיפוש 'הרמוניה':

אל תשכח חבוש את ספריית האיגודים שוב לאחר שתסיים:

sudo apt-get להתקין openhab-addon-action-harmonyhub

sudo apt-get להתקין openhab-addon-binding-harmonyhub

sudo apt-get להתקין openhab-addon-io-harmonyhub

sudo chown -hR openhab: openhab/usr/share/openhab

כדי להגדיר את הכריכה, פתח את הקובץ openhab.cfg והוסף קטע חדש כדלקמן:

########### בקרת מרחוק בהרמוניה ##########

harmonyhub: host = 192.168.1.181 או ה- ip שלך

harmonyhub: שם משתמש = your-harmony-email-login

harmonyhub: password = הסיסמה שלך

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

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

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

/ * Harmony Hub */

מחרוזת Harmony_Activity 'Harmony [%s]' (Living_Room) {harmonyhub = '*[currentActivity]'}

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

החלף פריט = Harmony_Activity mappings = [PowerOff = 'כבוי', תרגיל = 'תרגיל', 13858434 = 'טלוויזיה', קריוקי = 'קריוקי']

היכן ניתן למצוא הורדות באנדרואיד

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

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

מבוא כללי לכללים

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

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

כלל 'אור המשרד דולק כאשר ג'יימס נוכח'

מתי

הפריט JamesInOffice השתנה מ OFF ל- ON

לאחר מכן

sendCommand (Office_Hue, ON)

סוֹף

הכלל 'דולק במשרד כאשר ג'יימס עוזב'

מתי

הפריט JamesInOffice השתנה מ ON ל- OFF

לאחר מכן

sendCommand (Office_Hue, OFF)

סוֹף

ראשית, אנו קוראים לכלל - היה תיאורי, כך שתדע איזה אירוע יורה. לאחר מכן, אנו מגדירים את הכלל הפשוט שלנו על ידי אמירה כאשר x נכון, בצע y . סוף מסמל את סגירת הכלל המסוים הזה. יש מספר מילים מיוחדות שתוכל להשתמש בהן בכללים, אך כרגע עסקינן בשתי פיסות תחביר פשוטות - פריט , המאפשר לך לבדוק את המצב של משהו; ו sendCommand , שעושה בדיוק מה שאתה חושב שזה יעשה. אמרתי לך שזה קל.

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

הבה נבחן דוגמה נוספת ליצירת כלל מתוזמן.

כלל 'התעמלות כל בוקר'

מתי

זמן cron '0 0 8 1/1 *? *'

לאחר מכן

harmonyStartActivity ('תרגיל')

סוֹף

שוב, אנו מכנים את הכלל, מציינים את התנאים שבהם עליו לירות ואת הפעולות שיש לנקוט. אבל במקרה זה, אנו מגדירים תבנית זמן. הקוד המצחיק שאתה רואה במרכאות הוא ביטוי CRON עבור מתזמן קוורץ (הפורמט שונה במקצת מ- CRONtab רגיל). אני השתמשתי cronmaker.com כדי לסייע ביצירת הביטוי, אך תוכל גם לקרוא את מדריך הפורמט [No Longer Available] להסבר מפורט ודוגמאות נוספות.

CronMaker.com נהגה ליצור את הביטוי Cron המעוצב כהלכה

החוקים שלי אומרים פשוט '8 בבוקר, כל יום בשבוע, אמור למערכת Harmony Ultimate שלי להתחיל את פעילות התרגיל', אשר בתורו מפעיל את הטלוויזיה, ה- Xbox, המגבר ולוחץ על כפתור A לאחר דקה להפעלה הדיסק בכונן.

למרבה הצער, OpenHAB עדיין לא מסוגלת לבצע את התרגיל בשבילי.

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

ייבא org.openhab.core.library.types.*

ייבא org.openhab.model.script.actions.*

יבוא java.lang.String

כלל 'מוניטור לחות'

כאשר הזמן יציג '0 * * * *?'

לאחר מכן

var prevHigh = 0

var highHum = '

לחות? .חברים.לכל [מזמזם |

logDebug ('לחות.כללים', שם כינוי);

if (hum.state כ- DecimalType> prevHigh) {

prevHigh = hum.state

highHum = hum.name + ':' + hum.state + '%'

}

אתה יכול לקבל abc nbc ו- cbs על roku?

]

logDebug ('לחות.כללים', highHum);

postUpdate (Dehumidifier_Needed, highHum);

סוֹף

ליבת הכלל היא ב לחות? .חברים.למד קַו. לחות היא שם קבוצתי לחיישני הלחות שלי; . חברים תופס את כל הפריטים בקבוצה זו; לכל אחד חוזר עליהם (עם פורמט סוגר מרובע מוזר שאתה כנראה לא מכיר). תחביר הכללים הוא נגזרת של Xtend, כך שתוכל לקרוא את תיעוד Xtend אם אינך מוצא דוגמה להתאמה.

סביר להניח שלא תצטרך - ישנם מאות כללים לדוגמה:

MQTT ל- OpenHAB ואינטרנט הדברים

MQTT היא מערכת העברת הודעות קלה לתקשורת בין מכונה למכונה-מעין טוויטר עבור ה- Arduinos או ה- Raspberry Pis שלכם כדי לדבר ביניהם (אם כי כמובן שזה עובד עם הרבה יותר מאשר רק אלה). הוא צובר פופולריות במהירות ומוצא לעצמו בית עם מכשירי אינטרנט של דברים, שהם בדרך כלל מיקרו-בקרי משאבים נמוכים הדורשים דרך אמינה להעביר נתוני חיישנים בחזרה לרכזת שלך או לקבל פקודות מרחוק. זה בדיוק מה שנעשה עם זה.

אבל למה להמציא את הגלגל מחדש?

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

אתם אולי תוהים מדוע אנחנו בכלל טורחים עם עוד פרוטוקול אחר - יש לנו כבר את ה- HTTP שבכל זאת ניתן לשלוח הודעות מהירות בין כל מיני מערכות מחוברות לאינטרנט (כמו OpenHAB ו- IFTTT, במיוחד עם ערוץ היצרנים החדש) ). ואתה צודק. עם זאת, תקליטור העיבוד של שרת HTTP הוא די גדול - עד כדי כך שלא תוכל להריץ אותו בקלות על מיקרו -בקר מוטבע כמו ה- Arduino (לפחות אתה יכול, אבל לא יישאר לך הרבה זיכרון לשום דבר אחר ). מצד שני, MQTT הוא קל משקל, כך ששליחת הודעות ברחבי הרשת שלך לא תסתום את הצינורות, והיא יכולה להתאים בקלות לחלל הזיכרון הקטן שלנו בארדואינו.

כיצד פועל MQTT?

MQTT דורש גם שרת (שנקרא 'מתווך') וגם לקוח אחד או יותר. השרת פועל כמתווך, מקבל הודעות ומשדר אותן מחדש ללקוחות המעוניינים בכך.

בואו נמשיך עם ה טוויטר-למכונות אבל אנלוגיה. בדיוק כפי שמשתמשי טוויטר יכולים לצייץ 140 תווים חסרי משמעות משלהם, והמשתמשים יכולים 'לעקוב' אחר משתמשים אחרים כדי לראות זרם פוסטים שאוצר, לקוחות MQTT יכולים להירשם לערוץ מסוים כדי לקבל את כל ההודעות משם, כמו גם לפרסם הודעות משלהם. לערוץ ההוא. דפוס זה של פרסום והרשמה נקרא פאב / תת , בניגוד למסורת לקוח/שרת דגם HTTP.

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

שלא כמו טוויטר, MQTT אינו מוגבל ל -140 תווים. זה אגנוסטי לנתונים, כך שתוכל לשלוח מספרים קטנים או גושי טקסט גדולים, דטגרמות בפורמט JSON, או אפילו תמונות וקבצים בינאריים.

זה לא ש- MQTT טוב יותר מ- HTTP לכל דבר - אבל זה הוא מתאים יותר אם יהיו לנו הרבה חיישנים ברחבי הבית, שמדווחים כל הזמן.

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

התקן את Mosquitto ב- Pi שלך

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

למרבה הצער, הגרסה הזמינה באמצעות apt-get הרגילה מיושנת לחלוטין. במקום זאת, הוסף את המקורות העדכניים ביותר.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

sudo apt-key להוסיף mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get להתקין יתוש

זה כל מה שאנחנו צריכים לעשות כדי ששרת MQTT יופעל ברשת המקומית. הברוקר שלך פועל ביציאה 1883 כברירת מחדל.

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

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

לפני שנוסיף כמה חיישנים אמיתיים לרשת שלנו, עלינו ללמוד על רמות נושאים, המאפשרות לנו לבנות ולסנן את רשת MQTT. שמות הנושאים הם תלויי רישיות, לא צריכים להתחיל עם $, או לכלול רווח או תווים שאינם ASCII-שיטות תכנות סטנדרטיות לשמות משתנים, באמת.

המפריד / מציין רמת נושא שהיא היררכית, למשל כל רמות הנושא התקפות.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/טמפרטורה

myHome/livingRoom/לחות

myHome/מטבח/טמפרטורה

myHome/מטבח/לחות

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

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

התווים הכלליים + תווים כלליים לרמת נושא אחת. לדוגמה:

myHome/+/טמפרטורה

ירשם את הלקוח לשניהם

myHome/livingRoom/טמפרטורה

myHome/מטבח/טמפרטורה

... אבל לא רמות הלחות.

ה- # הוא תו כללי ברמה רבדים, כך שתוכל להביא כל דבר ממערך החיישנים livingRoom באמצעות:

myHome/livingRoom/#

מבחינה טכנית, אתה יכול גם להירשם לרמת השורש # שתגרום לך בהחלט לעבור כל דבר דרך הברוקר, אבל זה יכול להיות כמו להדביק צינור אש בפנים: קצת מהמם. נסה להתחבר למתווך MQTT הציבורי מ- HiveMQ ולהירשם ל- #. קיבלתי בערך 300 הודעות תוך כמה שניות לפני שהלקוח שלי פשוט התרסק.

טיפ למתחילים של MQTT: ' /הבית שלי/' הוא נושא אחר ל ' הבית שלי/' - כולל צירוף בתחילת הדרך יוצר רמת נושא ריקה, שאמנם תקפה טכנית אינה מומלצת מכיוון שהיא עלולה לבלבל.

כעת, לאחר שאנו מכירים את התיאוריה, בואו נצא לדרך עם Arduino, Ethernet Shield וחיישן טמפרטורה ולחות DHT11 - כנראה יש לך אחד בערכת המתנע שלך, אבל אם לא, פשוט החלף את החיישן הסביבתי לתנועה חיישן (או אפילו כפתור).

פרסום MQTT מתוך Arduino עם חיבור Ethernet

אם יש לך מכשיר תואם Arduino היברידי עם Wi-Fi או Ethernet מובנה, זה אמור גם לעבוד. בסופו של דבר נרצה דרך טובה יותר/זולה יותר לתקשר את הצורך להשתמש בחיבור רשת בכל חדר, אך זה משמש ללמוד את היסודות.

התחל בהורדה ספריית פאבים של Github . אם השתמשת בלחצן 'הורד כ- ZIP', המבנה מעט שגוי. לפתוח, לשנות את שם התיקיה רק סאב פאב , ואז הוצא את שני הקבצים מתוך src תיקייה והעבר אותם רמה אחת לשורש התיקיה שהורדת. לאחר מכן העבר את כל התיקיה אל שלך ארדואינו/ספריות מַדרִיך.

הנה קוד הדוגמא שלי שתוכל להתאים : יציאת האות DHT11 נמצאת בסיכה 7. שנה את כתובת ה- IP של השרת של ה- Pi שלך בשורה הבאה:

client.setServer ('192.168.1.99', 1883);

למרבה הצער, איננו יכולים להשתמש בשם הידידותי שלו (OpenHAB.local במקרה שלי) מכיוון שערימת TCP/IP בארדואינו מאוד פשטנית והוספת הקוד לשמות Bonjour תהיה הרבה זיכרון שאנחנו לא רוצים לבזבז. כדי לשנות את הנושאים בהם משדרים נתוני חיישנים, גלול מטה לשורות הבאות:

חיץ חרוך [10];

dtostrf (t, 0, 0, חיץ);

client.publish ('openhab/himitsu/temperature', buffer);

dtostrf (h, 0, 0, חיץ);

client.publish ('openhab/himitsu/לחות', חיץ);

הקוד כולל גם הרשמה לערוץ פקודה. מצא את השורה הבאה והתאם אותה:

client.subscribe ('openhab/himitsu/command');

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

העלה את הקוד שלך, חבר את ה- Arduino שלך לרשת, והשתמש ב- MQTT.fx כדי להירשם לשניהם # אוֹ openhab / himitsu / # (או כל מה ששינית את שם החדר, אך אל תשכח לכלול את ה- # בסוף). די מהר אתה אמור לראות הודעות נכנסות; ואם תשלח מופעל או כבוי לנושא הפקודה, תראה גם הודעות חוזרות.

כריכת MQTT עבור OpenHAB

השלב האחרון במשוואה הוא לחבר את זה ל- OpenHAB. לשם כך, כמובן, אנו זקוקים לכריכה.

sudo apt-get להתקין openhab-addon-binding-mqtt

sudo chown -hR openhab: openhab/usr/share/openhab

וערוך את קובץ התצורה כדי לאפשר את הכריכה.

mqtt: broker.url = tcp: // localhost: 1883

mqtt: broker.clientId = openhab

הפעל מחדש את OpenHAB

sudo service openhab הפעלה מחדש

אז נוסיף פריט או שניים:

/ * חיישני MQTT */

מספר Himitsu_Temp 'טמפרטורת Himitsu [%.1f ° C]' (Himitsu, טמפרטורה) {mqtt = '<[broker:openhab/himitsu/temperature:state:default]'}

מספר Himitsu_Humidity'Himitsu לחות [%.1f %%] '(Himitsu, לחות) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

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

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

נתוני התמדה וגרפים

כרגע אתה כנראה חבורה של חיישנים שהוקמו, בין אם מ- Z-Wave או מארדואינים מותאמים אישית המריצים MQTT-כך שתוכל להציג את המצב הנוכחי של חיישנים אלה בכל עת, וכדאי שתגיב גם לערכם בכללים. אבל הדבר המעניין בערכי חיישנים הוא בדרך כלל שהם משתנים עם הזמן: שם נכנסים ההתמדה והגרפים. הַתמָדָה ב- OpenHAB פירושו שמירת הנתונים לאורך זמן. בואו נתקדם ולהקים את RRD4J (מסד הנתונים של רובין עגול לג'אווה), שנקרא כך מכיוון שהנתונים נשמרים בצורה סבבה - נתונים ישנים יותר מושלכים כדי לדחוס את גודל מסד הנתונים.

התקן חבילות rrd4j עם הפקודות הבאות.

sudo apt-get install openhab-addon-persistence-rrd4j
sudo chown -hR openhab:openhab /usr/share/openhab

לאחר מכן צור קובץ חדש בשם rrd4j.persist בתוך ה תצורות/התמדה תיקייה. הדבק את הדברים הבאים:

אסטרטגיות {

everyMinute: '0 * * * *?'

כל שעה: '0 0 * * *?'

כל יום: '0 0 0 * *?'

ברירת מחדל = כל שינוי

}

פריטים {

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

*: strategy = everyChange, restoreOnStartup

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

מקושר לפרמיה של LinkedIn למחפשי עבודה

טמפרטורה*: אסטרטגיה = כל שעה

לחות*: אסטרטגיה = כל דקה

// לחלופין תוכל להוסיף כאן פריטים ספציפיים, כגון

// חדר שינה_ לחות, JamesInOffice: אסטרטגיה = everyMinute

}

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

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

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

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

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

פריט תרשים = תקופת לחות בחדר שינה = שעות

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

כדי ליצור גרף עם מספר פריטים, פשוט גרף את שם הקבוצה במקום:

פריט תרשים = תקופת לחות = h

אתה עשוי גם להיות מעוניין לדעת שאתה יכול להשתמש בגרף זה במקום אחר; זה יוצר תמונה באמצעות כתובת האתר הבאה: http: // YOUROPENHABURL: 8080/תרשים? קבוצות = לחות & תקופה = שעות

איך שֶׁלְךָ מערכת OpenHAB מגיעה?

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

למרבה המזל, OpenHAB יכולה להתרחב היטב מכמה מכשירים למאות, ממורכבות הכללים הפשוטה ועד לאוטומציה הביתית האולטימטיבית - אז איך המערכת שלך מסתדרת? באילו מכשירים בחרת? מהו הפרויקט הגדול הבא שאתה עומד להתמודד איתו?

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל מדריך למתחילים בדיבור אנימציה

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

קרא הבא
נושאים קשורים
  • עשה זאת בעצמך
  • בית חכם
  • ארדואינו
  • בית אוטומטי
  • טופס ארוך
  • מדריך לונגפורם
על הסופר ג'יימס ברוס(707 מאמרים פורסמו)

לג'יימס יש תואר ראשון בבינה מלאכותית והוא מוסמך CompTIA A+ ו- Network+. כשהוא לא עסוק כעורך ביקורות חומרה, הוא נהנה מ- LEGO, VR ומשחקי לוח. לפני שהצטרף ל- MakeUseOf, הוא היה טכנאי תאורה, מורה לאנגלית ומהנדס מרכז נתונים.

עוד מאת ג'יימס ברוס

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה