Sadržaj:
- Korak 1: Dekodiranje formata podataka
- Korak 2: Gledajte dublje
- Korak 3: Mapirajte ga
- Korak 4: Zid od opeke naprijed
- Korak 5: Neka funkcionira
- Korak 6: Nešto trajnije
- 7. korak: OpenHAB Config
- Korak 8: Sažetak
Video: Hakiranje LG -jevog kanala za kućnu automatizaciju: 8 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Prije svega - ovo nije još jedan hack za emulaciju infracrvenog daljinskog upravljača. Moj određeni AC nema korisno sučelje dizajnirano za bilo koju vrstu kontrole osim uključenih zidnih pametnih kontrola.
U kući imam obrnuti split sustav LG Ducted. Nažalost, napravljen je u vrijeme kada IoT nije bio visoko na popisu proizvođača. Otkrio sam da ima neke mogućnosti za "glavnu" 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 što je bio dodatak 'Wireless RF Remote' koji bi stvar uvelike olakšao, ali je nemoguće kupiti.
Da je to moj izbor, ne bi bio LG, ali budući da je instaliran u kući kad sam ga kupio (a cijena zamjene vjerojatno bi bila veća od 10 tisuća 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 asistenta
Korak 1: Dekodiranje formata podataka
Pokrenuo 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 osnovni krug za pogon opto izolatora preko podatkovnog pina i spojio drugu stranu opto izolatora kao ulaz na zvučnu karticu računala 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, imao sam osvježen interes da ovaj put probam ovo s malo više odlučnosti.
Objavio sam svoja otkrića na forumima EEVBloga da vidim može li netko rasvijetliti, a u pomoć mi je došao sjajan momak po imenu Ian - iznio 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 oblikovani, 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čke razine na Arduino s 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, ** Ovdje je zapravo 12 bajtova
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 rada AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, način rada HLADNO 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, način zagrijavanja 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, način rada 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 puno više smisla kada ih pogledate u binarnom obliku, ali što je s 13. bajtom ?? Posvuda je…
Korak 3: Mapirajte ga
Pokušajem i pogreškom uspio sam odrediti bitne bitove u 13 bajtova podataka koje bih trebao moći prenijeti.
Korak 4: Zid od opeke naprijed
Tu se zakompliciralo. Morao sam svladati dvije prepreke
a) Činilo se da je 13. bajt kontrolni zbroj podataka koji su mi trebali kako bih nekako razradio.b) Kako onda prenosim podatke? To je samo jedna žica.
Pokazalo se da je pitanje 'a' Zbilja jednostavno, ali čistom slučajnošću uspio sam to zaobići.
U mojim sam testovima gledao podatke poput: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A8320000000140080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Ovo je 13 bajtova podataka uključujući kontrolni zbroj (ovdje u HEX -u umjesto u DEC -u).
Kad sam pretraživao proročište koje je google o 'kako obrnuto inženjerirati kontrolni zbroj', naišao sam na ovu stranicu na razmjeni steka s nekim drugim koji se zvao Nick i pitao je 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 (u otprilike 4 godine) niti jedna osoba nije objavila nikakve informacije o tome kako hakirati protokol na ovim klima uređajima i slučajno sam naletio na nekoga tko 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 s "U".
S tim u ruci, dodao sam ga u svoj kôd kako bih izračunao što sam mislio da bi trebao biti kontrolni zbroj u odnosu na ono što je zapravo bio, ali sve je bilo pogrešno !!
Kako se pokazalo, to je bilo nekako pogrešno. Kad sam počeo binarno gledati brojeve, to je imalo potpunog smisla.
Odgovor iz 'XOR -a s U' uvijek je vraćao 9 bita podataka (9. bit uvijek jedan), ali drugi su bitovi bili točni. Jednostavno sam uklonio 9. bit uzimajući 256 iz dobivenog 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 mu se obratiti - 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.
Također sam dizajnirao jednostavniji sklop za Rx, ali to nije provjereno, pa sam se zbog jednostavnosti držao pretvarača razine.
Korak 5: Neka funkcionira
Jednom kada sam dao krug odašiljanja i s trkaćim srcem, izradio sam (statički) niz od 12 bajtova, izračunao kontrolni zbroj i arduino poslao naredbu - Nevjerojatno, zaslon je ažuriran !!! Pobijediti!
Završni stvarni test bio je dodati moj arduino u BUS sa 2 druga kontrolera za pravi test uživo i sigurno je uspio.
Tako 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 tijekom 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 imati kôd pokrenut 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 s 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 puno problema sa sprečavanjem kontrolera da čita vlastiti izlaz, ali i s ponavljanjem koda koji je objavio iz vlastitih tema koje je primio od MQTT -a natrag u klima uređaj. U osnovi, stvorio bi beskonačnu petlju. Na kraju su neka brisanja međuspremnika i kašnjenja u obradi koda nakon objavljivanja u MQTT -u uspjela riješiti problem.
Rx, Tx pinovi na AC su kodirani kao 3, 4, ali promijenite ih 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 ie 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.
7. korak: OpenHAB Config
Otvorene stavke, kartu web -mjesta i pravila pogledajte u priloženoj datoteci
Kombinirajte ovo s IFTTT OpenHab uvezivanjem i Google asistentom/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 jadnih 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 koliko i meni. U osnovi nema podataka koje bih mogao pronaći (osim kontrolnog zbroja iz '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 vam više nego spreman 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 se, kada je u pitanju kontrola zone, petlja s tim. Puno sam testirao s isključenom jedinicom i otkrio sam da će se zone prikazati kao neaktivne, ali kada jedinica radi, čini se da zaklopke 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 kad je uređaj uključen, to nije bio problem
Također sam ažurirao kôd za objavljivanje samo (na MQTT) promjena koje dolaze od glavnog kontrolera, a ne od glavne jedinice. Ovo bi opet 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 kako bi pokušao spriječiti arduino prijenos u isto vrijeme glavne i glavne jedinice. Siguran sam da vjerojatno 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 unutar 2 sekunde od primitka podatkovnog paketa. Međutim, ponekad se glavna i glavna jedinica prenose vrlo blizu jedna drugoj. Ovo će se vjerojatno 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čeni:
Kako napraviti kućnu automatizaciju temeljenu na IoT -u s upravljačkim relejem senzora NodeMCU: 14 koraka (sa slikama)
Kako napraviti kućnu automatizaciju temeljenu na IoT-u s upravljačkim relejem NodeMCU senzora: U ovom projektu temeljenom na IoT-u 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 može se upravljati s mobitela ili pametnog telefona i, ručnim prekidačem. U automatskom načinu rada ovaj pametniji
Kako napraviti pametni dom pomoću Arduino kontrolnog relejnog modula - Ideje za kućnu automatizaciju: 15 koraka (sa slikama)
Kako napraviti pametni dom pomoću Arduino kontrolnog relejnog modula | Ideje za kućnu automatizaciju: U ovom projektu automatizacije doma osmislit ćemo relejni modul pametne kuće koji može kontrolirati 5 kućanskih aparata. Ovim relejnim modulom može se upravljati s mobitela ili pametnog telefona, IC daljinskog upravljača ili daljinskog upravljača za TV, ručnim prekidačem. Ovaj pametni relej također može osjetiti r
4-kanalni relejni modul s WI-Fi upravljanjem za kućnu automatizaciju: 7 koraka (sa slikama)
4CH relejni modul s WI-Fi upravljanjem za kućnu automatizaciju: Prije sam koristio mnoge WI-FI temeljene na isključenim sklopkama. Ali oni ne odgovaraju mojim zahtjevima. Zato sam htio izgraditi vlastitu, koja može zamijeniti normalne utičnice zidnih prekidača 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 sustava kućne automatizacije". Ako još ne znate što je Homie, pogledajte homie-esp8266 + homie od Marvina Rogera. Mnogo je sen
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 uz Sonoff Basic Support01/10/2018: Probna verzija firmvera 1.10 dostupna za testiranje na ESP8266-01 s problemima S obzirom na to da su nove ključne riječi Internet of Things (IoT) i Home Automation, odlučio sam