מערכת ניהול בית חכם - Home Assistant

שרת ביתי

כבר לפני הרבה זמן ראיתי את המערכות לאוטומציה וניהול של בית חכם, אבל לא התחלתי להשתמש בהן מחוסר זמן כמובן, אבל גם בגלל שלא היה לי "שרת ביתי", כלומר מחשב שמוקצה למטרה של הרצת שירותים, וגם אין לי ממש בית חכם, עם IoT וכד'. הסתפקתי בcron job על המחשב שלי, שתמיד הפתיעה אותי מחדש, אם במקרה השתמשתי במחשב באותו זמן שבו הJob הופעל.

עכשיו, הודות לאחי, יש לי מחשב קטן (box) עם חומרה חלשה, שהתקנתי עליו Ubuntu Server & Docker, ואני יכול להשתמש בו כשרת ביתי.

אחרי שהתקנתי שרת מדיה (Jellyfin) ןסקריפט שמאפשר לי לייבא קבצים בעזרת Telegram (סקריפט שעזרתי לכתוב וליצור ממנו Docker), התפניתי להתקין מערכת לניהול בית חכם.

בחירת מערכת

ישנם כמה מערכות, אבל על Home Assistant שמעתי מזמן, וגם נראה שברוב המדדים, או אולי רק בגודל התיעוד והקהילה (שזה מדד מאוד חשוב במקרה הזה, כי בלי קהילה קשה להתאים את המערכת לצרכים אישיים) זאת המערכת המובילה, ולכן אני מנסה אותה ראשונה.

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

  1. האם המשימה התבצעה?
  2. האם היה קל לבצע את המשימה?
  3. האם המערכת מותאמת למשימה, או שנדרשתי לעקם כל מיני דברים כדי שזה יעבוד
    (כדאי לשים לב, אני חושש שאולי אני לוקח מערכת בית חכם ומשתמש בה כמערכת אוטומציה, ולכן אני מוכרח לבדוק האם המערכת מותאמת לדרישות שלי)

המשימה

אז המשימה היא להפעיל רדיו, והיא כוללת את הפרטים הבאים:

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

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

התקנה

את הנסיונות אני עושה על המחשב שלי, משחק קצת עם המערכת וכו', ואם אני רואה שאני מוכן, אני לוקח את התוכן הרלוונטי (ההגדרות וכד') לשרת הביתי. כרגע אני עושה את זה בעזרת Git repository שמכיל את הdocker-compose.yml וחבריו.

(אם אתם לא בעניינים בהקשר של Docker, נסו לקרוא קצת באינטרנט או במה שכתבתי כאן)

אז הוספתי לdocker-compose.yml את האלמנט הבא, על פי התיעוד של Home Assistant:

  homeassistant:
    container_name: home-assistant
    image: homeassistant/home-assistant:stable
    network_mode: host
    volumes:
      - ./home-assistant:/config
    env_file: shared.env
    restart: always
    network_mode: host

כדאי לשים לב שהvolume ממופה למיקום של הdocker-compose.yml, כלומר בתוך הrepository. המטרה היא להוסיף לgit את קבצי ההגדרות הרלוונטיים, בגלל שמערכת כמו Home Assistant דורשת המון הגדרות והתאמות אישיות, וכדאי להשתמש בSource Control בשבילם. הבעיה היא שיש יותר מידי קבצים, אני לא יודע ממה צריך להתעלם וממה לא. נגלה בהמשך אולי.

הרצה באמצעות docker-composr run homeassistant (אני לא משתמש בdocker-compose up כי אני מעוניין להריץ רק את homeassistant).

כעת Home Assistant זמינה בפורט 8123.

התחלת עבודה (Onboarding)

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

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

בצר לי, פניתי לראות סרטון ביוטיוב. אני לא אוהב בדרך כלל לעשות את זה, אבל נראה שלא הייתה ברירה. ידעתי שכל ההגדרות רשומות בקובץ שנקרא configuration.yaml, והבנתי מהסרטון שהרמה הראשונה של הקובץ מגדירה את הComponents-Integrations (מומלץ להשתמש במילון המושגים), והם בעצם הרכיבים שהמערכת מתקשרת איתם.

הפעלת תחנת רדיו

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