لقد تم طرح الموضوع بشكل متكرر بالفعل ، وحتى أن هناك حلولًا ، لكني سأخبرك عن شيء آخر. أثناء تصفح أحد المواقع الشهيرة على الإنترنت ، صادفت جهازًا لم يكن معروفًا لي من قبل ، وهو Broadlink RM Mini 3. وكان السعر في ذلك الوقت 9.90 دولارًا. وهو أرخص بكثير من نظائرها. ولكن كانت هناك أيضًا عيوب أدناه.
الجهاز عبارة عن أسطوانة ، يوجد في الجزء العلوي منها 360 درجة من أجهزة استشعار الأشعة تحت الحمراء. إدارة الجهاز من خلال التطبيق. يمكنك التحكم في أي جهاز يحتوي على جهاز استقبال IR. ولكن كان هدفي هو التحكم في التكييف. للعودة إلى المنزل ، تمكن بالفعل من خلق درجة حرارة مريحة.كانت مشكلتي الأولى أن مكيف الهواء الخاص بي لم يقبل الأوامر التي يتم تنزيلها تلقائيًا من الخادم بعد تدريب الجهاز. تم تحديد كل شيء عن طريق تكوين جهاز التحكم عن بعد يدويًا ، مثل هذه الفرصة موجودة في البرنامج. لكن هذا لم يكن كل شيء ، الشيء التالي الذي أدركته هو أن بعض الأوامر ، على سبيل المثال ، تغيير سرعة المروحة ، تحتوي أيضًا على درجة حرارة. اتضح أنه إذا قمت بتغيير سرعة المروحة ، فستتغير أيضًا درجة الحرارة التي كانت أثناء تدريب الجهاز.الشيء التالي الذي ظهر ، التطبيق لا يرى الجهاز من خلال VPN. في تطبيق Android ، يتم اكتشاف الجهاز تلقائيًا والعثور عليه أيضًا على الشبكة ؛ لا يمكنك تحديد العنوان يدويًا.ما يلي ليس بالغ الأهمية ، ولكن هناك فارق بسيط في التحكم عبر الإنترنت باستخدام الخدمة السحابية الخاصة بالشركة المصنعة. على الرغم من اتصال التطبيق والجهاز مباشرة على الشبكة المحلية ، لم يرغب شخص ما في منح السيطرة على الإنترنت. لا يوجد API مفتوح موجود.باستخدام استنشاق حركة المرور على جهاز توجيه WiFi ، اتضح أن التطبيق والجهاز يتواصلان مع حزم UDP الأخرى على المنفذ 80.tcpdump -w /tmp/dump.cap host <ip >
تقرر إنشاء وحدة تحكم على خادم ويب محلي للتحكم في تكييف الهواء. من البداية نقوم بإنشاء جهاز التحكم عن بعد في التطبيق الخاص:
بعد ذلك نطلق الشم ونبدأ في تنفيذ جميع الأوامر ببطء. إيقاف الشم والتأكد من تطابق عدد الحزم مع عدد الأوامر المنفذة ونسخها إلى تطبيق الويب. الشيء الممل الوحيد هو تذكر درجة الحرارة بسرعات دوران مختلفة. اتضح ما يلي:
وبعد ذلك أغلقت الاتصال بالإنترنت للجهاز.تم نشر جميع التعليمات البرمجية على GitHub