ESP-KVM 0.51.2، یک میانافزار متنباز که یک برد میکروکنترلر ESP32-P4 را به یک KVM مبتنی بر IP با دسترسی مبتنی بر مرورگر به صفحه نمایش، صفحه کلید و ماوس یک کامپیوتر از راه دور، بدون نصب هیچ عاملی روی دستگاه هدف، تبدیل میکند، منتشر شده است. کد این نرمافزار به زبان C نوشته شده و تحت مجوز Apache 2.0 توزیع شده است. تغییر اصلی در این نسخه، امکان ضبط فعالیت صفحه نمایش هدف بر روی کارت microSD دستگاه است.
ضبط با یک دکمه در رابط وب آغاز میشود و در پوشه VIDEO به عنوان فایلهای .ts با ویدیوی H.264 ذخیره میشود. دستگاه همان جریانی را که به بینندگان ارائه میدهد ضبط میکند، بنابراین نیازی به رمزگذاری مجدد نیست: در برد Espressif ESP32-P4 Function EV، نرخ فریم در حین ضبط هنگام پخش در دستگاه هدف بدون افت کیفیت در ۲۱-۲۲ فریم در ثانیه باقی میماند. فایل .ts در VLC و mpv پخش میشود و در صورت قطع شدن با برداشتن کارت یا خاموش کردن، پخش تا پایان ادامه مییابد. ضبطهای طولانی به فایلهای ۱۰ دقیقهای تقسیم میشوند و پس از یک ساعت متوقف میشوند. هر دو مقدار قابل تنظیم هستند. یک دکمه جداگانه، حتی زمانی که کدک H.264 فعال است، یک تصویر از صفحه را با فرمت JPEG در پوشه SCREENSHOTS ذخیره میکند: از رمزگذار JPEG سختافزاری غیرفعال برای ضبط تصویر از صفحه استفاده میشود.
ضربات کلید و کلیکهای ماوس را میتوان در یک فایل زیرنویس .srt در کنار ویدیو، به صورت رشتههایی مانند "Typed: root"، "Ctrl+Alt+Delete" و "Left click (812, 440)" ضبط کرد. به طور پیشفرض، متن تایپ شده با نقطه جایگزین میشود؛ در صورت تمایل میتوان متن کامل را ذخیره کرد. طرحبندی از تنظیمات صفحهکلید هدف گرفته میشود.
یک حالت دوربین داشبورد اضافه شده است که بر اساس همان اصل دوربین داشبورد خودرو کار میکند: دستگاه به طور مداوم چند دقیقه آخر زمان استفاده از صفحه نمایش را رصد میکند و در صورت وقوع اتفاقی - مانند ثابت شدن صفحه نمایش (معمولاً برای صفحه توقف اضطراری)، ظاهر شدن یک عبارت نظارت شده، خاموش شدن نشانگر برق ATX یا فشار دادن دکمه توسط اپراتور - آنها را به همراه ثانیههای بعدی ذخیره میکند. ویدیوی حاصل به MP4 با فصلهای مربوط به هر رویداد تبدیل میشود و در صورت فعال بودن اعلانها، به عنوان ویدیویی که در چت پخش میشود، به تلگرام ارسال میشود.
دو راه برای ذخیره گذشته وجود دارد: در PSRAM، که تا زمان وقوع رویداد، هیچ فضایی روی کارت اشغال نمیکند، یا روی خود کارت به صورت قطعات کوتاه با حذف قطعات قدیمی. روش دوم همچنین روی بردهایی با تراشه تا نسخه ۳.۰ کار میکند، که پس از راهاندازی رمزگذار H.264، حدود ۳ مگابایت PSRAM آزاد باقی میماند، در مقایسه با ۱۱ مگابایت در نسخههای جدیدتر.
یک حالت تایملپس اضافه شده است: هر تعداد ثانیه مشخص، یک فریم ذخیره میشود و پخش با سرعت ۲۵ فریم در ثانیه انجام میشود، بنابراین یک ساعت ضبط با فواصل ۱۰ ثانیهای میتواند در ۱۴ ثانیه ویدیو ضبط شود. ویدیوهای ضبط شده و عکسها در یک پنل رابط جداگانه سازماندهی میشوند، جایی که میتوان آنها را دانلود، حذف و پخش کرد بدون اینکه ابتدا کل فایل را دانلود کرد. فایلهای MP4 با پخشکننده داخلی مرورگر باز میشوند، در حالی که فایلهای .ts در کنسول به فریم تبدیل میشوند و توسط همان رمزگشای H.264 مانند ویدیوی زنده، با قابلیت عقبگرد و زیرنویس، رمزگشایی میشوند. پشتیبانی از محدوده HTTP برای عقبگرد در سمت دستگاه پیادهسازی شده است.
جستجوی متن روی صفحه نمایش پیادهسازی شده است. هنگام ضبط، دستگاه هر سه ثانیه صفحه را به عنوان یک مجموعه کاراکتر میخواند و آنچه را که میخواند در فایلی در کنار ویدیو ذخیره میکند. در پنل ضبط، جستجوی عبارت زمانی که روی صفحه بوده را نشان میدهد و ضبط را از آن نقطه پخش میکند. فقط صفحات تولید شده توسط مولد کاراکتر خوانده میشوند - بایوس، منوی بوت، برنامه راهاندازی و کنسول.
ضبط، تایملپس و گرفتن اسکرینشات را میتوان از سناریوهای دستگاه ("record 300"، "timelapse 60"، "screenshot") و از دستیار خانگی (Home Assistant) که دارای یک سوئیچ و دکمه برای این کار است، اجرا کرد. ساعت دستگاه اکنون از طریق NTP همگامسازی میشود و منطقه زمانی را میتوان از فهرست شهرهای موجود در تنظیمات انتخاب کرد - قبلاً، این منطقه در بخشی پنهان از رابط کاربری ذخیره میشد.
سایر تغییرات در نسخههای پس از ۰.۴۵.۰:
- نسخه ۰.۴۶. بیلدهایی برای بردهای VIEWE ESP32-P4-Pi و Waveshare ESP32-P4-NANO-WIFI6-DB اضافه شده است. فریمور اکنون با بهینهسازی -O2 ساخته شده است، تخصیص حافظه کوچک به PSRAM منتقل شده است و یک وظیفه هنگ کرده اکنون باعث راهاندازی مجدد به همراه dump میشود.
- ۰.۴۷. اکنون Runbookها در دسترس هستند - ماکروهایی که میتوانند منتظر ظاهر شدن یا ناپدید شدن یک عبارت روی صفحه متن بمانند و هنگام بسته شدن مرورگر، روی خود دستگاه اجرا شوند. اسکریپتها با فرمت DuckyScript اکنون پذیرفته میشوند. یک زمانبند با سینتکس cron و اعلانها به تلگرام (همراه با اسکرینشات) یا webhooks اضافه شده است.
- ۰.۴۸. کارت microSD و ماژول WiFi اکنون به طور همزمان کار میکنند—قبلاً، هر دو از یک اسلات SDMMC استفاده میکردند.
- ۰.۴۹. کارت microSD روی بردهای Function EV و Waveshare ESP32-P4-ETH اکنون به جای ۴ مگاهرتز با فرکانس باس ۴۰ مگاهرتز کار میکند (تقریباً ۹ مگابایت بر ثانیه خواندن، تقریباً ۴ مگابایت بر ثانیه نوشتن): خطوط برق اسلات توسط رگولاتور یکپارچه تغذیه نمیشوند. بارگذاری تصویر از طریق رابط وب تقریباً ۵۰ برابر افزایش یافته و به ۳.۵ مگابایت بر ثانیه از طریق اترنت رسیده است. حالت صفحهکلید برای بایوسهای قدیمیتر اضافه شده است - دستگاه هدف اکنون یک دستگاه واحد را با سرعت USB 1.1 میبیند، به استثنای ماوس یا دستگاه ذخیرهسازی. اکنون دستگاه گزارش میدهد که آیا حالت HDMI از پهنای باند دو خط MIPI CSI فراتر میرود یا خیر.
- ۰.۴۹.۱. سرعت خواندن از درایو مجازی توسط دستگاه هدف با خواندن از کارت در بلوکهای ۲۵۶ کیلوبایتی از ۵.۶ به ۹ مگابایت بر ثانیه افزایش یافته است. تغییرات تصویر اکنون بدون اتصال مجدد USB برای دستگاه هدف قابل مشاهده است.
- ۰.۵۰. کارت microSD را میتوان در حین کار دستگاه تعویض کرد، حتی اگر در اواسط کپی کردن برداشته شود: اسلات هر پنج ثانیه بررسی میشود. مشکل تأخیر در MJPEG که باعث میشد مرورگر فریم قبل از آخرین ضربه کلید را روی صفحه نمایش ثابت نمایش دهد، برطرف شد.
منبع: opennet.ru
