שליטה על מזגן IR עם Home Assistant ו-Broadlink
יש לכם מזגן הנשלט באמצעות שלט Infrared?
יש לכם Broadlink או כל מוצר אחר שיודע ללמוד ולחזור על פקטות IR?
הכי חשוב... כבר התקנתם את מערכת ניהול הבית החכם Home Assistant?
אם עניתם כן, כן וכן...
אתם במקום הנכון! במדריך הזה אני אסביר צעד אחר צעד איך "מעתיקים" את המסך הקטן והחמוד משלט המזגן לתוך מסך ה-Home Assistant שלכם.
פרטי המדריך
תיאור המדריך: מדריך לבניית פנל שליטה למזגן הנשלט בפקודות IR.
התקנות נתמכות: כל התקנות Home Assistant התומכות בפלטפורמת Broadlink.
חומרה בשימוש: Broadlink RM Pro/Mini עבור חזרה על פקטות IR.
כלים נצרכים: שלט המזגן המקורי
ידע בתוכנה: ללא
רמת קושי: בינונית
קצת רקע
אני מתאר לעצמי שאני לא צריך לציין זאת, אבל אני אעשה זאת בכל מקרה:
פקטות Infrared מצריכות קו ראייה מול היעד שלהם, אנא הקפידו להציב את מכשיר ה-Broadlink שלכם בקו ראייה מול עינית ה-IR של המזגן.
אני חושב שחשוב להבין איך עובד שלט ה-IR המקורי של המזגן שלנו לפני שנוכל לתכנן ולבנות את מסך דומה ב-Home Assistant ולכן אני ארחיב קצת על הנושא. אם אתם כבר בקיאים ומכירים את הנושא, אתם מוזמנים לדלג על לסעיף הבא.
נתחיל קודם בהבדל בין דגמי המזגנים עם השלט שכולל מסך לבין דגמי המזגנים עם שלט ללא מסך. ההבדל הוא מאוד פשוט:
בדגמים ללא המסך, שמירת ההגדרות מתבצעת במזגן עצמו, השלט שולח פקודות פשוטות כגון On, Off, Temperature Up וכדומה.
בדגמים עם המסך, שמירת ההגדרות מתבצעת בשלט, בכל פקודה הנשלחת מהשלט למזגן מועברות כל ההגדרות הרלוונטיות לפקודה המתבקשת.
אני אתמקד כמובן בדגמים הכוללים שלט עם מסך.
על מנת להמחיש את אופן שליחת הפקודות מהשלט, נניח שהמזגן שלנו כבוי והמסך שלנו מראה:
מצב - חימום
מאוורר - נמוך
מעלות - 26
כאשר נלחץ על לחצן ה-On, השלט ישלח למזגן פקטת IR שבנוייה למעשה מקוד ייעודי עבור "מצב:חימום-מאוורר:נמוך-מעלות:26".
במצב הזה, אם נלחץ על לחצן הפלוס (+) על מנת לעלות את הטמפרטורה ל-27, השלט ישלח למזגן פקטת IR שבנויה מ-"מצב:חימום-מאוורר:נמוך-מעלות:27".
במצב הזה, אם נשנה את מצב המזגן לקירור, השלט ישלח למזגן פקטת IR שבנויה מ-"מצב:קירור-מאוורר:נמוך-מעלות:27".
(הדוגמא האחרונה לא בדיוק נכונה מאחר ולרוב השלטים יש סט של הגדרות נפרד לכל מצב. הדוגמא נועדה להמחשה התרחיש בלבד).
אם כך, נשאלת השאלה, מה שולח השלט למזגן על מנת לכבות אותו?
זו למעשה שאלה מכשילה. מאחר וכל פקטה הנשלחת מהשלט מכילה את כל ההגדרות הרלוונטיות, מכאן שהפקטה עבור Off זהה לכל המצבים.
בואו נעשה קצת חישובים. יש לי מזגן בסלון (שבו אני אשתמש עבור הדוגמאות במדריך הזה), המזגן שלי מאפשר:
2 מצבים: COOL/HEAT
4 רמות מאוורר: LOW/MED/HIGH/AUTO
17 מעלות אפשרויות: 16-32
החישוב פשוט, 2 מצבים * 4 רמות אוורור * 17 מעלות אפשריות + 1 פקודת כיבוי = 137 פקטות שונות.
אתם כמובן לא חייבים להקליט את כל הפקטות כמוני. אתם יכולים לקבל החלטה עם עצמכם שלדוגמא חוץ מ-LOW עבור המאוורר, אתם לא מתכוונים להשתמש ברמות האחרות.
במקרה כזה אתם תצמצמו את כמות הפקטות הנדרשות ל-35, מאחר ואתם תאלצו ללמוד 17 פקטות לכל מצב + פקטה אחת ל-Off.
באותה מידה, אתם גם יכולים להחליט שהמעלות שמספיקות לכם הן 20-30 ולצמצם משמעותית את כמות הפקטות הנדרשת ללימוד.
קווים מנחים
מבחינת ניהול קבצי הקונפיגורציה של Home Assistant, אני דוגל בשיטת "הפרד ומשול". כלומר, הקובץ configuration.yaml שלי לא מכיל הגדרות שהוא לא חייב להכיל.
עבור רוב ה-Domains הגדרתי include לקבצי yaml נוספים על מנת לאפשר לי לנהל את ההגדרות שלי בצורה פשוטה ונקודתית יותר.
לצורך המחשה ובהתאם למדריך, קובץ ה-configuration.yaml שלי מכיל את ההגדרות הבאות:
במסגרת המדריך, כשארצה לדוגמא לעדכן input_select, אז בהתאם להגדרות אלו, אני אעשה זאת בקובץ input_select.yaml.
זה בסדר אם אתם לא עובדים כמוני, רק שימו לב שבמידה ואתם מעתיקים מהמדריך לקובץ configuration.yaml ולא לקובץ המוגדר כ-included, אתם תצטרכו להתחשב ב-indents ולהקפיד על רווחים נכונים על מנת שהקובץ יהיה קריא עבור המערכת. אתם יכולים לקרוא על כך כאן.
דבר נוסף שאני רוצה לציין, אני אוהב לרכז את שמות היישויות והאייקונים המקושרים אליהן במקום אחד, תחת הקומפוננטה customize. או כמו שאתם רואים בהגדרות שלי, בקובץ customize_ent.yaml.
לכן אם תשימו לב, היישויות שאני אקים ב-Home Assistant במסגרת המדריך, לרוב יקבלו שמות גנרים שמצביעים על התפקוד שלהם ולא שמות שהייתם רוצים שיוצגו במסך Home Asisstant, בסוף המדריך אני ארכז ואעדכן את השמות והאייקונים בקובץ ה-customize.
אתם כמובן לא חייבים לפעול כמוני, אתם יכולים להגדיר שמות כרצונכם ברמת היישות עצמה.
טיפים לעבודה יעילה
טיפ ראשון: בידקו את השינויים שביצעתם לפני שתאתחלו את המערכת
סינטקס שגוי בקבצי ה-yaml עלול לגרום למערכת לא לעלות, לכן עבור כל שינוי שביצעתם בקבצי הקונפיגורציה, לאחר השמירה ולפני האתחול, אני ממליץ לבצע בדיקה של הקונפיגורציה ולאתחל רק במידה והבדיקה עברה בהצלחה.
ב-Home Assistant, כנסו לתפריט ה-Configuration:
בחרו ב-General:
לחצו על Check Config:
בהתאם לגודל קבצי הקונפיגורציה שלכם, תהליך הבדיקה יכול להתארך מעט. בד"כ זה לא יותר מדקה.
בסיום, אחד משני דברים יכול לקרות. או שהשינוי שביצעתם תקין ותקבלו חיווי Valid:
או שהשינוי שביצעתם אינו תקין ותקבלו חיווי Configuration invalid בצירוף של קובץ לוג המתאר את תהליך בדיקת הקונפיגורציה. חפשו בלוג את רמת השגיאה ERROR, וע"פ המלל שלה (לרוב היא גם תכוון אתכם למיקום המדויק של השגיאה) בצעו תיקון לקבצי הקונפיגורציה וחזרו על הבדיקה:
טיפ שני: לוגים, לוגים ולוגים
אני חושב שאחת הדרכים הטובות יותר להכיר את Home Assistant ולהבין איך הפלטפורמות השונות מוגדרות ואיך השירותים השונים עובדים היא פלטפורמת ה-Logger.
פלטפורמת ה-Logger מאפשרת לנו לקבוע רמת לוגים אחידה למערכת ו/או רמת לוגים פרטנית לקומפוננטה מסויימת.
רמת הלוגים מחולקת לשמונה רמות בסדר הבא:
critical
fatal
error
warning
warn
info
debug
notset
כל רמת לוגים, תגרור ביצוע רישום של לוגים אשר הוגדרו ע"י המפתח עבור הרמה הנבחרת וכל הרמות הגבוהות ממנה.
להמחשה, רמת ברירת המחדל של ה-Logger ב-Home Assistant היא warning, זה אומר שרק רישומים שהוגדרו ע"י המפתח לרמות warning, error, fatal, critical יופיעו בלוגים.
לרוב, ארבעת הרמות הללו מספקות מספיק מידע על המתרחש במערכת ביומיום.
אבל... כאשר אנו מבצעים שינויים שנחשבים בעינינו כ"גדולים" או שדורשים מאיתנו התעסקות עם רכיבים שמעולם לא התעסקנו עימם, אני ממליץ לשנות את רמת הלוגים לרמה נמוכה יותר שתציג מידע מפורט יותר בלוגים.
בדוגמא הבאה, הגדרתי רמת לוגים נמוכה יותר (debug) עבור הקומפוננטות שאני מתכוון להשתמש בהם במדריך הזה. רמה זו תאפשר לי לראות הרבה יותר פרטים בנוגע למתרחש במערכת ותקל עלי באיתור תקלות. ניתן לראות גם שהקפדתי להשאיר את הלוגים עבור שאר הקומפוננטות ברמת warning. הסיבה לכך, לוגים מפורטים יכולים לעזור לי באיתור תקלות, אך יותר מידי לוגים עם יותר מידי פירוט עלולים להקשות עלי למצוא את הנקודה הספציפית שגורמת לתקלה.
העתיקו את ההגדרות הבאות לקובץ configuration.yaml, בצעו בדיקת קונפיגורציה ואתחלו את המערכת במידה והבדיקה עברה בהצלחה:
שימו לב, לטובת ביצועי מערכת וניקיון הלוגים, אנא הקפידו לבטל את שינוי רמת הלוגים ברגע שתסיימו.
לימוד פקטות ה-IR
הגענו לחלק ה"מייגע", לימוד פקטות ה-IR. כמו שאמרתי, במקרה שלי, אני צריך ללמוד 137 פקטות... זה הרבה, אבל פשוט.
קודם כל חושב לי לציין שהמדריך הזה נועד לשימוש עם המוצרים Broadlink RM Pro או Broadlink RM Mini, במידה ואתם משתמשים במוצר אחר לחזרה על פקטות IR, החלק הזה אולי יהיה שונה אצלכם, אבל אני מאמין שהקונספט עצמו די דומה.
יש מספר דרכים ללמוד את הפקטות, הדרך הראשונה והמהירה ביותר היא להשתמש בסקריפטים של NightRang3r.
בגדול, הסקריפטים האלו (שנכתבו ב-python 2.7) משתמשים בקבצי הקונפיגורציה של Broadlink בשביל לחלץ את פקטות ה-IR לקובץ טקסט. יש אפילו גרסא מעודכנת של הסקריפטים האלו שבונה בעצמה את קבצי ה-yaml על בסיס המידע שחולץ ע"י הסקריפט.
כמובן שהדרך הזו רלוונטית רק במידה וכבר לימדתם את מכשיר ה-Broadlink את פקטות ה-IR, במידה ולא, אז לא באמת יהיה לסקריפט מידע לשלוף.
במידה ותשתמשו בסקריפטים האלו, שימו לב שתצטרכו לבצע התקנה של python 2.7 על המחשב שלכם וכמובן שתצטרכו מכשיר אנדרואיד שתוכלו לשלוף ממנו את קבצי הקונפיגורציה.
הסקריפטים מספקים דרך לחילוץ הפקטות עבור מכשירי Android שבוצע להם root וגם לכאלו שלא.
חשוב לי לציין, הרבה מפתחים מנסים כיום להתגבר על התהליך הזה באמצעות כתיבת קוד שייצר את הפקטות באופן אוטומטי. אני לא אכסה את הנושא הזה במדריך. במידה ואני אתקל בפיתוח כזה שלדעתי אכן מכסה את כל או רוב סוגי המזגנים, אני אכתוב מדריך נוסף. המדריך הזה מכסה את נושא לימוד פקטות ה-IR באמצעות Home Assistant.
לימוד פקטות ה-IR באמצעות Home Assistant הוא די פשוט. ארוך, אבל פשוט.
קודם כל, אנחנו צריכים להגדיר ל-Home Assistant את ה-Domain עבור Broadlink. אם אתם כבר עובדים עם Home Assistant ו-Broadlink, אתם יכולים לדלג לשלב השלישי.
שלב ראשון - הגדרת מכשירי Broadlink
בקובץ switch.yaml עדכנו את ההגדרה הבאה בהתאם לסוג המכשיר שלכם (Mini/Pro), שימו לב לעדכון כתובת ה-IP וה-MAC של המכשיר שלכם (בדוגמא הזנתי נתונים פיקטיביים):
שלב שני - בדיקת קונפיגורציה ואתחול המערכת
בצעו בדיקה לקונפיגורציה שלכם ואתחלו את המערכת על מנת שתכיר את הדומיין החדש עבור Broadlink.
שלב שלישי - הכנת תהליך הלימוד ב-Home Assistant
כנסו ל-Services Tool ב-Home Assistant:
במסך שתקבלו בחרו:
Domain: Broadlink
Service: learn_command_123_4_5_678
שימו לב שכתובת ה-IP המשורשרת בשם ה-Service היא הכתובת של המכשיר שלכם, במידה ויש לכם יותר ממכשיר אחד, אתם תראו פקודה דומה עם כתובת שונה לכל מכשיר.
** שימו לב שבמקביל ל-learn_command, קיים גם שירות ייעודי למכשיר בשם send_packet, אנחנו נשתמש בו בשלבים הבאים.
שלב רביעי - הכנת תהליך הלימוד בשלט המזגן
הכינו את השלט שלכם למצב לימוד:
וודאו שהשלט במצב OFF (אתם יכולים לוודא זאת ע"י כיוונו למזגן והפעלתו/כיבויו)
כוונו את המצב אותו אתם רוצים ללמוד (COOL/HEAT) בדוגמא בחרתי COOL
כוונו את רמת המאוורר שתרצו ללמוד (LOW/MED/HIGH/AUTO) בדוגמא בחרתי LOW
כוונו את הטמפרטורה הנמוכה ביותר או הגבוהה ביותר שתרצו ללמוד (חשוב מאוד להקפיד בשלב הזה על הגבוהה או הנמוכה ביותר, זה יקצר לכם את תהליך הלימוד) בדוגמא בחרתי 16.
שלב חמישי - לימוד פקטת IR
עכשיו, המטרה שלנו היא להכניס את מכשיר ה-Broadlink שלנו למצב לימוד, בזמן המוגבל שלו במצב לימוד אנחנו נכוון את השלט למכשיר ה-Broadlink ונלחץ על הכפתור אשר יישגר את פקטת ה-IR הנכונה למכשיר שלנו, המכשיר שלנו יחזיר את הפקטה ל-Home Assistant ותוכלו לראות אותה כ-Notification במסך הראשי.
בכדי להכניס את המכשיר שלנו למצב לימוד, חזרו ל-Home Assistant ולחצו על CALL SERVICE, שימו לב שהעברת מכשיר ה-Broadlink שלנו למצב לימוד תדליק אור כתום במכשיר שייעלם בסיום הלימוד:
כוונו את שלט המזגן למכשיר ה-Broadlink ולחצו על כפתור ההפעלה:
חזרו ל-Home Assistant, במסך ה-Overview ואתם תראו Notification עם פקטת ה-IR:
זוהי פקטת IR שמייצגת (ע"פ הדוגמא שלי):
"mode:COOL-fanLOW-temperature:16".
העתיקו ושמרו את הפקטה שהתקבלה לפני שתמשיכו לשלב הבא.
שימו לב, אם מסך הבית שלכם עמוס (כמו המסך שלי) אתם תראו פקטה חלקית, סמנו אותה ותעתיקו לקובץ טקסט, הפקטה תועתק במלואה.
לאחר שהעתקתם אותה, לחצו על DISMISS לביטול ה-Notification.
לצורך המחשה, להלן פקטת ה-IR מהמזגן שלי עבור הדוגמא בתמונה, פקטות בסגנון שאתם מחפשים ייראו לרוב כך:
JgDYAAABK5QTOBI4ExMTFBQTFRQTOBI4FDcTOBQ4EhQUFBMTFDgTFBMVFDgSOBQTFRMUOBI4EzgTFBQ3ExQUFBQUExQUFBMUFBQTFBQTFBQTFBQ3EjgUFBUTFBQTFBQUExQUExQUExQUFBMUFBQSFBQTFDgSFBIVEhQUFBQUExQUFBMUFBMUFBQTFBQTFBQUExQUExQUExQUFBMUFBQTFBQTFDgSFBMUExQUExMUFBQSFBQUEhQUFBM4ExQUExQUExQSFBMUExQTOBM4FBQUExQ4ExMTFBQ3GAANBQ==
שלב שישי - לימוד הפקטה הבאה
חזרו על אותו התהליך (החל מהשלב השלישי) לכל קומבינציה של מצבים שתרצו ללמוד, הטריק הוא (ובגלל זה ביקשתי מכם לבחור את הטמפרטורה הגבוהה או הנמוכה ביותר), אתם לא חייבים לחזור על כל התהליך, מספיק שבמצב הנוכחי תלחצו על ה-'+' (או '-' אם בחרתם בטמפרטורה הגבוהה ביותר) והשלט ישדר את הפקטה המתאימה לפקודה הבאה שלמעשה תהיה:
"mode:COOL-fanLOW-temperature:17".
זה נשמע ארוך ומסורבל, אבל אני מבטיח לכם, אחרי 4-5 סבבים, אתם תיכנסו למין לולאה קבועה של פעולות וזה יילך יותר מהר ממה שאתם חושבים...
אחרי שתסיימו את לימוד כל פקטות ה-IR הרצויות, תוכלו לעבור לחלק המעניין, בניית הפנל ב-Home Assistant.
בניית הפנל ב-Home Assistant
בניית הפנל ב-Home Assistant אינה מורכבת במיוחד, ראשית בואו נבין אילו קומפוננטות יתאימו לנו עבור בקרי המזגן השונים.
שימו לב, בתהליך הגדרת הקומפוננטות למזגן, אני משתמש הרבה בראשי התיבות 'lr' שפירושם Living Room, זאת מאחר והמזגן עימו ביצעתי את המדריך הוא המזגן בסלון. אתם יכולים להחליף את השמות לכל דבר שייראה נכון בעיניכם ויאפשר לכם לזהות את הרכיב מול רכיבים אחרים דומים (למקרה שתהיו כמוני ותגדירו פנל לכל מזגן בבית).
בקר ההפעלה
בקר ההפעלה מצריך מאיתנו לשלוט בהפעלת המזגן, On/Off. עבור בקר זה אנו נשתמש בקומפוננטה מסוג input_boolean.
בקובץ input_boolean.yaml, הוסיפו את ההגדרה הבאה:
בקר המאוורר
בקר המאוורר מצריך מאיתנו לשלוט ברמת המאוורר של המזגן, LOW/MED/HIGH/AUTO. עבור בקר זה אנחנו נשתמש בקומפוננטה מסוג input_select.
בקובץ input_select.yaml, הוסיפו את ההגדרה הבאה:
בקר המצב
בקר המצב מצריך מאיתנו לשלוט במצב המזגן, COOL/HEAT. עבור בקר זה אנו נשתמש שוב בקומפוננטה מסוג input_select.
בקובץ input_select.yaml, הוסיפו את ההגדרה הבאה:
בקר הטמפרטורה
בקר הטמפרטורה בנוי למעשה משלוש יישויות שונות מבוססת הקומפוננטות input_text, sensor ו-cover.
היישות הראשונה שניצור היא קומפוננטה מסוג input_text שלמעשה תכיל את הטמפרטורה.
בקובץ input_text.yaml, הוסיפו את ההגדרה הבאה:
היישות השנייה שניצור היא קומפוננטה מסוג sensor עבור פלטפורמת template שתאפשר לנו להציג את הטמפרטורה הנבחרת.
בקובץ sensors.yaml, הוסיפו את ההגדרה הבאה:
** שימו לב, במידה ובחרתם בעצמכם שם לקומפוננטת ה-input_text, עדכנו את השם בהתאם בהגדרת ה-value_template.
היישות הבאה שניצור היא קומפוננטה מסוג cover עבור פלטפורמת template שתאפשר לנו לקבוע את הטמפרטורה בצורה נוחה.
בקובץ covers.yaml, הוסיפו את ההגדרה הבאה:
** שימו לב, במידה ובחרתם בעצמכם שם לקומפוננטת ה-sensor, עדכנו את השם בהתאם בהגדרת ה-position_template.
** שימו לב, במידה ובחרתם בעצמכם שם לקומפננטת ה-input_text, עדכנו את השם בהתאם בהגדרת ה-entity_id וה-value תחת הגדרת ה-open_cover וה-close_cover.
** שימו לב, בהגדרת ה-value תחת ה-open_cover שלמעשה תייצג את ה-'+' משלט המזגן, הגדרתי טמפרטורה מקסימאלית של 32, אנא עדכנו את הטפרטורה שלכם בהתאם.
** שימו לב, בהגדרת ה-value תחת ה-close_cover שלמעשה תייצג את ה-'-' משלט המזגן, הגדרתי טמפרטורה מינימאלית של 16, אנא עדכנו את הטפרטורה שלכם בהתאם.
קיבוץ הבקרים לקבוצה
אחרי שיצרנו את כל הבקרים הרצויים, נאחד אותם לקבוצה אחת שלמעשה תייצג את הפנל ב-Home Assistant.
בקובץ groups.yaml, הוסיפו את ההגדרה הבאה:
** שימו לב, במידה ובחרתם בעצמכם שם לכל אחת מהקומפוננטות שיצרתם, עדכנו זאת בהתאם.
שמות ואייקונים
בשלב הזה, סיימנו עם הגדרות כל הישויות שלנו. הגיע הזמן להעניק להם שמות ואייקונים שיישפרו את מראה הפנל שלנו.
בקובץ customize_ent.yaml, הוסיפו את ההגדרה הבאה, אתם כמובן יכולים לשנות את השמות והאייקונים למה שתרצו:
שייכו את ה-Group החדש ל-View המתאים ב-Home Assistat או דלגו על זה במידה ואתם עובדים עם View ברירת המחדל.
בצעו בדיקת קונפיוגרציה, אתחול את המערכת ובסיום תראו את הפנל החדש שלכם:
יפה נכון??
:-)
עטיפת הפנל בסקריפטים ואטומציות
בטח שמתם לב שבנינו פנל יפה, אבל הוא לא באמת עושה משהו, בשום נקודה במדריך הזה לא הגדרנו מה יעשו היישויות שבנינו.
אז איך גורמים לפנל שלנו לשלוט על המזגן שלנו?
התשובה פשוטה, עוטפים אותו בסקריפטים ואוטומציות.
סקריפטים
שימו לב, הסקריפטים מקבלים ומעבירים פרמטרים אחד לשני, יכול להיות שהשלב הזה ייראה לכם קצת לא מובן, אני מבטיח שהכל יתחבר ברגע שתסיימו גם את שלב האטומציות.
הסקריפטים בנויים בתצורות "שרשרת סקריפטים". כל פקודה שנרצה לשלוח למזגן תעבור למעשה בשרשרת הבנוייה משלושה סקריפטים.
הסקריפט הראשון בשרשרת - מחליט על סמך המצב המתבקש ורמת המאוורר המתבקשת אותם קיבל כפרמטרים, מה הסקריפט הבא בשרשרת וקורא לו תוך כדי העברת הטמפרטורה המתבקשת כפרמטר.
הסקריפט השני בשרשרת - הוא למעשה אחד מתוך שמונה סקריפטים (למזגן יש 2 מצבים * 4 רמות אוורור = 8 סקריפטים). כל אחד מהסקריפטים האלו מקבל את הטמפרטורה המתבקשת כפרמטר ומעביר את פקטת ה-IR המתאימה למצב+רמת מאוורר+טמפרטורה מתבקשים לסקריפט הבא בשרשרת.
הסקריפט השלישי בשרשרת - מקבל את פקטת ה-IR כפרמטר ומבצע קריאה לשירות הייעודי של מכשיר ה-Broadlink על מנת לשלוח את הפקטה למזגן.
הסקריפט הראשון, מקבל שלושה פרמטרים:
הראשון נקרא selected_mode והוא יכיל את המצב המתבקש של המזגן.
השני נקרא selected_fan והוא יכיל את רמת המאוורר המתבקשת של המזגן.
השלישי נקרא selected_temp והוא יכיל את הטמפרטורה המתבקשת של המזגן.
על סמך שני הפרמטרים הראשונים, הסקריפט ייקרא לסקריפט השני הייעודי למצב+מאוורר המתבקשים.
את הפרמטר השלישי (selected_temp) ישרשר הסקריפט לסקריפט השני בשרשרת.
הסקריפט השני בשרשרת הוא אחד משמונת הסקריפטים הבאים שמקבלים פרמטר אחד:
פרמטר בשם selected_temp והוא יכיל את הטמפרטורה המתבקשת.
הסקריפטים הבאים, מעבירים את פקטת ה-IR המתאימה כפרמטר לסקריפט השלישי בשרשרת.
שימו לב, בסקריפטים האלו אתם תציבו את פקטות ה-IR שלכם. יש להציב את הפקטות שלמדתם בתוך טווח המרכאות, כלומר "packet".
הדוגמאות שלי בנויות ל-16-32 מעלות:
במידה ותרצו לשנות את טווח הטמפרטורות, פשוט תשנו את ההשוואות בתוך צלעות ה-if/elif.
במידה ותרצו יותר אפשרויות, פשוט תוסיפו עוד צלעות elif בדומה לדוגמא.
במידה ותרצו פחות אפשריות, טכנית אתם לא חייבים למחוק צלעות elif, אתם יכולים לתחום את טווח הטמפרטורות האפשרויות במסגרת יישות ה-cover שהקמתם. אבל אם אתם מעדיפים למחוק, רק תקפידו לא לשבור את הסינטקט, הצלע הראשונה תמיד תהיה if בעוד שאר הצלעות יהיו elif.
הסקריפט הראשון, עבור מצב COOL ורמת מאוורר LOW:
הסקריפט השני, עבור מצב COOL ורמת מאוורר MED:
הסקריפט השלישי, עבור מצב COOL ורמת מאוורר HIGH:
הסקריפט הרביעי, עבור מצב COOL ורמת מאוורר AUTO:
הסקריפט החמישי, עבור מצב HEAT ורמת מאוורר LOW:
הסקריפט השישי, עבור מצב HEAT ורמת מאוורר MED:
הסקריפט השביעי, עבור מצב HEAT ורמת מאוורר HIGH:
הסקריפט השמיני, עבור מצב HEAT ורמת מאוורר AUTO:
הסקריפט השלישי בשרשרת קורא לשירות במכשיר ה-Broadlink, הוא מקבל פרמטר אחד:
פרמטר בשם packet_code והוא יכיל את פקטת ה-IR הנדרשת להעברה למזגן.
הסקריפט די פשוט, הוא קורא לשירות send_packet של broadlink, שימו לב ששם השירות כולל בתוכו את כתובת ה-ip של המכשיר שלכם, במידה ויש לכם יותר ממכשיר אחד, יש לכם מספר שירותים מקבילים, אחד לכל מכשיר.
אוטומציות
עד עכשיו בניתם פנל יפה ויצרתם שרשראות של סקריפטים.
עכשיו כל שנותר לכם לעשות הוא לקשר בין הפנל לסקריפטים, אתם תבצעו זאת באמצעות אוטמציות שיקראו לסקריפטים על בסיס שינויים ביישויות תחת הפנל.
אתם צריכים ליצור שלוש אוטומציות די פשוטות.
האוטומציה הראשונה, פועלת בכל שינוי של ה-input_boolean שיצרתם ל-ON.
כלומר, בכל פעם שבקר ההפעלה יעבור למצב ON, האוטומציה הבאה תופעל.
האוטומציה למעשה שולפת את הערכים מכלל בקרי המזגן שלנו ומעבירה אותם לסקריפט הראשון בשרשרת הסקריטים:
האוטומציה השנייה, הפוכה מהקודמת. היא תפעל בכל שינוי של ה-input_boolean שיצרתם ל-OFF.
כלומר, בכל פעם שבקר ההפעלה יעבור למצב OFF, האוטומציה הבאה תופעל.
האוטומציה למעשה תעביר את הפקטה הייעודית עבור OFF לסקריפט השלישי והאחרון בשרשרת הסקריפטים, זאת מאחר ופקודת ה-OFF היא זהה לכל המצבים ולא מצריכה ריצה של שרשרת הסקריפטים:
האטומציה השלישית והאחרונה, נועדה לטפל במצבים בהם אתם משנים את הגדרות המזגן בזמן שהוא פעיל. כמובן שבמקרה כזה אתם לא תרצו לכבות את המזגן ולהפעיל אותו מחדש על מנת שיועברו ההגדרות החדשות, לכן האוטומציה הבאה רצה בכל שינוי בכל אחד מבקרי המזגן שלכם עבור טמפרטורה, מצב ורמת מאוורר בתנאי שבקר ההפעלה פעיל.
בדומה לאוטומציה הראשונה, האוטומציה למעשה שולפת את הערכים מכלל בקרי המזגן שלנו ומעבירה אותם לסקריפט הראשון בשרשרת הסקריטים:
זהו!
סיימתם להעתיק את המסך משלט המזגן שלכם ל-Home Assistant.
יש לכם עוד מזגן בבית? בפעם השנייה המדריך הזה קל יותר. ;-)
תהנו!