Мазмұны:

Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!: 9 қадам (суреттермен)
Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!: 9 қадам (суреттермен)

Бейне: Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!: 9 қадам (суреттермен)

Бейне: Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!: 9 қадам (суреттермен)
Бейне: Қаңтардың славяндық мерекелері. Қаңтардағы славяндар не болды? 2024, Шілде
Anonim
Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!
Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!
Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!
Сиқырлықпен мерекелік суреттер слайд -шоуын бастаңыз!

Бірнеше жылдар бойы мен саяхат кезінде кішкентай мүсіншені өзіммен бірге алып жүруді әдетке айналдырдым: мен көбінесе бос, бос артой сатып аламын (суреттегідей) мен оны елдің туы мен тақырыбына сәйкес бояймын. Мен барамын (бұл жағдайда, Сицилия).

Фигураны сол елдің сахналарының немесе әйгілі ескерткіштерінің алдында суретке түсіру идеясы: маған тек ескерткішпен суреттер салудан әлдеқайда күлкілі (бұл үшін Google бар, және бұл әлдеқайда арзан), бірақ бәрібір қарағанда оңайырақ. әр суретте өзім болу (фанат емес, шынымды айтсам)

Мерекеге келген адамдарды суреттерді тамашалағаннан кейін бірнеше күннен кейін жинау әрқашан қызықты болғандықтан, егер әр мүсіншінің қандай да бір жолмен жасаған суреттерінің слайд -шоуын автоматты түрде бастаса жақсы болар еді деп ойладым..

Бұл нұсқаулық NFC, таңқурай pi, nodejs және osmc көмегімен мен мұны қалай істегенімді түсіндіреді.

1 -қадам: Шешімге шолу

Шешімге шолу
Шешімге шолу
Шешімге шолу
Шешімге шолу

Бүкіл конфигурация бірнеше нәрсені қамтитындықтан, төмендегілердің барлығын түсінуге көмектесетін нәрсеге жалпы шолу:

Аппараттық құрал

- мүсін үйден жасалған: мен бұл нұсқауларды Копенгаген/Осло/Стокгольм/Хельсинкидегі бір апталық сапардың ортасында жазып отырғандықтан, мен осы сапарға жасалған мүсіннің бірнеше суретін қосамын.

- әр мүсіннің астында NFC чипі бар: мен әр фигураның астына орналастыруға болатын дөңгелек жапсырмаларды қолданамын, бірақ сіз басқа формалық факторды қолдана аласыз - тек сіз қолданатын чип оқырманмен үйлесімді екеніне көз жеткізіңіз.

- суреттерді көрсету үшін мен OSMC орнатылған таңқурай пиін қолданамын: бұл менің телешоулар мен фильмдерді таңдаған медиа ойнатқыш, сондықтан ол менің теледидарға қосылған

- таңқурай пи NFC тегтерін оқуы үшін мен NFC оқу құралын қостым - мен қолданған NXP -тен зерттелетін NFC, көптеген веб -сайттарда бар: ол Pi -ге қосылады және қалқан қызметін атқарады.

Бағдарламалық қамтамасыз ету

Raspberry Pi -де NodeJS сценарийі NFC тегінің оқылуын күтеді: мұны жасағаннан кейін, сценарий оның идентификаторын OSMC суреттер көзіндегі әрбір қалта мен мәнге/жұп тізіміне сәйкес тексереді және сәйкес NFC идентификаторы. пайдаланушы.

Тег оқылған кезде, егер идентификатор тізімде болса, Node сценарийі OSMC -ге осы қалтаның слайд -шоуын іске қосуды хабарлайды, сол тізімді құру/конфигурациялау үшін сол NodeJS сценарийі әр 5 минут сайын сканерлеу функциясын қосады: OSMC-тегі «Суреттер» көзіндегі әрбір каталогты іздейді (Kodi ұсынатын JSON-RPC API көмегімен) және оны дискіде сақталатын тізімге қосады. Бұл мәтіндік файлды тікелей өңдеу арқылы пайдаланушы әр альбомға сәйкес NFC идентификаторын қоса алады.

2 -қадам: Мүсін жасау

Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау
Мүсіншені жасау

Сіз мүсіншеге өзіңізге ұнайтын нәрсені қолдана аласыз: маған винилден жасалған ойыншықтар ұнайды, себебі оларды салыстыруға болады, тіпті мен сияқты сурет салуды ұнатпайтын адамға да оңай, әрі алып жүруге оңай. Мен оларды бос, DIY нұсқасына тапсырыс беремін, олар ең кіші мөлшерде келеді және оларға Posca маркерлерінің көмегімен сурет саламын. Міне, мен осы сапарға мен жасаған төрт елдің жалаушаларын көре аламын - олар бір -біріне жақындастыру үшін маған ұқсас болды. Бірнеше қабатты бояуға болады, егер сіз әр бояуды келесі бояудан бұрын құрғатуға мүмкіндік берсеңіз. Кескіндемені аяқтағаннан кейін, мен бірнеше минут бойы бояуға жылу пистолетін қолданғанды ұнатамын, себебі мен бұл Posca бояулар жиынтығына көмектесетін жылу екенін оқыдым.

Соңғы суретте сіз Свенді көре аласыз - мен оларға әрқашан ат қоямын - ұзақ таңнан кейін Ослода демалады. Оның бастапқы ойыншықтан басы жоқ, өйткені мен кетерден бір минут бұрын бұл мәселені шеше алдым: оның орнына басын пайдалану үшін алдыңғы ойыншықты бөлшектеуге тура келді. Мен бұған дейін болған емес деп айта алмаймын …

3 -қадам: OSMC орнатыңыз

OSMC орнатыңыз
OSMC орнатыңыз

Мен жасаған бірінші нәрсе OSMC -ті Raspberry Pi үшін микро SD картасына орнату болды: біздің орнатуда ол сіздің суреттеріңізді қарау үшін медиа ойнатқыш болады. Мен бұл аспект туралы егжей -тегжейлі айтпаймын, себебі ол өте жақсы құжатталған (егер сізге көмек қажет болса, бірнеше нұсқаулықтар бар). Орнатқышты компьютерден жүктеп алып, нұсқауларды орындаңыз. Аяқтағаннан кейін мен жай ғана пернетақта мен тінтуірді қосып, HDMI -ді теледидарға қосып, уақыт белдеуін орнату үшін орнату шеберінің артынан жүрдім.

Ақырында, мен суреттерімді сақтайтын каталогты дереккөздерге қостым: менің жағдайда олар сол желіде бекітілген IP бар NAS -да сақталады, бірақ оларды USB -дискіде немесе үй қалтасында сақтауға болады, micro SD жеткілікті үлкен болған жағдайда.

Дереккөзді қосқанда, сіз оған атауды енгізуді сұрайсыз: сіз әдепкі мәнді қалдыра аласыз немесе оны өзгерте аласыз, бірақ оны міндетті түрде жазыңыз, себебі бізге кейінірек қажет болады. Менің жағдайда мен оны «Менің суреттерім» деп атадым

Енді сіз қосқан каталогтың мазмұнын көруіңіз және суреттеріңізді қарауыңыз керек: менің жағдайда әр саяхат үшін ішкі каталог бар.

Құттықтаймыз, енді сізде суреттер бар медиа орталық бар және белгілі бір қалта үшін слайдшоуды іске қосуға болады (бонус ретінде сіз оны бейнелеріңізді немесе музыканы ойнату үшін де пайдалана аласыз)

4 -қадам: Оқырманды конфигурациялау

Қалған нұсқаулар үшін біз SSH арқылы пәрмен жолын пайдаланып Pi -ге қосыламыз. Мұны істеу үшін Pi -ді Ethernet кабелінің көмегімен желіге қосыңыз және Пи -ге қосылу үшін терминалды немесе арнайы бағдарламалық жасақтаманы пайдаланыңыз. Mac OS пен Linux -те бұл команда

ssh [email protected]

Сізден құпия сөзді енгізу сұралады, бұл қайтадан osmc

Оқырман жұмыс істей алуы үшін SPI қосылуы керек: Raspbian сияқты көптеген таратуда мұны raspi-config көмегімен жасауға болады, ол конфигурацияның кейбір параметрлерін өзгертуге мүмкіндік береді.

OSMC, алайда, сіздің қауіпсіздігіңіз үшін raspi-config-ды қамтымайды. Оның орнына, Raspberry -ді өшіріп, micro SD картасын шығарып, оны компьютерге орнатыңыз: енді «жүктеу» бөлімі көрінуі керек. Онда, көлемнің түбірінде сіз «config.txt» деп аталатын файлды көресіз - оны ашып, осы жолды соңына қосыңыз:

«dtparam = spi = on»

Енді сіз файлды сақтай аласыз, қайта жүктеңіз және SPI қосылуы керек.

Осыдан кейін сіз тіркелген ZIP файлын жүктеп алып, оны таңқурайға ашуыңыз керек - мен жобалар қалтасын құруды және сол жерде ашуды ұсынамын. Ол үшін таңқурайға SSH арқылы FTP арқылы қосылуға болады (мен мұны CyberDuck қолданамын) немесе файлды USB дискісіне салып, оны Raspberry Pi -ге көшіру үшін Kodi файл менеджерін қолдана аласыз.

Қалай болғанда да, сіз ZIP файлын Pi -ге көшіргеннен кейін, сіз оны көшірген қалтаға өтіп, оны ашуға болады, алынған қалтаға өтіп, пакетті орнатуға болады:

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

Егер бәрі ойдағыдай болса, сіз оқырманды қосып, қайта жүктеп, содан кейін енгізуіңіз керек

explorenfc-basic

Егер сіз NFC чипіне оқырманға жақындасаңыз, онда ол чиптен көптеген ақпаратты көрсетуі керек (басқалармен қатар оның идентификаторы)

5 -қадам: Түйінді орнатыңыз және жобаны жасаңыз

Әрі қарай, біз қосымшаны жазу үшін таңқурайға NodeJS орнатамыз.

Біз nodejs орнатқымыз келеді, бірақ әдепкі репозиторийдің нұсқасы шынымен ескі, сондықтан сіз бірінші қадамды өтуіңіз керек: пәрмен жолы интерфейсінде теріңіз

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

Содан кейін теруге болады

sudo apt nodejs орнатыңыз

nodejs және npm қол жетімді соңғы нұсқасын орнату үшін.

KODI-ді түйіндерден басқару үшін біз kodi-ws деп аталатын npm пакетін қолданамыз.

Жаңа жобаны құрудан бастайық: пәрменді теріңіз

npm бастамасы

Сізге бірнеше сұрақтар қойылады: олардың көпшілігі үшін сіз әдепкі мәнді қалдыра аласыз, тек қосымшаның атын таңдап, соңында өз атыңызды енгізіңіз. Бастапқы нүктені сұрағанда index.js қалдырыңыз

Бұл сіздің пакеттің сипаттамаларын, мысалы, тәуелділіктерді жинақтайтын package.json файлын жасайды.

Сіз енді кіре аласыз

sudo npm kodi-ws орнату sudo npm орнату jsonfilesudo npm орнату cronsudo npm орнату child_process

Егер сіз содан кейін package.json файлын ашсаңыз, онда барлық пакеттер тәуелділіктерге қосылғанын байқайсыз.

6 -қадам: Кодекс түсіндірілді

Кодекс, түсіндірілді
Кодекс, түсіндірілді

Бұл қадамға қосымшаның коды қосылады.

Мен сценарийді түсіну үшін түсініктеме беруге болмайтын журналды қалдырдым, бірақ оны бірге бұзамыз.

Сіз барлық функцияларды жариялағанына қарамастан, код алдымен бірнеше әрекеттерді орындайтынын байқайсыз:

kodi ('localhost', 9090). содан кейін (функция (байланыс) {

Сценарий OSMC JSON-RPC API қосылуға тырысады. Ол сәтті болғаннан кейін (және содан кейін), ол файлдың қалған бөлігімен жалғасады.

Егер сіз қандай да бір себептермен оны Raspberry Pi -ден іске қоспасаңыз, жергілікті хостты IP -мекен -жайға өзгертіңіз. Сондай -ақ, OSMC ішіндегі қызмет параметрлерінде (Параметрлер/Қызметтер) «Басқа жүйелердегі қосымшалардан қашықтан басқаруға рұқсат ету» құсбелгісін қойыңыз (суретті қараңыз)

Файлдың қалған бөлігі негізінен біз кейінірек қолданатын функциялар туралы мәлімдемелер болып табылады: осы жерден іске қосылған екі функция (172/173 жолдары)

scanAndSetCron (); listenForTag ();

ScanAndSetCron ішінде:

- scanPictures функциясы іске қосылады. Оның ішінде біз суреттеріміздің жолын сақтайтын «mypicturedirectory» айнымалысы бос екенін тексереміз. Егер солай болса, біз OSMC -тен суреттің мазмұны үшін барлық көздерді беруін сұраймыз (getPictureDirectory функциясының ішінде, 11 -жол):

var piclist = қосылуды күту. Files. GetSources («суреттер»);

OSMC бізге жауап ретінде массив береді: әр элемент үшін біз бастапқы атаудың «Менің» екенін тексереміз: егер солай болса, біз оны сурет көзі ретінде сақтаймыз (16 -жол және одан кейінгі). Бұл жерде сіз «Менің» жолын суреттер көзінің аты ретінде бұрын енгізген нәрсеге өзгерткіңіз келеді

if (piclist.sources .label.includes («Менің»)) {console.log («>>> Каталог табылды» + piclist.sources .файл); mypicturedirectory = piclist.sources .файл; }

Бізде дереккөзге жол бар (негізінен біздің альбомдардың түбірлік қалтасы), біз OSMC -тен оны сканерлеуді сұраймыз және album_directories деп аталатын массивке әр қалтаның жолын қосамыз (егер ол әлі жоқ болса). Бұл функция әр X секунд сайын іске қосылатындықтан, біз оны қосар алдында NFC идентификаторы бос жолға орнатылып, каталог тізімінде жоқ екенін тексереміз - осылайша сіздің суреттеріңізге қосылған әрбір жаңа қалта автоматты түрде болады. қосылды - 46 -жол

for (var j = 0; j <directory.length; j ++) {if (каталогтар [j].filetype.includes («каталог»)) {if (searchDirectory (каталогтар [j].файл, альбом_директорлары)) {консолі. журнал (каталогтар [j].file +«бұрыннан бар»); } else {console.log («>> diring қосу» + каталогтары [j].файл); album_directories.push ({каталог: каталогтар [j].файл, nfc: «»}); }}}

Соңында біз album_directories массивін Pi-дегі json файлына сақтаймыз, біз оны функция орындалған сайын жүктеуге тырысамыз: бұл scanAndSetCron функциясының соңында болады, онда біз өз жұмысымызды қамтамасыз ету үшін cron тәрізді пакетті қолданамыз. әр 15 секунд сайын.

Біз генерациялайтын JSON файлы, album_directories.json, кез келген блокнот қосымшасының көмегімен ашылады. Мұны жасағаннан кейін сізге фотоальбомдар тізімі ұсынылады, олардың әрқайсысында бос «nfc» өрісі бар:

[{«каталог»: «/home/osmc/Pictures/Mada 2016/», «nfc»: «»}, {«каталог»: «/home/osmc/Pictures/NewFolder/», «nfc»: «» }, {«каталог»: «/home/osmc/Pictures/Test/», «nfc»: «»}]

Бұл өрісте сіз осы альбоммен байланыстырғыңыз келетін тегтің идентификаторын қоюыңыз керек. Бұл идентификаторды алу үшін 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'). уылдырық, child = spawn ('/usr/bin/explorenfc-basic', );

Біз бұл орындаудан шығуды алу үшін оқиға тыңдаушысына сүйенеміз: child.stdout.on ('data', function (data)) кері шақырудың ішінде analyOutput функциясын қолдана отырып, осы команданың шығуын талдаймыз: біз іздейміз. «ISO14443A UID:» деп басталатын бұрын көрген сызық, өйткені біз сканерлеген тегтің идентификаторы сол жерде сақталады. Біз бұл жолды тапқаннан кейін оны қиып, идентификаторды объектке сақтаймыз (ID қалай аталады) түпнұсқа).

Ақырында, біз бұл идентификаторды album_directories объектілерінің массивіне енгізілген идентификаторларға сәйкестендіруге тырысамыз (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 ('data') ешқашан өшірілмейді). Мен бұл оқырманды пайдаланудың басқа әдісін таппағандықтан, мұнда біз не істейміз-explorenfc-basic бір тегтер режимінде іске қосылады, ал тег оқылған кезде біз listenForTag іске қосамыз, сондықтан explorenfc-basic қайта іске қосамыз.

Егер мен қайтуым керек болса (мен ойлаймын), мен басқа нұсқаларды ұсынатын NFC оқырманын таңдар едім: мысалы, Адафрут (сіз оларды жақсы көретінімді байқаған боларсыз) бұл оқырман бар https:// www libnfc -мен үйлесімді.adafruit.com/product/789, бұл менің ойымша, оқырман түйін ішінен бала процесін шақырудан және stdout -ты талдаудан гөрі интерфейске әлдеқайда жеңіл болады!

7 -қадам: көріңіз

Қолданбаны іске қосу үшін сол қалтаға өтіп, «node index.js» деп теріңіз (немесе оны pack.json -да бұрын конфигурациялағаннан бастап npm басталады). Журналдарда сіз OSMC/Kodi -ге қосылатын және бірінші рет сканерлейтін бағдарламаны көресіз. Бірнеше секундтан кейін жоба каталогында album_directories.json файлы құрылады; Содан кейін сіз NFC тегінің идентификаторларын бұрын түсіндірілгендей енгізе аласыз және оларды өзіңіз қалаған альбомдармен байланыстыра аласыз.

8 -қадам: автоматты түрде іске қосыңыз

Қорытындылай келе, біз Node қосымшасын құрдық, ол (1) сіздің KODI сурет кітапханасын іздейді және мерекелік суреттер сақталатын қалтаны табуға тырысады, (2) explorenfc-basic-ге сүйене отырып NCF тегтерін тыңдайды. 3) осы NFC идентификаторымен байланысты альбомды іске қосады.

Бұл процесті фондық режимде іске қосу үшін біз түйін үшін процесс менеджері PM2 қолданамыз.

Пәрмен жолында жобалар қалтасына (index.js файлы орналасқан) өтіңіз және келесі жолдарды теріңіз:

sudo npm install pm2 -gpm2 start index.js

Сіздің қосымшаңызды қазір PM2 бақылайды және ол автоматты түрде қайта қосылады! Оның іске қосылғанына көз жеткізу үшін pm2 тізімін теріңіз және сіз оны тізімде көресіз. Егер сіз журналдарды көргіңіз келсе, pm2 журналдарын теріңіз.

Ұсынылған: