Mündəricat:
- Addım 1: Həll yoluna ümumi baxış
- Addım 2: Heykəlcik yaratmaq
- Addım 3: OSMC quraşdırın
- Addım 4: Oxucunu konfiqurasiya edin
- Addım 5: Node qurun və Layihə yaradın
- Addım 6: Kod, izah edildi
- Addım 7: cəhd edin
- Addım 8: Avtomatik olaraq işə salın
Video: Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!: 9 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
İllər keçdikcə səyahət edərkən yanımda kiçik bir heykəlcik götürmək vərdişimi inkişaf etdirdim: Mən tez -tez kiçik, boş bir artoy alıram (şəkildəki kimi) və boyadığım ölkənin bayrağına və mövzusuna uyğun rəngləyirəm. ziyarət edirəm (bu halda, Siciliya).
Fikir, heykəlcikin adı çəkilən ölkədən olan səhnələr və ya məşhur abidələr qarşısında çəkməkdir: Mənə elə gəlir ki, yalnız abidənin özündə şəkillər çəkməkdən daha gülməlidir (bunun üçün Google var və bu daha ucuzdur), amma yenə də çəkməkdən daha asandır. hər şəklin özündə olmaq (fanat deyiləm, düzünü desəm)
Şəkilləri izlədikdən bir neçə gün sonra tətilə getdiyiniz insanları toplamaq həmişə əyləncəli olduğu üçün, hər heykəlcikin bir şəkildə avtomatik olaraq hazırladıqları səfərdən şəkillərin slayd şousunu açsalar yaxşı olardı.
Bu təlimat NFC, bir moruq pi, nodejs və osmc istifadə edərək bunu necə etdiyimi izah edəcək.
Addım 1: Həll yoluna ümumi baxış
Bütün quruluş bir neçə şeyi ehtiva etdiyindən, aşağıdakıları başa düşməyinizə kömək edəcək şeylərə ümumi bir baxış var:
Avadanlıq
- heykəlcik evdə hazırlanmışdır: bu təlimatları Kopenhagen/Oslo/Stokholm/Helsinkidə bir həftəlik səfərin ortasında yazdığım üçün bu səfər üçün hazırlanan heykəlcikdən bir neçə kadr daxil edəcəyəm.
- hər bir heykəlciyin altında bir NFC çipi var: hər bir heykəlciyin altına sığdıra biləcəyim yuvarlaq stikerlərdən istifadə edirəm, ancaq hər hansı digər forma faktorundan istifadə edə bilərsiniz - istifadə etdiyiniz çipin oxucunuzla uyğun olduğuna əmin olun.
- şəkilləri göstərmək üçün OSMC quraşdırılmış bir moruq pi istifadə edəcəyəm: televiziya şouları və filmlər üçün seçdiyim media pleyerimdir, buna görə də artıq televizora qoşulub
- moruq pi -nin NFC etiketlərini oxuması üçün bir NFC oxuyucusu əlavə etdim - istifadə etdiyim bir çox internet saytlarında mövcud olan NXP -dən Kəşf et -NFC -dir: Pi -yə bağlanır və qalxan rolunu oynayır.
Proqram təminatı
Raspberry Pi -də bir NodeJS skripti NFC etiketinin oxunmasını gözləyir: bunu etdikdən sonra skript öz şəxsiyyət sənədini OSMC -dəki şəkillər mənbəyindəki hər bir qovluq və müvafiq NFC identifikatoru tərəfindən konfiqurasiya edildiyi kimi dəyər/cüt siyahısına qarşı yoxlayır. istifadəçi.
Etiket oxunduqda, ID siyahıda olarsa, Node skript OSMC -yə bu xüsusi qovluq üçün slayd şousunu başlamağı bildirir. Bu siyahını qurmaq/konfiqurasiya etmək üçün eyni NodeJS skripti hər 5 dəqiqədə bir tarama funksiyasını işə salır: OSMC üzərindəki "Şəkillər" mənbəsindəki hər bir qovluğu tarar (Kodinin təklif etdiyi JSON-RPC API-dən istifadə edərək) və sonra diskdə saxlanılan siyahıya əlavə edir. Bu mətn faylını birbaşa redaktə edərək, istifadəçi daha sonra hər albom üçün müvafiq NFC ID -ni əlavə edə bilir.
Addım 2: Heykəlcik yaratmaq
Heykəlciyiniz üçün çox bəyəndiyiniz hər şeyi istifadə edə bilərsiniz: Bu vinil sənət oyuncaqlarından istifadə etməyi sevirəm, çünki onlar - nisbətən - mənim kimi çəkməyi sevməyən və çəkmək çox asan olan biri üçün də çəkmək asandır. Onları boş, DIY versiyasında, ən kiçik ölçüdə sifariş verirəm və Posca markerlərindən istifadə edərək çəkirəm. Gəzdiyimiz dörd ölkənin bayraqları ilə bu səfər üçün hazırladığım birini görə bilərsiniz - bunlar yan -yana birləşdirmək üçün kifayət qədər bənzəyirdi. Növbəti boyanmadan əvvəl hər birinin qurumasına icazə verdiyiniz müddətcə bir neçə qat boya istifadə edə bilərsiniz. Rəssamlığı bitirdikdən sonra, Posca boya dəstinə kömək edən əslində istiliyin olduğunu oxuduğum üçün bir neçə dəqiqə boyanın üstünə istilik silahı istifadə etmək istəyirəm.
Son şəkildə Sveni görə bilərsiniz - mən onlara həmişə ad verirəm - uzun bir səhərdən sonra Osloda bir ara verirəm. Orijinal oyuncaqdan başı yoxdur, çünki ayrılmadan bir dəqiqə əvvəl onu qarışdırmağı bacardım: Əvəzində başını istifadə etmək üçün əvvəlki oyuncağı sökməli oldum. Daha əvvəl belə bir şey olmadığını deyə bilmərəm …
Addım 3: OSMC quraşdırın
Etdiyim ilk şey, Raspberry Pi üçün bir mikro SD karta OSMC qurmaq idi: quruluşumuzda şəkillərinizi izləmək üçün media pleyeri kimi xidmət edəcək. Bu mövzuda çox ətraflı məlumat verməyəcəyəm, çünki kifayət qədər yaxşı sənədləşdirilmişdir (yardıma ehtiyacınız varsa bir neçə Təlimat mövcuddur). Yükləyicini kompüterinizə yükləyin və təlimatları izləyin. Bitirdikdən sonra sadəcə klaviatura və siçan bağladım və HDMI -nı televizora bağladım və vaxt qurşağını qurmaq üçün sihirbazı izlədim.
Nəhayət, şəkillərimi saxladığım kataloqu mənbələrə əlavə etdim: mənim vəziyyətimdə eyni şəbəkədə sabit bir IP ilə bir NAS -da saxlanılır, ancaq onları USB sürücüsündə və ya ev qovluğunun özündə də saxlaya bilərsiniz. micro SD -nin kifayət qədər böyük olması şərtilə.
Mənbə əlavə edərkən, bunun üçün bir ad daxil etməyinizi xahiş edəcəksiniz: varsayılanı tərk edə və ya dəyişdirə bilərsiniz, ancaq yazmağa əmin olun, çünki daha sonra ehtiyacımız olacaq. Mənim vəziyyətimdə bunu "MyPictures" adlandırdım
İndi əlavə etdiyiniz kataloqun məzmununu görməli və şəkillərinizə baxmalısınız: mənim vəziyyətimdə hər səyahət üçün bir alt kataloq var.
Təbriklər, indi şəkilləriniz olan bir media mərkəziniz var və müəyyən bir qovluq üçün bir slayd şou aça bilərsiniz (bonus olaraq, videolarınızı və ya musiqinizi səsləndirmək üçün də istifadə edə bilərsiniz)
Addım 4: Oxucunu konfiqurasiya edin
Təlim olunanların qalan hissəsi üçün SSH üzərindəki əmr satırından istifadə edərək Pi -yə qoşulacağıq. Bunu etmək üçün bir Ethernet kabeli istifadə edərək Pi -ni şəbəkənizə bağlayın və Pi -yə qoşulmaq üçün terminaldan və ya xüsusi bir proqram proqramından istifadə edin. Mac OS və Linux -da əmr belədir
Sizdən bir parol daxil etməyiniz istənəcək, yenə osmc olacaq
Oxuyucunun işləyə bilməsi üçün SPI aktivləşdirilməlidir: Raspbian kimi əksər paylamalarda bu, bəzi konfiqurasiya dəyərlərini dəyişdirməyə imkan verən bir konfiqurasiya vasitəsi olan raspi-config istifadə etməklə edilə bilər.
OSMC, lakin istifadə edərkən öz təhlükəsizliyiniz üçün raspi-config daxil deyil. Bunun əvəzinə, Moruq bağlayın, mikro SD kartı çıxarın və kompüterinizə bağlayın: "açılış" bölməsi artıq görünməlidir. Orada, həcmin kökündə "config.txt" adlı bir fayl görəcəksiniz - sadəcə açın və sonunda bu xətti əlavə edin:
"dtparam = spi = açıq"
İndi faylı saxlaya bilərsiniz, yenidən başladın və SPI aktiv olmalıdır.
Bundan sonra, əlavə edilmiş ZIP faylını yükləməli və moruqda açmalısınız - bir Layihələr qovluğu yaratmağı və orada açmağı məsləhət görürəm. Bunu etmək üçün ya SSH üzərindən FTP istifadə edərək Raspberry -yə qoşula bilərsiniz (bunu etmək üçün CyberDuck istifadə edirəm) və ya faylı USB Sürücüyə qoyub Raspberry Pi -də kopyalamaq üçün Kodi fayl menecerindən istifadə edə bilərsiniz.
Hər halda, zip faylını Pi -yə kopyaladıqdan sonra, kopyaladığınız qovluğa gedib aça bilərsiniz, ortaya çıxan qovluğa keçə və paketi quraşdıra bilərsiniz:
aç SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb
Hər şey yaxşı olarsa, oxucunu qoşub yenidən başladın və sonra daxil olun
explorenfc-basic
Oxucuya bir NFC çipinə yaxınlaşsanız, indi çipdən bir dəstə məlumat göstərməlidir (digər şeylər arasında şəxsiyyət vəsiqəsi)
Addım 5: Node qurun və Layihə yaradın
Sonra tətbiqimizi yazmaq üçün moruq üzərində NodeJS quraşdıracağıq.
Nodejs qurmaq istəyirik, ancaq standart deponun versiyası həqiqətən köhnədir, buna görə əvvəl bir addım atmalısınız: əmr satırı interfeysində yazın
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Sonra yaza bilərsiniz
sudo apt nodejs quraşdırın
nodejs və npm -in ən son versiyasını quraşdırmaq üçün.
KODI-ni nodejs daxilində idarə etmək üçün kodi-ws adlı bir npm paketindən istifadə edəcəyik.
Yeni bir layihə yaratmağa başlayaq: sadəcə əmri yazın
npm başlanğıc
Sizə bir sıra suallar veriləcək: əksəriyyəti üçün standartı tərk edə bilərsiniz, sadəcə tətbiqiniz üçün bir ad seçin və sonunda öz adınızı daxil edin. Başlanğıc nöqtəsi istənildikdə index.js buraxın
Bu, paketinizin asılılıqları kimi xüsusiyyətlərini ümumiləşdirəcək bir package.json faylı yaradacaq.
İndi daxil ola bilərsiniz
sudo npm kodi-ws qurun sudo npm qurun jsonfilesudo npm yükləyin cronsudo npm install child_process
Bundan sonra package.json açarsanız, bütün bu paketlərin asılılıqlara əlavə olunduğunu qeyd edəcəksiniz.
Addım 6: Kod, izah edildi
Bu addıma tətbiqin kodu əlavə olunur.
Ssenarini başa düşmək üçün şərh oluna bilməyən kifayət qədər qeyd buraxdım, amma birlikdə parçalayın.
Bildirdiyiniz bütün funksiyalara baxmayaraq, kodun əvvəlcə yalnız bir neçə şeyi etdiyini görəcəksiniz:
kodi ('localhost', 9090). sonra (funksiya (əlaqə) {
Skript OSMC JSON-RPC API-yə qoşulmağa çalışır. Uğur qazandıqdan sonra (və yalnız bundan sonra), faylın qalan hissəsi ilə davam edir.
Nədənsə bunu Raspberry Pi -dən işləmirsinizsə, localhost -u IP ünvanınıza dəyişdirin. Ayrıca OSMC (Ayarlar/Xidmətlər) içərisində olan xidmət parametrlərində "Digər sistemlərdəki tətbiqlərdən uzaqdan idarə etməyə icazə verin" onay qutusunun olduğundan əmin olun (şəkilə baxın)
Faylın qalan hissəsi əsasən daha sonra istifadə edəcəyimiz funksiyaların bəyannamələridir: əslində buradan başladılan iki funksiya (sətirlər 172/173)
scanAndSetCron (); listenForTag ();
ScanAndSetCron -da:
- scanPictures funksiyası işə salınır. İçərisində şəkillərimizin yolunu tutacaq "mypicturedirectory" dəyişəninin boş olub olmadığını yoxlayırıq. Əgər belədirsə, OSMC -dən şəkil məzmunu üçün bütün mənbələri bizə verməsini xahiş edirik (getPictureDirectory funksiyası daxilində, xətt 11):
var piclist = əlaqəni gözləyin. Files. GetSources ("şəkillər");
OSMC bizə əvəzində bir sıra verir: hər bir maddə üçün mənbə adının "Mənim" ə daxil olub olmadığını yoxlayırıq: əgər belədirsə, onu şəkil mənbəyimiz kimi saxlayırıq (satır 16 və sonrakı). Şəkil mənbəyiniz üçün əvvəllər daxil etdiyiniz sətri "Mənim" dən dəyişdirmək istədiyiniz yer budur
if (piclist.sources .label.includes ("Mənim")) {console.log (">>> Kataloq tapıldı" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }
İndi mənbəyə gedən yola (əslində albomlarımızın kök qovluğuna) sahib olduqdan sonra OSMC -dən onu taramasını və hər qovluğun yolunu album_directories adlı bir massivə əlavə etməsini xahiş edirik (əgər hələ də yoxdursa). Bu funksiya hər X saniyədə bir işlədiləcəyi üçün, əlavə etməzdən əvvəl, NFC ID -nin boş bir sətrə qoyulması ilə bu kataloqun siyahıda olmadığını yoxlayırıq - bu şəkildə şəkillərinizə əlavə etdiyiniz hər yeni qovluq avtomatik olaraq olacaq. əlavə edildi - 46 -cı sətir
for (var j = 0; j <directory.length; j ++) {if (directory [j].filetype.includes ("directory")) {if (searchDirectory (directory [j].file, album_directories)) {console. log (kataloqlar [j].file +"artıq var"); } başqa {console.log (">> dir əlavə olunur" + qovluqlar [j].file); album_directories.push ({kataloq: qovluqlar [j].file, nfc: ""}); }}}
Sonda, album_directories dizisini Pi-də bir json faylına saxlayırıq ki, hər dəfə funksiya icra olunduqda yükləməyə çalışırıq: bu, scanAndSetCron funksiyasının sonunda baş verir ki, funksiyamızın işləməsini təmin etmək üçün cron kimi bir paket istifadə edirik. hər 15 saniyədə.
Yaratdığımız JSON faylı, album_directories.json, hər hansı bir notepad tətbiqi ilə açıla bilər. Bunu etdikdən sonra, hər birində boş "nfc" sahəsi olan foto albomlarınızın siyahısı təqdim olunacaq:
[{"kataloq": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"kataloq": "/home/osmc/Pictures/Test/", "nfc": ""}]
Bu sahədə, indi bu albomla əlaqələndirmək istədiyiniz etiketin kimliyini yapışdırmalısınız. Bu şəxsiyyəti əldə etmək üçün SW2827 qovluğuna gedin, explorenfc-basic proqramını işə salın və istifadə etmək istədiyiniz etiketi tarayın. Aldığınız çıxışda, yalnız ISO14443A UID -nin yanındakı dəyəri axtarın. Konfiqurasiya etmək istədiyiniz alboma kopyalayın. Mənim vəziyyətimdə, məsələn,
[{"kataloq": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" directory ":"/home/osmc/Pictures/Test/"," nfc ":" "}]
Tətbiqi növbəti dəfə başlatdığınızda faylı saxla və məzmunu yüklənəcək.
ListenForTag funksiyasında bunu edirik: NodeJS üçün oxucu kitabxanasının xüsusi bir limanı olmadığı üçün oxucu üçün ikili qurmaq üçün uşaq proseslərinə güvənirik:
var spawn = tələb ('child_process'). kürü, child = spawn ('/usr/bin/explorenfc-basic', );
Bu icra nəticəsini almaq üçün bir hadisə dinləyicisinə güvənirik: child.stdout.on ('data', function (data) üçün geri çağırış daxilində analyOutput funksiyasından istifadə edərək bu əmrin çıxışını təhlil edirik: "ISO14443A UID:" ilə başlayan əvvəllər gördüyümüz xətt, çünki skan etdiyimiz etiketin identifikatoru burada saxlanılır. Bu xətti tapdıqdan sonra onu kəsirik və ID -ni bir obyektə saxlayırıq (ID, necə deyilir) orijinal).
Nəhayət, bu identifikatoru albom_directories obyektlərinin (album_directories.json faylı ilə yüklənmiş) daxil etdiyimiz identifikatorlarla uyğunlaşdırmağa çalışırıq. Bir uyğunluq tapılarsa, OSMC -yə bu xüsusi qovluq üçün bir slayd şousu başlatmağı tapşırırıq:
var nfcid = analyOutput (data); console.log ("nfcid is" + nfcid.id); var müvafiq albom = searchTag (nfcid.id, album_directories); if (müvafiq albom) {console.log ("Tapılan albom" + JSON.stringify (uyğun albom) + "bu etiket üçün"); var args = [{'yol': uyğun albom.directory}]; connection.run ('Player. Open', args); } listenForTag ();
Funksiyanın sonunda listenForTag -ı yenidən başlatdığımızı görürsünüzmü? Tətbiqi işə salmaq üçün tapdığım yeganə həll yolu budur: explorenfc-basic bir etiket gözləyəcək, oxuyacaq və sonra çıxacaq. Tətbiqin explorenfc -basic -k istifadə edərək zəng edə biləcəyimiz davamlı bir rejimi var, lakin bu rejimdə child_process heç vaxt etiket məzmununu çıxarmır (başqa sözlə child.stdout.on ('data') heç vaxt atılmır). Bu oxuyucudan istifadə etmək üçün başqa bir yol tapmadığım üçün burada etdiyimiz şey, əsasən, bir etiket rejimində explorenfc-basic-i işə salmaqdır və bir etiket oxunduqda, listenForTag-ı işə salırıq və buna görə də explorenfc-basic-i yenidən başlatırıq.
Geri qayıtmalı olsaydım (və düşünürəm ki, edəcəyəm), daha çox seçim təklif edən bir NFC oxucu seçərdim: məsələn, Adafruit (onlardan çox bəyəndiyimi fərq edə bilərdiniz) bu oxucu var https:// www libnfc ilə uyğun olan.adafruit.com/product/789, oxucunun bir uşaq prosesini node içərisindən çağırmaqdan və stdoutu təhlil etməkdən daha yaxşı interfeys quracağı deməkdir!
Addım 7: cəhd edin
Tətbiqi işə salmaq üçün sadəcə həmin qovluğa gedin və "node index.js" yazın (və ya paket.json -da əvvəllər konfiqurasiya etdiyimiz üçün npm start). Qeydlərdə OSMC/Kodi -yə qoşulan və ilk dəfə skan edən proqramı görməlisiniz. Bir neçə saniyədən sonra layihə qovluğunda album_directories.json faylı yaradılacaq; Daha sonra əvvəllər izah edildiyi kimi NFC etiket kimliklərini daxil edə və istədiyiniz albomlarla əlaqələndirə bilərsiniz.
Addım 8: Avtomatik olaraq işə salın
Xülasə etmək üçün, (1) KODI şəkil kitabxananızı tarayan və bayram şəkillərinizi saxladığınız qovluğu tapmağa çalışan Node tətbiqini yaratdıq, (2) explorenfc-basicə əsaslanaraq NCF etiketlərini dinləyir və sonra (3) bu NFC ID ilə əlaqəli albomu işə salır.
Bütün bu prosesin arxa planda işləməsini təmin etmək üçün node üçün proses meneceri PM2 -dən istifadə edəcəyik.
Komanda satırında, layihələr qovluğunuza (index.js faylınızın yerləşdiyi yerə) gedin və aşağıdakı sətirləri yazın:
sudo npm install pm2 -gpm2 start index.js
Tətbiqiniz indi PM2 tərəfindən izlənilir və avtomatik olaraq yenidən başlayacaq! Əslində başladığından əmin olmaq üçün pm2 siyahısını yazın və siyahıda görməlisiniz. Qeydləri görmək istəyirsinizsə, yalnız pm2 loglarını yazın.
Tövsiyə:
Noutbuku Docking Stansiyasına bağlayanda Proqramı avtomatik olaraq başladın: 5 addım
Laptopu Docking Stansiyasına bağlayanda Proqramı avtomatik olaraq başladın: Bu təlimat, dizüstü kompüterinizi bir bağlama stansiyasına bağladığınızda bir proqramın və ya tətbiqin necə işlədiləcəyinə aiddir. Bu nümunədə Lenovo T480 Windows 10 istifadə edirəm
İşıqlı Animasiya Tətil Pin: 9 Addım (Şəkillərlə birlikdə)
İşıqlı Animasiya Tətil Pin: Bu layihəni ilk dəfə hazırladığım zaman açıq mənbələrdən yayımlanacağını gözləmirdim. Bunun əla bir fikir olduğunu və sənətkarlıq sərgisində sata biləcəyim bir məhsul olaraq kommersiya potensialına sahib olduğunu düşündüm. Bəlkə də bəzi təcrübəsizlikdən və ya bəlkə də
Toxunuşla Yaddaş Oyunu (Simon Deyir) - Bu Olarsa: 6 Addım (Şəkillərlə)
Toxunuşlu Yaddaş Oyunu (Simon Says) - Əgər bu belədirsə: Mən özümün hazırladığım toxunma yastıqları və bir məktəb layihəsi üçün neopixel üzüklə yaddaş oyunu hazırladım. Bu oyun Simon Says -a bənzəyir, oyundakı bir çox giriş və geribildirim formaları (səslər və işıq effektləri) fərqlidir. Su -dan səslər proqramlaşdırdım
Sehrli sehrlərlə sehrli bir büllur topu edək! ~ Arduino ~: 9 addım
Sehrli sehrlərlə sehrli bir kristal top hazırlayaq! ~ Arduino ~: İçərisində LED işıqlarının animasiyalarını idarə etmək üçün hərəkət sensoru və RFID skanerdən istifadə edən Sehrli Top hazırlayacağıq
Öz -özünə bir hədiyyə olan əl istehsalı tətil foto kartı: 8 addım
Öz -özünə Bir Hədiyyə Olan Əl İşi Şəkil Kartı!: Bu Təlimat, hər biri tətil mövsümü bitdikdən sonra alıcılar tərəfindən çərçivəyə salınacaq və hətta verdiyiniz təqdirdə daha da asanlaşdırılacaq bənzərsiz bir kart dəstinin necə hazırlanacağını sizə göstərəcək. kartla birlikdə IKEA klip foto çərçivəsi. Bu kartlar ola bilər