Агуулгын хүснэгт:

Баярын зургуудынхаа слайдыг шидэт ид шидээр эхлүүлээрэй!: 9 алхам (зурагтай)
Баярын зургуудынхаа слайдыг шидэт ид шидээр эхлүүлээрэй!: 9 алхам (зурагтай)

Видео: Баярын зургуудынхаа слайдыг шидэт ид шидээр эхлүүлээрэй!: 9 алхам (зурагтай)

Видео: Баярын зургуудынхаа слайдыг шидэт ид шидээр эхлүүлээрэй!: 9 алхам (зурагтай)
Видео: Джан Яман тайно встречался с Демет Оздемир! 2024, Долдугаар сарын
Anonim
Амралтын зургуудаа слайд үзүүлбэрийг ид шидээр эхлүүлээрэй!
Амралтын зургуудаа слайд үзүүлбэрийг ид шидээр эхлүүлээрэй!
Амралтын зургуудаа слайд үзүүлбэрийг ид шидээр эхлүүлээрэй!
Амралтын зургуудаа слайд үзүүлбэрийг ид шидээр эхлүүлээрэй!

Олон жилийн турш би аялж явахдаа жижиг баримал авч явах зуршилтай болсон: Би ихэвчлэн жижиг, хоосон артой (зурган дээрх шиг) худалдаж аваад өөрийн орны туг, сэдэвтэй нийцүүлэн зурдаг. м зочилж байна (энэ тохиолдолд Сицилид).

Дараа нь тухайн орны хөшөө, алдартай хөшөө дурсгалуудын өмнө баримал зургийн зургийг авах явдал юм. Зөвхөн хөшөөтэй зурагтай байх нь надад илүү инээдтэй санагдаж байна (үүнд Google байдаг бөгөөд энэ нь хамаагүй хямд байдаг), гэхдээ зураг авахаас хамаагүй хялбар юм. Зураг бүр дээр өөрөө байх (фен биш, үнэнийг хэлэхэд)

Хэдэн өдрийн дараа амралтаараа явсан хүмүүсийг буцааж зургаа үзээд цуглуулах нь үргэлж хөгжилтэй байдаг тул баримал бүр өөрийн хийсэн аяллынхаа зургуудын слайдыг ямар нэгэн байдлаар автоматаар эхлүүлбэл сайхан байх болно гэж бодлоо..

Энэхүү зааварчилгаа нь NFC, бөөрөлзгөнө pi, nodejs болон osmc ашиглан хэрхэн яаж хийснээ тайлбарлах болно.

Алхам 1: Шийдлийн тойм

Шийдлийн тойм
Шийдлийн тойм
Шийдлийн тойм
Шийдлийн тойм

Бүхэл бүтэн тохиргоо нь цөөн хэдэн зүйлийг багтаасан тул дараах бүх зүйлийг ойлгоход туслахын тулд юу хийх ёстой талаар ерөнхий тоймыг энд оруулав.

Техник хангамж

- баримал гар хийцийн: би энэ зааварчилгааг долоо хоногийн турш Копенгаген/Осло/Стокгольм/Хельсинки хотод хийх аяллынхаа дунд бичиж байгаа тул энэ аялалд зориулж хийсэн баримлын цөөн хэдэн зургийг оруулах болно.

- Баримал бүрийн доор NFC чип байдаг: Би дүрс бүрийн доор багтах дугуй наалт ашиглаж байна, гэхдээ та өөр хэлбэрийн хүчин зүйлийг ашиглаж болно - таны ашигладаг чип уншигчтай нийцэж байгаа эсэхийг шалгаарай.

- Зургийг үзүүлэхийн тулд би OSMC суулгасан бөөрөлзгөнө пи ашиглах болно: энэ бол миний телевизийн шоу, кинонд тоглох медиа тоглуулагч тул миний телевизтэй аль хэдийн холбогдсон байна.

- Бөөрөлзгөнө пи нь NFC хаягийг уншихын тулд би NFC уншигч нэмсэн - миний ашиглаж байсан NXP -ийн Explore -NFC олон вэбсайт дээр байдаг: энэ нь Pi дээр залгагдаж, бамбай болдог

Програм хангамж

Raspberry Pi дээр NodeJS скрипт нь NFC хаягийг уншихыг хүлээдэг: үүнийг хийсний дараа скрипт нь ID -г OSMC дээрх зургийн эх сурвалжаас авсан хавтас бүр болон үнэ тохирох хосын жагсаалт болон тохируулсан NFC ID -ийн дагуу шалгадаг. хэрэглэгч.

Шошго уншихад хэрэв ID жагсаалтад байгаа бол Node скрипт нь OSMC -д энэ хавтасны слайдыг эхлүүлэхийг хэлнэ. Энэ жагсаалтыг бүтээх/тохируулахын тулд ижил NodeJS скрипт нь 5 минут тутамд скан хийх функцийг ажиллуулдаг. OSMC дээрх "Зураг" эх сурвалж дотор байгаа директор бүрийг (Kodi-ийн санал болгодог JSON-RPC API ашиглан) хайж, дараа нь дискэнд хадгалагдах жагсаалтад нэмнэ. Энэхүү текст файлыг шууд засварласнаар хэрэглэгч цомог бүрт харгалзах NFC ID нэмэх боломжтой болно.

Алхам 2: баримал бүтээх

Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх
Фигурин бүтээх

Та өөрийн баримал хийцэд дуртай бүхнээ ашиглаж болно: Би эдгээр винил арт тоглоомыг ашиглах дуртай, учир нь тэд харьцангуй зураг зурах дургүй над шиг хүнд зурахад хялбар, авч явахад маш хялбар байдаг. Би тэдгээрийг хоосон, DIY хувилбараар нь хамгийн жижиг хэмжээтэйгээр захиалж, Posca маркер ашиглан зурдаг. Та миний энэ аялалд зориулж хийсэн нэгийг, бидний очсон дөрвөн орны далбааг харж болно. Тэд намайг хооронд нь зэрэгцүүлэн нэгтгэхэд хангалттай төстэй байсан. Дараагийн будгаа будахаасаа өмнө тус бүрийг нь хуурай байлгаснаар та хэд хэдэн давхар будаг хэрэглэж болно. Би будаж дууссаныхаа дараа хэдхэн минутын турш будаг дээр дулааны буу хэрэглэх дуртай байсан.

Сүүлийн зурган дээр та Свенийг харж болно - би тэдэнд үргэлж нэр өгдөг - нэлээд урт өглөөний дараа Осло хотод амарч байна. Түүнийг анхны тоглоомоос авсан толгой байхгүй, учир нь би явахаас нэг минутын өмнө тэр бүх зүйлийг эвдэж чадсан: оронд нь толгойг нь ашиглахын тулд өмнөх тоглоомыг задлах шаардлагатай болсон. Өмнө нь ийм зүйл тохиолдож байгаагүй гэж би хэлж чадахгүй байна …

Алхам 3: OSMC -ийг суулгана уу

OSMC суулгах
OSMC суулгах

Миний хийсэн хамгийн эхний зүйл бол Raspberry Pi -д зориулсан micro SD карт дээр OSMC суулгах явдал байсан: бидний тохиргоонд энэ нь таны зургийг үзэх медиа тоглуулагч болж ажиллах болно. Энэ талаар маш сайн баримтжуулсан тул би энэ талаар дэлгэрэнгүй мэдээлэл өгөхгүй (хэрэв танд тусламж хэрэгтэй бол цөөн хэдэн зааварчилгаа авах боломжтой). Зүгээр л суулгагчийг компьютер дээрээ татаж аваад зааврыг дагана уу. Дууссаныхаа дараа би зүгээр л гар, хулганаа холбож, HDMI -ээ телевизор руу залгаж, цагийн бүсийг тохируулахын тулд тохируулгын мастерыг дагасан.

Эцэст нь би зургуудаа хадгалдаг лавлахыг эх сурвалжид нэмж оруулсан: миний хувьд тэдгээр нь ижил сүлжээнд тогтмол IP бүхий NAS дээр хадгалагддаг, гэхдээ та тэдгээрийг USB диск эсвэл гэрийн хавтас дээр хадгалах боломжтой. Хэрэв таны micro SD хангалттай том бол.

Эх сурвалжийг нэмж оруулахдаа та нэрээ оруулахыг хүсэх болно: та өгөгдмөлийг орхиж эсвэл өөрчилж болно, гэхдээ үүнийг дараа нь бичих шаардлагатай байгаа тул үүнийг заавал бичээрэй. Миний хувьд үүнийг "MyPictures" гэж нэрлэсэн.

Та одоо нэмсэн лавлахынхаа агуулгыг харж, зургуудаа үзэх хэрэгтэй: миний хувьд аялал бүрт дэд директортой болно.

Баяр хүргэе, та одоо зурагтай медиа төвтэй болсон бөгөөд тодорхой хавтсанд зориулсан слайд шоу эхлүүлж болно (урамшуулал болгон үүнийг ашиглан видео эсвэл хөгжим тоглуулах боломжтой)

Алхам 4: Уншигчийг тохируулна уу

Бусад зааварчилгааны хувьд бид SSH дээрх командын мөрийг ашиглан Pi -тэй холбогдох болно. Үүнийг хийхийн тулд Pi -г Ethernet кабель ашиглан сүлжээнд холбож, терминал эсвэл тусгай зориулалтын програм хангамж ашиглан Pi -тэй холбогдоно уу. Mac OS болон Линукс дээр тушаал нь

ssh [email protected]

Та нууц үг оруулахыг шаардах болно, энэ нь дахин osmc болно

Уншигчийг ажиллуулахын тулд SPI-ийг идэвхжүүлэх шаардлагатай: Raspbian гэх мэт ихэнх түгээлтийн хувьд үүнийг зарим тохиргооны утгыг өөрчлөх боломжийг олгодог тохиргооны хэрэгсэл болох raspi-config ашиглан хийж болно.

OSMC нь raspi-config-ийг оруулаагүй бөгөөд үүнийг ашиглахдаа өөрийн аюулгүй байдлыг хангах болно. Үүний оронд Raspberry -г унтрааж, микро SD картыг гаргаж аваад компьютер дээрээ суулгаарай: "ачаалах" хэсэг одоо харагдах ёстой. Тэнд, эзлэхүүний эхэнд та "config.txt" нэртэй файлыг харах болно - үүнийг нээгээд төгсгөлд нь энэ мөрийг нэмнэ үү.

"dtparam = spi = on"

Та одоо файлыг хадгалах боломжтой, дахин ачаалж, SPI идэвхжсэн байх ёстой.

Үүний дараа та хавсаргасан ZIP файлыг татаж аваад бөөрөлзгөнө дээр задлах хэрэгтэй болно - Би Төслийн хавтас үүсгэж тэнд задлахыг зөвлөж байна. Үүнийг хийхийн тулд та Raspberry -тэй FTP ашиглан SSH -ээр холбогдож болно (үүнийг хийхийн тулд би CyberDuck ашигладаг) эсвэл файлыг USB драйв дээр тавиад Radiberry Pi дээр хуулахын тулд Kodi -ийн файлын менежерийг ашиглаж болно.

Аль ч тохиолдолд, та зип файлыг Pi руу хуулж авсны дараа хуулж авсан фолдер руугаа ороод задалж, үүссэн фолдер руу шилжиж, багцыг суулгаж болно.

задлах SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb

Хэрэв бүх зүйл сайн бол та уншигчийг залгаж, дахин ачаалж, дараа нь оруулах хэрэгтэй

explorenfc-үндсэн

Хэрэв та NFC чип рүү уншигчдад хандах юм бол одоо чипээс олон мэдээллийг харуулах ёстой (бусад зүйлээс гадна түүний ID)

Алхам 5: Node -ийг суулгаж, төслийг үүсгэнэ үү

Дараа нь бид програмаа бичихийн тулд бөөрөлзгөнө дээр NodeJS суулгана.

Бид nodejs -ийг суулгахыг хүсч байгаа боловч анхдагч репозиторын хувилбар үнэхээр хуучирсан тул та өмнө нь эхний алхамыг хийх ёстой: командын шугамын интерфейс дээр бичнэ үү.

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

Дараа нь та бичиж болно

sudo apt install nodejs

nodejs болон npm -ийн хамгийн сүүлийн хувилбарыг суулгахын тулд.

KODI-ийг nodejs дотроос хянахын тулд kodi-ws нэртэй npm багцыг ашиглах гэж байна.

Шинэ төсөл үүсгэж эхэлье: тушаалыг бичээрэй

npm эхлэл

Танаас хэд хэдэн асуулт асуух болно: ихэнх тохиолдолд та анхдагч тохиргоог орхиж болно, зөвхөн програмынхаа нэрийг сонгоод эцэст нь өөрийн нэрийг оруулна уу. Эхлэх цэгийг асуухдаа index.js хаягийг орхи

Энэ нь таны багцын хамаарал гэх мэт шинж чанаруудыг нэгтгэн харуулах package.json файлыг үүсгэх болно.

Та одоо орж болно

sudo npm суулгах kodi-ws sudo npm суулгах jsonfilesudo npm суулгах cronsudo npm суулгах child_process

Хэрэв та үүний дараа package.json -ийг нээвэл тэдгээр бүх багцыг хамаарал дээр нэмсэн болохыг анхаарна уу.

Алхам 6: Код, тайлбарласан

Код, тайлбарласан
Код, тайлбарласан

Энэ алхамд програмын код хавсаргасан болно.

Би скриптийг ойлгохын тулд тайлбарлах боломжгүй нэлээд хэмжээний мод бэлтгэсэн боловч үүнийг хамтад нь задаллаа.

Зарласан бүх функцийг үл харгалзан код нь зөвхөн цөөн хэдэн зүйлийг хийдэг болохыг та анзаарах болно.

коди ('localhost', 9090). дараа нь (функц (холболт) {

Скрипт нь OSMC JSON-RPC API-тай холбогдохыг оролддог. Үүнийг амжилттай хийсний дараа (зөвхөн дараа нь) файлын үлдсэн хэсэгт үргэлжлүүлнэ.

Хэрэв та ямар нэг шалтгаанаар үүнийг Raspberry Pi -ээсээ ажиллуулахгүй байгаа бол localhost -ийг IP хаягаар нь солино уу. OSMC (Тохиргоо/Үйлчилгээ) дэх үйлчилгээний тохиргоонд "Бусад систем дээрх програмуудаас алсын удирдлагыг зөвшөөрөх" гэсэн хайрцгийг шалгаарай (зургийг үзнэ үү).

Файлын үлдсэн хэсэг нь ихэвчлэн дараа нь ашиглах функцуудын тунхаглал юм: эндээс эхлүүлсэн хоёр функц нь (мөр 172/173)

scanAndSetCron (); listenForTag ();

ScanAndSetCron дээр:

- scanPictures функцийг эхлүүлсэн. Дотор нь бидний зургийн замыг хадгалах "mypicturedirectory" хувьсагч хоосон байгаа эсэхийг шалгадаг. Хэрэв тийм бол бид OSMC -ээс зургийн агуулгад байгаа бүх эх сурвалжийг өгөхийг хүсч байна (getPictureDirectory функцын дотор, 11 -р мөр):

var piclist = холболтыг хүлээж байна. Files. GetSources ("зураг");

OSMC нь бидэнд хариуд нь массив өгдөг: зүйл бүрийн хувьд бид эх нэр нь "Миний" -ийг агуулсан эсэхийг шалгадаг: хэрэв тийм бол бид үүнийг зургийн эх сурвалж болгон хадгалдаг (16 -р мөр ба дараах). Эндээс та "Миний" гэсэн мөрийг зургийн эх сурвалжийн нэрээр өмнө нь оруулсан болгоноо өөрчлөхийг хүсэх болно

if (piclist.sources .label.includes ("My")) {console.log (">>> директорыг олсон" + piclist.sources . файл); mypicturedirectory = piclist.sources . файл; }

Бидэнд эх сурвалж руу хүрэх зам (үндсэндээ манай цомгуудын үндсэн фолдер) байгаа тул бид OSMC -ээс үүнийг сканнердаж, фолдер бүрийн замыг album_directories (хэрэв байхгүй бол) массивт нэмж оруулахыг хүсч байна. Энэ функцийг X секунд тутамд ажиллуулах тул NFC ID -г хоосон мөрөнд оруулахаасаа өмнө лавлах жагсаалтад ороогүй байгаа эсэхийг шалгадаг бөгөөд ингэснээр таны зурган дээр нэмж оруулсан шинэ фолдер бүр автоматаар байх болно. нэмсэн - мөр 46

for (var j = 0; j <directory.length; j ++) {if (лавлах [j].filetype.includes ("директор")) {if (searchDirectory (лавлах [j]. файл, цомгийн_директорууд)) {консол. бүртгэл (лавлах [j].file +"аль хэдийн байгаа"); } else {console.log (">> Add dir" + лавлах [j]. файл); album_directories.push ({лавлах: лавлах [j]. файл, nfc: ""}); }}}

Төгсгөлд нь бид album_directories массивыг Pi дээрх json файлд хадгалдаг бөгөөд үүнийг ажиллуулах бүрдээ ачаалахыг хичээдэг: энэ нь scanAndSetCron функцийн төгсгөлд тохиолддог бөгөөд бидний функцийг ажиллуулахын тулд cron-шиг багцыг ашигладаг. 15 секунд тутамд.

Бидний үүсгэсэн album_directories.json JSON файлыг ямар ч тэмдэглэлийн дэвтэр програм ашиглан нээх боломжтой. Үүнийг хийсний дараа танд зургийн цомгийн жагсаалт тус бүрийг хоосон "nfc" талбараар танилцуулах болно.

[{"лавлах": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"лавлах": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"лавлах": "/home/osmc/Pictures/Test/", "nfc": ""}]

Энэ талбарт та одоо энэ цомогтой холбохыг хүсч буй шошгоны ID -г буулгах ёстой. Энэхүү ID-г авахын тулд SW2827 фолдер руу ороод explorenfc-basic-ийг ажиллуулаад ашиглахыг хүсч буй хаягаа сканнердах хэрэгтэй. Та олж авсан гаралтаас ISO14443A UID -ийн хажууд байгаа утгыг хайж олох хэрэгтэй. Үүнийг тохируулахыг хүссэн цомог руу хуулж ав. Миний хувьд, жишээ нь,

[{"лавлах": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"лавлах": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" лавлах ":"/home/osmc/Pictures/Test/"," nfc ":" "}]

Файлыг хадгалж, дараагийн удаа програмыг ажиллуулахад түүний агуулгыг ачаалах болно.

ListenForTag функц дээр бид үүнийг л хийдэг: NodeJS -ийн уншигчдын номын сангийн зориулалтын порт байдаггүй юм шиг байгаа тул бид уншигчдад зориулсан хоёртын файлыг эхлүүлэхийн тулд хүүхдийн үйл явцад тулгуурладаг.

var spawn = шаарддаг ('child_process'). түрс, хүүхэд = түрс ('/usr/bin/explorenfc-basic', );

Бид энэ гүйцэтгэлээс гарсан үр дүнг хүлээн авахын тулд eventlistener -д найддаг: child.stdout.on ('data', function (data)) руу буцааж залгахдаа analyOutput функцийг ашиглан энэ командын гаралтыг задлан шинжилдэг. "ISO14443A UID:" -ээс эхлэн бидний өмнө нь харсан мөр нь бидний скан хийсэн шошгын ID энд хадгалагддаг. Энэ мөрийг олсны дараа бид үүнийг хайчилж аваад ID -г объект руу хадгалдаг. эх).

Эцэст нь бид энэ ID -г album_directories массивт оруулсан объектын ID -тай тааруулахыг хичээдэг (album_directories.json файлаар ачаалагдсан). Хэрэв тохирох зүйл олдвол бид OSMC -д тухайн хавтасныхаа слайдыг үзүүлэхийг зааварчилна.

var nfcid = analyOutput (өгөгдөл); console.log ("nfcid бол" + nfcid.id); var харгалзах цомог = searchTag (nfcid.id, album_directories); if (харгалзах цомог) {console.log ("Энэ цомгийн хувьд" Олсон цомог " + JSON.stringify (харгалзах цомог) +"); var args = [{'зам': харгалзах цомог.директор}}; connection.run ('Player. Open', args); } listenForTag ();

Функцийн төгсгөлд бид listenForTag -ийг хэрхэн дахин эхлүүлэхийг та анзаарч байна уу? Энэ бол миний аппыг ажиллуулах цорын ганц шийдэл юм: explorenfc-basic нь тагийг хүлээж, уншиж, дараа нь гарах болно. Аппликешн нь explorenfc -basic -k ашиглан дуудах боломжтой тасралтгүй горимтой боловч энэ горимд child_process нь хэзээ ч дуусдаггүй тул хаягийн агуулгыг хэзээ ч гаргадаггүй (өөрөөр хэлбэл child.stdout.on ('өгөгдөл') хэзээ ч асдаггүй.). Би энэ уншигчийг ашиглах өөр аргыг олж чадаагүй байгаа тул энд бидний хийж байгаа зүйл бол explorenfc-basic-ийг нэг тэмдэглэгээний горимд ажиллуулах явдал бөгөөд шошгыг уншихад бид listenForTag-ийг ажиллуулж, explorenfc-basic-ийг дахин эхлүүлнэ.

Хэрэв би буцаж очих шаардлагатай байсан бол (тэгэх болно гэж бодож байгаа бол) би илүү олон сонголтыг санал болгодог NFC уншигчийг сонгох байсан: жишээлбэл, Адафрут (надад маш их таалагддагийг та анзаарсан байх) https:// www.adafruit.com/product/789 нь libnfc -тэй нийцдэг бөгөөд энэ нь уншигч нь хүүхдийн процессыг зангилаан дотроос дуудаж, stdout -ийг задлахаас хамаагүй илүү интерфэйстэй байх болно гэсэн үг гэж би бодож байна!

Алхам 7: Үүнийг туршаад үзээрэй

Аппыг ажиллуулахын тулд тэр хавтас руу ороод "node index.js" гэж бичнэ үү (эсвэл бид үүнийг pack.json дээр өмнө нь тохируулснаас хойш npm эхлэх). Бүртгэлд та OSMC/Kodi -тэй холбогдож, анх удаа скан хийж буй програмыг харах ёстой. Хэдэн секундын дараа төслийн директор дотор album_directories.json файл үүснэ; Дараа нь та өмнө нь тайлбарласан NFC хаягийн ID -г оруулаад хүссэн цомогтойгоо холбож болно.

Алхам 8: Автоматаар ажиллуулна уу

Дүгнэж хэлэхэд бид Node програмыг бүтээсэн бөгөөд энэ нь (1) таны KODI зургийн санг хайж, баярын зургуудаа хадгалдаг фолдерыг хайж олохыг хичээдэг, (2) explorenfc-basic дээр тулгуурлан NCF хаягийг сонсдог. 3) энэхүү NFC ID -тэй холбоотой цомгийг эхлүүлнэ.

Энэ бүх процессыг арын дэвсгэр дээр ажиллуулахын тулд бид зангилааны процессын менежер PM2 -ийг ашиглах болно.

Тушаалын мөрөнд өөрийн төслийн хавтас руу очно уу (энд таны index.js файл байрладаг) ба дараах мөрүүдийг бичнэ үү.

sudo npm install pm2 -gpm2 start index.js

Таны аппыг одоо PM2 хянаж байгаа бөгөөд автоматаар дахин эхлүүлэх болно! Үүнийг үнэхээр эхлүүлсэн эсэхийг шалгахын тулд pm2 list гэж бичээд жагсаалтаас харах ёстой. Хэрэв та бүртгэлийг үзэхийг хүсч байвал pm2 бүртгэлийг бичнэ үү.

Зөвлөмж болгож буй: