
استفاده از هوش مصنوعی برای نوشتن اتوماسیونهای (Automation) خانه هوشمند امروز به رویهای رایج تبدیل شده است؛ زیرا بسیاری از کاربران نوشتن فایلهای طولانی YAML را کاری خستهکننده میدانند. اما گام منطقی بعدی، دادن دسترسی به کل پیکربندی (Configuration) موجود و سپردن بازبینی آن به دستیار هوش مصنوعی است. در همین راستا، یکی از کاربران Home Assistant از کلود کد (Claude Code) خواست تا کل پیکربندی او را بررسی کند و بهجای توقف در فایل configuration.yaml، تمام خطاها را شناسایی کند. نتیجه این بررسی، خطاهایی ابتدایی بود که به گفته او برای کسی که چندین دستگاه را با Home Assistant مدیریت میکند، تا حدی شرمآور است.
چرا بررسی فقط یک فایل کافی نیست؟
پیکربندی Home Assistant معمولاً میان چندین فایل تقسیم میشود. فایل configuration.yaml تنها نقطه شروع است و به فایلهای جداگانهای برای اتوماسیونها، اسکریپتها (Script)، قالبها (Template) و بستهها (Package) ارجاع میدهد. اگر یک اتوماسیون، اسکریپتی را فراخوانی کند که فرمانهای واقعی دستگاه در آن قرار دارد، مطالعه تنها فایل اتوماسیون تصویر کاملی از عملکرد آن ارائه نمیدهد.
اتصال پروتکل زمینه مدل (MCP) که پیشتر برای کنترل دستگاهها استفاده میشد، تنها از طریق رابط برنامهنویسی دستیار (Assist API) به موجودیتهای (Entity) در دسترس دسترسی میدهد؛ اما بازبینی فایلهای YAML نیازمند دسترسی جداگانه به خود فایلهاست. کاربر میتواند نسخهای محلی از پیکربندی را در اختیار کلود کد قرار دهد یا پوشه پیکربندی را با رایانه خود به اشتراک بگذارد تا بدون نیاز به کپیکردن دستی هر فایل، امکان جستوجو در آنها فراهم شود.
خطاهایی که با یک کلمه اشتباه آغاز میشوند
بسیاری از کاربران برای صرفهجویی در زمان، یک اتوماسیون موجود را بازاستفاده میکنند و تنها دستگاهها و شرایط را تغییر میدهند. همین رویه باعث میشود شناسه قدیمی یک موجودیت (Entity ID) در جایی از فایل YAML باقی بماند؛ مثلاً سنسوری تعویض شده باشد اما ارجاعی به دستگاه قدیمی همچنان در کد وجود داشته باشد. جستوجوی سراسری چنین ارجاعهایی در میان فایلها، کاری است که کلود کد بهخوبی از عهده آن برمیآید.
حتی با شناسه صحیح نیز ممکن است وضعیت (State) اشتباه تعریف شود. Home Assistant وضعیت یک سنسور در را بهصورت «Open» یا «Closed» نمایش میدهد؛ بنابراین استفاده از عبارت open در یک تریگر (Trigger) منطقی به نظر میرسد. اما وضعیت واقعی این سنسور دودویی (Binary Sensor) در واقع on و off است؛ پس اتوماسیونی که منتظر وضعیت open میماند، هرگز تغییر مورد انتظار را دریافت نمیکند. اصلاح این خطا تنها به تغییر یک کلمه نیاز دارد، به شرط آنکه ابتدا وضعیت واقعی سنسور بررسی شود.
این اشتباه در مرحله آزمایش نیز بهسادگی نادیده گرفته میشود؛ زیرا فشردن دکمه «اجرای فرمانها» (Run actions) باعث روشن شدن چراغ میشود و کاربر تصور میکند اتوماسیون درست کار میکند. در حالی که این دکمه، تریگر و شرایط سطح بالا را نادیده میگیرد.
YAML معتبر هم میتواند رفتار نادرست داشته باشد
حالت اجرا (Run Mode) نمونهای روشن از این موضوع است. فرض کنید اتوماسیونی برای چراغ حساس به حرکت تعریف شده که چراغ را روشن میکند، پنج دقیقه صبر میکند و سپس آن را خاموش میکند. کاربر انتظار دارد با هر بار تشخیص حرکت، پنج دقیقه تازه آغاز شود؛ اما اگر اتوماسیون از حالت پیشفرض single استفاده کند، تریگر جدید در طول این تأخیر نادیده گرفته میشود، اجرای اولیه ادامه مییابد و چراغ پس از پایان همان پنج دقیقه اول خاموش میشود.
برای چنین سناریویی، حالت restart منطقیتر است؛ زیرا تریگر واجد شرایط جدید، اجرای فعلی را متوقف کرده و توالی را از ابتدا، همراه با تأخیر، آغاز میکند. البته همچنان لازم است سنسور یک گذار واجد شرایط تازه گزارش کند؛ سنسوری که در وضعیت روشن باقی مانده باشد، صرفاً با حرکت دادن دست، تغییر تازهای از off به on تولید نمیکند.
کلود کد همچنین خطایی را در اتوماسیونهایی کشف کرد که منتظر باقیماندن یک وضعیت برای مدتی مشخص میمانند. افزودن عبارتی مانند for: "00:05:00" به این معناست که وضعیت باید پنج دقیقه پایدار بماند تا تریگر فعال شود؛ اما این شمارش در صورت راهاندازی مجدد Home Assistant یا بارگذاری دوباره اتوماسیونها بازنشانی میشود. اگر یک روال نیازمند حفظ مهلت در طول تعمیرات و راهاندازی مجدد باشد، باید بهصورت جداگانه برای آن تدبیری اندیشید.
نگاهی دوباره به اتوماسیونهای موجود
اگر از کلود کد برای نوشتن اتوماسیونهای Home Assistant استفاده میکنید، ارزش آن را دارد که از آن بخواهید پیکربندی موجودتان را نیز بازبینی کند. زمینه کافی در اختیار آن قرار دهید تا هدف هر روال را درک کند، زیرا فایلها بهتنهایی همه تصمیمهای شما را توضیح نمیدهند. پس از فراهمکردن دسترسی مناسب، بهاحتمال زیاد خواهید پذیرفت که باید خیلی زودتر اینقدر به پیکربندی موجود خود توجه میکردید.