الهندسة العكسية لبروتوكول اللوحة من مكيف الهواء العاكس Electrolux



في هذه المقالة سأصف تجربتي والمراحل الرئيسية لدراسة جهاز التحكم عن بعد بالأشعة تحت الحمراء من مكيف الهواء. ستحتاج من الأداة إلى Arduino nano على mega328 ومستقبل إشارة IR (لدي VS1838B).

خلفية صغيرة
قررت إدراج مكيف الهواء Electrolux في نظام المنزل الذكي. هناك 3 خيارات لهذا: استخدام مرسل Broadlink IR ، استخدام مرسل IR محلي الصنع ودمج دائرة محلية الصنع في مكيف الهواء نفسه. باعتباره الخيار الأكثر أمانًا ، بالنسبة لمكيف الهواء التجريبي ، والأرخص ، وقع الاختيار على وحدة IR مؤقتة.

بادئ ذي بدء ، تحتاج إلى تحليل بروتوكول IR. نتج عن البحث على الإنترنت نتيجة واحدة فقط ، وهذا لا يصلح ، لأن تكييف الهواء لشركة أخرى: رابط . أخذ راسم الذبذبات ، انظر ما هو. اتضح أن البروتوكول مشابه لـ NEC ، لكن الحزمة طويلة جدًا بحيث لا تتناسب مع المخزن المؤقت لمنظار الذبذبات USB الخاص بي. لا يهم ، لقد أخذت arduino ، وجدت مكتبة IRremote العالمية و ... أدركت أنها لا تفهم الأوامر التي تزيد عن 32 بت ، ولدي 3 أجزاء على الأقل في صف من 6 بايت (48 بت).

لم أستطع إصلاح المكتبة ، فهي معقدة للغاية بالنسبة لي. بعد القليل من العذاب ، كتب رمزًا يقرأ الفترات الزمنية بين تغييرات الإشارة. أنا لست قويًا في أردوينو ، لذلك ربما يكون الرمز ملتويًا ومضمونًا للعمل على أردوينو مع ATMega328 MK وتردد 16 ميجاهرتز. في الواقع ، يمكنني كتابة رمز أكثر جمالا في CVAVR ، ولكن بعد ذلك لا يمكن للجميع تكرار تجربتي ، لأنني بحاجة إلى مبرمج ، وقررت أن أفعل كل شيء على اردوينو. سأبدأ بميزات النموذج الخاص بي. تحتوي بعض مكيفات الهواء في مجموعتي على وظيفة "أشعر" ، والتي تم تصميمها لضمان الوصول إلى درجة الحرارة المحددة في ذلك الجزء من الغرفة؟ أين أنا (في الواقع جهاز التحكم عن بعد). تشير الوثائق إلى ما ليس بالضبط في نموذجي مثل هذه الوظيفة ، ولكن اتضح أنها كذلك. اتضح بطريقة غير سارة إلى حد ما ، نفدت البطاريات في جهاز التحكم عن بعد وبدأ جهاز التحكم عن بعد في رفع درجة الحرارة بمقدار 4 درجات ، أي بدلاً من 28 ، أظهر 32. لقد ضبطت 28 درجة وتبرد الشقة إلى 26. حسنًا ، قررت ، وضبط 32 درجة للتبريد (هذا هو الحد الأعلى) ، لكن مكيف الهواء استمر بعناد في تبريد الغرفة. قررت أن شيئًا ما قد انكسر ، أو تأكسد الاتصال بمستشعر درجة الحرارة وفكك مكيف الهواء بحثًا عن الانهيار. لم أجد شيئًا ، فقط في حالة ، قررت تغيير البطاريات ، وها ، بدأ مكيف الهواء يعمل بشكل ملائم. فكيف يعمل هذا؟ يرسل جهاز التحكم عن بعد ، مع جميع الإعدادات ، مكيف الهواء درجة الحرارة التي يقيسها ويصحح قراءات جهاز استشعار درجة الحرارة الداخلية ، اعتمادًا على ما أرسله جهاز التحكم عن بعد.

بادئ ذي بدء ، كتبت رمزًا يقرأ مدة الإشارة من مستقبل الأشعة تحت الحمراء في الحالة المنخفضة والعالية ، ويكتبها في مصفوفة ، ثم يخرجها إلى منفذ الكمبيوتر.

كود
// IR    D2 unsigned int timerValue; //   unsigned int data_m[350]; unsigned int i=0; unsigned int n=0; byte temp; void setup() { Serial.begin(115200); //   ,  115200 //   1 TCCR1A = 0; TCCR1B = 0; attachInterrupt(0, inter_1, CHANGE); //  0-    inter_1 TCCR1B = 2; //    Serial.println("Start"); pinMode(2, INPUT); } void loop() { temp=TIFR1&0x01; //     if (temp!=0) { TIFR1=0x01; //    if (i!=0) {while (n<=i) //    { Serial.print(n,DEC); Serial.print("="); Serial.print(data_m[n],DEC); Serial.print("\t"); if ((n&B00000011)==0) { Serial.println(" ");} n++; } Serial.println("End"); } i=0; //       n=0; } } void inter_1() { timerValue = (unsigned int)TCNT1L>>1 | ((unsigned int)TCNT1H << 7); //   data_m[i]=timerValue; i++; TCNT1H = 0; //   TCNT1L = 0; } 


بعد النقر على زر جهاز التحكم عن بعد لمكيف الهواء ، وصلت البيانات إلى المنفذ:

نتيجة استلام الطرود
Start
0=20543
1=9038 2=4541 3=548 4=1675
5=548 6=1681 7=545 8=560
9=543 10=614 11=494 12=569
13=543 14=620 15=493 16=624
17=494 18=1688 19=544 20=603
21=494 22=1655 23=571 24=1685
25=545 26=613 27=495 28=568
29=543 30=622 31=493 32=625
33=495 34=613 35=494 36=604
37=494 38=607 39=493 40=561
41=545 42=612 43=495 44=620
45=491 46=622 47=494 48=624
49=494 50=565 51=543 52=602
53=494 54=1679 55=547 56=609
57=494 58=614 59=493 60=619
61=492 62=1693 63=546 64=1698
65=547 66=1685 67=548 68=603
69=494 70=608 71=493 72=609
73=495 74=615 75=493 76=571
77=540 78=620 79=494 80=626
81=493 82=565 83=545 84=605
85=492 86=607 87=493 88=613
89=492 90=596 91=512 92=619
93=492 94=622 95=493 96=624
97=494 98=594 99=521 100=7988
101=550 102=1674 103=546 104=608
105=492 106=1685 107=543 108=611
109=495 110=1689 111=547 112=620
113=495 114=625 115=491 116=1689
117=543 118=605 119=493 120=1654
121=572 122=611 123=494 124=614
125=493 126=1692 127=545 128=621
129=492 130=622 131=496 132=613
133=492 134=604 135=494 136=605
137=496 138=556 139=548 140=614
141=493 142=618 143=494 144=620
145=494 146=624 147=494 148=615
149=493 150=606 151=493 152=608
153=493 154=609 155=496 156=614
157=494 158=566 159=545 160=623
161=493 162=625 163=493 164=564
165=543 166=603 167=494 168=606
169=495 170=609 171=496 172=613
173=494 174=617 175=495 176=620
177=494 178=624 179=496 180=613
181=494 182=604 183=493 184=606
185=494 186=562 187=541 188=613
189=495 190=618 191=493 192=622
193=493 194=623 195=494 196=1663
197=569 198=603 199=494 200=1678
201=547 202=1686 203=543 204=1663
205=570 206=1692 207=545 208=619
209=494 210=624 211=495 212=614
213=494 214=1653 215=569 216=1657
217=571 218=611 219=493 220=1664
221=571 222=1691 223=544 224=1671
225=571 226=1699 227=547 228=1671
229=572 230=7995 231=551 232=603
233=493 234=606 235=493 236=612
237=493 238=608 239=497 240=618
241=494 242=621 243=492 244=626
245=493 246=584 247=524 248=556
249=541 250=1680 251=545 252=610
253=494 254=613 255=495 256=588
257=523 258=620 259=494 260=625
261=494 262=615 263=493 264=604
265=495 266=607 267=495 268=612
269=493 270=616 271=493 272=570
273=542 274=621 275=495 276=625
277=493 278=612 279=496 280=606
281=493 282=607 283=496 284=610
285=494 286=614 287=495 288=618
289=493 290=595 291=519 292=575
293=543 294=616 295=494 296=605
297=495 298=606 299=495 300=613
301=493 302=613 303=494 304=616
305=495 306=569 307=546 308=625
309=493 310=564 311=545 312=602
313=496 314=607 315=495 316=611
317=494 318=613 319=496 320=571
321=541 322=621 323=494 324=624
325=495 326=568 327=539 328=604
329=493 330=1679 331=547 332=610
333=495 334=614 335=493 336=618
337=495 338=572 339=543 340=623
341=496 342=596 343=484 344=0

انتهى

يمكننا أن نلاحظ أن جميع البيانات الفردية هي نفسها (باستثناء نبض البدء) ويمكن تجاهلها. علاوة على ذلك ، في رمز المقاطعة ، كان هناك حالة (بدلا من ذلك) (digitalRead (2) == 0) تتجاهل مدة الحالة المنخفضة عند إدخال وحدة التحكم.

 void inter_1() { timerValue = (unsigned int)TCNT1L>>1 | ((unsigned int)TCNT1H << 7); //   if (digitalRead(2)==0) { data_m[i]=timerValue; i++; } TCNT1H = 0; //   TCNT1L = 0; } 

بشكل عام ، يعمل البرنامج على النحو التالي: يبدأ عداد عداد بمعامل قسمة 8 (هذا هو أحد الفواصل القياسية المتوفرة في MK) ، وعندما تتغير حالة الإدخال D2 ، يتم تنفيذ المقاطعة - وظيفة inter_1 () باطلة. في هذه المقاطعة ، تتم قراءة قيمة عداد المؤقت وتقسيمها على 2 ، وبعد ذلك تتم كتابتها على الصفيف ، ويتم إعادة ضبط المؤقت نفسه. يعمل عداد المؤقت بتردد 8 مرات أقل من تردد الساعة لـ MK (16 MHz) أي 2 ميغا هرتز وللحصول على الوقت بالميكروثانية ، يجب تقسيم الرقم المقروء من العداد على 2. في الجزء الرئيسي من البرنامج ، يتم التحقق من إشارة تجاوز المؤقت وإذا كان عداد المؤقت ممتلئًا ، أي عد حتى 65535 ، يتم فحص عداد الفترات المقبولة. إذا كانت مختلفة عن 0 ، يتم عرض جميع البيانات المستلمة ويتم إعادة تعيين عداد وحدات البايت المتلقاة. تبدو البيانات الجديدة كما يلي:

نتيجة الأمر
Start
0=26938
1=4539 2=1675 3=1654 4=610
5=563 6=569 7=567 8=621
9=1687 10=602 11=1679 12=1658
13=613 14=615 15=619 16=576
17=561 18=602 19=591 20=607
21=611 22=615 23=620 24=622
25=611 26=602 27=1678 28=609
29=612 30=615 31=1693 32=1695
33=1659 34=601 35=605 36=610
37=611 38=566 39=564 40=622
41=611 42=601 43=604 44=608
45=614 46=615 47=618 48=620
49=594 50=7970 51=1676 52=604
53=1681 54=613 55=1688 56=620
57=623 58=1685 59=602 60=1680
61=1680 62=612 63=1687 64=619
65=624 66=611 67=602 68=604
69=607 70=558 71=616 72=619
73=624 74=560 75=603 76=605
77=562 78=611 79=615 80=566
81=622 82=612 83=601 84=603
85=606 86=611 87=564 88=618
89=572 90=612 91=601 92=604
93=608 94=611 95=569 96=621
97=622 98=1686 99=552 100=1678
101=1681 102=1660 103=1689 104=618
105=622 106=610 107=1675 108=1677
109=1681 110=1681 111=1691 112=1688
113=1696 114=1668 115=7966 116=599
117=603 118=562 119=558 120=612
121=617 122=621 123=565 124=601
125=1679 126=607 127=612 128=616
129=565 130=622 131=613 132=602
133=604 134=608 135=612 136=615
137=618 138=617 139=611 140=598
141=553 142=607 143=612 144=615
145=617 146=568 147=565 148=600
149=604 150=606 151=559 152=613
153=617 154=622 155=609 156=549
157=605 158=609 159=611 160=613
161=618 162=621 163=609 164=602
165=1679 166=609 167=612 168=615
169=618 170=622 171=595 172=0
End


من البيانات التي تم الحصول عليها ، من الواضح أن الرقم الأول عشوائي - هذا هو الوقت من آخر تجاوز للموقت إلى بداية الإرسال. بعد ذلك ، نبض بدء 4.5ms والبيانات. ترسل المعطيات شيئاً فشيئاً ، حيث يقابل الفاصل الزمني الذي يقارب 1690 μs وحدة منطقية ، والفاصل الزمني 560 to يقابل الصفر المنطقي. وينظر أيضا إلى أن الطرود مقسمة إلى 3 أجزاء منفصلة ، حيث 50 = 7970 و 115 = 7966 هي تسلسل البداية.

أضف وظيفة توليد البايت وفك تشفير صغير للبيانات المستلمة إلى الكود. لقد كتبت السطر الأخير في النهاية ، لكنني لم أنتج نفس الرمز تقريبًا.

كود اردوينو
 // IR    D2 unsigned int timerValue; //   unsigned int data_m[250]; byte i=0; byte n=0; byte temp; byte k=0; byte x,y; byte m1=0; byte dat[4][12]; byte temp2=0; char s[5]; void setup() { Serial.begin(115200); //   ,  9600 //   1 TCCR1A = 0; attachInterrupt(0, inter_1, CHANGE); //  0-    inter_1 TCCR1B = 2; //      8 Serial.println("Start"); pinMode(2, INPUT); } void loop() { temp=TIFR1&0x01; //     if (temp!=0) { TIFR1=0x01; //    if (i!=0) { if (k==0) //           FF     {dat[y][x]=0xFF;} else {dat[y][x+1]=0xFF; dat[y][x]=m1; } /* while (n<=i) //    { Serial.print(n,DEC); Serial.print("="); Serial.print(data_m[n],DEC); Serial.print("\t"); if ((n&B00000011)==0) { Serial.println(" ");} n++; }*/ for (int i1 = 0; i1 < 3; i1++) { for (int j = 0; j < 9; j++) { sprintf(s, "%02X ", dat[i1][j]); Serial.print(s); //dat[i1][j]=0; } Serial.println(""); } if ((dat[0][3]&0x0F)==0x2) Serial.print("Cool "); if ((dat[0][3]&0x0F)==0x0) Serial.print("Heat "); if ((dat[0][3]&0x0F)==0x3) Serial.print("Dry "); if ((dat[0][3]&0x0F)==0x04) Serial.print("Vent "); if ((dat[0][2]&0x03)==0x0) Serial.print("Vent=Auto "); if ((dat[0][2]&0x03)==0x1) Serial.print("Vent=Max "); if ((dat[0][2]&0x03)==0x2) Serial.print("Vent=Mid "); if ((dat[0][2]&0x03)==0x3) Serial.print("Vent=Min "); temp=((dat[0][3]&0xF0)>>4)+18; Serial.print("T="); Serial.print(temp,DEC); sprintf(s, " Time=%02d:%02d ",(dat[1][0]&0x7F),(dat[1][1]&0x7F)); Serial.print(s); Serial.print(" C="); temp=(dat[1][6]); Serial.println(temp,DEC); Serial.println("End"); //   for (int i1 = 0; i1 < 3; i1++) { for (int j = 0; j < 9; j++) {dat[i1][j]=0;} } } i=0; //       n=0; k=0; m1=0; x=0; y=0; } } void inter_1() { timerValue = (unsigned int)TCNT1L>>1 | ((unsigned int)TCNT1H << 7); //       2, ..  16,  8      2 if (digitalRead(2)==0) { data_m[i]=timerValue; i++; if ((timerValue>4400)&&(timerValue<4700)) {m1=0; k=0;} if ((timerValue>7500)&&(timerValue<8500)) {if (k==0) //           FF     {dat[y][x]=0xFF;} else {dat[y][x+1]=0xFF; dat[y][x]=m1; } x=0; y++; } if ((timerValue>1500)&&(timerValue<1800)) {m1=(m1>>1)+0x80; k++;} if ((timerValue>450)&&(timerValue<800)) {m1=m1>>1; k++;} if (k>=8) {k=0; dat[y][x]=m1; x++; m1=0; } } TCNT1H = 0; //   TCNT1L = 0; } 


تجدر الإشارة إلى أن أحجام المصفوفات تتكيف مع جهاز التحكم عن بعد الخاص بي ، للبحث عن جهاز تحكم عن بعد جديد يجب توسيعها بحيث يناسب كل شيء تمامًا. من الجدير أيضًا التحقق من عدد البتات في الحزم ، على سبيل المثال ، لدي 50-2 = 48 الحزمة الأولى ، 115-51 = 64 و 172-116 = 56 (أطرح الأرقام من آخر بت غير ذي أهمية ، الأولى المهمة). إجمالي نحصل على 6 بايت 8 بايت و 7 بايت. نظرًا لأن جميع الحزم الثلاثة لها أطوال مختلفة ، فقد قررت وضع علامة على نهاية الحزمة بقيم FF ، نظرًا لعدم العثور على هذه البيانات تقريبًا في اللوحة المختبرة.

كما ذكرت من قبل ، يحتوي مكيف الهواء الخاص بي على وظيفة "أشعر" التي تعمل على النحو التالي: يرسل جهاز التحكم عن بعد درجة الحرارة إلى مكيف الهواء كل 9 دقائق ، والتي يقيسها ، وإذا كان في منطقة التحكم عن بعد ، فإنه يصحح قراءات مستشعر درجة الحرارة الداخلية اعتمادًا على ما أرسله جهاز تحكم عن بعد.

بالمناسبة

يتم إرسال الأوامر تلقائيًا
Start
83 06 00 82 00 00 FF 00 00
16 30 00 00 00 80 1D 39 FF
00 00 00 00 00 00 00 FF 00
Cool Vent=Auto T=26 Time=22:48 C=29
End
83 06 00 82 00 00 FF 00 00
16 31 00 00 00 80 1D 38 FF
00 00 00 00 00 00 00 FF 00
Cool Vent=Auto T=26 Time=22:49 C=29
End
83 06 00 82 00 00 FF 00 00
16 3A 00 00 00 80 1D 33 FF
00 00 00 00 00 00 00 FF 00
Cool Vent=Auto T=26 Time=22:58 C=29
End
83 06 00 82 00 00 FF 00 00
17 07 00 00 00 80 1D 0F FF
00 00 00 00 00 00 00 FF 00
Cool Vent=Auto T=26 Time=23:07 C=29
End


ثم كل شيء هو الأبسط والأكثر إثارة للاهتمام - الأزرار ، نحصل على النتيجة ونحاول تخمين ما هو المسؤول. اتضح أن البتات في مكيف الهواء الخاص بي تنتقل ابتداءً من أصغرها. تمكنت من فك تشفير معظم البروتوكول.

وصف بروتوكول مكيف الهواء إلكترولوكس عن بعد


0.1 بايت 0x83 0x06 يبدو العنوان
2 بايت 0b00000000 وضع التشغيل
7 بت = 1 إذا تم الضغط على زر التأرجح
6 5 4 بتات في وضع التصريف مسؤولة عن "القدرة" 110 = -7 ...- 2، 101 = -1، 000 = 0، 001 = 1، 010 = 2..7
3 بت = 1 في وضع السكون (في نفس الوقت يتم ضبط المروحة على الحد الأدنى)
2 بت تعيين إذا تم الضغط على زر الطاقة
1 و 0 بت تتوافق مع وضع المروحة - 00 تلقائي ، 10 سرعة قصوى ، 01 متوسط ​​السرعة ، 11 سرعة منخفضة.
3 بايت 0b11000010 وضع التشغيل ودرجة الحرارة. في هذا المثال ، يبرد حتى 30 درجة
تحتوي البتات 4 العالية على درجة الحرارة المحددة وفقًا للصيغة 18 + الرقم المسجل هنا ، على سبيل المثال 0b1100 = 12 نضيف 18 تتحول إلى 30
البتات السفلية الأربعة مسؤولة عن نظام التبريد 0010 ، التسخين 0000 ، التصريف 0011 ، الوضع الذكي 0001
4 بايت 0b00000000 بايت غير معروف
5 بايت 0b10010000 وضع التبريد الفائق
في وضع التبريد الفائق ، تكون المروحة في الحد الأقصى ، وتكون درجة الحرارة +18 بالإضافة إلى أعلى 4 بت من 1001 في الوضع المتبقي هناك أصفار.
تكتمل أول 6 بايتات ، يتبعها تسلسل بدء 8 مللي ثانية في حالة عالية + 0.5 مللي ثانية في حالة منخفضة والجزء الثاني من إرسال 8 بايت.
0 bytes 0b10000110 الوقت الحالي (ساعات) ، في هذا المثال 6 ساعات.
يتم تعيين 7 بت دائمًا.
5 بت = 1 أوقف تشغيل الشاشة في الوحدة الداخلية.
1 بايت 0b00000010 الوقت الحالي (بالدقائق) في هذا المثال 02 دقيقة
يتم ضبط 7 بت عند تشغيل مؤقت الإيقاف.
2 بايت 0b00010111 وقت الإغلاق التلقائي (ساعات) ، 23 ساعة هنا.
3 بايت 0b10111010 وقت إيقاف التشغيل التلقائي (بالدقائق) هنا 58
يتم ضبط 7 بت عند تشغيل مؤقت التنبيه التلقائي.
4 بايت 0b00001100 وقت التشغيل التلقائي (ساعات) هنا 12 ساعة
5 بايت 0b10000010 وقت التشغيل التلقائي (بالدقائق) هنا دقيقتان
يتم تعيين 7 بت دائمًا
6 بايت 0b00011111 درجة الحرارة الحالية المقاسة بواسطة جهاز التحكم عن بعد ، هنا 31.
7 بايت من اتفاقية حقوق الطفل. لم أجد خوارزمية CRC. (سأكون ممتنا إذا أخبرني أحدهم). لقد جربت جميع الخوارزميات المقترحة (10 قطع) في الآلات الحاسبة عبر الإنترنت ، لكنني لم أجد واحدة مناسبة. من الواضح ، عند حساب CRC ، يتم النظر في الصف الأول والثاني. عندما يتم تغيير أي بايت في السطر الأول أو الثاني ، يتغير CRC.
اكتشف العضو huhen طريقة حساب CRC: وهي عملية XOR على جميع بايتات الحزم الأولى والثانية باستثناء العنوان. على سبيل المثال: 83 06 60 ^ 73 ^ 00 ^ 00 ^ 00 ^ 00 ^ 96 ^ 04 ^ 00 ^ 00 ^ 00 ^ 80 ^ 1E = 1F
الجزء الأخير من الطرد هو 7 بايت
0 بايت
5 بت وضع SOFT
الضغط على زر التبديل 4 بت
تعيين 3 بت عند تشغيل وضع كتم الصوت (يضيء رمز الأذن على الشاشة)
1 بايت
0x00 = إرسال تلقائي وزر باهت وزر ساعة ضبط الوقت
0x01 = ضغط زر الطاقة
0x02 = الضغط على زر تغيير درجة الحرارة المحددة (الطاقة) + أو - 0x03 = الضغط على زر السكون
0x04 = الضغط على زر التبريد الفائق
0x05 = Auto On Timer ON أو OFF Timer ON
0x06 = تم الضغط على زر الوضع
0x07 = الضغط على زر التأرجح (تأرجح رفرف)
الضغط على زر كتم الصوت 0x0B
تم الضغط على الزر 0x0 SOFT (توفير الطاقة)
0x0D أشعر بالضغط
الضغط على زر التبديل 0x0F (إيقاف تشغيل عرض الوحدة الداخلية)
ضغط الزر 0x11 وضع المروحة
0x17 = الضغط على الزر الذكي (التشغيل التلقائي)
0x1D تمكين أو تعطيل مؤقت إيقاف مؤقت تلقائي إيقاف

2 بايت في وضع التصريف والذكية (تلقائي) هي المسؤولة عن "الطاقة" إلى جانب 2 بايت من الإرسال الأول
0x14 = + -7
0x10 = + -6
0x0C = + -5
0x08 = + -4
0x02 = + -3
0x00 = 0 ، + -1 ، + -2
6 بايت A المجموع الاختباري من 0-5 بايت (الخط الثالث).
في حالة إزالة الرطوبة أو الوضع الذكي ، لا يقوم مكيف الهواء بضبط درجة الحرارة ، يمكنك فقط تحديد الرقم من -7 إلى +7. هم على الأرجح مسؤولون عن السلطة. وترسل هذه القدرة في البايت الثاني للرزمة الأولى والبايت الثاني للرزمة الثالثة.

أيضا لدي جهاز إرسال xiaomi IR. تم ضبطه على مكيف الهواء بالقوة الغاشمة وإرسال أول طرد 6 بايت إلى مكيف الهواء. يستجيب مكيف الهواء لمثل هذه الحزمة المختصرة ويؤديها بشكل صحيح. لكني لا أحب حقًا خيار التحكم هذا لأنه لا يسمح لمكيف الهواء بنقل درجة الحرارة الحالية ، وبالتالي تعديل تشغيله.

ثم نقرت على الأزرار. في توقيع البيانات T = ضبط درجة الحرارة
C = درجة الحرارة الحالية المقاسة بواسطة جهاز التحكم عن بعد. تنفيس = وضع المروحة.

البيانات
83 06 60 73 00 00 FF 00 00
96 04 00 00 00 80 1E 1F FF
00 02 08 00 00 00 0A FF 00
Dry Vent=Auto T=25 Time=22:04 C=30
End
83 06 01 74 00 00 FF 00 00
96 04 00 00 00 80 1E 79 FF
00 06 00 00 00 00 06 FF 00
Vent Vent=Max T=25 Time=22:04 C=30
End
83 06 00 50 00 00 FF 00 00
96 04 00 00 00 80 1E 5C FF
00 06 00 00 00 00 06 FF 00
Heat Vent=Auto T=23 Time=22:04 C=30
End
83 06 00 82 00 00 FF 00 00
96 04 00 00 00 80 1E 8E FF
00 06 00 00 00 00 06 FF 00
Cool Vent=Auto T=26 Time=22:04 C=30
End
83 06 00 73 00 00 FF 00 00
96 04 00 00 00 80 1E 7F FF
00 06 00 00 00 00 06 FF 00
Dry Vent=Auto T=25 Time=22:04 C=30
End
83 06 01 74 00 00 FF 00 00
96 04 00 00 00 80 1E 79 FF
00 06 00 00 00 00 06 FF 00
Vent Vent=Max T=25 Time=22:04 C=30
End
83 06 00 50 00 00 FF 00 00
96 04 00 00 00 80 1E 5C FF
00 06 00 00 00 00 06 FF 00
Heat Vent=Auto T=23 Time=22:04 C=30
End
83 06 00 82 00 00 FF 00 00
96 04 00 00 00 80 1E 8E FF
00 06 00 00 00 00 06 FF 00
Cool Vent=Auto T=26 Time=22:04 C=30
End
83 06 00 92 00 00 FF 00 00
96 04 00 00 00 80 1E 9E FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=27 Time=22:04 C=30
End
83 06 00 A2 00 00 FF 00 00
96 04 00 00 00 80 1E AE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=28 Time=22:04 C=30
End
83 06 00 B2 00 00 FF 00 00
96 04 00 00 00 80 1E BE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=29 Time=22:04 C=30
End
83 06 00 C2 00 00 FF 00 00
96 04 00 00 00 80 1E CE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=30 Time=22:04 C=30
End
83 06 00 D2 00 00 FF 00 00
96 04 00 00 00 80 1E DE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=31 Time=22:04 C=30
End
83 06 00 E2 00 00 FF 00 00
96 04 00 00 00 80 1E EE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=32 Time=22:04 C=30
End
83 06 00 E2 00 00 FF 00 00
96 04 00 00 00 80 1E EE FF
00 02 00 00 00 00 02 FF 00
Cool Vent=Auto T=32 Time=22:04 C=30
End
83 06 00 E2 00 00 FF 00 00
B6 05 00 00 00 80 1E CF FF
00 00 00 00 00 00 00 FF 00
Cool Vent=Auto T=32 Time=54:05 C=30
End
83 06 00 E2 00 00 FF 00 00
96 05 00 00 00 80 1E EF FF
10 0F 00 00 00 00 1F FF 00
Cool Vent=Auto T=32 Time=22:05 C=30
End
83 06 03 E2 00 00 FF 00 00
96 05 00 00 00 80 1E EC FF
04 0B 00 00 00 00 0F FF 00
Cool Vent=Min T=32 Time=22:05 C=30
End
83 06 00 71 80 00 FF 00 00
96 05 00 00 00 80 1E FC FF
00 17 00 00 00 00 17 FF 00
Vent=Auto T=25 Time=22:05 C=30
End
83 06 80 71 00 00 FF 00 00
96 05 40 00 00 80 1E BC FF
00 07 00 00 00 00 07 FF 00
Vent=Auto T=25 Time=22:05 C=30
End
83 06 00 82 00 00 FF 00 00
96 05 00 00 00 80 1E 8F FF
00 06 00 00 00 00 06 FF 00
Cool Vent=Auto T=26 Time=22:05 C=30
End
83 06 04 82 00 00 FF 00 00
96 05 00 00 00 80 1E 8B FF
00 01 00 00 00 00 01 FF 00
Cool Vent=Auto T=26 Time=22:05 C=30
End

Source: https://habr.com/ru/post/ar419797/


All Articles