Mundarija:

Sehrli teginish bilan ta'til rasmlari slayd -shousini boshlang!: 9 qadam (rasmlar bilan)
Sehrli teginish bilan ta'til rasmlari slayd -shousini boshlang!: 9 qadam (rasmlar bilan)

Video: Sehrli teginish bilan ta'til rasmlari slayd -shousini boshlang!: 9 qadam (rasmlar bilan)

Video: Sehrli teginish bilan ta'til rasmlari slayd -shousini boshlang!: 9 qadam (rasmlar bilan)
Video: PARNORMAL BILAN TO'G'RISH | G'alati hodisalar #podkast 2024, Iyul
Anonim
Sehrli teginish bilan bayram rasmlaringiz slayd -shousini boshlang!
Sehrli teginish bilan bayram rasmlaringiz slayd -shousini boshlang!
Sehrli teginish bilan bayram rasmlaringiz slayd -shousini boshlang!
Sehrli teginish bilan bayram rasmlaringiz slayd -shousini boshlang!

Yillar mobaynida men sayohat qilayotganda o'zim bilan kichkina haykalchani olib yurishni odat qilib oldim: men tez -tez kichkina, bo'sh artoy sotib olaman (rasmdagi kabi) va uni o'z mamlakatim bayrog'i va mavzusiga mos qilib bo'yayman. men tashrif buyuraman (bu holda, Sitsiliya).

Gap shundaki, haykalchani tasvirlangan mamlakatning sahnalari yoki mashhur yodgorliklari oldida suratga olish: Menga faqat yodgorlik bilan rasmlar olish ancha kulgili (buning uchun Google bor va bu ancha arzon), lekin baribir uni olishdan ko'ra osonroq. har bir rasmda o'zim bo'lish (muxlis emas, rostini aytsam)

Rasmlarni tomosha qilganidan bir necha kun o'tgach, ta'tilga kelgan odamlarni yig'ish har doim qiziqarli bo'lgani uchun, agar har bir haykalchaning o'zi qandaydir tarzda sayohatdan avtomatik ravishda slayd -shou ochsa, yaxshi bo'lardi, deb o'yladim..

Bu ko'rsatma NFC, malina pi, nodejs va osmc yordamida qanday qilganimni tushuntiradi.

1 -qadam: Yechimning umumiy ko'rinishi

Yechimning umumiy ko'rinishi
Yechimning umumiy ko'rinishi
Yechimning umumiy ko'rinishi
Yechimning umumiy ko'rinishi

O'rnatish bir nechta narsalarni o'z ichiga olganligi sababli, quyidagilarni tushunishingizga yordam beradigan narsalar haqida umumiy ma'lumot:

Uskuna

- haykalcha uy qurilishi: men bu ko'rsatmalarni Kopengagen/Oslo/Stokgolm/Xelsinkiga bir haftalik safarning o'rtasida yozganim uchun, men bu sayohat uchun tayyorlangan haykalchaning bir nechta rasmlarini o'z ichiga olaman.

- har bir haykalchaning tagida NFC chipi bor: men har bir haykalchaning ostiga sig'adigan dumaloq stikerlardan foydalanaman, lekin siz boshqa har qanday form faktoridan foydalanishingiz mumkin - faqat siz ishlatadigan chip o'quvchi bilan mos kelishiga ishonch hosil qiling.

- rasmlarni ko'rsatish uchun men OSMC o'rnatilgan malina pi ishlataman: bu mening televizion ko'rsatuvlarim va filmlar uchun tanlagan media pleerim, shuning uchun u allaqachon mening televizorimga ulangan.

- malina pi NFC teglarini o'qishi uchun men NFC o'quvchisini qo'shdim - men ishlatgan NXP -ning NXP -dan ko'plab veb -saytlarida mavjud: u Pi -ga ulanadi va qalqon vazifasini bajaradi.

Dasturiy ta'minot

Raspberry Pi -da, NodeJS skripti NFC yorlig'i o'qilishini kutadi: bu bajarilgandan so'ng, skript o'z identifikatorini OSMC -dagi rasm manbalaridagi har bir papka va tegishli NFC identifikatori bilan qiymat/juftlik ro'yxati bo'yicha tekshiradi. foydalanuvchi.

Teg o'qilganda, agar ID ro'yxatda bo'lsa, tugun skripti OSMCga ushbu maxsus papka uchun slayd -shouni ishga tushirishini aytadi, o'sha ro'yxatni tuzish/sozlash uchun o'sha NodeJS skript har 5 daqiqada skanerlash funktsiyasini ishga tushiradi. OSMC-dagi "Rasmlar" manbasidagi har bir katalogni tekshiradi (Kodi taklif qiladigan JSON-RPC API yordamida) va keyin diskda saqlanadigan ro'yxatga qo'shiladi. Ushbu matnli faylni to'g'ridan -to'g'ri tahrirlash orqali foydalanuvchi har bir albom uchun tegishli NFC identifikatorini qo'sha oladi.

2 -qadam: haykalchani yaratish

Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish
Haykalchani yaratish

O'zingizning haykalchangiz uchun sizga yoqadigan hamma narsani ishlatishingiz mumkin: men vinil san'at o'yinchoqlarini ishlatishni yaxshi ko'raman, chunki ular - rasm chizishni yoqtirmaydigan, hatto menga o'xshagan odam uchun ham chizish oson va olib yurish juda oson. Men ularni bo'sh, DIY versiyasida, eng kichik hajmda buyurtma beraman va Posca markerlari yordamida chizaman. Bu erda men tashrif buyurgan to'rt mamlakatning bayroqlari bo'lgan, men bu sayohat uchun qilganimni ko'rishingiz mumkin - ular bir -biriga o'xshash qilib qo'yishdi. Agar siz keyingi bo'yoqni bo'yashdan oldin har birini quritib qo'ysangiz, siz bir necha qatlamli bo'yoqlardan foydalanishingiz mumkin. Rassomlik ishini tugatgandan so'ng, men bir necha daqiqaga bo'yoqqa issiqlik tabancasini ishlatishni yaxshi ko'raman, chunki o'qiganimdek, bu Poska bo'yoqlar to'plamiga yordam beradi.

Oxirgi rasmda siz Svenni ko'rishingiz mumkin - men ularga har doim ism qo'yaman - ertalabdan keyin Osloda tanaffus. Uning bosh o'yinchoqdan boshi yo'q, chunki men ketishdan bir daqiqa oldin uni chalkashtirib yubordim: uning o'rniga boshini ishlatish uchun oldingi o'yinchoqni demontaj qilishim kerak edi. Men ilgari bunday bo'lmagan deb ayta olmayman …

3 -qadam: OSMC -ni o'rnating

OSMC -ni o'rnating
OSMC -ni o'rnating

Men qilgan birinchi narsa OSMC ni Raspberry Pi uchun micro SD -kartaga o'rnatish edi: bizning sozlashimizda u sizning rasmlaringizni tomosha qilish uchun media pleer bo'lib xizmat qiladi. Men bu borada batafsil ma'lumot bermayman, chunki u juda yaxshi hujjatlashtirilgan (agar sizga yordam kerak bo'lsa, bir nechta ko'rsatma mavjud). O'rnatuvchini kompyuteringizga yuklab oling va ko'rsatmalarga amal qiling. Ish tugagandan so'ng, men klaviatura va sichqonchani uladim va HDMI -ni televizorga uladim va vaqt ustuni va hokazolarni sozlash uchun sozlash ustasini kuzatdim.

Nihoyat, men o'z rasmlarim saqlanadigan katalogni manbalarga qo'shdim: mening holimda ular bir xil tarmoqdagi sobit IP -ga ega NASda saqlanadi, lekin siz ularni USB -diskda yoki uy papkasida saqlashingiz mumkin. Agar sizning micro SD -kartangiz etarlicha katta bo'lsa.

Manbani qo'shganda sizdan uning nomini kiritishingiz so'raladi: siz standartni qoldirishingiz yoki o'zgartirishingiz mumkin, lekin uni yozib qo'yganingizga ishonch hosil qiling, chunki bizga keyinroq kerak bo'ladi. Mening holatimda men buni "Mening rasmlarim" deb nomladim.

Siz hozir qo'shgan katalogingiz mazmunini ko'rishingiz va rasmlaringizni ko'rib chiqishingiz kerak: mening vaziyatimda har bir sayohat uchun pastki katalogim bor.

Tabriklaymiz, endi sizda rasmlar qo'yilgan media -markaz bor va siz ma'lum bir papka uchun slayd -shouni ishga tushirishingiz mumkin (bonus sifatida siz undan video yoki musiqangizni ijro etish uchun ham foydalanishingiz mumkin)

4 -qadam: O'quvchini sozlang

Qolganlari uchun biz SSH orqali buyruq satri yordamida Pi -ga ulanamiz. Buni amalga oshirish uchun, Pi -ni Ethernet kabeli orqali tarmoqqa ulang va Pi -ga ulanish uchun terminal yoki maxsus sotware dasturidan foydalaning. Mac OS va Linuxda buyruq

ssh [email protected]

Sizdan parolni kiritish talab qilinadi, bu yana osmc

O'quvchi ishlashi uchun SPI-ni yoqish kerak: Raspbian kabi ko'p tarqatishda buni raspi-config yordamida amalga oshirish mumkin, bu sizga konfiguratsiya qiymatlarini o'zgartirishga imkon beradi.

OSMC, o'z xavfsizligingiz uchun raspi-configni o'z ichiga olmaydi. Buning o'rniga, Raspberry -ni o'chiring, micro SD -kartani chiqarib oling va uni kompyuteringizga o'rnating: "yuklash" bo'limi endi ko'rinadigan bo'lishi kerak. U erda, tovushning ildizida siz "config.txt" nomli faylni ko'rasiz - uni oching va oxiriga bu qatorni qo'shing:

"dtparam = spi = yoqilgan"

Endi siz faylni saqlashingiz mumkin, qayta ishga tushiring va SPI yoqilgan bo'lishi kerak.

Shundan so'ng, siz biriktirilgan ZIP faylini yuklab olishingiz va malinaga ochishingiz kerak bo'ladi - men Loyihalar papkasini yaratishni va u erda ochishni maslahat beraman. Buning uchun siz Raspberry -ga FTP orqali SSH orqali ulanishingiz mumkin (men buni CyberDuck -dan foydalanaman) yoki faylni USB -diskka qo'yib, uni Raspberry Pi -ga nusxalash uchun Kodi fayl menejeridan foydalanishingiz mumkin.

Qanday bo'lmasin, siz zip faylini Pi -ga nusxalashganingizdan so'ng, siz uni nusxalashgan papkaga o'tishingiz va ochishingiz, natijada paydo bo'lgan papkaga o'tishingiz va paketni o'rnatishingiz mumkin:

unzip SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb

Agar hamma narsa yaxshi bo'lsa, siz o'quvchini ulashingiz, qayta ishga tushirishingiz va keyin kirishingiz kerak

explorenfc-asosiy

Agar siz NFC chipiga o'quvchiga murojaat qilsangiz, u endi chipdan bir qancha ma'lumotlarni ko'rsatishi kerak (boshqa narsalar qatorida uning identifikatori)

5 -qadam: Tugunni o'rnating va loyihani yarating

Keyin, biz o'z ilovamizni yozish uchun malinaga NodeJS o'rnatamiz.

Biz nodejs -ni o'rnatmoqchimiz, lekin standart omborning versiyasi haqiqatan ham eski, shuning uchun siz birinchi qadamni o'tishingiz kerak: buyruq satri interfeysida yozing

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Keyin yozishingiz mumkin

sudo apt install nodejs

nodejs va npm -ning eng so'nggi versiyasini o'rnatish uchun.

KODIni tugunlar ichidan boshqarish uchun biz kodi-ws deb nomlangan npm paketidan foydalanamiz.

Yangi loyihani yaratishdan boshlaylik: faqat buyruqni kiriting

npm boshlanishi

Sizdan bir nechta savollar so'raladi: ularning ko'pchiligi uchun siz standartni qoldirishingiz mumkin, faqat ilovangiz uchun nom tanlang va oxirida o'z ismingizni kiriting. Boshlanish nuqtasi so'ralganda index.js qoldiring

Bu sizning paketingizning xususiyatlarini, masalan, uning bog'liqliklarini jamlaydigan package.json faylini yaratadi.

Endi kirishingiz mumkin

sudo npm kodi-ws o'rnatish sudo npm jsonfilesudo npm ni o'rnatish cronsudo npm ni o'rnatish child_process

Agar siz bundan keyin package.json -ni ochsangiz, bu paketlarning barchasi bog'liqliklarga qo'shilganligini sezasiz.

6 -qadam: Kod, tushuntirilgan

Kod, tushuntirildi
Kod, tushuntirildi

Bu qadamga ilova kodi biriktirilgan.

Men skriptni tushunish uchun izoh berilmaydigan juda ko'p jurnal qoldirdim, lekin uni birgalikda buzib tashladim.

Siz e'lon qilgan barcha funktsiyalarga qaramay, kod faqat bir nechta narsalarni bajarishini ko'rasiz:

kodi ('localhost', 9090). keyin (funktsiya (ulanish) {

Skript OSMC JSON-RPC API-ga ulanishga harakat qiladi. Muvaffaqiyatga erishgandan so'ng (va shundan keyingina), u faylning qolgan qismi bilan davom etadi.

Agar biron sababga ko'ra siz buni Raspberry Pi -dan ishlatmasangiz, localhost -ni IP -manzilingizga o'zgartiring. Shuningdek, OSMC (Sozlamalar/Xizmatlar) ichidagi xizmat sozlamalarida "Boshqa tizimlardagi ilovalardan masofadan boshqarishga ruxsat berish" katagiga ishonch hosil qiling (rasmga qarang)

Faylning qolgan qismi asosan biz keyinroq ishlatadigan funktsiyalar deklaratsiyasidir: aslida bu erdan ishga tushiriladigan ikkita funksiya (172/173 qatorlar)

scanAndSetCron (); listenForTag ();

ScanAndSetCron -da:

- scanPictures funksiyasi ishga tushiriladi. Uning ichida biz rasmlarimizga yo'l tutadigan "mypicturedirectory" o'zgarmasligini tekshiramiz. Agar shunday bo'lsa, biz OSMCdan rasm tarkibiga ega bo'lgan barcha manbalarni berishini so'raymiz (getPictureDirectory funktsiyasi ichida, 11 -satr):

var piclist = aloqani kuting. Files. GetSources ("rasmlar");

OSMC bizga evaziga qator beradi: har bir element uchun biz manba nomi "Mening" ni o'z ichiga olganligini tekshiramiz: agar shunday bo'lsa, biz uni rasm manbai sifatida saqlaymiz (16 -satr va undan keyingi). Bu erda siz "Mening" qatorini rasm manbasi nomi sifatida ilgari kiritgan narsaga o'zgartirishni xohlaysiz

if (piclist.sources .label.includes ("My")) {console.log (">>> Katalog topildi" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }

Endi bizda manba yo'li (asosan albomlarimizning asosiy papkasi) bor, biz OSMCdan uni skanerlashni va har bir papkaning yo'lini album_directories (agar u hali mavjud bo'lmasa) qatoriga qo'shishini so'raymiz. Bu funksiya har X soniyada bajarilgandan so'ng, uni qo'shishdan oldin katalog ro'yxatda yo'qligini tekshirib ko'ramiz, NFC identifikatori bo'sh qatorga o'rnatiladi - shu tariqa siz rasmlaringizga qo'shgan har bir yangi papka avtomatik ravishda bo'ladi. qo'shilgan - 46 -qator

for (var j = 0; j <directory.length; j ++) {if (kataloglar [j].filetype.includes ("katalog")) {if (searchDirectory (kataloglar [j].fayl, albom_katorlari)) {konsol. jurnal (kataloglar [j].file +"allaqachon bor"); } else {console.log (">> dir" + kataloglarini qo'shish [j].file); album_directories.push ({katalog: kataloglar [j].file, nfc: ""}); }}}

Oxirida biz album_directories massivini Pi-dagi json fayliga saqlaymiz, uni har safar funksiya bajarilganda yuklashga harakat qilamiz: bu scanAndSetCron funktsiyasining oxirida sodir bo'ladi, bu erda biz funktsiyamiz ishlashini ta'minlash uchun cron-ga o'xshash paketdan foydalanamiz. har 15 soniyada.

Biz yaratadigan JSON faylini, album_directories.json, har qanday bloknot ilovasi yordamida ochish mumkin. Buni qilganingizdan so'ng, sizga har birining bo'sh "nfc" maydoni bo'lgan foto albomlaringiz ro'yxati taqdim etiladi:

[{"katalog": "/home/osmc/Rasmlar/Mada 2016/", "nfc": ""}, {"katalog": "/home/osmc/Rasmlar/NewFolder/", "nfc": "" }, {"katalog": "/home/osmc/Suratlar/Test/", "nfc": ""}]

Bu sohada endi siz ushbu albom bilan bog'lamoqchi bo'lgan teg identifikatorini joylashtirishingiz kerak. Ushbu identifikatorni olish uchun SW2827 jildiga o'ting, explorenfc-basic-ni ishga tushiring va kerakli tegni skanerlang. Olingan chiqishda ISO14443A UID yonidagi qiymatni qidiring. Uni sozlamoqchi bo'lgan albomga nusxa ko'chiring. Mening vaziyatimda, masalan,

[{"katalog": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"katalog": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" katalog ":"/home/osmc/Suratlar/Test/"," nfc ":" "}]

Faylni saqlang va keyingi safar ilovani ishga tushirganingizda uning mazmuni yuklanadi.

ListForTag funktsiyasida biz faqat shunday qilamiz: chunki NodeJS uchun o'quvchi kutubxonasining ajratilgan porti yo'qdek, biz o'quvchi uchun ikkilikni ishga tushirish uchun bolalar jarayonlariga tayanamiz:

var spawn = talab ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );

Biz bu ijro natijasini olish uchun voqea tinglovchisiga tayanamiz: child.stdout.on ("ma'lumotlar", funktsiya (ma'lumotlar) uchun qayta qo'ng'iroq qilishda, analyOutput funktsiyasi yordamida ushbu buyruqning chiqishini tahlil qilamiz: biz qidiramiz. "ISO14443A UID:" bilan boshlangan biz ko'rgan qator, chunki biz skanerlagan tegning identifikatori o'sha erda saqlanadi. Biz bu chiziqni topganimizdan so'ng, biz uni qirqib tashlaymiz va identifikatorni ob'ektga saqlaymiz. original).

Nihoyat, biz ushbu identifikatorni albom_direktorlar qatoriga kiritgan identifikatorlarga moslashtirishga harakat qilamiz (album_directories.json fayli orqali yuklangan). Agar mos keladigan narsa topilsa, biz OSMCga ma'lum papka uchun slayd -shouni ishga tushirishni buyuramiz:

var nfcid = analyOutput (ma'lumotlar); console.log ("nfcid bu" + nfcid.id); var tegishli albom = searchTag (nfcid.id, album_directories); if (mos keladigan albom) {console.log ("Topilgan albom" + JSON.stringify (mos keladigan albom) + "bu teg uchun"); var args = [{'yo'l': mos keladigan albom.direktori}]; connection.run ('Player. Open', args); } listenForTag ();

E'tibor berdingizmi, funktsiya oxirida yana listenForTag ishga tushadimi? Bu men ilovani ishlashi uchun topilgan yagona vaqtinchalik echim: explorenfc-basic sukut bo'yicha tegni kutadi, o'qiydi va keyin chiqadi. Ilovada explorenfc -basic -k yordamida qo'ng'iroq qilishimiz mumkin bo'lgan uzluksiz rejim mavjud, lekin bu rejimda child_process hech qachon teg tarkibini chiqarmaydi, chunki u tugamaydi (boshqacha aytganda child.stdout.on ('ma'lumotlar') hech qachon o'chirilmaydi). Men bu o'quvchidan foydalanishning boshqa usulini topa olmaganim uchun, biz bu erda asosan explorenfc-basic-ni bitta teg rejimida ishga tushiramiz va teg o'qilganda, biz listenForTag-ni ishga tushiramiz va shuning uchun explorenfc-basic-ni qayta ishga tushiramiz.

Agar men orqaga qaytishga majbur bo'lsam (va o'ylaymanki), men ko'proq variantlarni taklif qiladigan NFC o'quvchini tanlagan bo'lardim: masalan, Adafruit (siz menga juda yoqishini payqagan bo'lishingiz mumkin) bu o'quvchiga ega https:// www libnfc bilan mos keladigan.adafruit.com/product/789, menimcha, o'quvchi tugun ichidan bola jarayonini chaqirish va stdoutni tahlil qilishdan ko'ra, interfeysi ancha aniqroq bo'ladi!

7 -qadam: harakat qilib ko'ring

Ilovani ishga tushirish uchun o'sha papkaga o'ting va "node index.js" yozing (yoki biz uni avval pack.json -da sozlaganimizdan boshlab npm boshlang). Jurnallarda siz OSMC/Kodi -ga ulangan va birinchi marta skanerlayotgan ilovani ko'rishingiz kerak. Bir necha soniyadan so'ng, loyiha katalogida album_directories.json fayli yaratiladi; Keyin NFC teg identifikatorlarini avval aytib o'tilganidek kiritishingiz va ularni kerakli albomlar bilan bog'lashingiz mumkin.

8 -qadam: Avtomatik ishga tushirish

Xulosa qilib aytganda, biz Node ilovasini yaratdik, u (1) sizning KODI rasmlar kutubxonangizni ko'zdan kechiradi va bayram rasmlaringizni saqlaydigan papkani topishga harakat qiladi, (2) explorenfc-basic-ga tayanib NCF teglarini tinglaydi. 3) ushbu NFC identifikatori bilan bog'liq albomni ishga tushiradi.

Butun jarayonni fonda bajarish uchun biz tugun uchun jarayon menejeri PM2 dan foydalanamiz.

Buyruq satrida loyihalar papkasiga o'ting (bu erda index.js fayli joylashgan) va quyidagi qatorlarni kiriting:

sudo npm install pm2 -gpm2 start index.js

Endi sizning ilovangiz PM2 tomonidan nazorat qilinadi va avtomatik ravishda qayta ishga tushiriladi! Uning ishga tushirilganligiga ishonch hosil qilish uchun pm2 ro'yxatini yozing va siz uni ro'yxatda ko'rishingiz kerak. Agar siz jurnallarni ko'rishni xohlasangiz, pm2 jurnallarini yozing.

Tavsiya: