خلاصه
با یک برد ESP32 و نمایشگر ارزان، سیستم «On Air» ساختم که وضعیت جلساتم را از گوگلکالندر میخواند و بهصورت زنده روی صفحه نشان میدهد تا همخانهها بدانند کی مزاحم نشوند.
مقدمه
کار در خانه راحت است تا وقتی کسی وسط جلسه در را باز نکند! با این پروژه ۳ ساعته، یک چراغ هوشمند ساختم که خودش وضعیت تماسم را اعلام میکند.
آنچه لازم دارید
- برد ESP32 با صفحهنمایش لمسی (مثل WT32-SC01 Plus)
- ESPHome نصبشده روی دستگاه
- Home Assistant با دسترسی به اینترنت
- یک تقویم گوگل که رویدادهای کاری در آن باشد
مرحله ۱: تقویم را به Home Assistant بیاورید
در مسیر Settings > Devices & Services > Add Integration، Google Calendar را اضافه کنید. هر تقویم بهصورت یک موجودیت (entity) جدا نمایش داده میشود.
سنسورهای الگویی که بسازید
نام سنسور | کاربرد عنوان جلسه | نمایش نام جلسه ساعت شروع | استخراج ساعت شروع ساعت پایان | استخراج ساعت پایان در جلسهام؟ | باینریسنسور خود تقویم امروز جلسه دیگری دارم؟ | بررسی وجود رویداد بعدی در همان روز
کد نمونه برای ساعت شروع:
{% set s = state_attr('calendar.your_mail_com','start_time') %} {% if s %} {% set dt = as_datetime(s) %} {{ dt.strftime('%H:%M') }} {% else %}-{% endif %}
مرحله ۲: ESPHome را پیکربندی کنید
فایل YAML دستگاه را طوری بسازید که چهار متغیر زیر را از Home Assistant دریافت کند:
- وضعیت «در جلسه» (true/false)
- عنوان جلسه فعلی یا بعدی
- ساعت پایان جلسه فعلی
- پاسخ به این سوال: «امروز جلسه دیگری دارم؟»
منطق نمایش
وضعیت | رنگ صفحه | متن |
---|---|---|
در جلسهام | قرمز | On Air تا ۱۴:۳۰ |
جلسهای نیست و امروز جلسه دیگری دارم | آبی | Free بعدی: ۱۶:۰۰ |
جلسهای نیست و امروز دیگر جلسهای ندارم | سبز | Free امروز تمام شد! |
نصب و تست نهایی
۱. دستگاه را فلش کنید.
۲. در Home Assistant، از قسمت Services، سرویس esphome.your_device_reload
را اجرا کنید تا متغیرها فوراً بهروز شوند.
۳. یک رویداد آزمایشی در تقویم بسازید و ببینید صفحه چگونه تغییر میکند.
ایدههای بعدی
- اتصال به HASS-Agent برای تشخیص روشن بودن وبکم یا میکروفون
- افزودن دکمه لمسی برای دستی کردن وضعیت
- پخش صدای ملایم «لطفاً مزاحم نشوید» هنگام شروع جلسه
همین حالا میتوانید تمام کدها را از مخزن گیتهاب پروژه دانلود و شروع به ساخت کنید.