جوزف دیجیووانی (Joseph DiGiovanni)، توسعهدهندهای در حوزهی خانهی هوشمند، فریمور متنبازی برای جعبهی خودشوی گربهی Litter-Robot 4 شرکت ویسکر (Whisker) ایجاد کرده است که فریمور اصلی و ابرمحور این محصول را با ESPHome (فریمور متنباز محبوب برای تراشههای ESP8266 و ESP32 که امکان یکپارچهسازی دستگاههای خانگی با پلتفرم خودکارسازی هوم اسیستنت را فراهم میکند) جایگزین میکند.
مشکل اصلی، وابستگی محصولات هوشمند به سرورهای شرکت سازنده بود
بسیاری از محصولات خانه هوشمند بازار، بهمحض قطع اینترنت یا از کاراُفتادن سرورهای سازنده، بخش زیادی از هوشمندی خود را از دست میدهند؛ حتی اگر عملکرد پایهایشان ادامه یابد، ویژگیهای پیشرفتهتر معمولاً به سرویسهای ابری وابستهاند که هر لحظه ممکن است تعطیل شوند. این فریمور جدید، به کاربرانی که ترجیح میدهند کنترل کامل دستگاههای خود را در دست داشته باشند، امکان میدهد Litter-Robot 4 را مستقیماً و از طریق شبکهی محلی، بدون نیاز به سرورهای ویسکر، بدون ارسال دادهی تلهمتری از خانه به بیرون و بدون نگرانی از قطعشدن احتمالی سرویس ابری در آینده به هوم اسیستنت (Home Assistant) متصل کنند.
معماریای که Litter-Robot را ایمن کرد
پرسش بدیهی دربارهی چنین پروژهای این است که آیا جایگزینکردن فریمور یک دستگاه با قطعات مکانیکی متحرک و نسبتاً سنگین، ایمن است؟ خوشبختانه معماری برد اصلی Litter-Robot 4 این کار را ممکن کرده است: این برد از دو پردازنده تشکیل شده؛ یک میکروکنترلر PIC که مسئول موتورها، حسگرهای ایمنی، حسگرهای وزن و دکمهها است و یک تراشهی ESP32 که عمدتاً نقش پُل وایفای به UART را ایفا میکند.
از آنجا که ESP32 مستقیماً دستگاه را کنترل نمیکند و صرفاً دستورات را میان فضای ابری و PIC ردوبدل میکند، تعویض فریمور آن، نحوهی ارتباط جعبه با دنیای بیرون را تغییر میدهد، بدون آنکه به منطق کنترلی حیاتی و ایمنی دستگاه دست بزند.
روند مهندسی معکوس
همین جداسازی، مهندسی معکوس این پروژه را هم سادهتر کرد؛ دیجیووانی توانست تمرکز خود را صرفاً روی ارتباط میان دو پردازنده بگذارد. او برای جلوگیری از خطر آسیب به دستگاه خودش، ابتدا یک برد اصلی یدکی Litter-Robot 4 خریداری کرد، سپس با تراشیدن پوشش محافظ (Conformal Coating) روی یک هدر دیباگ خالی از قطعه، آن را در معرض دسترسی قرار داد و یک کانکتور ششپین به آن لحیم کرد. یک برد توسعهی ESP-Prog-2 هم امکان برنامهریزی فریمور و پایش سریال ESP32 را فراهم کرد.
با اتصال سختافزار، او ترافیک UART را هنگام فشردن دکمههای دستگاه و صدور دستور از طریق اپلیکیشن رسمی ضبط کرد و با مقایسهی بستههای هگزادسیمال با اطلاعات وضعیت دستگاه، پروتکل سریال میان ESP32 و PIC را رمزگشایی کرد. او ابتدا مفهوم را با فایل پیکربندی YAML در ESPHome آزمایش و سپس آن را در قالب یک مؤلفهی اختصاصی C++ برای ESPHome پیادهسازی کرد که دستورها را میسازد، پاسخها را تجزیه میکند و همهچیز را در اختیار هوم اسیستنت قرار میدهد.
فرایند هک Litter-Robot 4 برای آزادسازی آن از وابستگی به سرویس ابری (منبع تصویر: Joseph DiGiovanni / Hackster.io)
همسطح با اپلیکیشن رسمی و فراتر از آن
فریمور نهایی این پروژه عملاً تمام ویژگیهای در دسترس از طریق اپلیکیشن رسمی را پشتیبانی میکند: شروع یا توقف چرخهی نظافت، ریست دستگاه، کنترل چراغ شب، تنظیم تأخیر چرخه، قفل پنل جلو، پایش سطح خاک گربه، وضعیت کشوی زباله، فعالیت حیوان خانگی، حرکت و اندازهگیری وزن. همین دادهی وزن، بهصورت محلی برای تشخیص چند گربهی مختلف هم قابل استفاده است.
این فریمور همچنین قابلیتهایی فراتر از نرمافزار اصلی هم اضافه میکند: برنامهی خواب قابلتنظیم برای هر روز هفته بهطور جداگانه (بهجای یک برنامهی واحد برای روزهای کاری و تعطیل) و دسترسی مستقیم هوم اسیستنت به دادهی حسگرهای لیزری و وزنی برای تشخیص دقیقتر ورود و خروج گربه؛ قابلیتی که امکاناتی مانند روشنکردن خودکار فن تهویه پس از استفاده یا اعزام یک ربات جاروبرقی برای جمعکردن خاک پخششده را فراهم میکند.
محدودیتهای فعلی
این پروژه هنوز کامل نیست. بهروزرسانی فریمور برد اصلی هنوز پشتیبانی نمیشود، یکپارچهسازی با لیتِرهاپر (LitterHopper، لوازم جانبی ویسکر برای استفادهی مشترک چند گربه از یک جعبه) هنوز پیادهسازی نشده و در حال حاضر تنها مدل Litter-Robot 4 بهطور رسمی پشتیبانی میشود. با این حال، از آنجا که فریمور اصلی کارخانه قابل پشتیبانگیری و بازگردانی است، این پروژه مسیری نسبتاً کمریسک برای بازپسگیری یک دستگاه هوشمند دیگر از وابستگی به ابر به شمار میرود. کد کامل این فریمور بهصورت متنباز در Codeberg در دسترس علاقهمندان قرار دارد.

