"Yulduzli Yo'l" boshqaruv paneli: O'z qo'llarim bilan orzularimni ro'yobga chiqardim

Pandemiya davrida boshlangan qiziqishlarimdan biri – uy avtomatlashtirish edi. Men Home Assistant bilan tanishdim – ochiq kodli, moslashuvchan uy avtomatlashtirish platformasi. Uyingizni yanada yaxshiroq ishlashiga yordam beradigan juda ko'p imkoniyatlar mavjud.
Menda ADHD bor va Home Assistantni ijro etuvchi disfunktsiyani boshqarish uchun qimmatli vosita deb topdim. Men undan eshitiladigan taqvim eslatmalari, kir yuvish eslatmalari, taymerlar, qo'ng'iroq kameramni va itim uchun enaga kameramni kuzatish uchun foydalanaman. Bu men uchun sof nerd quvonchining ajoyib manbai. Va yaqinda men uy avtomatlashtirishga qiziqishimda eng quvonchli nerd qadamini tashladim.
Home Assistant sizga aqlli uy qurilmalaringiz bilan o'zaro aloqada bo'lish uchun maxsus panellar yaratishga imkon beradi. Jamiyat a'zolari o'z panellarini takomillashtirish uchun behisob soatlarni sarflashadi va ularning ba'zilari haqiqatan ham ta'sirchan. Men hatto Home Assistant uchun jamoa mavzusini ham topdim, bu meni voyaga yetgan "Yulduzli Yo'l"ning keyingi avlodi davridagi LCARS kompyuter boshqaruv tizimiga o'xshaydi. LCARS - bu amaliy yoki foydali kompyuter interfeysi emas. Uning maqsadi "tomoshabin sahnaning fonida ko'rganida yaxshi tashkil etilgan narsani taklif qilish"dir. Ammo bu ajoyib narsa. Estetika meni sakkiz yoshimda ushlab oldi va hech qachon qo'yib yubormadi.
Uy avtomatlashtirishimning aksariyati mening aralashuvisiz haqiqiy avtomatlashtirish orqali sodir bo'ladi va men ovozni boshqarishdan keng foydalanaman (ha, "Kompyuter" mening uyg'onish so'zim. Men "Yulduzli Yo'l"ni tomosha qilayotganimda soxta signal berish bunga arziydi). Ammo men har doim panelni xohlaydigan ba'zi narsalar bor. Ba'zan siz narsalarni qo'lda boshqarishni xohlaysiz. Ob-havo displeylari yoki maxsus yorug'lik sahnalarini ishga tushirish uchun yaxshi.
Home Assistantga bo'lgan qiziqishim boshlanganidan beri men LCARS uslubidagi interfeysdan foydalanishni xohlardim. Yuqorida ko'rsatilgan mavzu juda yaxshi - men uni telefonimning asosiy paneli uchun ishlataman. Ammo bu mukammal emas.
O'lcham va tirsak bo'luvchilarining nisbati biroz o'chirilgan va tugmalar ikkita qismga bo'linadi. Bu mayda narsa. Ammo men aniqlik narsasini iloji boricha uzoqroqqa olib borishni xohlaydigan muxlisman. Shunday qilib, men o'zimnikini qildim.
Men yaqinda LVGL (Light and Versatile Graphics Library)ni topdim, bu sizga standart Home Assistant panel sozlamalariga qaraganda ancha moslashuvchan va murakkab grafik interfeyslarni yaratishga imkon beradi. Men LVGL Home Assistant bilan gaplasha oladigan qandaydir yo'l bo'lishi kerakligini tushundim. Boshqotirmani yakuniy qismi ESPHome edi. ESPHome - bu ochiq kodli firmali dasturiy ta'minot bo'lib, men kabi kodlash bo'yicha yangi boshlovchilarga nisbatan oddiy belgilash tilidan foydalanib, ESP32, ESP8266 va RP2040 kabi Wi-Fi yoqilgan mikrokontrollerlarni dasturlashga imkon beradi va u Home Assistant bilan chuqur integratsiyalashgan. Imkoniyatlar juda katta. Men ESPHome komponentlaridan harakat detektorlari, mavjudlik sensorlari, havo sifati sensori va LED chiziqlari uchun kontrollerlar sifatida foydalanaman. Va ESPHome muayyan displey uskunalarida LVGLni qo'llab-quvvatlaydi.
Shunday qilib, men o'rnatilgan ESP32-S3 mikrokontrolleri bilan ushbu Waveshare 7 dyuymli sensorli displeyni sotib oldim va ishga tushdim.
Men 90-yillarda "Yulduzli Yo'l"da namoyish etilgan ko'plab LCARS panellarining skrinshotlari va muxlislar tomonidan yaratilgan rasmlarni topish uchun soatlab internetni ko'zdan kechirdim. Va men buni quyidagilarga qisqartirdim:
Bu "Yulduzli Yo'l: Voyager" filmidagi Tuvok kvartirasida ko'rgan grafik. Shouda nima qilishi kerakligini bilmayman, lekin unda ko'plab rangli tugmalar va yumaloq burchaklar mavjud. Va eng muhimi, yuqori qismida ikkita o'lchagich bor, kim biladi nima uchun. Ammo men uchun bu yoritish yorqinligini boshqarishga o'xshardi. Shunday qilib, menda dizaynim bor edi.
Keyin uni qurish kerak edi. ESPHome-da LVGL yordamida interfeysni yaratish uchun siz o'zingiz xohlagan grafik elementning xususiyatlarini (o'lcham, joylashuv, rang va hokazo) belgilash uchun YAMLdan foydalanasiz. LVGL ularni "vidjetlar" deb ataydi. Shunday qilib, avval men o'z dizaynimni Adobe Illustrator-da ma'lumotnoma sifatida yaratdim.
Keyin men ushbu dizaynni Home Assistant-dagi ESPHome muharririda qayta yaratishning ancha zerikarli vazifasini boshladim. Yaxshiyamki, ESPHome-da foydalanish uchun C tilini (LVGL yozilgan til) bilishingiz shart emas. Buning o'rniga siz YAMLdan foydalanasiz, bu men kabi ishtiyoqli havaskor uchun ancha kechirimli. Komponent tomonidan komponent, men har bir tugmachaning o'lchamlarini, uning joylashuvini, rangini, qanday yorlig'i bo'lishini va shaklini belgiladim. LVGL-da shunchaki rasmlarni kiritish o'rniga, o'rnatilgan vidjetlardan foydalanish eng yaxshi amaliyotdir. LVGLda bu imkoniyat mavjud, ammo ESP32 mikrokontrollerlarida ko'plab zaxira resurslari yo'q va tasvirlar ularni tezda yo'q qiladi. Ushbu dizaynda ishlatiladigan yagona haqiqiy tasvirlar - yuqori o'ngdagi ikkita o'lchagich. Boshqa barcha shakllar LVGL tugmachalari vidjetlari.
Men notekis shakllar uchun biroz aldashim kerak edi. LCARS interfeysidagi ba'zi tugmalarda faqat ikkita yumaloq burchak mavjud. LVGL tugmachalari yumaloq burchaklarga kelganda hammasi yoki hech narsa emas. Yaxshiyamki, LVGL shakllarni bir-birining ustiga qo'yishga qarshi emas. Yarim yumaloq bo'lgan tugmalar uchun men shunchaki dumaloq tugmachaning oxiriga doira qo'ydim. Ular bir xil rangda, shuning uchun u bitta shaklga o'xshaydi. O'rtadagi tirsaklar ham xuddi shunday qilingan.
Oxir oqibat men u erga etib bordim. Yashash xonamda halol haqiqiy ko'rinishdagi LCARS sensorli ekran. 12 yoshli men juda taassurot qoldirgan bo'lardi. 41 yoshli men, albatta.
Qolgan barcha narsa uni qurilmalarimga ulash edi. Ushbu loyihani amalga oshirayotganda men yashash xonamda edim, shuning uchun men yashash xonam lampalarini tanladim. (Ha, men bu loyihani nima bilan shug'ullanishim haqida aniq tasavvurga ega bo'lmasimdan oldin qildim. Bu butunlay pragmatik fikrlaydigan odamlar uchun emas.)
Men ma'lum bir tugmani chiroqlar yoqilganda oq rangga aylantirishni va chiroqlar o'chirilganda asl rangiga qaytarishni sozladi. Boshqa tugma aslida chiroqlarni yoqib o'chirdi. Ko'proq tugmalar ko'proq ish qilsa, menga shunchalik haqiqiy tuyuladi. Va bu panelda uyimda chiroqlardan ko'ra ko'proq tugmalar mavjud. O'lchagichlardan biri mening uyimning ish rejimi "normal"mi yoki "qulay"mi ekanligini ko'rsatadi, bu mening keng WLED sozlamalarimdagi yorug'lik sahnalarini belgilaydi.
Panel bilan sensorli ekran divanim yaqinidagi stendda turadi. Bu umuman amaliy emas. Biz allaqachon LCARS haqida bilardik. Biroq, bu go'zal. Va bu mening nerd yuragimni juda xursand qiladi, chunki men endi uyimni bolalik qahramonlarim o'z kosmik kemalarini boshqarganidek boshqarishim mumkin.