Мазмұны:

LG -дің үйдегі автоматтандыруға арналған бөлуді бұзу: 8 қадам (суреттермен)
LG -дің үйдегі автоматтандыруға арналған бөлуді бұзу: 8 қадам (суреттермен)

Бейне: LG -дің үйдегі автоматтандыруға арналған бөлуді бұзу: 8 қадам (суреттермен)

Бейне: LG -дің үйдегі автоматтандыруға арналған бөлуді бұзу: 8 қадам (суреттермен)
Бейне: Bespoke Life 2023 | Samsung KZ 2024, Қараша
Anonim
LG -дің үйді автоматтандыруға арналған бөлгішті бұзу
LG -дің үйді автоматтандыруға арналған бөлгішті бұзу

Біріншіден - бұл инфрақызыл қашықтан басқару құралының эмуляциясы емес. Менің нақты айнымалы токта қабырғаға бекітілген ақылды басқару элементтерінен басқа кез келген басқаруға арналған қолдануға болатын интерфейс жоқ.

Менің үйімде LG Ducted кері сплит жүйесі бар. Өкінішке орай, бұл IoT өндірушілер тізімінде жоғары болмаған уақытта жасалды. Мен оның «шебер» бақылауының бірнеше нұсқалары бар екенін білдім, бірақ мен бұл әрекетті алғаш рет жасаған кезде қондырғы небәрі 2 жаста болғанына қарамастан, кеңейту тақталары урансыз және бағасы астрономиялық болды. «Қашықтан сымсыз қашықтан басқару пульті» қосымшасы сияқты, бұл біршама жеңілдететін, бірақ сатып алу мүмкін емес еді.

Егер бұл менің таңдауым болса, бұл LG болмас еді, бірақ мен оны сатып алған кезде үйде орнатылғандықтан (және оны ауыстыру құны 10 мың доллардан асуы мүмкін), мен онымен күресуге тура келді.

Мақсаты - OpenHAB және IFTTT/Google Assistant арқылы автоматтандыру мақсатында айнымалы токты MQTT арқылы басқара білу.

1 -қадам: Деректер форматын декодтау

Мәліметтер форматын декодтау
Мәліметтер форматын декодтау
Мәліметтер форматын декодтау
Мәліметтер форматын декодтау

Мен бұл процесті 4 жыл бұрын бастадым, бірақ алысқа бармадым және қондырғыға зақым келтіру қаупін қаламадым, әсіресе оның бөлшектерін табу мүмкін емес сияқты.

Контроллерді қабырғадан жұлып алып, мен 3 сымды таптым, олар жерге қосылатын, 12 вольтты және «сигналды»

Деректер желісіндегі сигналдық кернеу 12в болды, бірақ мен мультиметрде өзгеретінін байқадым (желідегі импульстердің бір түрі).

Мен нанға оптикалық изоляторды деректер түйреуіші арқылы жүргізуге арналған негізгі схемаға отырдым және опто изолятордың екінші жағын компьютердің дыбыстық картасына кіріс ретінде қостым және ауқымды шығудың нашар нұсқасын алдым (1 -сурет).

Бұл мен алған уақытқа дейін - мен онда бірдеңе бар екенін көрдім, бірақ оны қалай «декодтауды» білмедім.

Менің Coffee Machine IoT қосылғаннан кейін, мен бұл жолы тағы да шешім қабылдауға тырысамын.

Мен өз нәтижелерімді EEVBlog форумдарында жарияладым, әлде біреу жарық түсіре алатынын білу үшін және Иэн есімді керемет жігіт маған көмекке келді - ол мұны толық түсінікті етіп берді (2 -сурет)

Негізінде, деректер ағыны «стандартты сериялық» 13 байтты құрайды - 8 бит биті, бір басталу және бір тоқтау биті (паритет жоқ), бірақ өте төмен жылдамдықпен 104 секунд.

2 -қадам: тереңірек қарау

Тереңірек қарау
Тереңірек қарау

Енді менде деректердің қалай пішімделетіні туралы түсінік болғаннан кейін маған деректерді неғұрлым динамикалық түрде оқу мүмкіндігі қажет болды.

Мен контроллерлерімнің бірін қабырғаға шығардым және оны логикалық деңгей ауыстырғыш арқылы Arduino -ға жалғадым, ол 13 байт деректерді 104 бит жылдамдықпен конфигурацияланған бағдарламалық жасақтама порты арқылы оқу және оны басып шығару үшін:

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, Желдеткіш MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, Желдеткіш жоғары

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, HEAT режимі 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 -қадам: кірпіш қабырға алда

Кірпіш қабырға алда!
Кірпіш қабырға алда!
Кірпіш қабырға алда!
Кірпіш қабырға алда!
Кірпіш қабырға алда!
Кірпіш қабырға алда!

Бұл жерде күрделі болды. Менде екі кедергілер болды

а) 13 -ші байт маған қандай да бір жолмен жұмыс жасау үшін қажет деректердің бақылау сомасы болып көрінді. b) Деректерді қалай жіберемін? Бұл тек бір сым.

«А» шығарылымы өте оңай болып шықты, бірақ мен кездейсоқтықтан өтіп кеттім.

A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000149C00000000A7: менің тест, Мен сияқты деректерге қарап өтті

Бұл бақылау сомасын қосқанда 13 байт деректер (мұнда DEC орнына HEX -те).

Мен google -дегі «бақылау сомасын қалай кері қайтару керек» туралы оральды іздегенде, мен бұл бетті стек алмасуда Ник есімді басқа біреумен кездестірдім, менімен дәл сол нәрсені сұрайды, бірақ олар ғана емес, олар сөйлесті кондиционер мен олардың деректері менікі сияқты дерлік форматта болды - Мүмкін бе ??? Менің барлық ізденістерімде (шамамен 4 жыл) бірде -бір адам кондиционерлерде протоколды бұзу туралы ешқандай ақпарат бермеді, мен мүлде қатысы жоқ нәрсені іздеп, дәл солай істеп жүрген адамға тап болдым ба? Бұл бата болды - ол тіпті оны жасағанын жариялады және шешім болды: барлық байт деректерін, содан кейін XOR -ды «U» арқылы қосыңыз.

Бұл қолмен мен бақылау коды шынымен болғанға қарсы болуы керек деп санау үшін оны кодыма қостым, бірақ бәрі қате болды !!

Белгілі болғандай, бұл қате болды. Мен сандарды екілік түрде қарай бастаған кезде, бұл толық мағынасы болды.

'XOR with U' жауабы әрқашан 9 бит деректерді қайтарады (9 -бит әрқашан бір), бірақ басқа биттер дұрыс болды. Мен жай ғана алынған саннан 256 алу арқылы 9 -шы битті алып тастадым, содан кейін ол сәйкес келді !!

Егер бұл адам болмаса, мен әлі де басымды тырнап алар едім. Оған шляпалар да бар, бірақ мен онымен байланыса алмаймын - бұл оның stackexchange форумындағы жалғыз жазбасы. Жақсы, бейтаныс адамға рахмет:)

Келесі қиындық - бұл қолданыстағы контроллерді модельдеуге мүмкіндік беретін схеманы құру. Мен жетекші схеманың схемасын жасадым (Pic1 және Pic 2), бірақ мен қалаған нәрсені алу үшін оны жаңғырту қажет болды. Мен қазірдің өзінде сигналды оқыдым. Мен әлдеқайда қарапайым әдісті таңдадым - arduino көмегімен оптикалық изоляторды жүргізіп, 12 вольтты сигнал желісін қажетіне қарай төмендетіңіз.

Мен сондай -ақ Rx үшін қарапайым схеманы ойлап таптым, бірақ бұл тексерілмеген, мен қарапайымдылық үшін деңгейлік түрлендіргішті қолдануды аяқтадым.

5 -қадам: жұмыс жасау

Бірде мен таратқыш схеманы тақтаға қойып, жүрегім жарыла отырып, мен 12 байтты (статикалық) тізбекті бұздым, бақылау сомасын есептедім және arduino командасын жібердім - таңқаларлық, дисплей жаңартылды !!! Жеңу!

Ақырғы нақты тест - бұл менің ардуиномды автобусқа басқа 2 контроллермен қосу, бұл нағыз тірі тест және ол сенімді болды.

Енді мен автобуста оқи да, жаза да алатын едім, бірақ оны жай ғана жасай алмадым.

Мен MQTT -ді тек үйдегі барлық автоматтандыру үшін қолданатындықтан, бұл солай болатыны заңды болды. Мен кодты бірнеше күн ішінде айнымалы токтың 4 негізгі элементін басқару үшін жаздым, сонымен қатар қолданыстағы күйді оқыдым (BUS -тағы басқа модульдерден)

Нысан ESP8266 модулінде жұмыс істейтін код болуы еді, бірақ ESP8266 104 секундқа дейін жылдамдықты жібере алмайтын сияқты. Мен Wiznet ethernet көмегімен жалпы Arduino Uno -ға қайта оралуым керек болды, бірақ бұл қиын емес, өйткені менің коммерлерім айнымалы ток контроллерлерінің бірінен қабырғаның екінші жағында орналасқан.

Код барлық жерде аз, бірақ түсінікті болуы керек. Менде контроллердің өз шығысын оқуына жол бермеуде, сонымен қатар MQTT -тен кондиционерге қайтарылған өзінің жарияланған тақырыптарын қайталауда көптеген мәселелер болды. Негізінде, бұл шексіз цикл жасайды. Ақыр соңында, MQTT -те жарияланғаннан кейін кейбір буферлік тазарту және кодты өңдеудің кешігуі оны сұрыптады.

Айнымалы токқа Rx, Tx түйреуіштері 3, 4 деп кодталған, бірақ қаласаңыз өзгертіңіз

Код келесідей командаларды жариялауға және қабылдауға конфигурацияланған:

ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - Салқын режим, Ылғалдандыру, желдеткіш, Авто, Heatha/mod/5557/F 0/1/2 - Желдеткіш төмен, мед, highha/mod/5557/Z, яғни 1111 барлық аймақтар үшін 1000 -да тек 1 -ші аймақ үшін.

** Контроллерден аймақтарды '0000' деп орнату мүмкін емес, бірақ егер сіз мәнді шығарсаңыз, ол '1000' мәніне қайтады.

Кодтың соңғы нұсқасы менің GitHub репозиторийімде қол жетімді:

6 -қадам: Тұрақты нәрсе

Тұрақты нәрсе
Тұрақты нәрсе
Тұрақты нәрсе
Тұрақты нәрсе

Мен arduino прототипі тақтасын жинап, барлық бөлшектерді нанға отырғызып қойдым.

7 -қадам: OpenHAB конфигурациясы

OpenHAB элементтері, сайт картасы мен ережелері үшін берілген файлды қараңыз

Мұны IFTTT OpenHab байланыстырғышымен және Google Assistant/Home көмегімен біріктіріңіз, сонда сізде дауысты басқаратын және/немесе «ақылды» кондиционер бар, ол коммерциялық қол жетімді барлық өнімдерден асып түседі!

8 -қадам: Қорытынды

Қорытындыда - егер сіз LG контурлы кондиционері бар LG -дан сәл асқан кедей жандардың бірі болсаңыз, сіз жалғыз емессіз. Бізге әлі де үміт бар!

Бұл нұсқаулық маған қажет сияқты біреуді табады деп сенемін. Мен таба алатын ақпарат жоқ («Ник» бақылау сомасынан басқа). Мен нөлден бастауым керек еді, бірақ нәтижеге қуанамын.

Ақпарат маған түсініксіз, бірақ егер сіз менің жағдайымда болсаңыз, мен көмектесуге дайынмын.

- Ескерту / Жаңарту --- Айнымалы токтың параметрлерін Өшіру қондырғысымен өзгертуге болатынына қарамастан, мен аймақты басқару туралы айтатын болсақ, ол онымен шатасатын сияқты екенін байқадым. Мен құрылғыны өшіргенде көптеген сынақтар жасадым, мен аймақтар белсенді емес болып көрінетінін білдім, бірақ қондырғы жұмыс істеп тұрған кезде, демпферлер толық жабылмаған сияқты (бірақ толық ашылмаған). Мен құрылғыны негізгі ажыратқышқа қалпына келтірдім және бұл мәселені шешті. Құрылғы қосылған кезде ғана аймақтар өзгеретіндіктен, бұл проблема болмады

Мен сонымен қатар кодты негізгі блоктан емес, негізгі контроллерден келетін өзгерістерді жариялау үшін (MQTT -ге) жаңарттым. Тағы да, бұл проблемалар тудыруы мүмкін, себебі негізгі блок аймақтарға '0000' жібереді (бұл мәселе де болуы мүмкін еді)

Жаңартылған код сонымен қатар ардуиноның негізгі және негізгі блоктың бір уақытта берілуіне жол бермеу үшін уақыт шектеулерін енгізеді. Мен контроллер деректерді жіберуді бастау үшін Xms үшін төмен сызықты тарту сияқты қолданатын әдіс бар екеніне сенімдімін, бірақ егер бар болса, мен оны әлі ашқан жоқпын

Мен негізгі қондырғы әр 60 секунд сайын, ал басты контроллер әр 20 секунд сайын жіберетінін білдім. Код деректер пакетін алғаннан кейін 2 секунд ішінде деректерді жіберуді тоқтатуға тырысады. Дегенмен, кейде басты және негізгі блок бір -біріне өте жақын жібереді. Бұл жақын арада нақтыланатын шығар.----------------------------

** Жаңа қондырғыларда жұмыс істей алады

*** Менің зерттеу сапарларымнан табылған кейбір ақпарат Panasonic -тің түтікке бөлінуі бірдей протоколды қолдануы мүмкін екенін көрсетті. YMMV.

Ұсынылған: