לאחרונה הגעתי לשתי תובנות:
1. כנראה שלא ארצה להשתמש ב vera בתור ההאב שלי. למרות שזו ההמלצה הנפוצה פה בפורום, השילוב של דיווחים רבים על תקלות (בעיות עם מתגים כפולים של פיבארו, חוסר תמיכה בצלונים ב UI, ועוד שלל תקלות, במיוחד אחרי שדרוגים), וההעדפה למערכת פתוחה גוברים.
2. אין באמת סיבה לא להתנסות עם מערכות שונות כבר עכשיו, אפילו אם אין לי יכולת לשלוט על תאורה וכו’.
לאור התובנות הללו, החלטתי להתנסות קצת עם (OpenHab (OH ו (Home Assitant (Hass, ורציתי לשתף את הפורום ברשמיי, למקרה שזה יעזור לעוד מישהו. חשוב להדגיש - לא ניסיתי לממשק שום התקן z-wave עם המערכות הללו, ויש סיכוי שכשאעשה זאת רמת התמיכה תשנה לחלוטין את המסקנות שלי. כמו-כן, אני רק בהתחלה של העבודה עם המערכות הללו, ויש סיכוי שחלק מהחסרונות שאני מציין מבוססים על בורות שלי.
התקנה:
ההתקנה של OH היא די פשוטה. ההתבססות על JAVA מוכיחה את עצמה פה, והתקנה היא פשוט פרישה של תיקיה מכווצת, והרצה. כמו-כן, כמעט של מערכת הפעלה נתמכת, אז בחרתי לעשות זאת על מערכת חלונות ישנה.
ההתקנה של HASS משמעותית יותר מסובכת. למרות שלכאורה גם Python אמורה להיות cross platform, יש הוראות שונות לכל סוג פלטפורמה, ולחלק יש שלוש (!!) אפשרויות שונות להתקנה, כשלא ברור מה היתרונות והחסרונות של כל אחת. די ברור שעבודה עם לינוקס תהיה משמעותית יותר קלה כאן, והחלטתי להרים VM עם Ubuntu לטובת העניין.
ציונים: OH מקבלת 9. HASS רק 6.
ארכיטקטורה:
קטגוריה שלכאורה לא אמורה לשנות יותר מדי למשתמש הממוצע, אבל הפערים פה די גדולים ושווים הסבר.
הארכיטקטורה של OH די מרשימה. יש הפרדה בין השכבה הפיזית לשכבה הלוגית. חפצים, או Things, הם הדברים הפיזיים שהמערכת מתממשקת איתם (המינוח פיזי קצת מטעה פה - לצורך העניין גם התממשקות עם מערכת צד שלישי תיצור חפצים), וערוצים, או Channels, הם הדרכים השונות לתקשר איתם (למשל, חפץ אחד יכול להיות כמה סוגים של חיישנים, או חיישן + מתג, וכו').
השכבה הלוגית מורכבת מפריטים, או Items, שעליהם נבנית האוטומציה. ניתן לקבץ פריטים שונים לקבוצות (Groups), בצורות די גמישות (למשל, הערך של הקבוצה הוא ממוצע הערכים של הפריטים יכולה להיות קונפיגורציה די הגיונית עבור קבוצה על חיישני טמפרטורה). קישורים, או Bindings, מחברים בין חפצים לבין ערוצים, אם כי ניתן גם ליצור חפצים שלא קשורים לכלום, ומשמשים למטרות שונות באוטומציה. עוד סוג אובייקט בשכבה הלוגית הוא Sitemap, שמאפשר ליצור מיפוי של כל הפריטים בצורה היררכית, לבצע טרנספורמציות על הערכים, וכו'.
ההפרדה הזו בין השכבות, מאפשרת למי שרוצה לבנות מערכת שלמה, עם יכולת לבדוק אותה, מבלי להתחבר להתקן פיזי אחד. בעתיד, אפשר לבנות את השכבה הפיזית, ולחבר אותה לפריטים שכבר קיימים, וכל האוטומציות יעבדו.
עוד אלמנט חיובי בארכיטקטורה של OH היא תוספי צד שלישי, שניתנים בקלות להתקנה דרך הממשק.
הארכיטקטורה של HASS שונה, ולא כוללת הפרדה בין שכבות. האובייקט המרכזי הוא ישות, או Entity, ויש המון סוגים שונים של ישויות (למשל חיישן, מתג, נגן מדיה, אבל גם דברים אחרים במערכת, כמו האוטומציות והתסריטים הם ישויות).
חוסר ההפרדה אומר שהתקנים נכנסים ישר למערכת איך שהם מזוהים. זה נשמע כמו דבר חיובי, אבל נראה לי שהחסרונות עולים על היתרונות. חשבו למשל על אוטומציה שבנויה על נוכחות של מישהו בבית. היה והתקן נוסף התגלה (למשל אייפד שנמצא תמיד בבית), המערכת עלולה לחשוב שיש מישהו בבית גם כשהוא ריק, עד שנסמן באופן מפורש להתעלם מההתקן הזה. בסופו של דבר, הדרך להתגבר על כך היא לסמלץ שכבה לוגית, ע"י יצירת קבוצות (למשל קבוצת ההתקנים שנחשבים "אנשים" בבית).
עוד בעיית ארכיקטטורה עם HASS, היא שכמעט של שינוי הגדרות דורש כיבוי והפעלה של המערכת.
ציונים: OH שוב עם 9, HASS שוב עם 6.
הגדרת המערכת:
מתחילים להגיע לבשר.
כאן יש היפוך מוחלט של חווית ההתקנה. החוויה עם OH די מתסכלת - ניתן להגדיר פריטים או בממשק הגרפי (עוד בהמשך על הממשק של OH) או בקבצים, אך מה שמוגדר בממשק לא מופיע בקבצים ולהיפך. כל מיני הגדרות לא לגמרי ברורות ולא מתועדות היטב, ויש את בלאגן הממשקים שעוד ידובר עליו.
בפינה הנגדית, HASS הרבה יותר פשוט. רוב ההגדרות נעשות בקובץ YAML אחד (ניתן לשבור אותו למספר קבצים וספריות בכל מיני דרכים), ורוב ההגדרות מתנהגות באופן הצפוי. מצד שני, ה UI לא מאפשר הרבה מהבחינה הזאת, והמעט שכן אפשר להגדיר לא עבד יותר מדי טוב.
ציונים: OH עם 5, HASS עם 8.
ממשק:
בסה"כ שתי המערכות יחסית חלשות, אבל כאן OH מתגלה במערומיו. יש יותר מדי סוגי ממשקים שונים, ואף אחד מהם לא מוצלח במיוחד.
יש את Paper UI שהוא הממשק החדש, ועושה כמעט הכל (שוב, בלי חיבור להגדרות הטקסטואליות), אבל לא תומך ב Sitemaps, ומסיבה מסוימת גם לא מראה את כל הערוצים. ה Basic UI, לעומתו, כן תומך ב Sitemaps אבל לא יכול לעשות שום דבר אחר. השפה של Sitemaps די מוגבלת, וכל דבר שלא נופל לסוגים הקבועים דורש טיפול מיוחד (למשל, נסיון לשלוט בפונקציות השלט של קודי - התוצאה היא drop down עם כל הפקודות). בנוסף לאלו יש גם את HABmin - נראה שהוא היחיד שעושה הכל, אבל מאוד לא אינטואיטיבי, את HABPanel שמיועד לטאבלטים, אבל במקום לעבוד עם Sitemaps עובד עם הגדרות משלו, שגם הן לא אינטואיטיביות. לבסוף, יש גם את Eclipse SmartHome Designer שאמור להיות IDE לעריכת קבצי ההגדרות, הוא בכלל מותקן בנפרד.
העניינים אצל HASS הרבה יותר פשוטים, יש UI אחד (יש גם את HADashboard שהוא תוסף חיצוני ועוד לא התנסיתי איתו), שמשמש כממשק תפעול ואדמינסטרציה בסיסית. גם הוא די מוגבל, אבל לפחות הוא אחד והוא אינטואיטיבי. יש גם טאץ' נחמד של "כלי פיתוח" שמאפשרים לקרוא (ולשנות, אם כי מבלי להשפיע על "העולם") את המצב של כל ישות, להפעיל כל שירות, לבחון היסטוריה וכו'. כמו-כן, מכיוון שגם אוטומציות ותסריטים הם ישויות, ניתן להדליק ולכבות אותם, לראות את המצב שלהם, וכו'.
אחת ההתנהגויות המוזרות של הממשק נחשפת כשמגדירים מחדש את העמוד הראשי. בשלב הזה, העמוד הזה מפסיק להראות ישויות חדשות באופן אוטומטי, ואפשר לא לשים לב אליהן. מצד שני, ללא הגדרה מחדש לא ניתן להחביא ממנו כלום, מה שהופך אותו לבלאגן שמכיל את הכל. הפתרון היחיד שמצאתי הוא להשאיר אותו כמו שהוא, ולהחליט להשתמש בעמוד אחר כעמוד הראשי.
ציונים: מביכים. OH עם 2, HASS עם 5.
חשוב לציין שהממשק פחות חשוב לי. רוב העבודה השוטפת צריכה להיות עם מתגים בקיר, אוטומציות, ויומנים (ראו בהמשך). בכל פעם שמישהו בבית צריך להפעיל את ה UI בשביל לעשות משהו זה סימן לא טוב.
אינטגרציות:
ספויילר - זאת הקטגוריה שהטתה מבחינתי את הכף לטובת HASS. יש לו אינטגרציה עם *הכל*. מעבר לכך, הוא עושה זאת בצורה פשוטה וחלקה. דוגמה נהדרת היא ההתממשקות עם google calendar - בתוך כמה דקות יש לי כבר הדלקה וכיבוי אוטומטים של הדוד לפי פגישות ביומן (מכיוון שעוד אין לי שום דבר ששולט בדוד, יש רק התראות שהדוד "נדלק" ו"כבה), חיישנים שנדלקים בחגים וכו'. אמנם גם ל OH יש התממשקות עם יומן, אבל היא מסורבלת עד בלתי שמישה כיוון שהיא דורשת טקסט מסוים וקשיח בכל פגישה, ולפי התיעוד אף מפסיקה לעבוד כשיש פגישות שחורגות מהמבנה. אם המטרה היא שבני הבית יצרו פגישה עם כותרת "דוד", או התממשקות עם יומנים קיימים של חגים, אין ממש דרך טובה לעשות זאת ב OH.
מעבר ליומן, HASS יודע לדבר עם כל ציוד A/V שברשותי ועוד ועוד. יש לי אפילו חיישן שמודד כמה זמן יקח לי להגיע לעבודה, דרך אינטרגציה עם Google Maps. אולי ישמש אותי להפעיל שעון מעורר מוקדם יותר (או מאוחר יותר
האינטגרציה היחידה שלא הצלחתי להפעיל היא עם Foscam (ניסיתי גם דרך ONVIF ללא הצלחה), אבל מכיוון שהיא מוגדרת אצלי ב Synology ו HASS יודע לדבר גם איתו, הכל עובד.
ציונים: HASS מקבל 9.5, OH מקבל 6.
אוטומציה:
לשתי המערכות יש Domain Specific Language להגדרת האוטומציה, אבל הן שונות מאוד. זאת של HASS יחסית פשוטה - התחביר מבוסס YAML, וכל אוטומציה יש שלושה חלקים - טריגר, תנאי, ופעולה. תחביר מבוסס YAML לא מאפשר גמישות יתרה, אבל בסה"כ זה לא מרגיש יותר מדי מוגבל. כשרוצים לעשות דברים מסובכים יותר אפשר לכתוב פעולות ב Python או ב Shell Script. יש גם תוסף פופולרי בשם AppDaemon שמאפשר לכתוב "אפליקציות" בפייתון שמאזינות לאירועים במערכת ובכך לקבל גמישות מלאה. מעבר לאוטומציות יש גם תסריטים וסצינות, שהם, בהפשטה, דרכים להפריד בין התוצאה, או הפעולה, של אוטומציה לבין האוטומציה עצמה. זה מאפשר לכמה אוטומציות שונות לבצע אותן פעולות (עם תמיכה במשתנים, כך שהפעולות לא צריכות להיות זהות לחלוטין), וגם מאפשר להפעיל מה UI (כיוון שתסריטים וסצינות הם גם ישויות) בלי קשר לתנאים האוטומטים.
השפה של OH מבוססת Java ויש לה המון כח. בניגוד ל HASS, כמעט ולא שומעים על משהו שהוא בלתי אפשרי, או דורש משהו חיצוני. מצד שני, השפה לא הכי אינטואיטיבית, ואין לה תמיכה טובה בעורכי טקסט כמו Sublime. אחד הדברים היפים באוטומציה ב OH הוא הפריטים הוירטואלים והתמיכה הנהדרת בקבוצות. נניח שיש לכם אוסף של חיישני תנועה ואוסף של מודולי תאורה, שלכל חיישן יש מודול תאורה מתאים. בעזרת שימוש חכם בשמות הפריטים שקשורים אליהם, ובקבוצות, תוכלו לכתוב חוק אחד שיפעיל לדקה את התאורה המתאימה לחיישן שנדלק. ב HASS, לעומת זאת, עוד לא מצאתי דרך לעשות זאת בחוק אחד (מבלי להשתמש בתוספים/קוד פייתון וכו'). מכיוון שהשפה מורכבת יותר, התפתחה גם קהילה של Design Patterns, שמכילה הרבה דברים יפים.
אני חייב להודות, שעל אף ש OH מנצח פה בגדול מבחינת גמישות, התמיכה בעורכי טקסט נותנת ל HASS נקודות זכות רבות שמצמצמות חלק גדול מהפער.
הציונים: OH עם 8, HASS עם 7.
תיעוד:
שניהם טעוני שיפור. ל OH יש את יתרון הארכיטקטורה וקהילת ה design patterns, מה שמאפשר להרבה דברים בגזרת האוטומציה לעבוד בלי הפתעות. מצד שני, התיעוד של HASS הרבה יותר טוב.
ציונים: OH עם 6, HASS עם 8.
קהילה:
לשתי המערכות קהילות חיות ופורומים ערים. נראה ש HASS מתוחזק יותר, עם גרסאות תכופות (אחת לחודש בערך). יש שיראו בזה יתרון, ויש שיראו בזה חסרון. מכיוון שנראה שגם רגרסיות מתוקנות מהר, אני רואה בזה יתרון.
ציונים: OH עם 8, HASS עם 9.
סיכום:
בסה"כ שתי המערכות טובות אבל טעונות שיפור. בסופו של דבר, כל אחד יכול להחליט אילו משקולות לתת לכל קטגוריה. עם סט המשקולות שלי, HASS יצא מנצח. כפי שציינתי, התמיכה ב z-wave יכולה לשנות הכל אם היא לא מספיק טובה. מצד שני, יש לו אינטגרציה גם עם VERA, אז יש תוכנית גיבוי.






