Агуулгын хүснэгт:

Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах ажиллагааг хакердах: 8 алхам (зурагтай)
Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах ажиллагааг хакердах: 8 алхам (зурагтай)

Видео: Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах ажиллагааг хакердах: 8 алхам (зурагтай)

Видео: Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах ажиллагааг хакердах: 8 алхам (зурагтай)
Видео: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, Арваннэгдүгээр
Anonim
Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах төхөөрөмжийг хакердах
Гэрийн автоматжуулалтанд зориулагдсан LG суваг хуваах төхөөрөмжийг хакердах

Юуны өмнө - Энэ бол хэт улаан туяаны алсын удирдлагатай эмуляц биш юм. Миний тусгай АС нь хананд суурилуулсан ухаалаг удирдлагаас бусад төрлийн хяналтанд зориулагдсан ашиглах интерфэйсгүй.

Миний гэрт LG Ducted урвуу хуваах систем бий. Харамсалтай нь үүнийг IoT үйлдвэрлэгчдийн жагсаалтад ороогүй байсан үед хийсэн. Энэ нь "мастер" удирдлагын зарим сонголттой болохыг би олж мэдсэн боловч намайг анх оролдож байх үед уг төхөөрөмж дөнгөж 2 настай байсан ч өргөтгөлийн хавтан нь цэвэр бус, үнэ нь одон оронтой байсан. "Утасгүй RF -ийн алсын удирдлага" нэмэлт хэрэгсэл байсан бөгөөд энэ нь зүйлийг илүү хялбар болгож, гэхдээ худалдаж авах боломжгүй байсан юм.

Хэрэв энэ миний сонголт байсан бол энэ нь LG биш байх байсан, гэхдээ би үүнийг худалдаж авахдаа байшинд суулгасан тул (орлуулах зардал нь 10к доллараас хэтрэх магадлалтай) энэ бол миний шийдэх ёстой зүйл байсан юм.

Зорилго - OpenHAB ба IFTTT/Google Assistant -ээр дамжуулан автоматжуулалтын зорилгоор AC -ийг MQTT -ээр хянах боломжтой байх.

Алхам 1: Өгөгдлийн форматыг декодлох

Өгөгдлийн форматыг декодлох
Өгөгдлийн форматыг декодлох
Өгөгдлийн форматыг декодлох
Өгөгдлийн форматыг декодлох

Би энэ процессыг 4 жилийн өмнө эхлүүлсэн боловч тийм ч хол яваагүй бөгөөд төхөөрөмжийг гэмтээх эрсдэлтэй байхыг хүсээгүй.

Хянагчийг хананаас салгахад би газардуулга, 12в ба "дохио" гэж тодорхойлсон 3 утас олов.

Мэдээллийн шугам дээрх дохиоллын хүчдэл 12v байсан боловч мултиметр дээр (шугам дээрх зарим төрлийн импульс) хэлбэлзэж байгааг би анзаарсангүй.

Би талхаар өгөгдлийн зүүгээр дамжуулан опто тусгаарлагчийг жолоодох үндсэн хэлхээнд сууж, оптик тусгаарлагчийн нөгөө талыг компьютерынхаа дууны картын оролт болгон холбож, хамрах хүрээний гаралтын муу хувилбарыг олж авлаа (Зураг 1).

Энэ бол миний олж мэдсэн зүйл юм. Би тэнд ямар нэгэн зүйл байгааг харж байсан, гэхдээ үүнийг хэрхэн яаж тайлахаа мэдэхгүй байв.

Кофены машин IoT -ийг идэвхжүүлснээс хойш энэ удаад арай илүү шийдэмгий байж дахин оролдох сонирхолтой болсон.

Би олж мэдсэн зүйлээ EEVBlog форум дээр нийтэлсэн бөгөөд хэн нэгэн гэрэл гэгээ өгч чадах болов уу, Иан гэдэг мундаг залуу намайг аврахаар ирэв - Тэр үүнийг бүрэн ойлгомжтой байдлаар тайлбарлав (Зураг 2)

Үндсэндээ өгөгдлийн урсгал нь "стандарт цуваа" 13 байт байдаг - 8 өгөгдлийн бит, нэг эхлэх бит, нэг зогсолтын бит (паритетгүй) боловч маш хурдны хурд нь 104bps байна.

Алхам 2: Илүү гүнзгий харагдах

Гүнзгий харагдаж байна
Гүнзгий харагдаж байна

Өгөгдөл хэрхэн форматлагддаг талаар надад ойлголттой болсон тул өгөгдлийг илүү динамик байдлаар унших арга надад хэрэгтэй байв.

Би нэг хянагчаа хананаас сугалж аваад логик түвшний шилжүүлэгчийн тусламжтайгаар Arduino руу энгийн схемээр холбож, 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, Fan MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, Fan HIGH

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, Горим 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, Дулаан горим 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: Тоосго хана урагшаа

Урд тоосго хана!
Урд тоосго хана!
Урд тоосго хана!
Урд тоосго хана!
Урд тоосго хана!
Урд тоосго хана!

Энд л төвөгтэй болсон. Надад даван туулах хоёр бэрхшээл байсан

a) 13 -р байт нь ямар нэгэн байдлаар ажиллахад шаардлагатай өгөгдлийн шалгалтын дүн юм шиг харагдаж байна. b) Би өгөгдлийг яаж дамжуулах вэ? Энэ бол ганц утас юм.

'A' дугаарт гарах нь үнэхээр хялбар байсан, гэхдээ би үүнийг санамсаргүй байдлаар даван туулж чадсан юм.

Туршилтанд би A802000000040F61000000004BB A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000000070080080070080070080000700

Энэ бол хяналтын дүнг багтаасан 13 байт өгөгдөл юм (энд DEC -ийн оронд HEX дээр байна).

Би Google -ийн "хяналтын дүнг хэрхэн яаж буцаах вэ" гэсэн номыг хайж байхдаа би энэ хуудсыг Ник нэртэй өөр хүнтэй надтай уулзахдаа надтай яг ижил зүйлийг асуусан боловч тэд ярилцсан юм. агааржуулагч болон тэдний өгөгдөл минийхтэй бараг ижил форматтай байсан - Энэ байж болох уу ??? Миний бүх хайлт (ойролцоогоор 4 жилийн дотор), нэг ч хүн эдгээр агааржуулагч дээр протоколыг хэрхэн хакердах талаар ямар ч мэдээлэл оруулаагүй бөгөөд би бараг огт холбоогүй зүйлийг хайж байгаад ижил зүйлийг хийж байсан хүнтэй тааралдсан уу? Энэ бол адислал байсан - Тэр үүнийг боловсруулж байгаагаа шийдсэн бөгөөд шийдэл нь: Бүх байтын өгөгдлийг, дараа нь XOR -ийг "U" дээр нэмээрэй.

Үүнийг гартаа оруулснаар би шалгалтын дүнг үнэндээ юу байх ёстой гэж бодсоноо тооцоолохын тулд код руугаа оруулсан боловч энэ нь бүгд буруу байсан !!

Эндээс харахад энэ нь буруу байсан. Би тоонуудыг хоёртын хэлбэрээр харж эхлэхэд энэ нь бүрэн утга учиртай болсон.

'XOR with U' хариулт нь үргэлж 9 бит өгөгдлийг буцааж өгдөг (9 дэх бит нь үргэлж нэг) боловч бусад битүүд зөв байсан. Үр дүнгийн тооноос 256 -г авснаар би 9 -р битийг устгаад дараа нь таарч байна !!

Хэрэв энэ хувь хүн байгаагүй бол би толгойгоо маажсаар байж магадгүй. Түүнд бас малгай байна, гэхдээ би түүнтэй холбоо барьж чадахгүй байна - энэ бол үндсэндээ түүний stackexchange форум дээрх цорын ганц нийтлэл юм. За танихгүй хүнд баярлалаа:)

Дараагийн бэрхшээл бол одоо байгаа хянагчийг дуурайх боломжийг олгодог хэлхээ хийх явдал байв. Би хөтчийн хэлхээний схемийг (Зураг 1 ба Зураг 2) гаргасан боловч хүссэн зүйлээ олж авахын тулд үүнийг хуулбарлах нь надад хэтэрхий төвөгтэй санагдсан. Эцсийн эцэст би аль хэдийн дохиог уншиж байсан. Би илүү хялбар аргыг сонгосон - arduino ашиглан opto тусгаарлагчийг жолоодоход 12 вольтын дохионы шугамыг шаардлагатай хэмжээгээр бага татах боломжтой болсон.

Би бас Rx -ийн хувьд илүү энгийн хэлхээг зохион бүтээсэн боловч энэ нь шалгагдаагүй байгаа тул би түвшний хөрвүүлэгчтэй энгийн байдлаар нийцсэн.

Алхам 5: Үүнийг ажиллуулах

Нэгэнт би дамжуулах хэлхээг талбартай болгож, зүрх сэтгэлээ уралдуулж, 12 байтын (статик) мөрийг боож, хяналтын дүнг тооцоолж, arduino -д тушаалыг илгээв. Гайхалтай нь дэлгэц шинэчлэгдэв !!! Ял!

Эцсийн бодит шалгалт бол миний arduino -г бусад 2 хянагчийн хамт BUS -т нэмж, жинхэнэ амьд тест хийх явдал байв.

Тиймээс одоо би автобусанд уншиж, бичиж чаддаг байсан, гэхдээ үүнийг хийх чадвартай байсан.

Би MQTT -ийг бараг бүх гэрийн автоматжуулалтад ашигладаг тул энэ нь ижил байх нь зүйн хэрэг юм. Би хэд хоногийн турш АС -ийн 4 үндсэн элементийг хянахын тулд код бичиж, одоо байгаа статусыг уншиж өгсөн (автобусны бусад модулиудаас)

Кодыг ESP8266 модуль дээр ажиллуулахыг зорьж байсан боловч ESP8266 нь 104bps хүртэл бага хурд дамжуулах чадваргүй юм шиг санагдаж байна. Би Wiznet ethernet -тэй ерөнхий Arduino Uno руу буцах шаардлагатай болсон, гэхдээ миний комс нь AC хянагчийн нэгээс хананы нөгөө талд байсан тул тийм ч хэцүү биш байсан.

Код нь хаа сайгүй байдаг боловч ойлгомжтой байх ёстой. Надад хянагчийг өөрийн гаралтыг уншихаас урьдчилан сэргийлэх, мөн MQTT -ээс хүлээн авсан кодоо давтахаас эхлээд aircon руу буцааж өгөхөд маш их асуудалтай байсан. Үндсэндээ энэ нь хязгааргүй гогцоо үүсгэх болно. Эцэст нь 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 - Fan low, med, highha/mod/5557/Z өөрөөр хэлбэл 1111 нь бүх бүсэд 1000 дээр, зөвхөн 1 -р бүс дээр.

** Хянагчаас бүсүүдийг '0000' болгож тохируулах боломжгүй, гэхдээ хэрэв та утгыг гаргавал "1000" руу буцах болно.

Кодын хамгийн сүүлийн хувилбарыг миний GitHub репо дээрээс авах боломжтой:

Алхам 6: Илүү байнгын зүйл

Илүү байнгын зүйл
Илүү байнгын зүйл
Илүү байнгын зүйл
Илүү байнгын зүйл

Би arduino -ийн прототип хавтанг цуглуулж, бүх эд ангиудыг талхтай болгосон.

Алхам 7: OpenHAB -ийн тохиргоо

OpenHAB -ийн зүйл, сайтын зураг, дүрмийг хавсаргасан файлыг үзнэ үү

Үүнийг IFTTT OpenHab холбох хэрэгсэл болон Google Assistant/Home -тэй хослуулснаар та худалдаанд байгаа бараг бүх бүтээгдэхүүнээс давсан маш хүчирхэг дуу хоолойгоор удирддаг ба/эсвэл 'ухаалаг' агааржуулагчтай болно.

Алхам 8: Дүгнэлт

Дүгнэлт - Хэрэв та бага зэрэг хөгшин LG суваг хуваах агааржуулагчтай ядуу хүмүүсийн нэг бол та ганцаараа биш юм. Бидний хувьд итгэл найдвар байсаар байна!

Энэхүү зааварчилгаа нь над шиг надад хэрэгтэй байгаа хүнийг олно гэж найдаж байна. Надад олж болох мэдээлэл ерөөсөө байхгүй ('Ник' -ийн шалгалтын дүнгээс бусад). Би эхнээс нь эхлэх хэрэгтэй байсан ч үр дүнд нь баярлаж байна.

Мэдээлэл нь миний ойлгомжгүй байгаа боловч хэрэв та надтай ижил нөхцөл байдалд байгаа бол би туслахад бэлэн байх болно.

- Анхааруулга / Шинэчлэлт --- Хэдийгээр унтраасан төхөөрөмжөөр АС-ийн тохиргоог өөрчлөх боломжтой боловч бүсийн удирдлагын хувьд энэ нь замбараагүй мэт санагдаж байгааг би олж мэдсэн. Би төхөөрөмжийг унтраасан үед маш их туршилт хийсэн бөгөөд бүсүүд идэвхгүй харагдаж байгааг олж мэдсэн боловч төхөөрөмж ажиллаж байх үед хаалт нь бүрэн хаагдаагүй байгаа бололтой (гэхдээ бас бүрэн нээгдээгүй байна). Би төхөөрөмжийг үндсэн таслагч дээр дахин тохируулсан бөгөөд энэ нь асуудлыг шийдсэн. Зөвхөн төхөөрөмжийг асаах үед зөвхөн бүсийг өөрчилдөг тул энэ нь асуудал биш юм

Би мөн кодыг үндсэн нэгж биш харин мастер контроллероос ирдэг өөрчлөлтүүдийг нийтлэхийн тулд (MQTT руу) шинэчлэв. Дахин хэлэхэд энэ нь асуудал үүсгэж болзошгүй, учир нь үндсэн нэгж нь бүсүүдэд '0000' илгээдэг (энэ нь бас асуудал байж магадгүй юм)

Шинэчилсэн код нь arduino -г мастер болон үндсэн нэгжийн дамжуулалтаас урьдчилан сэргийлэхийн тулд цаг хугацааны хязгаарлалтыг бий болгодог. Илгээхийн өмнө Xms -ийн шугамыг бага татах гэх мэт өгөгдөл дамжуулах ажлыг эхлүүлэхийн тулд хянагч ашигладаг арга байдаг гэдэгт би итгэлтэй байна, гэхдээ хэрэв байгаа бол би хараахан олж чадаагүй байна

Үндсэн хэсэг нь 60 секунд тутамд, мастер хянагч 20 секунд тутамд мэдээлэл илгээдэг болохыг олж мэдсэн. Код нь өгөгдлийн пакет хүлээн авснаас хойш 2 секундын дотор өгөгдөл илгээхийг зогсоохыг оролддог. Гэсэн хэдий ч заримдаа мастер ба үндсэн нэгж хоорондоо маш ойрхон дамжуулдаг. Үүнийг удахгүй илүү боловсронгуй болгох байх.----------------------------

** Шинэ нэгжүүд дээр ажиллах боломжтой

*** Миний хийсэн судалгаагаар олж авсан зарим мэдээлэл нь Panasonic сувгийн хуваалт нь ижил протоколыг ашиглаж болохыг харуулж байна. YMMV.

Зөвлөмж болгож буй: