विषयसूची:

होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना: 8 कदम (चित्रों के साथ)
होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना: 8 कदम (चित्रों के साथ)

वीडियो: होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना: 8 कदम (चित्रों के साथ)

वीडियो: होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना: 8 कदम (चित्रों के साथ)
वीडियो: Sensibo Air Smart AC Controller With HomeKit 2024, नवंबर
Anonim
होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना
होम ऑटोमेशन के लिए एलजी डक्टेड स्प्लिट को हैक करना

सबसे पहले - यह एक और इन्फ्रारेड रिमोट कंट्रोल इम्यूलेशन हैक नहीं है। मेरे विशेष एसी में शामिल वॉल माउंटेड स्मार्ट नियंत्रणों के अलावा किसी भी प्रकार के नियंत्रण के लिए डिज़ाइन किया गया कोई उपयोगी इंटरफ़ेस नहीं है।

मेरे घर में एलजी डक्टेड रिवर्स स्प्लिट सिस्टम है। दुर्भाग्य से यह ऐसे समय में बनाया गया था जब IoT किसी भी निर्माता सूची में उच्च नहीं था। मुझे पता चला कि इसमें 'मास्टर' नियंत्रण के लिए कुछ विकल्प थे, लेकिन मेरे द्वारा पहली बार प्रयास करने के समय यूनिट केवल 2 वर्ष की थी, विस्तार बोर्ड अविभाज्य थे और कीमतें वैसे भी खगोलीय थीं। जैसा कि 'वायरलेस आरएफ रिमोट' एडऑन था जो चीजों को बहुत आसान बना देता लेकिन खरीदना असंभव हो जाता।

अगर यह मेरी पसंद होती, तो यह एलजी नहीं होता, लेकिन चूंकि इसे घर में स्थापित किया गया था जब मैंने इसे खरीदा था (और इसकी प्रतिस्थापन लागत $ 10k से अधिक होगी) यही मुझे निपटना था।

उद्देश्य - OpenHAB और IFTTT / Google सहायक के माध्यम से स्वचालन के प्रयोजनों के लिए MQTT के माध्यम से AC को नियंत्रित करने में सक्षम होना

चरण 1: डेटा प्रारूप को डिकोड करना

डेटा प्रारूप को डिकोड करना
डेटा प्रारूप को डिकोड करना
डेटा प्रारूप को डिकोड करना
डेटा प्रारूप को डिकोड करना

मैंने इस प्रक्रिया को 4 साल पहले शुरू किया था, लेकिन बहुत दूर नहीं गया और यूनिट को नुकसान पहुंचाने का जोखिम नहीं उठाना चाहता था - खासकर जब से इसके लिए पुर्जे ढूंढना लगभग असंभव लगता है।

दीवार से नियंत्रक को चीरते हुए मुझे 3 तार मिले जिन्हें मैंने ग्राउंड, 12v और 'सिग्नल' के रूप में निर्धारित किया था

डेटा लाइन पर सिग्नलिंग वोल्टेज 12v पर था, लेकिन मैंने देखा कि यह मल्टीमीटर (लाइन पर किसी प्रकार की दालों) पर उतार-चढ़ाव करता प्रतीत होता है।

मैं डेटा पिन के माध्यम से एक ऑप्टो आइसोलेटर को चलाने के लिए एक बुनियादी सर्किट में सवार हुआ और ऑप्टो आइसोलेटर के दूसरे पक्ष को अपने पीसी के साउंड कार्ड पर इनपुट के रूप में जोड़ा और एक स्कोप आउटपुट (Pic 1) का खराब संस्करण मिला।

यह उस समय के बारे में है जहां तक मुझे मिला - मैं देख सकता था कि वहां कुछ था लेकिन वास्तव में यह नहीं पता था कि इसे 'डीकोड' कैसे किया जाए।

मेरी कॉफी मशीन IoT सक्षम होने के बाद से, इस बार थोड़ा और दृढ़ संकल्प के साथ इसे फिर से आज़माने में मेरी रुचि थी।

मैंने अपने निष्कर्षों को ईईवीब्लॉग मंचों पर पोस्ट किया, यह देखने के लिए कि क्या कोई कुछ प्रकाश डालने में सक्षम हो सकता है और इयान नाम का एक महान व्यक्ति मेरे बचाव में आया - उसने इसे पूरी तरह से समझ में आने के तरीके से बाहर रखा (तस्वीर 2)

मूल रूप से, डेटा स्ट्रीम 'मानक सीरियल' के 13 बाइट्स है - 8 डेटा बिट्स, एक स्टार्ट बिट और एक स्टॉप बिट (कोई समानता नहीं) लेकिन 104bps की बहुत कम बॉड दर पर।

चरण 2: गहराई से देख रहे हैं

गहराई से देख रहे हैं
गहराई से देख रहे हैं

तो अब जब मुझे इस बात का अंदाजा हो गया था कि डेटा को कैसे स्वरूपित किया गया था, तो मुझे डेटा को अधिक गतिशील तरीके से पढ़ने में सक्षम होने के लिए एक तरीके की आवश्यकता थी।

मैंने अपने नियंत्रकों में से एक को दीवार से खींच लिया और 104bps पर कॉन्फ़िगर किए गए सॉफ़्टवेयर सीरियल पोर्ट के माध्यम से डेटा के 13 बाइट्स पढ़ने और इसे प्रिंट करने के लिए एक साधारण स्केच के साथ एक तर्क स्तर के शिफ्टर के माध्यम से इसे एक Arduino पर झुका दिया:

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, फैन मेड 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, मोड ऑटो 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, मोड कूल 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, मोड डीएच

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) १३वीं बाइट डेटा का एक चेकसम प्रतीत होता है जिसे मुझे किसी तरह काम करने के लिए चाहिए था। b) फिर मैं डेटा कैसे प्रसारित करूं? यह सिर्फ एक तार है।

अंक 'ए' वास्तव में आसान निकला, लेकिन यह विशुद्ध संयोग से था कि मैं इसे पार करने में कामयाब रहा।

अपने परीक्षणों में, मैं डेटा देख रहा था जैसे: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000149C00000000A7

यह चेकसम सहित डेटा का 13bytes है (यहां DEC के बजाय HEX में)।

जब मैं उस ऑरैकल की खोज कर रहा था जो Google पर 'कैसे एक चेकसम को रिवर्स इंजीनियर करने के लिए' है, तो मैं स्टैक एक्सचेंज पर इस पृष्ठ पर आया था, निक के नाम से जाने वाले किसी और के साथ मेरे जैसा ही बहुत कुछ पूछ रहा था, लेकिन इतना ही नहीं, उन्होंने बात की एक एयर कंडीशनर के बारे में और उनका डेटा लगभग मेरे जैसा ही था - क्या यह हो सकता है ??? मेरी सारी खोज (4 या इतने वर्षों में) में, एक भी व्यक्ति ने इन एयर कंडीशनरों पर प्रोटोकॉल को हैक करने के बारे में कोई जानकारी पोस्ट नहीं की थी और मैं लगभग पूरी तरह से असंबंधित कुछ खोज कर एक ही काम करने वाले किसी व्यक्ति पर ठोकर खा रहा था? यह एक आशीर्वाद था - उन्होंने यह भी पोस्ट किया कि उन्होंने इसे काम किया और समाधान था: डेटा के सभी बाइट्स जोड़ें और फिर "यू" के साथ एक्सओआर जोड़ें।

उस हाथ से मैंने इसे अपने कोड में जोड़ा कि मैंने जो सोचा था कि चेकसम बनाम वास्तव में क्या होना चाहिए, लेकिन यह सब गलत था !!

जैसा कि यह निकला, यह एक तरह से गलत था। जब मैंने संख्याओं को बाइनरी में देखना शुरू किया, तो यह पूरी तरह से समझ में आया।

'एक्सओआर विद यू' की प्रतिक्रिया हमेशा 9 बिट डेटा (9वीं बिट हमेशा एक) लौटाती है लेकिन अन्य बिट्स सही थे। मैंने परिणामी संख्या से 256 लेकर 9वीं बिट को हटा दिया और फिर इसका मिलान हुआ !!

अगर यह इस व्यक्ति के लिए नहीं होता, तो मैं अभी भी अपना सिर खुजला रहा होता। उसे भी सलाम, लेकिन मैं उससे संपर्क नहीं कर सकता - वह मूल रूप से स्टैकएक्सचेंज फोरम पर उसकी एकमात्र पोस्ट थी। अच्छा, धन्यवाद अजनबी:)

अगली चुनौती एक सर्किट बनाना था जो मुझे मौजूदा नियंत्रक का अनुकरण करने की अनुमति देगा। मैंने ड्राइव सर्किट (Pic1 और Pic 2) के लिए योजनाबद्ध रूप से मैप किया, लेकिन यह मेरे लिए बहुत जटिल लग रहा था कि मुझे जो चाहिए उसे प्राप्त करने के लिए इसे पुन: पेश करने की आवश्यकता है। मैं पहले से ही सिग्नल पढ़ रहा था। मैंने एक बहुत ही सरल विधि का विकल्प चुना - 12v सिग्नल लाइन को आवश्यकतानुसार कम खींचने के लिए ऑप्टो आइसोलेटर को चलाने के लिए arduino का उपयोग करना।

मैंने आरएक्स के लिए एक सरल सर्किट भी तैयार किया है, लेकिन यह अप्रयुक्त है, मैंने सादगी के लिए स्तर कनवर्टर के साथ चिपके रहना समाप्त कर दिया।

चरण 5: इसे काम करना

एक बार जब मेरे पास ट्रांसमिट सर्किट ब्रेडबोर्ड था, और एक रेसिंग दिल के साथ, मैंने 12 बाइट्स की एक (स्थिर) स्ट्रिंग को उलझा दिया, चेकसम की गणना की और आर्डिनो को कमांड भेज दिया - आश्चर्यजनक रूप से, डिस्प्ले अपडेट किया गया !!! जीत!

अंतिम वास्तविक परीक्षण एक वास्तविक लाइव परीक्षण के लिए 2 अन्य नियंत्रकों के साथ बस में मेरे arduino को जोड़ना था और निश्चित रूप से पर्याप्त था, इसने काम किया।

तो अब मैं बस को पढ़ और लिख सकता था, लेकिन बस इसे आसानी से करने में सक्षम होने की क्षमता की कमी थी।

चूंकि मैं अपने सभी होम ऑटोमेशन के लिए लगभग विशेष रूप से एमक्यूटीटी का उपयोग करता हूं, यह स्वाभाविक था कि यह वही होगा। मैंने एसी के 4 मुख्य तत्वों को नियंत्रित करने के लिए कई दिनों में कोड लिखा, साथ ही मौजूदा स्थिति (बस के अन्य मॉड्यूल से) को भी पढ़ा।

इरादा कोड को ESP8266 मॉड्यूल पर चलाना था, हालांकि ऐसा प्रतीत होता है कि ESP8266 बॉड दर 104bps जितनी कम उत्पन्न करने में सक्षम नहीं है। मुझे Wiznet ईथरनेट के साथ एक सामान्य Arduino Uno पर वापस जाना था, लेकिन यह कठिन नहीं था क्योंकि मेरा कॉमस रैक सचमुच एसी नियंत्रकों में से एक से दीवार के दूसरी तरफ था।

कोड हर जगह थोड़ा सा है लेकिन सुपाठ्य होना चाहिए। मुझे नियंत्रक को अपने स्वयं के आउटपुट को पढ़ने से रोकने के साथ-साथ एमक्यूटीटी से वापस एयरकॉन में प्राप्त अपने स्वयं के प्रकाशित विषयों के कोड को दोहराने से रोकने में बहुत सारी समस्याएं थीं। मूल रूप से, यह एक अनंत लूप बनाएगा। अंत में, कुछ बफर समाशोधन और एमक्यूटीटी को प्रकाशित करने के बाद कोड के प्रसंस्करण में देरी ने इसे हल किया।

एसी के आरएक्स, टीएक्स पिन को 3, 4 के रूप में कोडित किया गया है, लेकिन यदि आप चाहें तो बदल सकते हैं

कोड को इस तरह से कमांड को प्रकाशित और स्वीकार करने के लिए कॉन्फ़िगर किया गया है:

हा/मोड/5557/पी 0/1 - पावरहा/मोड/5557/एम 0/1/2/3/4 - मोड कूल, डीह्यूमिडिफाई, फैन, ऑटो, हीथा/मॉड/5557/एफ 0/1/2 - फैन लो, मेड, हाईहा/मॉड/5557/जेड यानी 1111 सभी जोन के लिए 1000 पर जस्ट जोन 1 ऑन के लिए।

**नियंत्रक से, क्षेत्रों को '0000' पर सेट नहीं किया जा सकता है, हालांकि ऐसा लगता है कि यदि आप मान जारी करते हैं, तो यह '1000' पर वापस आ जाएगा।

कोड का नवीनतम संस्करण मेरे GitHub रेपो से उपलब्ध है:

चरण 6: कुछ और स्थायी

कुछ और स्थायी
कुछ और स्थायी
कुछ और स्थायी
कुछ और स्थायी

मैंने एक आर्डिनो प्रोटोटाइप बोर्ड इकट्ठा किया और सभी भागों को स्थापित किया क्योंकि मैंने उन्हें ब्रेड बोर्ड किया था।

चरण 7: ओपनएचएबी कॉन्फ़िग

OpenHAB आइटम, साइटमैप और नियमों के लिए संलग्न फ़ाइल देखें

इसे आईएफटीटीटी ओपनहैब बाइंडिंग और गूगल असिस्टेंट/होम के साथ मिलाएं और आपके पास एक बहुत शक्तिशाली आवाज नियंत्रित और/या 'स्मार्ट' एयरकॉन है जो लगभग हर व्यावसायिक रूप से उपलब्ध उत्पाद से आगे निकल जाता है!

चरण 8: सारांश

निष्कर्ष में - यदि आप थोड़े पुराने एलजी डक्टेड स्प्लिट एयर कंडीशनर के साथ गरीब आत्माओं में से एक हैं, तो आप अकेले नहीं हैं। हमारे लिए अभी भी आशा है!

मुझे आशा है कि यह निर्देशयोग्य किसी ऐसे व्यक्ति को ढूंढता है जिसे इसकी उतनी ही आवश्यकता है जितनी मुझे थी। मूल रूप से कोई जानकारी नहीं है जो मुझे मिल सकती है ('निक' से चेकसम के अलावा)। मुझे शुरुआत से शुरुआत करनी थी लेकिन मैं परिणाम से खुश हूं।

मुझे पता है कि जानकारी थोड़ी अस्पष्ट है, लेकिन अगर आप उसी स्थिति में हैं जैसे मैं था, तो मैं मदद करने के लिए तैयार हूं।

-सावधानी/अद्यतन --- हालांकि एसी पर यूनिट ऑफ के साथ सेटिंग्स को बदलना संभव है, मैंने पाया है कि जब ज़ोन नियंत्रण की बात आती है तो यह इसके साथ गड़बड़ लगता है। मैंने यूनिट बंद के साथ बहुत सारे परीक्षण किए और मैंने पाया कि ज़ोन निष्क्रिय के रूप में दिखाई देंगे लेकिन जब यूनिट चल रही है, तो ऐसा लगता है कि डैम्पर्स पूरी तरह से बंद नहीं हैं (लेकिन पूरी तरह से खुले भी नहीं हैं)। मैंने यूनिट को मुख्य ब्रेकर पर रीसेट कर दिया और इससे समस्या हल हो गई। चूंकि यूनिट चालू होने पर केवल ज़ोन बदलते हैं, इसलिए यह कोई समस्या नहीं है।

मैंने कोड को केवल (MQTT में) प्रकाशित करने के लिए अपडेट किया है जो मास्टर कंट्रोलर से आते हैं न कि मुख्य इकाई से। एक बार फिर, यह समस्या पैदा कर सकता है क्योंकि मुख्य इकाई जोनों के लिए '0000' भेजेगी (जो समस्या भी हो सकती थी)।

अपडेट किया गया कोड कुछ समय की बाधाओं का भी परिचय देता है ताकि आर्डिनो को मास्टर और मुख्य इकाई के एक ही समय में संचारण से रोकने की कोशिश की जा सके। मुझे यकीन है कि शायद एक तरीका है जो नियंत्रक डेटा भेजने के लिए उपयोग करता है जैसे भेजने से पहले एक्सएमएस के लिए लाइन कम खींचना लेकिन मुझे अभी तक इसकी खोज नहीं हुई है।

मैंने पाया कि मुख्य इकाई हर 60 सेकंड में डेटा भेजेगी और मास्टर कंट्रोलर हर 20 सेकंड में डेटा भेजेगा। कोड डेटा पैकेट प्राप्त करने के 2 सेकंड के भीतर डेटा भेजने को रोकने का प्रयास करता है। हालांकि, कभी-कभी मास्टर और मुख्य इकाई एक दूसरे के बहुत करीब संचारित होती है। इसे संभवत: जल्द ही और अधिक परिष्कृत किया जाएगा।----------------------------

**नई इकाइयों पर काम कर सकते हैं

*** मेरी शोध यात्राओं में मिली कुछ जानकारी से संकेत मिलता है कि पैनासोनिक डक्टेड स्प्लिट उसी प्रोटोकॉल का उपयोग कर सकता है। वाईएमएमवी।

सिफारिश की: