
اگر مدتها از Home Assistant استفاده کرده باشید، احتمالاً با فروشگاه انجمنی Home Assistant یا همان HACS (مخفف Home Assistant Community Store) مانند یک فروشگاه برنامه بیقاعده برخورد کردهاید؛ جایی که برای هر دستگاه هوشمند تازه یا هر ایده آزمایشی، افزونههای سفارشی (Custom Integration)، پوستهها (Theme) و کارتهای رابط کاربری (Front-end Card) نصب کردهاید. نتیجه این رفتار، تبدیل شدن پوشه custom_components به یک کشوی پر از آشغال دیجیتال است؛ پر از کارتهای آزمایشی رهاشده، اسکریپتهای از کار افتاده برای فراخوانی API و افزونههایی برای دستگاههایی که سالها پیش کنار گذاشتهاید.
با نزدیک شدن HACS به تجربهای رسمی و گزینششده (Curated Marketplace) در دل Home Assistant، دیگر زمان آن رسیده که با این فروشگاههای سفارشی مانند یک محیط بیقانون رفتار نکنیم. یک نسخه متورم و شلوغ از Home Assistant، نسخهای کند است؛ و اکنون بهترین زمان برای یک بازبینی بیرحمانه و حذف افزونههای فراموششدهای است که عملکرد خانه هوشمند شما را پایین میکشند.
افت عملکرد و کاهش امنیت؛ دو پیامد پنهان افزونههای رهاشده
افزونههای سفارشی رهاشده بهطور مستقیم به نمونه Home Assistant شما آسیب میزنند. نخستین مشکلی که ممکن است تجربه کنید، کند شدن حلقه رویداد (Event Loop) و تورم پایگاه داده است. هر افزونه سفارشی، شنوندههایی (Listener) ثبت میکند، بهصورت دورهای APIهای محلی را فراخوانی میکند (Polling) یا تغییرات وضعیت را در پایگاه داده SQLite یا PostgreSQL شما ثبت میکند. با اجرای همه این فرایندها، یک افزونه فراموششده که مدام خطای مهلت زمانی (Timeout) تولید میکند یا نقطه پایانی از کار افتادهای را فراخوانی میکند، حجم زیادی از فعالیتهای پسزمینه بیفایده ایجاد میکند. این موضوع به نوبه خود میتواند مصرف پردازنده (CPU) را بالا ببرد و تاریخچه ضبطکننده (Recorder History) را متورم کند.
در کنار این افتهای عملکردی، خطرات امنیتی نیز وجود دارد. برخلاف افزونههای رسمی هسته (Core Integration) که با هر انتشار اصلی Home Assistant بهصورت خودکار وصله میشوند، اجزای سفارشی رهاشده در HACS کاملاً به توسعهدهندگان مستقل وابستهاند. یعنی اگر یک مخزن (Repository) بدون نگهداری رها شود، میتواند بیسروصدا از کار بیفتد یا آسیبپذیریهایی را وارد سیستم کند.
چگونه HACS خود را بازبینی و پاکسازی کنیم؟
برای مرتب کردن مجموعه برنامههای نصبشده در فروشگاه انجمنی Home Assistant، ابتدا باید همه آنها را بازبینی کنید. بهترین راه برای پاکسازی یک نمونه پایدار، شروع از خود گزارش راهاندازی (Startup Log) است. وارد بخش Settings، سپس System و بعد Logs شوید و به دنبال هشدارهای مربوط به افزونههای سفارشی، اعلانهای منسوخشدن (Deprecation Notice) و خطاهای مهلت زمانی بگردید. احتمالاً با فهرست بلندی از برنامههایی روبهرو میشوید که نصب کردهاید و کاملاً فراموششان کردهاید. میتوانید هر ورودی بیاستفاده را از طریق رابط کاربری HACS حذف کنید و مطمئن شوید پوشههای باقیمانده را نیز پاک میکنید.
در گام بعد، پوشه custom_components را بازبینی کنید. ویرایشگر فایل یا اشتراک Samba خود را باز کنید، پوشههای داخل مسیر config/custom_components را بررسی کنید و هر یک را با دستگاههایی که هماکنون در اختیار دارید و استفاده میکنید مقایسه کنید. ممکن است ببینید دستگاهی را سالها پیش کنار گذاشتهاید اما برنامه HACS مربوط به آن هنوز باقی مانده است. باز هم ورودیهای بیاستفاده را حذف کنید و پوشههای باقیمانده را پاک کنید.
مواردی که باید به آنها توجه ویژه داشته باشید عبارتاند از:
- قبرستان آزمایشها: افزونههایی که برای یک پروژه آخر هفته، یک لامپ هوشمند خاص که دیگر ندارید، یا سرویس API که اشتراکش را لغو کردهاید نصب شدهاند.
- افزونگی در رابط کاربری: کارتهای سفارشی Lovelace که با بهروزرسانیهای بومی داشبورد Home Assistant منسوخ شدهاند؛ برای نمونه، قابلیتهای هستهای متعددی اکنون بهصورت بومی از پوستهها پشتیبانی میکنند، در حالی که پیشتر به کارتهای سفارشی نیاز بود.
- مخازن بیسرپرست (Orphaned Repository): اجزایی که هنگام راهاندازی، هشدارهای پیوسته در گزارشها تولید میکنند، چون ساختار API شخص ثالث زیربنایی آنها تغییر کرده است.
پس از حذف همه این موارد، نمونه Home Assistant خود را دوباره راهاندازی کنید. با کاهش زمان راهاندازی (Boot Time)، باید بهبود کلی عملکرد را نیز مشاهده کنید.
HACS در حال تغییر به سمت بهتر است
یک تغییر بزرگ در بازارچه HACS در راه است و بالغ شدن آن برای اکوسیستم اصلی این پلتفرم حیاتی است. سالها HACS در موقعیتی متزلزل بهعنوان یک افزونه سفارشی ساکن در پوشه custom_components زندگی میکرد؛ یعنی برای کار کردن به ترفندهای نصب جانبی (Side-load) وابسته بود.
انتقال HACS به یک بازارچه رسمیتر، سطح کیفی را بالا میبرد. با حرکت HACS به سمت یکپارچگی رسمی و همراستایی بیشتر با اکوسیستم، روزهای نصب اسکریپتهای تصادفی و بدون هیچ نظارتی عملاً رو به پایان است. میتوانید مطمئن باشید برنامهای که دانلود میکنید، استانداردهای مشخصی از نظر عملکرد و امنیت را رعایت میکند. همچنین از دسترسی بدون اصطکاک به فهرست برنامهها بهرهمند میشوید، چون بازارچه جدید بومی (Native) است. دیگر برای مرور و دانلود داراییهای فهرست، نیازی به الزامات سختگیرانه، اتصال حساب شخصی GitHub یا کار با توکنهای پیچیده API برای موارد عادی نیست. محتوا اعتبارسنجی میشود و مستقیماً از طریق داراییهای انتشار بهینهشده (Release Asset) دریافت میگردد؛ رویکردی که تجربه کاربری را به یک فروشگاه برنامه سنتی و صیقلخورده نزدیکتر میکند.
در کنار این موارد، میتوانید پایداری بومی را نیز تجربه کنید. پیشتر، یک بهروزرسانی هسته یا تغییر در بارگذارنده (Loader) میتوانست HACS را کاملاً از کار بیندازد و شما را بلاتکلیف بگذارد. با ادغام منطق نصبکننده در هسته، سازگاری پیوسته و بدون وقفه با معماری زیربنایی سیستم تضمین میشود.
و از آنجا که فروشگاه مستقیماً در پنل تنظیمات جای گرفته است، کاربران تشویق میشوند ارزیابی کنند که آیا واقعاً به یک جزء سفارشی نیاز دارند یا نه. در سالهای اخیر، هسته Home Assistant بسیاری از افزونههای محبوب HACS را بهطور تهاجمی جذب کرده و مستقیماً در انتشارهای رسمی خود جای داده است؛ مواردی مانند جایگزینهای محلی Tuya، داشبوردهای پیشرفته مدیریت انرژی و کنترلهای خاص دستگاهها. بنابراین ممکن است اصلاً نیازی به نصب اجزای سفارشی نداشته باشید.
جمعبندی؛ امنیت و سرعت را در دست بگیرید
یک خانه هوشمند عالی با تعداد نشانهای سفارشی نصبشده در HACS سنجیده نمیشود، بلکه با سرعت، پایداری و قابلیت اطمینان اتوماسیونهای اصلی آن ارزیابی میشود. امروز HACS را باز کنید، گرد و غبار دیجیتال را پاک کنید، افزونههای فراموششده را هرس کنید و بگذارید نمونه Home Assistant شما مانند یک ماشین روغنکاریشده و بینقص کار کند.