Sadržaj:
- Korak 1: Dekodiranje formata podataka
- Korak 2: Gledajte dublje
- Korak 3: Mapirajte ga
- Korak 4: Zid od opeke ispred
- Korak 5: Neka funkcionira
- Korak 6: Nešto trajnije
- Korak 7: OpenHAB Config
- Korak 8: Sažetak
Video: Hakiranje LG Ducted Split -a za kućnu automatizaciju: 8 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Prije svega - ovo nije još jedan hack za emulaciju infracrvenog daljinskog upravljača. Moj određeni AC nema upotrebljivo sučelje dizajnirano za bilo koju vrstu kontrole osim uključenih pametnih kontrola montiranih na zid.
U kući imam sistem za obrnuto razdvajanje LG Ducted. Nažalost, napravljen je u vrijeme kada IoT nije bio visoko na listi nijednog proizvođača. Otkrio sam da ima neke opcije za "master" kontrolu, ali iako je jedinica bila stara samo 2 godine u vrijeme kada sam to prvi put pokušao, ploče za proširenje bile su neutabljene, a cijene su ionako bile astronomske. Kao i dodatak 'Wireless RF Remote' koji bi stvari uvelike olakšao, ali ih je nemoguće kupiti.
Da je to bio moj izbor, to ne bi bio LG, ali budući da je instaliran u kući kada sam ga kupio (a cijena zamjene bi vjerojatno bila veća od 10.000 USD), s tim sam se morao nositi.
Cilj - Moći kontrolirati AC putem MQTT -a za potrebe automatizacije putem OpenHAB -a i IFTTT -a/Google pomoćnika
Korak 1: Dekodiranje formata podataka
Započeo sam ovaj proces prije 4 godine, ali nisam stigao daleko i nisam htio riskirati oštećenje jedinice - pogotovo jer se čini da je gotovo nemoguće pronaći dijelove za nju.
Skidajući kontroler sa zida pronašao sam 3 žice za koje sam utvrdio da su uzemljene, 12v i "signalne"
Signalni napon na podatkovnoj liniji bio je na 12v, ali primijetio sam da se čini da fluktuira na multimetru (neka vrsta impulsa na liniji).
Ukrcao sam osnovno kolo za pogon opto izolatora preko pina za podatke i povezao drugu stranu opto izolatora kao ulaz na zvučnoj kartici svog računara i dobio lošu verziju izlaza opsega (slika 1).
To je otprilike onoliko koliko sam tada dobio - mogao sam vidjeti da tu ima nečega, ali nisam znao kako to 'dekodirati'.
Otkako sam omogućio IoT u aparatu za kavu, osvježio sam se da ovaj put pokušam ovo s malo više odlučnosti.
Objavio sam svoja otkrića na forumima EEVBloga da vidim može li neko rasvijetliti, a u pomoć mi je došao sjajan momak po imenu Ian - postavio je to na način koji je u potpunosti imao smisla (slika 2)
U osnovi, tok podataka ima 13 bajtova 'standardne serije' - 8 bitova podataka, jedan početni bit i jedan zaustavni bit (bez pariteta), ali pri VRLO niskoj brzini prijenosa od 104 bps.
Korak 2: Gledajte dublje
Dakle, sada kada sam imao ideju o tome kako su podaci formatirani, trebao mi je način da mogu čitati podatke na dinamičniji način.
Izvukao sam jedan od svojih kontrolera sa zida i spojio ga putem mjenjača logičkog nivoa na Arduino sa jednostavnom skicom za čitanje 13 bajtova podataka putem softverskog serijskog porta konfiguriranog na 104 bps i ispisao ga:
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, ** Zapravo 12 bajtova ovdje
Imali smo akciju!
Promjenom različitih postavki na kontroleru uspio sam odrediti bajtove koji se mijenjaju:
168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, ventilator LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, ventilator MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, ventilator VISOK
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, način rada VENTILATOR 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, način AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, način hlađenja 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, način HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, način DH
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
Brojevi imaju mnogo više smisla kada ih pogledate u binarnom obliku, ali šta je s 13. bajtom ?? Svuda je tako…
Korak 3: Mapirajte ga
Pokušajem i greškom, uspio sam odrediti bitne bitove u 13 bajtova podataka koje bih trebao prenijeti.
Korak 4: Zid od opeke ispred
Tu se zakomplikovalo. Morao sam da savladam dve prepreke
a) Činilo se da je 13. bajt kontrolni zbir podataka koji su mi trebali da bih nekako razradio.b) Kako da onda prenesem podatke? To je samo jedna žica.
Pokazalo se da je pitanje 'a' Zbilja lako, ali pukom slučajnošću sam uspio to zaobići.
U mojim testovima, gledao sam podatke kao što su: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000149C00000000A7
Ovo je 13 bajtova podataka uključujući kontrolni zbroj (ovdje u HEX -u umjesto u DEC -u).
Kada sam pretraživao proročište koje je google o 'kako obrnuti inženjering kontrolnog zbira', naišao sam na ovu stranicu na razmjeni steka s nekim drugim koji se zvao Nick i pitao otprilike isto što i ja, ali ne samo to, razgovarali su o klima uređaju i njihovi podaci su bili gotovo identičnog formata s mojim - može li to biti ??? U cijelom mom pretraživanju (za otprilike 4 godine) nijedna osoba nije objavila nikakve informacije o tome kako hakirati protokol na ovim klima uređajima i slučajno naletim na nekoga da radi istu stvar tražeći nešto gotovo potpuno nepovezano? Bio je to blagoslov - čak je objavio da je to riješio i rješenje je bilo: Zbrojiti sve bajtove podataka, a zatim XOR sa "U".
S tim u ruci, dodao sam ga u svoj kôd kako bih izračunao šta sam mislio da bi trebao biti kontrolni zbroj u odnosu na ono što je zapravo bio, ali sve je bilo pogrešno !!
Kako se ispostavilo, to je bilo nekako pogrešno. Kad sam počeo binarno gledati brojeve, to je imalo potpunog smisla.
Odgovor iz 'XOR -a sa U' uvijek je vraćao 9 bita podataka (deveti bit uvijek jedan), ali drugi su bili ispravni. Jednostavno sam uklonio 9. bit uzimajući 256 iz rezultirajućeg broja i onda se poklopilo !!
Da nije bilo ove osobe, možda bih se i dalje češao po glavi. I njemu kapa dolje, ali ne mogu ga kontaktirati - To je u osnovi bio njegov jedini post na forumu stackexchange. Pa hvala stranče:)
Sljedeći izazov bio je stvaranje kruga koji bi mi omogućio simulaciju postojećeg kontrolera. Nacrtao sam shemu pogonskog kruga (Pic1 i Pic 2), ali činilo mi se previše kompliciranim da je moram reproducirati da bih dobio ono što sam želio. Na kraju sam već čitao signal. Odlučio sam se za mnogo jednostavniju metodu - Korištenje arduina za pogon opto izolatora za povlačenje 12V signalne linije prema potrebi.
Dizajnirao sam i jednostavnije kolo za Rx, ali ovo nije provjereno, pa sam se zbog jednostavnosti držao pretvarača nivoa.
Korak 5: Neka funkcionira
Jednom kada sam napravio krug prenosa i sa trkaćim srcem, izradio sam (statički) niz od 12 bajtova, izračunao kontrolni zbroj i naredio arduinu da pošalje komandu - Nevjerovatno, ekran je ažuriran !!! Win!
Konačni stvarni test bio je dodati moj arduino u BUS sa 2 druga kontrolera za pravi test uživo i sigurno je uspio.
Tako da sam sada mogao čitati i pisati u autobus, ali jednostavno mi je nedostajala sposobnost da to učinim jednostavno.
Budući da MQTT koristim gotovo isključivo za svu kućnu automatizaciju, bilo je prirodno da će to biti isto. Ispisao sam kôd nekoliko dana za kontrolu 4 glavna elementa AC -a, također čitajući postojeći status (iz ostalih modula na BUS -u)
Namjera je bila da se kôd izvodi na modulu ESP8266, međutim čini se da ESP8266 nije u stanju proizvesti brzinu prijenosa od samo 104 bps. Morao sam se vratiti na generički Arduino Uno sa Wiznet ethernetom, ali to nije bilo teško jer je moj stalak za komunikacije bio doslovno s druge strane zida s jednog od AC kontrolera.
Kôd je posvuda posvuda, ali bi trebao biti čitljiv. Imao sam mnogo problema sa sprečavanjem kontrolera da čita vlastiti izlaz, ali i s ponavljanjem koda koji je objavio iz vlastitih tema primljenih od MQTT -a natrag u klima uređaj. U osnovi, to bi stvorilo beskonačnu petlju. Na kraju, neko brisanje međuspremnika i kašnjenja u obradi koda nakon objavljivanja u MQTT su to sredili.
Rx, Tx pinovi na AC su kodirani kao 3, 4 ali se mijenjaju ako želite
Kôd je konfiguriran za objavljivanje i prihvaćanje naredbi kao takvih:
ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - Način hlađenja, odvlaživanje, ventilator, auto, grijanje/mod/5557/F 0/1/2 - Fan low, med, highha/mod/5557/Z tj. 1111 za sve zone na 1000 samo za uključenu zonu 1.
** Iz kontrolera se zone ne mogu postaviti na '0000', međutim čini se da će se, ako izdate vrijednost, vratiti na '1000'.
Najnovija verzija koda dostupna je na mom GitHub Repo:
Korak 6: Nešto trajnije
Skupio sam prototipnu ploču arduina i instalirao sve dijelove dok sam ih davao na kruh.
Korak 7: OpenHAB Config
Pogledajte priložene datoteke za OpenHAB stavke, kartu web lokacije i pravila
Kombinirajte ovo s IFTTT OpenHab povezom i Google pomoćnikom/Home i dobit ćete vrlo moćan glasovno upravljani i/ili 'pametni' klima uređaj koji nadmašuje gotovo svaki komercijalno dostupan proizvod!
Korak 8: Sažetak
Zaključak - Ako ste jedna od siromašnih duša s nešto starijim LG -jevim split -klima uređajem, niste sami. Za nas još ima nade!
Nadam se da će ovo uputstvo pronaći nekoga kome je potrebno isto koliko i meni. U osnovi NEMAM nikakvih informacija koje bih mogao pronaći (osim kontrolnog zbira od 'Nicka'). Morao sam početi od nule, ali sam oduševljen rezultatom.
Znam da je informacija malo maglovita, ali ako ste u istoj situaciji kao i ja, bit ću više nego voljan pomoći.
- Oprez / Ažuriranje --- Iako je moguće promijeniti postavke na izmjeničnom naponu s isključenom jedinicom, otkrio sam da se čini da kada se radi o upravljanju zonom petlja s tim. Puno sam testirao s isključenom jedinicom i otkrio sam da će se zone pokazati kao neaktivne, ali kada jedinica radi, čini se da klapne nisu potpuno zatvorene (ali ni potpuno otvorene). Resetirao sam jedinicu na glavnom prekidaču i to je riješilo problem. Budući da je mijenjanje zona samo kada je uređaj uključen, to nije bio problem
Ažurirao sam i kôd za objavljivanje samo (na MQTT) promjena koje dolaze od glavnog kontrolera, a ne od glavne jedinice. Ovo bi još jednom moglo uzrokovati probleme jer će glavna jedinica poslati '0000' za zone (što je također mogao biti problem)
Ažurirani kôd također uvodi neka vremenska ograničenja za pokušaj sprječavanja arduina da prenosi u isto vrijeme glavne i glavne jedinice. Siguran sam da vjerovatno postoji metoda koju kontroler koristi za pokretanje slanja podataka, poput povlačenja linije za Xms prije slanja, ali još je nisam otkrio ako postoji
Otkrio sam da će glavna jedinica slati podatke svakih 60 sekundi, a glavni kontroler svakih 20 sekundi. Kôd pokušava zaustaviti slanje podataka u roku od 2 sekunde od prijema paketa podataka. Međutim, ponekad se glavna i glavna jedinica prenose vrlo blizu jedna drugoj. Ovo će se vjerovatno uskoro poboljšati. ------------------------------
** Može raditi na novijim jedinicama
*** Neki podaci pronađeni na mojim istraživačkim putovanjima ukazuju na to da bi Panasonicov kanal za razvod mogao koristiti isti protokol. YMMV.
Preporučuje se:
Kako napraviti kućnu automatizaciju zasnovanu na IoT -u s upravljačkim relejem NodeMCU senzora: 14 koraka (sa slikama)
Kako napraviti kućnu automatizaciju zasnovanu na IoT-u s upravljačkim relejem sa senzorima NodeMCU: U ovom projektu zasnovanom na stvarima u internetu napravio sam kućnu automatizaciju s modulom upravljačkog releja Blynk i NodeMCU s povratnom informacijom u stvarnom vremenu. U ručnom načinu rada, ovim relejnim modulom se može upravljati s mobilnog telefona ili pametnog telefona i, ručnim prekidačem. U automatskom načinu rada ovaj pametniji
Kako napraviti pametnu kuću pomoću Arduino kontrolnog relejnog modula - Ideje za kućnu automatizaciju: 15 koraka (sa slikama)
Kako napraviti pametnu kuću pomoću Arduino kontrolnog relejnog modula | Ideje za kućnu automatizaciju: U ovom projektu automatizacije kuće dizajnirat ćemo relejni modul pametne kuće koji može kontrolirati 5 kućanskih aparata. Ovim relejnim modulom može se upravljati putem mobilnog telefona ili pametnog telefona, IC daljinskog upravljača ili daljinskog upravljača za TV, ručnim prekidačem. Ovaj pametni relej može osjetiti i
Wi-Fi 4CH relejni modul za kućnu automatizaciju: 7 koraka (sa slikama)
WI-Fi 4CH relejni modul za kućnu automatizaciju: Ranije sam koristio mnoge WI-FI zasnovane na isključenim prekidačima. Ali oni ne odgovaraju mom zahtjevu. Zato sam htio izgraditi vlastitu, koja može zamijeniti uobičajene utičnice za zidne prekidače bez ikakvih izmjena. Čip ESP8266 omogućuje Wi -Fi
Izgradnja Homie uređaja za IoT ili kućnu automatizaciju: 7 koraka (sa slikama)
Izgradnja Homie uređaja za IoT ili kućnu automatizaciju: Ovo uputstvo dio je moje serije DIY Home Automation, pogledajte glavni članak "Planiranje DIY sistema kućne automatizacije". Ako još ne znate šta je Homie, pogledajte homie-esp8266 + homie od Marvina Rogera. Postoji mnogo senzibilnih
ESP8266-01 IoT pametni mjerač vremena za kućnu automatizaciju: 9 koraka (sa slikama)
ESP8266-01 IoT pametni mjerač vremena za kućnu automatizaciju: UPDATES30/09/2018: Firmware ažuriran na Ver 1.09. Sada sa osnovnom podrškom Sonoff01/10/2018: Probna verzija firmvera 1.10 dostupna za testiranje na ESP8266-01 sa problemima S obzirom na to da su nove ključne riječi Internet stvari (IoT) i kućna automatizacija, odlučio sam