לחץ ״אנטר״ כדי לדלג על התוכן

הכירו את HomeAssistant – פלטפורמה לבית חכם

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

מקום אחד לכל המוצרים החכמים

HomeAssistant היא פלטפורמת קוד פתוח (זה אומר שהקוד כולו פתוח ונגיש לכל מי שירצה) ומתחוזקת על ידי קהילה רחבה של מפתחים ומשתמשים. ליבה של הפלטפורמה הם המכשירים החכמים, בצורה רחבה יותר הם נקראים כאן Components, או ׳שירותים׳, נכון לכתיבת שורות אלה, נתמכים כ 975 שירותים(!) ועם כל גרסה חדשה מתווספים שירותים חדשים, הנה כמה דוגמאות לשירותים קיימים: Broadlink RM לשליטה על מוצרים ב IR או RF, מסנג׳ר של פייסבוק לשליחת הודעות בצורה אוטומטית על דברים שקורים לכם בבית, נורות פיליפס, מוצרי גוגל הום, מוצרי אמזון אקו, מצלמות, פרוטוקולים אלחוטיים ועוד..

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

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

מה צריך בשביל לגרום לזה לעבוד?

הפלטפורמה כתובה ב Python 3 ולכן יכולה לרוץ על כל מערכת שתומכת בשפה, זה יכול להיות PC, raspberry pi או אפילו שרת NAS. ניתן להתקין על כמעט כל מערכת הפעלה אך כנראה שיהיה קל יותר לעבוד בסביבת Linux, גם אם לא התנסיתם עד היום בLinux, לא לפחד, הכל מתועד בצורה מיטבית ויש קהילה מאד רחבה שתתמוך בכם, הפלטפורמה כמובן דורשת שהמערכת עליה הפלטפורמה מותקנת תרוץ ותהיה מחוברת לרשת באופן קבוע ולכן raspberry pi הוא אפשרות נפלאה כיוון שצריכת החשמל שלו נמוכה וקיימת תמיכה ייעודית להתקנה עליו. כדי להתקין ולהשתמש בפלטפורמה אין צורך בידע תכנותי, אמנם מדי פעם יש צעדים מעט טכנים, אך שוב, יש כמה וכמה קהילות בארץ ובעולם שתוכלו להיעזר בהן (לינקים בסוף הפוסט).

לאחר ההתקנה, תגלו כמה קבצים בתקייה בה בחרנו להתקין, הקובץ בו מגדירים את כל השירותים נקרא configuration.yaml, למי שרואה את הסיומת הזו פעם ראשונה ולא מכיר, yaml הינו פורמט היררכי, דומה ל xml או json בבסיסו, אך להבדיל מהם, הוא משתמש בהזחות (רווחים) כדי להגדיר את ההירככיה, ארמוז לכם כבר מעכשיו שכנראה שרוב הטעויות והשגיאות שלכם יהיו קשורות לפורמט המעצבן שלא משאיר כמעט מקום לרווח אחד שלא במקום. נחזור לקובץ הקונפיגורציה, שימו לב שהשירותים שלנו הם לא לא רק מכשירים חכמים אלא גם מיקום, מזג אוויר שירותי התראות וכו׳, כאשר אתם רוצים להגדיר שירות חדש, עליכם למצוא את הנתונים שהיא דורשת, חלק דורשות IP, חלק MAC וחלק גם דורשות מפתחות שונים מהאפליקציות הייעודיות. כדי לדעת בדיוק מה ההגדרות עבור השירות שאתם רוצים, חפשו בעמוד השירותים את השירות הרצוי ותופנו לעמוד הרלוונטי עם הפרטים המלאים על הגדרת השירות.

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

light:
  - platform: yeelight
    devices:
      192.168.1.25:
        name: Living Room

אז מה אנחנו רואים בעצם? הקטגוריה היא light, כלומר אנחנו מגדירים שירות מסוג "תאורה", תחת קטגוריה זו יוגדרו כל שירותי התאורה שלכם, לא משנה מי היצרן, השורה הבאה היא הפלטפורמה, כאן היא שם היצרן, yeelight, ואז מגיעה רשימה של נורות, ניתן לראות כי לכל נורה יש 2 פרמטרים שהם חובה, כתובת ה IP של הנורה ושם, כך שיהיה קל לזהות את הנורה במידה ויש ברשותנו כמה, נעדכן את ה IP ונבצע אתחול לפלטפורמה (configuration > general > restart), אם אין לכם טעות, בעמוד הראשי של הפלטפורמה תופיע 'קוביה' חדשה עם הכותרת Lights ומתחתיה הנורה החדשה שהגדרתם עם אפשרות להדליק, לכבות, לעמעם או לקבוע תצורה אחרת (הבהוב איטי/מהיר וכו').

קוביית נורת המטבח (מימין) וקוביית התאורה עם כל הנורות המוגדרות (משמאל)

היי מאמי, את יכולה להדליק לי בבקשה את הדוד?

אז יש מלא מכשירים מוגדרים אבל הם טיפשים, צריך להדליק אותם ידנית והם לא יודעים לעשות שום דבר שלא אומרים להם.
וכאן נכנסת האוטומציה, אז למה בכלל אני מתכוון?
בלוק אוטומציה ב HomeAssistant מורכב מטריגר (trigger) ופעולות (actions), אם רוצים, אפשר גם להוסיף תנאים (conditions) שחייבים להתקיים בזמן הטריגר כדי שרצף הפעולות יבוצע. דוגמא לאוטומציה פשוטה, אם השעה בין 16:00 ל 23:00 (הטריגר) ויורד גשם (תנאי), הדלק את האור בחדר שינה בצבע כחול למשך 10 דקות. זוהי דוגמא די פשוטה, בדוגמאות אחרות יכול כל אחד מהחלקים בבלוק להיות מסובך ומורכב מכמה חלקים בעצמו.

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

automation:
  - alias: 'Rainy Day'
    trigger:
      - platform: time
        after: '16:00:00'
        before: '23:00:00'
    condition:
      - condition: state
        entity_id:sensor.precip_intensity
        state: 'rain'
    action:
      - service: light.turn_on
        entity_id: light.bedroom_light
        data:
          color_name: blue
      - service: delay
        minutes: '10'
     - service: light.turn_off
        entity_id: light.bedroom_light

אז אולי יקח טיפה זמן להבין בדיוק את הסינטקס ואיפה ומה כל שורה עושה בנפרד, אבל אני חושב באופן אישי שדי ברור מקריאה ראשונה להבין מה קורה כאן באופן כללי.
אם תחזרו למסך הראשי של הפלטפורמה תראו שנוצרה לכם קוביית 'Automation', ובה יש שורה של 'Rainy Day', זה אומר שכנראה אין לכם טעויות, אם תרצו לבדוק את האוטומציה שזה עתה יצרתם, תוכלו ללכת לעמוד ה Services (חפשו את האייקון של השלט בצד שמאל למטה), תחת Service בחרו 'automation.trigger', תחת Entity, תהיה רק אפשרות אחת בשם 'automation.rainy_day', בחרו אותה ולחצו על Call Service, מה שעשינו כעת הוא בעצם לדמות פעולה של הטריגר (במקרה שלנו, שעה מסויימת), ואם אכן יורד גשם, המנורה שלכם תאיר כעת בצבע כחול.

וככה זה יראה

לאחר שתוסיפו את כל המכשירים שלכם ואולי תגדירו גם כמה חיישנים (sensors), תקבלו בממשק הוובי משהו שדומה לדמו הבא: (לחצו כאן לצפייה במסך מלא)

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

פלטפורמות דומות

  • Calaos – התחיל כפרוייקט של חברה צרפתית והפך לפרוייקט קוד פתוח, מותאם למערכות Linux, יש לפלטפורמה אפליקציות ייעודיות למסך מגע, אנדרואיד ו iOS. רוב הפורומים של התמיכה יהיו בצרפתית.
  • Domoticz – פלטפורמה עם ספרייה די רחבה של מכשירים נתמכים וגם פרוטורולים, הממשק משתמש כתוב ב HTML5 כך שהוא רץ בתאימות גבוהה גם על מחשבים וגם על ניידים אך לא דורש משאבים רבים.
  • OpenHAB – קיצור ל Open Home Automation Bus, אחת מהפלטפורמות היותר מוכרות בקהילת הקוד הפתוח, כתובה ב Java ורצה על מרבית מערכות ההפעלה המוכרות, הרעיון המרכזי בפלטפורמה היא שהיא מתייחסת באופן זהה לכל המכשירים כך שקל יותר לנהל אותה ולפתח לה שירותים או פלאג-אינים.
  • OpenMotics – אם פתרונות אלחוטיים לא מדברים אליכם, OpenMotics מתמחה דווקא בפתרונות חוטיים, הרעיון בפלטפורמה היא יותר לשלוט במכשירים ופחות לתאם בין מכשירים מיצרנים שונים כפי שהפלטפורמות האחרות מציעות.

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

קישורים שיכולים לעזור:

אתר HomeAssistant, תוכלו למצוא שם מדריכים, דוגמאות ופורום תמיכה מאד רחב (אנגלית)

מדריך וידאו למתחילים, משלב ההתקנה ועד אוטומציה

אתר HomeAssistant בעברית, תוכלו למצוא כאן כמה דוגמאות ומדריכים נחמדים

קהילת עוזרות אישיות ובית חכם בפייסבוק (ישראלית), תוכלו לשאול כאן שאלות

קהילה נוספת של בית חכם בפייסבוק (ישראלית)

אהבתם את הפוסט? עקבו אחר עמוד הפייסבוק של הבלוג.