Mündəricat:

Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!: 9 addım (şəkillərlə)
Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!: 9 addım (şəkillərlə)

Video: Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!: 9 addım (şəkillərlə)

Video: Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!: 9 addım (şəkillərlə)
Video: Kim nə başa düşdü ❓ 2024, Iyul
Anonim
Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!
Sehrli bir toxunuşla tətil şəkillərinizin slayd şousunu başladın!
Tətil Şəkillərinizi Sehrli Toxunuşlarla Slayd Şousuna Başlayın!
Tətil Şəkillərinizi Sehrli Toxunuşlarla Slayd Şousuna Başlayın!

İ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ış

Həll yoluna ümumi baxış
Həll yoluna ümumi baxış
Həll yoluna ümumi baxış
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əlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması
Heykəlciyin yaradılması

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

OSMC quraşdırın
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

ssh [email protected]

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

Kod, izah edildi
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ə: