Mündəricat:
- Addım 1: Məlumat Formatının Kodunun Açılması
- Addım 2: Daha Dərin Görünür
- Addım 3: Xəritəçəkmə
- Addım 4: Qarşıda Kərpic Divarı
- Addım 5: Çalışdırın
- Addım 6: Daha daimi bir şey
- Addım 7: OpenHAB Konfiqurasiyası
- Addım 8: Xülasə
Video: Ev avtomatlaşdırılması üçün LG kanallı bölünməsini sındırmaq: 8 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Əvvəla - Bu başqa bir infraqırmızı uzaqdan idarə emulyasiyası deyil. Xüsusi AC -nin, divara quraşdırılmış ağıllı idarəetmələrdən başqa hər hansı bir nəzarət üçün nəzərdə tutulmuş heç bir istifadəçi interfeysi yoxdur.
Evimdə LG Ducted tərs split sistemi var. Təəssüf ki, IoT -nin heç bir istehsalçı siyahısında yüksək olmadığı bir vaxtda edildi. "Usta" nəzarəti üçün bəzi variantların olduğunu kəşf etdim, amma ilk dəfə cəhd etdiyim zaman cihazın cəmi 2 yaşı olsa da, genişləndirmə lövhələri unobtanium idi və qiymətlər hər halda astronomik idi. Alınması çox asan, lakin mümkün olmayan 'Kabelsiz RF Uzaqdan' addonu olduğu kimi.
Mənim seçimim olsaydı, LG olmazdı, amma satın aldığım zaman evdə quraşdırıldığından (və əvəzinin qiyməti 10 min dolları keçə bilər) mənimlə məşğul olmalı idim.
Məqsəd - OpenHAB və IFTTT/Google Assistant vasitəsilə avtomatlaşdırma məqsədi ilə AC -ni MQTT vasitəsi ilə idarə edə bilmək.
Addım 1: Məlumat Formatının Kodunun Açılması
Bu prosesi 4 il əvvəl başladım, amma çox da uzağa getmədim və qurğunun zədələnməsi riskini almaq istəmədim - Xüsusilə hissələri tapmaq demək olar ki, qeyri -mümkün görünür.
Nəzarətçini divardan yıxaraq, Toprak, 12v və 'siqnal' olaraq təyin etdiyim 3 tel tapdım
Məlumat xəttindəki siqnal gərginliyi 12v idi, amma multimetrdə (xətdə bir növ nəbzlərin) dalğalandığını hiss etdim.
Çörək, məlumat pinindən bir opto izolyatoru idarə etmək üçün əsas bir dövrə oturdum və opto izolyatorun digər tərəfini kompüterimin səs kartına giriş olaraq bağladım və əhatə dairəsinin zəif bir versiyasına sahib oldum (Şəkil 1).
Bu, o vaxt əldə etdiyim qədərdir - orada bir şey olduğunu görə bilərdim, amma həqiqətən "deşifr etməyi" bilmirdim.
Qəhvə maşını IoT -ni işə saldıqdan sonra, bu dəfə bir az daha qətiyyətlə yenidən sınamaq marağım təzələndi.
EEVBlog forumlarında kiminsə işıq tuta biləcəyini və Ian adlı böyük bir oğlanın xilas olmağa gəldiyini görmək üçün tapıntılarımı yerləşdirdim - Tamamilə məntiqli bir şəkildə izah etdi (Şəkil 2)
Əsasən, məlumat axını 13 bayt 'standart serial' təşkil edir - 8 məlumat biti, bir başlanğıc biti və bir dayanma biti (paritet yoxdur), lakin çox aşağı sürət sürətində 104bps.
Addım 2: Daha Dərin Görünür
İndi məlumatların necə formatlandığı barədə bir fikrim olduğu üçün məlumatları daha dinamik bir şəkildə oxuya biləcəyim bir yola ehtiyacım var idi.
Nəzarətçilərimdən birini divardan çəkdim və 104 bit sürətində konfiqurasiya edilmiş proqram portu vasitəsilə 13 bayt məlumatı oxumaq və çap etmək üçün sadə bir eskizlə bir məntiq səviyyəsi dəyişdiricisi ilə Arduinoya bağladım:
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, ** Əslində burada 12 bayt
Əlimizdə idi!
Sonra nəzarətçinin müxtəlif parametrlərini dəyişdirərək dəyişən baytları işlədə bildim:
168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, Fan LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, Fan MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, Yüksək Fan
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, COOL 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, ISITMA rejimi 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, DH rejimi
168, 15, 0, 0, 0, 136, 3, 34, 0, 0, 0, 0, 49, Temp 18 168, 15, 0, 0, 0, 136, 4, 34, 0, 0, 0, 0, 48, Temp 19 168, 15, 0, 0, 0, 136, 5, 34, 0, 0, 0, 0, 51, Temp 20 168, 15, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 37, Temp 30
Nömrələr ikili olaraq baxdığınızda daha çox məna kəsb edir, amma 13 -cü baytla nə əlaqəsi var? Hər yer var…
Addım 3: Xəritəçəkmə
Sınaq və səhv yolu ilə, ötürə bilməyim lazım olan 13 bayt məlumatdakı müvafiq bitləri təyin edə bildim.
Addım 4: Qarşıda Kərpic Divarı
İşin mürəkkəbləşdiyi yer budur. Öhdəsindən gəlmək üçün iki maneəm var idi
a) 13 -cü bayt, birtəhər işlətməyim üçün lazım olan məlumatların bir cəmidir. b) Veriləri necə ötürürəm? Yalnız bir teldən ibarətdir.
'A' məsələsi həqiqətən də asan oldu, amma sırf təsadüf nəticəsində keçmişəm.
Testlərimdə belə məlumatlara baxdım: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C000000000070080080080070080070080070080000000070080000000070000000000700000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000
Bu, checksum daxil olmaqla 13 bitlik məlumatdır (burada DEC yerinə HEX -də).
Google -da "bir checksum -u necə tərsinə mühəndis etmək olar" mövzusunda oracle axtararkən, bu səhifəni Nick adıyla gedən başqa birisi ilə mənimlə eyni şeyi soruşan yığıncaq mübadiləsində gördüm, təkcə bu deyil bir kondisioner və onların məlumatları mənimki ilə demək olar ki, eyni formatda idi - Ola bilərmi ??? Bütün axtarışlarımda (təxminən 4 il ərzində) heç kim bu kondisionerlərdə protokolu necə sındırmaqla bağlı heç bir məlumat yerləşdirməmişdi və demək olar ki, tamamilə əlaqəsi olmayan bir şey axtarıb eyni şeyi edən biri ilə rastlaşdım? Bu bir xeyir idi - Hətta işlətdiyini də yazdı və həlli belə oldu: Məlumatların bütün baytlarını və sonra XOR -u "U" ilə əlavə edin.
Əlimdə, checksumun əslində nə olduğunu düşündüyümü hesablamaq üçün koduma əlavə etdim, amma hamısı səhv idi!
Göründüyü kimi, bir növ səhv idi. Nömrələrə ikili olaraq baxmağa başladığımda, bu, tamamilə məntiqli idi.
'XOR with U' cavabı həmişə 9 bit məlumat (9 -cu bit həmişə bir) qaytardı, amma digər bitlər doğru idi. Nəticədə əldə edilən rəqəmdən 256 alaraq 9 -cu biti sildim və sonra uyğun gəldi!
Bu fərd olmasaydı, hələ də başımı cızırdım. Şapka da ona aiddir, amma onunla əlaqə saxlaya bilmirəm - Bu, əsasən onun stackexchange forumundakı yeganə yazısı idi. Yaxşı, qəribə təşəkkür edirəm:)
Növbəti çətinlik, mövcud nəzarətçini simulyasiya etməyimə imkan verən bir dövrə düzəltmək idi. Sürücü dövrəsinin sxemini (Pic1 və Pic 2) xəritələdim, amma istədiklərimi əldə etmək üçün onu yenidən yaratmağım çox mürəkkəb görünürdü. Artıq siqnal oxuyurdum. Daha sadə bir üsul seçdim - 12v siqnal xəttini lazım olduğu qədər aşağı çəkmək üçün arduino istifadə edərək opto izolyatoru idarə edin.
Rx üçün daha sadə bir dövrə də hazırladım, amma bu sınaqdan keçirilmədi, sadəlik üçün səviyyə çeviricisinə yapışdım.
Addım 5: Çalışdırın
Bir dəfə ötürücü sxemini taxtaya taxdım və bir yarış ürəyi ilə 12 baytdan ibarət (statik) bir simli bağladım, cəmi hesabladım və arduinoya əmr göndərdim - Təəccüblüdür ki, ekran yeniləndi !!! Qazan!
Son faktiki test, arduino -nu real bir canlı test üçün digər 2 nəzarətçi ilə BUS -a əlavə etmək idi və kifayət qədər əminliklə işlədi.
İndi avtobusda oxuya və yaza bilərdim, amma bunu sadəcə bacarmaq qabiliyyətim yox idi.
MQTT -ni demək olar ki, bütün ev avtomatlaşdırma sistemim üçün istifadə etdiyim üçün bunun eyni olacağı təbii idi. AC -nin 4 əsas elementini idarə etmək üçün kodu bir neçə gün ərzində yazdım, eyni zamanda mövcud vəziyyəti oxudum (BUS -dakı digər modullardan)
Niyyət, ESP8266 modulunda işləyən koda sahib olmaq idi, lakin ESP8266 -nın 104 bit / s qədər aşağı bir sürət əldə edə bilmədiyi görünür. Wiznet ethernet ilə ümumi bir Arduino Uno -ya qayıtmaq məcburiyyətində qaldım, amma kompressor rəfim AC nəzarətçilərindən birindən divarın digər tərəfində olduğu üçün çətin deyildi.
Kod hər yerdə bir qədərdir, ancaq oxunaqlı olmalıdır. Nəzarətçinin öz çıxışını oxumasını maneə törətməklə yanaşı, MQTT -dən kondisionerə göndərdiyi öz nəşr etdiyi mövzuları təkrarlamaqla da bir çox problemim oldu. Əsasən, sonsuz bir döngə yaradardı. Sonda, MQTT -də yayımlandıqdan sonra bəzi tampon təmizlənməsi və kodun işlənməsindəki gecikmələr onu sıraladı.
AC -yə Rx, Tx pinləri 3, 4 olaraq kodlanır, ancaq isterseniz dəyişdirin
Kod, əmrləri dərc etmək və qəbul etmək üçün qurulmuşdur:
ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - Sərin Mod, Nəm Alma, Fan, Avtomatik, Heatha/mod/5557/F 0/1/2 - Fan aşağı, med, highha/mod/5557/Z yəni 1.1111 bütün zonalar üçün yalnız 1. zona üçün.
** Nəzarətçidən zonalar '0000' olaraq təyin edilə bilməz, ancaq dəyər verərsəniz '1000' ə dönər.
Kodun son versiyasını GitHub Repo -dan əldə edə bilərsiniz:
Addım 6: Daha daimi bir şey
Arduino prototip lövhəsini topladım və çörək taxtası taxdığım üçün bütün hissələri quraşdırdım.
Addım 7: OpenHAB Konfiqurasiyası
OpenHAB maddələri, sayt xəritəsi və qaydalar üçün əlavə edilmiş fayla baxın
Bunu IFTTT OpenHab bağlayıcı və Google Assistant/Home ilə birləşdirin və demək olar ki, satışda olan hər bir məhsulu aşan çox güclü səsli və/və ya 'Ağıllı' kondisioneriniz var!
Addım 8: Xülasə
Nəticə - Bir az köhnə LG kanallı split kondisioneri olan kasıb ruhlardan birisənsə, tək deyilsən. Bizə hələ də ümid var!
Ümid edirəm ki, bu öyrədici mənim kimi ehtiyac duyduğu birini tapacaq. Tapa biləcəyim heç bir məlumat yoxdur ("Nick" dən alınan məbləğdən başqa). Sıfırdan başlamalı idim, amma nəticəyə heyranam.
Məlumat bir qədər qeyri -müəyyəndir, amma mənimlə eyni vəziyyətdə olsanız, kömək etməkdən daha çox istəyərəm.
- Diqqət / Yeniləmə --- AC qurğusunu söndürmə vahidi ilə dəyişdirmək mümkün olsa da, Zona idarəçiliyinə gəldikdə onunla qarışıq göründüyünü gördüm. Cihazı söndürməklə bir çox sınaq keçirdim və gördüm ki, zonalar hərəkətsiz kimi görünəcək, amma qurğu işləyərkən damperlərin tam bağlanmadığı görünür (lakin tam açılmamışdır). Cihazı əsas açarda sıfırladım və bu problemi həll etdi. Cihaz işləyərkən yalnız zonalar dəyişdirildiyindən bu problem olmadı
Mən də kodu əsas vahiddən deyil, əsas nəzarətçidən gələn dəyişiklikləri dərc etmək üçün (MQTT -ə) yenilədim. Bir daha, bu problem yarada bilər, çünki əsas bölmə zonalar üçün '0000' göndərəcək (bu da problem ola bilərdi)
Yenilənmiş kod, arduino -nun ana və əsas qurğunun eyni vaxtda ötürülməsinin qarşısını almaq üçün bəzi vaxt məhdudiyyətləri təqdim edir. Əminəm ki, nəzarətçinin göndərmədən əvvəl Xms üçün xətti aşağı çəkmək kimi bir məlumat göndərməyi başlatmaq üçün istifadə etdiyi bir üsul var, amma varsa hələ tapmamışam
Əsas bölmənin hər 60 saniyədə bir məlumat göndərəcəyini və hər 20 saniyədə bir ana nəzarətçinin göndərdiyini kəşf etdim. Kod, məlumat paketini aldıqdan sonra 2 saniyə ərzində məlumatların göndərilməsini dayandırmağa çalışır. Ancaq bəzən ana və əsas qurğu bir -birinə çox yaxın ötürülür. Çox güman ki, bu, daha tez işlənəcək.----------------------------
** Yeni qurğular üzərində işləyə bilər
*** Araşdırma səyahətlərimdə tapılan bəzi məlumatlar Panasonic kanallı bölünmənin eyni protokoldan istifadə edə biləcəyini göstərdi. YMMV.
Tövsiyə:
Android smartfonu istifadə edərək kompüterə görmə əlavə etmək üçün Hexbug Spider XL -i sındırmaq: 9 addım (şəkillərlə)
Bir Android Smartphone istifadə edərək Kompüter Görmə Əlavə etmək üçün Hexbug Spider XL -i Hacking: Mən orijinal Hexbug & ticarətin böyük bir fanatıyam; Hörümçək. Ondan çox sahibi oldum və hamısını sındırdım. Oğullarımdan biri hər an dostlarına gedir ’ ad günü partiyası, dost bir Hexbug & ticarət alır; hədiyyə olaraq hörümçək. Hack etdim və ya
AutoBlinds - Şaquli və üfüqi pərdələr üçün DIY avtomatlaşdırılması: 5 addım (şəkillərlə)
AutoBlinds - Şaquli və üfüqi pərdələr üçün DIY avtomatlaşdırılması: Bu layihə, mən uzaqdaykən günortadan sonra qərbə baxan pəncərədəki pərdələrimi bağlamaq ehtiyacı ilə başladı. Xüsusilə yaz aylarında Avstraliyadakı günəş birbaşa üzərinə düşdüyü cisimlərə dağıdıcı təsirlər göstərə bilər. Üstəlik, kəskin şəkildə
Daha uzun batareya ömrü üçün bir temperatur sensörünü necə sındırmaq olar: 4 addım
Daha Uzun Batareya Ömrü üçün İstilik Sensorunu Necə Hack Etmək olar: Inkbird IBS-TH1, bir neçə saat və ya gün ərzində temperatur və rütubəti qeyd etmək üçün əla bir kiçik cihazdır. Hər 10 dəqiqəyə qədər hər saniyəyə daxil olmaq üçün qurula bilər və Bluetooth LE üzərindəki məlumatları bir Android və ya iOS smartfonuna bildirir. Tətbiq
IoT və ya Ev Avtomatlaşdırılması üçün Homie Cihazlarının Qurulması: 7 Addım (Şəkillərlə)
IoT və ya Ev Avtomatlaşdırması üçün Homie Cihazları qurmaq: Bu təlimat, DIY Ev Otomasyonu seriyamın bir hissəsidir, əsas məqaləni "" DIY Ev Otomasyon Sisteminin Planlaşdırılması "na baxın. Hominin nə olduğunu hələ bilmirsinizsə, Marvin Roger-dən homie-esp8266 + homie-yə baxın
Yolunuza xidmət etmək üçün servoları sındırmaq: 9 addım
Yolunuza xidmət etmək üçün servoları sındırmaq: servolar robot texnikasında ən faydalı mühərriklərdən biridir. Böyük bir torka, kiçik ölçüyə, inteqrasiya edilmiş H körpüsünə, PWM nəzarətinə və s. RC sistemləri, Arduino və bir çox başqa yollarla istifadə edilə bilər. Ancaq bəzən onları işə salmaq həqiqətən də çətin ola bilər