תוכן עניינים:

פריצה ל- LG Ducted Split לאוטומציה ביתית: 8 שלבים (עם תמונות)
פריצה ל- LG Ducted Split לאוטומציה ביתית: 8 שלבים (עם תמונות)

וִידֵאוֹ: פריצה ל- LG Ducted Split לאוטומציה ביתית: 8 שלבים (עם תמונות)

וִידֵאוֹ: פריצה ל- LG Ducted Split לאוטומציה ביתית: 8 שלבים (עם תמונות)
וִידֵאוֹ: Кто установил этот аборт? Еще одна взломанная центральная система кондиционирования заменена оборудованием Bosch IDS 2.0 2024, דֵצֶמבֶּר
Anonim
פריצה ל- LG Ducted Split לאוטומציה ביתית
פריצה ל- LG Ducted Split לאוטומציה ביתית

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

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

אילו זו הייתה הבחירה שלי, זה לא היה LG אבל מכיוון שהותקן בבית כשרכשתי אותו (ועלות ההחלפה שלו עשויה להיות יותר מ -10 אלף דולר) זה מה שעלי להתמודד איתו.

מטרה - להיות מסוגל לשלוט ב- AC באמצעות MQTT למטרות אוטומציה באמצעות OpenHAB ו- IFTTT/Google Assistant

שלב 1: פענוח פורמט הנתונים

פענוח פורמט הנתונים
פענוח פורמט הנתונים
פענוח פורמט הנתונים
פענוח פורמט הנתונים

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

כשהייתי קורע את הבקר מהקיר מצאתי 3 חוטים שהחלטתי שהם קרקע, 12V ו'אות '

מתח האיתות בקו הנתונים היה ב -12 וולט, אבל שמתי לב שנראה שהוא משתנה על המולטימטר (סוג של פולסים בקו).

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

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

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

פרסמתי את הממצאים שלי בפורומים של EEVBlog כדי לבדוק אם מישהו יכול אולי לשפוך אור ובחור מצוין בשם איאן בא לעזרתי - הוא הניח את זה בצורה שזה הגיוני לגמרי (תמונה 2)

ביסודו של דבר, זרם הנתונים הוא 13 בתים של 'סידורי סטנדרטי' - 8 סיביות נתונים, סיביות התחלה אחת ועצירה אחת (ללא זוגיות) אך בקצב שידור נמוך מאוד של 104bps.

שלב 2: נראה עמוק יותר

נראה עמוק יותר
נראה עמוק יותר

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

הוצאתי את אחד הבקרים שלי מהקיר וחיברתי אותו באמצעות מחוון ברמה לוגית לארדואינו עם שרטוט פשוט לקריאת 13 בייט נתונים באמצעות יציאה טורית של תוכנה שהוגדרה ב- 104bps והדפסה:

168, 18, 0, 8, 0, 192, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 192, 6, 22, 0, 0, 0, 0, 40, 19, 0, 8, 0, 200, 6, 31, 0, 0, 0, 0, 40, 19, 0, 8, 0, 200, 6, 31, 0, 0, 0, 0, 200, 18, 0, 8, 64, 0, 6, 25, 0, 0, 0, 0, 200, 18, 0, 8, 64, 0, 6, 25, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, ** בעצם 12 בתים כאן

הייתה לנו פעולה!

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

168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, מאוורר LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, מאוורר MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, מאוורר גבוה

168, 67, 0, 0, 0, 248, 3, 33, 0, 0, 0, 0, 82, Z1234 168, 67, 0, 0, 0, 192, 3, 34, 0, 0, 0, 0, 133, Z1 168, 67, 0, 0, 0, 160, 3, 34, 0, 0, 0, 0, 229, Z2 168, 67, 0, 0, 0, 144, 3, 34, 0, 0, 0, 0, 245, Z3 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, Z4

168, 75, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 244, מצב FAN 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, Mode AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, Mode COOL 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, מצב HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, מצב DH

168, 15, 0, 0, 0, 136, 3, 34, 0, 0, 0, 0, 49, טמפ '18 168, 15, 0, 0, 0, 136, 4, 34, 0, 0, 0, 0, 48, טמפ '19 168, 15, 0, 0, 0, 136, 5, 34, 0, 0, 0, 0, 51, טמפ' 20 168, 15, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 37, טמפ '30

המספרים הרבה יותר הגיוניים כשאתה מסתכל עליהם בינארית אבל מה הקשר לבייט ה -13 ?? זה בכל מקום…

שלב 3: מיפוי

מיפוי זה
מיפוי זה

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

שלב 4: קיר לבנים קדימה

קיר לבנים קדימה!
קיר לבנים קדימה!
קיר לבנים קדימה!
קיר לבנים קדימה!
קיר לבנים קדימה!
קיר לבנים קדימה!

כאן זה הסתבך. היו לי שתי מכשולים להתגבר עליהם

א) נראה שהבייט ה -13 הוא סכום ביקורת של הנתונים שהייתי צריך כדי איכשהו לפתור אותם. ב) כיצד אוכל להעביר את הנתונים אז? זה רק חוט אחד.

הבעיה 'א' התבררה כקלה באמת, אך במקרה צלחתי הצלחתי לעבור אותה.

בבדיקות שלי, בדקתי נתונים כמו: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000

זהו 13 בתים של הנתונים כולל סיכום הביקורת (כאן ב- HEX במקום DEC).

כשחיפשתי באורקל שהוא גוגל בנושא 'איך להכין מהפך לאחור סכום צ'קים', נתקלתי בדף הזה בחילופי ערימות עם מישהו אחר ששמו ניק שואל אותו דבר בדיוק כמוני אבל לא רק זה, הם דיברו על מזגן והנתונים שלהם היו כמעט בפורמט זהה לשלי - יכול להיות שזה ??? במהלך כל החיפושים שלי (בעוד 4 שנים או יותר), אף אחד לא פרסם מידע על איך לפרוץ את הפרוטוקול על המזגנים האלה ואני במקרה נתקל במישהו שעושה את אותו הדבר על ידי חיפוש אחר משהו כמעט בלתי קשור לחלוטין? זו הייתה ברכה - הוא אפילו פרסם שהוא הסתדר והפתרון היה: הוסף את כל בייט הנתונים ולאחר מכן את XOR עם "U".

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

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

התגובה מ- 'XOR עם U' תמיד החזירה 9 סיביות נתונים (הסיביות ה -9 תמיד אחת) אך שאר הביטים היו נכונים. פשוט הסרתי את הסיביה ה -9 על ידי לקיחת 256 מהמספר שהתקבל ואז היא התאימה !!

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

האתגר הבא היה יצירת מעגל שיאפשר לי לדמות את הבקר הקיים. מיפיתי את הסכימה של מעגל הכונן (Pic1 ו- Pic 2) אבל זה נראה לי מסובך מדי כדי שאוכל לשחזר אותו כדי להשיג את מבוקשי. אחרי הכל כבר קראתי את האות. בחרתי בשיטה הרבה יותר פשוטה - שימוש בארדואינו להנעת מבודד אופטו כדי למשוך את קו האות 12V נמוך כנדרש.

תכננתי גם מעגל פשוט יותר ל- Rx אבל זה לא נבדק, בסופו של דבר דבקתי בממיר הרמות לפשטות.

שלב 5: לגרום לזה לעבוד

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

הבדיקה האחרונה בפועל הייתה להוסיף את הארדואינו שלי ל- BUS עם 2 הבקרים האחרים לבדיקה חיה של ממש ובוודאי שזה עבד.

אז עכשיו יכולתי לקרוא ולכתוב לאוטובוס אבל פשוט חסר לי היכולת לעשות את זה בפשטות.

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

הכוונה הייתה להפעיל את הקוד במודול ESP8266 אולם נראה כי ה- ESP8266 אינו מסוגל לייצר קצב שידור נמוך עד 104bps. הייתי צריך לחזור ל- Arduino Uno גנרי עם Wiznet ethernet אבל זה לא היה קשה מכיוון שמדף התקשורת שלי היה ממש בצד השני של הקיר מאחד מבקרי ה- AC.

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

סיכות Rx, Tx ל- AC מקודדות כ -3, 4 אבל ישתנו אם תרצה

הקוד מוגדר לפרסם ולקבל פקודות ככאלה:

ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - מצב מגניב, הסרת לחות, מאוורר, אוטומטי, Heatha/mod/5557/F 0/1/2 - מאוורר נמוך, מד, highha/mod/5557/Z כלומר 1111 לכל האזורים ב- 1000 לאזור 1 בלבד.

** מהבקר, לא ניתן להגדיר אזורים ל- '0000' אולם עם זאת נראה שאם תנפיק את הערך, הוא יחזור ל- '1000'.

הגרסה האחרונה של הקוד זמינה מה- GitHub Repo שלי:

שלב 6: משהו קבוע יותר

משהו קבוע יותר
משהו קבוע יותר
משהו קבוע יותר
משהו קבוע יותר

אספתי לוח אב טיפוס של ארדואינו והתקנתי את כל החלקים כשהייתי לוחם עליהם לחם.

שלב 7: תצורת OpenHAB

עיין בקובץ המצורף לפריטים, מפת אתר וכללים של OpenHAB

שלב את זה עם הכריכה IFTTT OpenHab ו- Google Assistant/Home ויש לך מיזוג אוויר מאוד נשלט ו/או 'חכם' שעולה על כמעט כל מוצר זמין מסחרית!

שלב 8: סיכום

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

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

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

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

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

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

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

** יכול לעבוד על יחידות חדשות יותר

*** מידע שנמצא במסעות המחקר שלי הצביע על כך שפיצול צינור Panasonic עשוי להשתמש באותו פרוטוקול. YMMV.

מוּמלָץ: