Sisukord:
- Samm: andmevormingu dekodeerimine
- 2. samm: vaadake sügavamale
- 3. samm: selle kaardistamine
- 4. samm: telliskivisein ees
- Samm: pange see tööle
- 6. samm: midagi püsivamat
- Samm 7: OpenHAB Config
- 8. samm: kokkuvõte
Video: Koduautomaatika häkkimine LG kanaliga Split: 8 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Esiteks - see pole järjekordne infrapuna kaugjuhtimispuldi jäljendamise häkkimine. Minu konkreetsel vahelduvvoolul pole kasutatavat liidest, mis oleks ette nähtud mis tahes muu juhtimise jaoks, välja arvatud komplektis olevad nutikad juhtimisseadmed.
Mul on majas LG Ducted reverse split süsteem. Kahjuks tehti see ajal, mil asjade internet ei olnud ühegi tootja nimekirjas kõrgel kohal. Avastasin, et sellel on mõned põhijuhtimise võimalused, kuid kuigi seade oli minu proovimise ajal vaid 2 -aastane, olid laienemisplaadid mittesobivad ja hinnad olid astronoomilised. Nagu ka juhtmevaba RF -kaugjuhtimispuldi lisand, mis oleks asju palju lihtsamaks muutnud, kuid võimatu osta.
Kui see oleks olnud minu valik, poleks see LG, kuid kuna see paigaldati majja, kui ma selle ostsin (ja selle asendamiskulu oleks tõenäoliselt üle 10 000 dollari), pidin sellega tegelema.
Eesmärk - Võimalik juhtida vahelduvvoolu MQTT kaudu automatiseerimiseks OpenHABi ja IFTTT/Google'i assistendi kaudu
Samm: andmevormingu dekodeerimine
Alustasin seda protsessi 4 aastat tagasi, kuid ei jõudnud väga kaugele ega tahtnud riskida seadme kahjustamisega - eriti kuna selle osi on peaaegu võimatu leida.
Kontrolleri seinalt maha rebides leidsin 3 juhtmest, mille määrasin maanduseks, 12v ja signaaliks
Andmeliini signaalipinge oli 12v, kuid märkasin, et see tundus multimeetril kõikuvat (mingid impulssid liinil).
Leib läksin põhiahelasse, et juhtida optoisolaatorit andmeside kaudu, ja ühendasin optoisolaatori teise külje oma arvuti helikaardi sisendiks ja sain ulatuse väljundi halva versiooni (joonis 1).
See on umbes nii kaugele, kui ma tol ajal jõudsin - nägin, et seal on midagi, kuid ei teadnud, kuidas seda dekodeerida.
Pärast kohvimasina IoT lubamist tekkis mul huvi uuendada seda seekord veidi kindlameelsemalt.
Postitasin oma leiud EEVBlogi foorumitesse, et näha, kas keegi suudab valgust heita ja mulle tuli appi suurepärane tüüp nimega Ian - ta pani selle välja nii, et see oli täiesti mõistlik (pilt 2)
Põhimõtteliselt on andmevoog 13 baiti „standardseeria” - 8 andmebitti, üks stardibitt ja üks stopp -bitt (ilma pariteedita), kuid VÄGA madala edastuskiirusega - 104 bps.
2. samm: vaadake sügavamale
Nüüd, kui mul oli ettekujutus andmete vormindamisest, vajasin ma võimalust, et saaksin andmeid dünaamilisemalt lugeda.
Tõmbasin ühe oma kontrolleri seinalt maha ja ühendasin selle loogilise taseme nihutaja abil lihtsa visandiga Arduino külge, et lugeda 13 baiti andmeid 104bps konfigureeritud tarkvara jadapordi kaudu ja printida see välja:
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, ** Tegelikult 12 baiti siin
Meil oli tegevust!
Kontrolleri erinevaid seadeid muutes suutsin välja selgitada muutuvad baidid:
168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, ventilaator LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, ventilaator MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, ventilaator kõrge
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, režiim FAN 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, režiim AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, režiim COOL 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, režiim HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, režiim 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, temperatuur 30
Numbrid on palju mõttekamad, kui neid binaarselt vaadata, aga mis on 13. baidiga ?? See on igal pool…
3. samm: selle kaardistamine
Katse -eksituse meetodil suutsin kindlaks määrata 13 baiti andmeid, mida oleks vaja edastada.
4. samm: telliskivisein ees
Siin läks asi keeruliseks. Mul oli kaks takistust ületada
a) 13. bait tundus olevat andmete kontrollsumma, mida ma pidin kuidagi välja töötama. b) Kuidas ma siis andmeid edastan? See on ainult üks traat.
Probleem „a” osutus TÕELISELT lihtsaks, kuid mul õnnestus sellest puhtalt juhuslikult mööda saada.
Oma testides vaatasin selliseid andmeid nagu: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A8320000000000
See on 13 baiti andmeid, sealhulgas kontrollsumma (siin DEC asemel HEX).
Kui ma otsisin oraaklist, mis on google'is teemal "kuidas kontrollida kontrollsummat", siis leidsin selle lehe stäkkivahetuses kellegi teise nimega Nick, kes küsis peaaegu sama asja nagu mina, aga mitte ainult, nad rääkisid kliimaseadme kohta ja nende andmed olid peaaegu samas vormingus kui minu omad - kas see võib olla ??? Kogu minu otsingute ajal (umbes 4 aasta jooksul) polnud ükski inimene postitanud teavet selle kohta, kuidas nende kliimaseadmete protokolli häkkida, ja ma lihtsalt satun kellegi sama asja otsa, otsides midagi peaaegu täiesti mitteseotud? See oli õnnistus - ta isegi postitas, et töötas selle välja ja lahendus oli järgmine: lisage kõik baidid andmeid ja seejärel XOR tähega „U”.
Kui see käes, lisasin selle oma koodi, et arvutada, mis minu arvates peaks kontrollsumma olema ja mis see tegelikult oli, kuid see kõik oli vale!
Nagu selgub, oli see kuidagi vale. Kui hakkasin numbreid binaarselt vaatama, oli see täiesti loogiline.
Vastus 'XOR koos U'ga andis alati tagasi 9 bitti andmeid (9. bitti alati üks), kuid teised bitid olid õiged. Ma lihtsalt eemaldasin 9. bitti, võttes saadud numbrist 256 ja siis see sobis !!
Kui see poleks olnud selle isiku jaoks, võin ma ikkagi pead kriimustada. Müts maha ka tema ees, aga ma ei saa temaga ühendust - See oli põhimõtteliselt tema ainus postitus stackexchange foorumis. No aitäh võõras:)
Järgmine väljakutse oli vooluringi tegemine, mis võimaldaks mul olemasolevat kontrollerit simuleerida. Kaardistasin ajami vooluahela skemaatika (Pic1 ja Pic 2), kuid see tundus mulle liiga keeruline, et oleksin vaja seda reprodutseerida, et saada seda, mida soovisin. Lõppude lõpuks lugesin juba signaali. Valisin palju lihtsama meetodi - arduino kasutamine optilise isolaatori juhtimiseks, et tõmmata 12v signaaliliin vastavalt vajadusele madalale.
Ma kavandasin ka Rx jaoks lihtsama vooluringi, kuid seda pole testitud, jäin lihtsuse huvides taseme muunduri juurde.
Samm: pange see tööle
Kui lasin edastusahela leivaplaadile paigaldada ja võidusõidu südamega panin kokku 12 -baidise (staatilise) stringi, arvutasin kontrollsumma ja lasin arduinol käsu saata - Hämmastavalt, kuvarit värskendati !!! Võida!
Viimane tegelik test oli lisada minu arduino BUS -i koos kahe teise kontrolleriga tõelise reaalajas testi jaoks ja kindlasti see töötas.
Nii et nüüd oskasin bussi lugeda ja kirjutada, kuid lihtsalt puudus oskus seda lihtsalt teha.
Kuna kasutan MQTT -d peaaegu eranditult kogu oma koduautomaatika jaoks, oli loomulik, et see on sama. Kirjutasin koodi välja mitme päeva jooksul, et juhtida vahelduvvoolu nelja põhielementi, lugedes ka olemasolevat olekut (teistest bussi moodulitest)
Eesmärk oli lasta kood töötada ESP8266 moodulil, kuid tundub, et ESP8266 ei suuda toota nii madalat andmeedastuskiirust kui 104 bps. Ma pidin pöörduma tagasi üldise Arduino Uno juurde koos Wiznet Ethernetiga, kuid see ei olnud raske, kuna mu kommide riiul asus sõna otseses mõttes ühe vahelduvvoolukontrolleri teisel pool seina.
Kood on natuke kõikjal, kuid peaks olema loetav. Mul oli palju probleeme sellega, et takistada kontrolleril oma väljundi lugemist, aga ka selle enda koodi kordamist, mis on tema enda avaldatud teemad, mis on MQTT -lt kliimaseadmesse tagasi saadetud. Põhimõtteliselt tekitaks see lõpmatu ahela. Lõpuks said mõned puhvri kustutamised ja viivitused koodi töötlemisel pärast MQTT -s avaldamist lahendatud.
Rx, Tx tihvtid vahelduvvoolule on kodeeritud 3, 4, kuid muutke, kui soovite
Kood on konfigureeritud avaldama ja aktsepteerima käske sellisena:
ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - režiim Cool, Dehumidify, Fan, Auto, Heatha/mod/5557/F 0/1/2 - Ventilaator madal, keskmine, kõrge/mod/5557/Z, st 1111 kõigi tsoonide puhul 1000 -l, kui tsoon 1 on sisse lülitatud.
** Kontrollerilt ei saa tsoone seada väärtusele '0000', kuid tundub, et kui väärtuse väljastate, naaseb see väärtusele '1000'.
Koodi uusim versioon on saadaval minu GitHubi repost:
6. samm: midagi püsivamat
Kogusin kokku arduino prototüüpplaadi ja paigaldasin kõik osad nii, nagu lasin need leivale panna.
Samm 7: OpenHAB Config
Vaadake lisatud faili OpenHABi üksuste, saidiplaani ja reeglite kohta
Kombineerige see IFTTT OpenHabi sidumise ja Google'i assistendi/koduga ning teil on väga võimas hääljuhtimisega ja/või nutikas õhukonditsioneer, mis ületab peaaegu kõiki kaubanduslikult saadavaid tooteid!
8. samm: kokkuvõte
Kokkuvõtteks - kui olete üks vaestest hingedest, kellel on pisut vanem LG kanaliga split -konditsioneer, pole te üksi. Meil on veel lootust!
Loodan, et see õpetatav leiab kellegi, kes vajab seda sama palju kui mina. Põhimõtteliselt ei leia ma mingit teavet (välja arvatud "Nick" kontrollsumma). Pidin alustama nullist, kuid olen tulemusest vaimustuses.
Teave on natuke ebamäärane, kuid ma olen valmis teid aitama, kui olete samas olukorras nagu mina.
- Ettevaatust / Värskendus --- Kuigi vahelduvvoolu seadeid on võimalik muuta, kui seade on välja lülitatud, olen avastanud, et tsooni juhtimise osas tundub see sellega segi minevat. Tegin palju katseid väljalülitatud seadmega ja leidsin, et tsoonid kuvatakse mitteaktiivsena, kuid seadme töötamise ajal tundub, et siibrid pole täielikult suletud (kuid mitte täielikult avatud). Lähtestasin seadme pealülitil ja see lahendas probleemi. Kuna tsoone vahetatakse ainult siis, kui seade on sisse lülitatud, pole see probleem olnud
Olen ka koodi uuendanud, et avaldada ainult (MQTT -sse) muudatused, mis tulevad peakontrollerilt, mitte põhiseadmelt. See võib taas probleeme tekitada, sest põhiseade saadab tsoonide jaoks '0000' (mis võis ka probleem olla)
Värskendatud kood kehtestab ka ajapiirangud, et vältida arduino edastamist samaaegselt põhi- ja põhiseadmest. Olen kindel, et on tõenäoliselt olemas meetod, mida kontroller kasutab andmete saatmiseks, näiteks Xms -i joone madalaks tõmbamine enne saatmist, kuid ma pole seda veel avastanud
Avastasin, et põhiseade saadab andmeid iga 60 sekundi järel ja peakontroller iga 20 sekundi järel. Kood üritab andmete saatmist peatada 2 sekundi jooksul pärast andmepaketi vastuvõtmist. Kuid mõnikord edastavad kapten ja põhiseade üksteisele väga lähedal. Tõenäoliselt täpsustatakse seda varsti veelgi.----------------------------
** Võib töötada uuemate seadmetega
*** Mõni minu uurimisreisidel leitud teave näitas, et Panasonicu kanalitoru võib kasutada sama protokolli. YMMV.
Soovitan:
Patareitoitega ukseandur koos koduautomaatika integreerimisega, WiFi ja ESP-NOW: 5 sammu (koos piltidega)
Patareitoitega ukseandur koos koduautomaatika integreerimisega, WiFi ja ESP-NOW Olen näinud veel mõningaid toredaid andureid ja häiresüsteeme, kuid tahtsin selle ise teha. Minu eesmärgid: andur, mis tuvastab doo ja teatab sellest
Traadita kaugjuhtimispult, kasutades 2,4 GHz NRF24L01 moodulit koos Arduinoga - Nrf24l01 4 kanaliga / 6 kanaliga saatja vastuvõtja nelikopterile - Rc helikopter - Rc lennuk Arduino abil: 5 sammu (piltidega)
Traadita kaugjuhtimispult, kasutades 2,4 GHz NRF24L01 moodulit koos Arduinoga | Nrf24l01 4 kanaliga / 6 kanaliga saatja vastuvõtja nelikopterile | Rc helikopter | Rc -lennuk Arduino abil: Rc -auto käitamiseks | Quadcopter | Droon | RC lennuk | RC paat, meil on alati vaja vastuvõtjat ja saatjat, oletame, et RC QUADCOPTERi jaoks on vaja 6 kanaliga saatjat ja vastuvõtjat ning seda tüüpi TX ja RX on liiga kulukad, nii et teeme selle oma
Mitme kanaliga analüsaator MCA koos gammaspektroskoopia NaI (Tl) detektoriga: 5 sammu
Mitme kanaliga analüsaator MCA koos gammaspektroskoopiaga NaI (Tl) detektor: Tere, tere tulemast kõigile huvilistele gammaspektroskoopia vastu. Selles lühikeses artiklis tahan lihtsalt jagada oma töölogi protsessi omatehtud DIY gammaspektroskoopia detektori loomiseks MCA-ga. See ei ole juhend, jagan ainult selle protsessi fotosid. Kui
Ehitage nelja kanaliga SSM2019 Phantom Powered Mic Preamp: 9 sammu (koos piltidega)
Ehitage nelja kanaliga SSM2019 fantoomjõulise mikrofoni eelvõimendi: nagu olete võib-olla mõnest mu juhendist märganud, on mul kirg heli vastu. Olen ka DIY mees, kes läheb tagasi. Kui mul oli USB -heliliidese laiendamiseks vaja veel nelja mikrofoni eelvõimendi kanalit, teadsin, et see on isetegemise projekt
VNH2SP30 koletismootorimooduli (ühe kanaliga) õpetus: 6 sammu (koos piltidega)
VNH2SP30 koletismootorimooduli (ühe kanaliga) õpetus: Kirjeldus Seadmel on topelt monoliitne kõrge külgjuht ja kaks madala külje lülitit. Kõrge külje juhi lüliti on loodud STMicroel