Мазмуну:

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

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

Video: Сыйкырдуу тийүү менен майрамдык сүрөттөрүңүздүн слайд -шоусун баштаңыз!: 9 кадам (сүрөттөр менен)
Video: Жаңы жылга НТС менен! / Майрамдык кече / 1-бөлүк / НТС / Кыргызстан 2024, Июль
Anonim
Сыйкырдуу тийүү менен майрамдык сүрөттөрүңүздүн слайд -шоусун баштаңыз!
Сыйкырдуу тийүү менен майрамдык сүрөттөрүңүздүн слайд -шоусун баштаңыз!
Сыйкырдуу тийүү менен майрамдык сүрөттөрүңүздүн слайд -шоусун баштаңыз!
Сыйкырдуу тийүү менен майрамдык сүрөттөрүңүздүн слайд -шоусун баштаңыз!

Көп жылдар бою мен саякаттап жүргөндө өзүмө кичинекей фигураны алып кетүүнү адатка айландырдым: Мен көбүнчө кичинекей бош боштукту (сүрөттөгүдөй) сатып алып, аны өлкөнүн желегине жана темасына дал келтирүү үчүн боёйм. м баруу (бул учурда, Сицилия).

Идея - бул өлкөдөгү сценалардын же белгилүү эстеликтердин алдында фигураны сүрөткө тартуу: Мен муну эстеликтин өзү менен сүрөткө караганда алда канча күлкүлүү деп эсептейм (бул үчүн Google бар жана бул бир топ арзан), бирок дагы деле болсо ээ ар бир сүрөттө өзүм болуу (күйөрман эмес, чынын айтсам)

Сүрөттөрдү көрүү үчүн кайра келгенден бир нече күн өткөндөн кийин майрамга барган адамдарды чогултуу ар дайым кызыктуу болгондуктан, ар бир фигурант кандайдыр бир жол менен алар үчүн жасалган саякаттын сүрөттөрүнүн слайд -шоусун баштаса жакшы болмок деп ойлодум.

Бул көрсөтмө NFC, малина пи, nodejs жана osmcти колдонуп, мен муну кантип кылгандыгымды түшүндүрөт.

1 -кадам: Чечимге сереп

Чечимге сереп
Чечимге сереп
Чечимге сереп
Чечимге сереп

Бүт орнотуу бир нече нерселерди камтыгандыктан, бул жерде төмөнкүлөрдүн бардыгын түшүнүүгө жардам берүү үчүн тартылган нерселерге жалпы сереп:

Аппараттык

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

- Ар бир фигуранын астында NFC чипи бар: Мен ар бир фигуранын астына баткан тегерек стикерлерди колдонуп жатам, бирок сиз башка форма факторун колдонсоңуз болот - жөн гана сиз колдонгон чип окурманыңызга туура келээрин текшериңиз.

- сүрөттөрдү көрсөтүү үчүн мен OSMC орнотулган малина пиин колдоном: бул менин телекөрсөтүүлөргө жана кинолорго менин медиа ойноткучум, андыктан ал менин сыналгыма туташкан

- малина пи NFC тегдерин окушу үчүн, мен NFC окурманын коштум - мен колдонгон NXPден изилдөө -NFC, көптөгөн веб -сайттарда жеткиликтүү: ал Piге сайылып, калканч катары иштейт

Программалык камсыздоо

Raspberry Piде NodeJS сценарийи NFC тегинин окулушун күтөт: муну бүтүргөндөн кийин, скрипт OSMCдеги сүрөттөр булагындагы ар бир папка менен маани/жуп тизмесине каршы анын идентификаторун текшерет жана NFC ID тарабынан конфигурацияланган. Колдонуучу.

Тег окулганда, эгер ID тизмеде болсо, Node скрипти OSMCге бул конкреттүү папка үчүн слайдшоуну баштоону айтат. Ошол тизмени куруу/конфигурациялоо үчүн ошол эле NodeJS скрипти ар 5 мүнөт сайын сканерлөө функциясын ишке киргизет: OSMCдеги "Сүрөттөр" булагынын ичиндеги ар бир каталогду издейт (Kodi сунуштаган JSON-RPC API менен) жана аны дискте сакталган тизмеге кошот. Бул текст файлын түз түзөтүү менен, колдонуучу ар бир альбомго тиешелүү NFC ID кошо алат.

2 -кадам: Фигураны түзүү

Фигураны түзүү
Фигураны түзүү
Фигураны түзүү
Фигураны түзүү
Фигураны түзүү
Фигураны түзүү
Фигураны түзүү
Фигураны түзүү

Сиз фигураңыз үчүн өзүңүзгө жаккан нерселердин бардыгын колдоно аласыз: Мен бул винил арт оюнчуктарын колдонгонду жакшы көрөм, анткени алар салыштырмалуу - мага окшош бирөө үчүн деле тарткысы келбейт, ал эми алып жүрүү абдан оңой. Мен аларды бош, DIY версиясында заказ кылам, эң кичине өлчөмдө жана Posca маркерлерин колдонуп тартам. Бул жерде мен саякат үчүн жасаган саякатымды көрө аласыз, биз барган төрт өлкөнүн желектери - алар мага окшош болуп калды, мен аларды капталга бириктире алдым. Кийинкисин боёордон мурун ар бирин кургатып койсоңуз, сиз бир нече кат боек колдонсоңуз болот. Мен сүрөт тартып бүткөндөн кийин, бир нече мүнөт бою боёктун үстүндө жылуулук тапанчасын колдонгум келет, анткени бул Posca боёк топтомуна жардам берүүчү ысык экенин окудум.

Акыркы сүрөттө сиз Свенди көрө аласыз - мен аларга дайыма ысым берем - Ослодо бир топ эртең менен тыныгуу. Анын баштапкы оюнчуктан башы жок, анткени мен кетерден бир мүнөт мурун башаламандыкка жетиштим: анын ордуна башын колдонуу үчүн мурунку оюнчукту демонтаждоо керек болчу. Мурда мындай болгон эмес деп айта албайм …

3 -кадам: OSMC орнотуу

OSMC орнотуу
OSMC орнотуу

Мен жасаган биринчи нерсе Raspberry Pi үчүн микро SD картага OSMCти орнотуу болду: биздин орнотууда ал сиздин сүрөттөрүңүздү көрүү үчүн медиа ойноткуч болуп кызмат кылат. Мен бул жагынан көп деталдаштырбайм, анткени ал абдан жакшы документтештирилген (эгер сизге жардам керек болсо, бир нече Instructables бар). Жөн гана орноткучту компьютериңизге жүктөп алып, нускамаларды аткарыңыз. Бүткөндөн кийин, мен жөн гана клавиатураны жана чычканды сайып, HDMIди сыналгыга туташтырып, убакыт алкагын ж.

Акыры, мен сүрөттөрүм сакталган каталогду булактарга коштум: менин учурда алар ошол эле тармакта туруктуу IP менен УИАда сакталат, бирок сиз аларды USB дискте же үй папкасында сактай аласыз, Сиздин micro SD жетишерлик чоң болгон шартта.

Булакты кошуп жатканда, сиз анын атын киргизүүнү суранасыз: демейки шартты калтырып же өзгөртө аласыз, бирок аны жазууну унутпаңыз, анткени кийинчерээк бизге керек болот. Менин учурда мен аны "MyPictures" деп атадым

Сиз азыр кошкон каталогдун мазмунун көрүп, сүрөттөрүңүздү карап чыгыңыз: менин учурда, менде ар бир саякат үчүн суб-каталог бар.

Куттуктайбыз, сизде азыр сүрөттөрүңүз бар медиа борборуңуз бар жана белгилүү бир папка үчүн слайдшоуну баштай аласыз (бонус катары аны видеолоруңузду же музыкаңызды ойнотуу үчүн да колдонсоңуз болот)

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

Калган көрсөтмөлөр үчүн, биз SSH аркылуу буйрук сабын колдонуп Пи менен туташабыз. Бул үчүн, Pi'ди Ethernet кабели аркылуу тармагыңызга туташтырыңыз жана Пи -ге туташуу үчүн терминалды же атайын сот программасын колдонуңуз. Mac OS жана Linuxто, буйрук

ssh [email protected]

Сизден сырсөздү киргизүү суралат, бул дагы osmc

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

OSMC, бирок, аны колдонууда өзүңүздүн коопсуздугуңуз үчүн raspi-configды камтыбайт. Анын ордуна, Малинаны өчүрүп, микро SD картаны чыгарып, компьютериңизге орнотуңуз: "жүктөө" бөлүмү азыр көрүнүп турушу керек. Ал жерде, көлөмдүн тамырында, сиз "config.txt" деп аталган файлды көрөсүз - аны ачып, аягында бул сапты кошуңуз:

"dtparam = spi = on"

Сиз азыр файлды сактай аласыз, өчүрүп күйгүзүңүз жана SPI иштетилиши керек.

Андан кийин, тиркелген ZIP файлын жүктөп алып, аны малинага ачышыңыз керек болот - Мен Долбоорлор папкасын түзүүнү жана ошол жерде ачууну сунуштайм. Бул үчүн сиз Raspberry менен SSH аркылуу FTP аркылуу туташсаңыз болот (мен муну CyberDuck колдоном) же файлды USB дискке салып, кодинин файл менеджерин Raspberry Piге көчүрүү үчүн колдонсоңуз болот.

Кандай болбосун, сиз ZIP файлын Пи -ге көчүргөндөн кийин, аны көчүргөн папкаңызга кирип, аны ачып, алынган папкага өтүңүз жана пакетти орнотуңуз:

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

Эгер баары ойдогудай болсо, анда сиз окурманы туташтырып, кайра жүктөп, анан киришиңиз керек

explorenfc-basic

Эгерде сиз окурманга NFC чипине кайрылсаңыз, анда ал азыр чиптен бир топ маалыматты көрсөтүшү керек (башка нерселер менен катар анын ID)

5 -кадам: Түйүндү орнотуп, долбоорду түзүңүз

Андан кийин, биз NodeJSти малинага орнотуп, колдонмону жазабыз.

Биз nodejs орнотууну каалайбыз, бирок демейки репозиторийдин версиясы чындыгында эски, андыктан биринчи кадамды өтүшүңүз керек: буйрук сабынын интерфейсине териңиз

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

Сиз андан кийин тере аласыз

sudo apt nodejs орнотуу

nodejs жана npm жеткиликтүү акыркы версиясын орнотуу үчүн.

KODIни nodejs ичинен көзөмөлдөө үчүн, kodi-ws деп аталган npm пакетин колдонобуз.

Жаңы долбоорду түзүүдөн баштайлы: жөн гана буйрукту териңиз

npm init

Сизге бир катар суроолор берилет: алардын көбү үчүн сиз демейки абалдан чыгып кете аласыз, жөн гана колдонмоңуздун атын тандап, аягында өз атыңызды киргизиңиз. Баштоо чекитин сурашканда index.js калтырыңыз

Бул сиздин пакеттин мүнөздөмөлөрүн, анын көз карандылыгын жалпылай турган package.json файлын түзөт.

Сиз азыр кире аласыз

sudo npm код-ws орнотуу jdofilesudo npm орнотуу cronsudo npm орнотуу child_process

Эгерде сиз андан кийин package.json ачсаңыз, анда бул пакеттердин баары көз карандылыктарга кошулганын байкайсыз.

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

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

Бул кадамга тиркеме - бул колдонмонун коду.

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

Сиз бардык функцияларга карабастан, код алгач бир нече нерсени аткарарын байкайсыз:

kodi ('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].файл, album_directories)) {консолу. журнал (каталогдор [j].file +"мурунтан эле бар"); } else {console.log (">> Add dir" + каталогдор [j].file); 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 үчүн окурман китепканасынын атайын порту жок окшойт, биз окурман үчүн экилик файлды ишке киргизүү үчүн childprocessesке таянабыз:

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 is" + nfcid.id); var tegishlialbum = searchTag (nfcid.id, album_directories); эгер (тиешелүү альбом) {console.log ("Тегиндеги альбом" + JSON.stringify (тиешелүү альбом) + "бул тег үчүн"); var args = [{'path': тиістіalbum.directory}]; 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 ID менен байланышкан альбомду ишке киргизет.

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

Буйрук сабында, долбоорлоруңуздун папкасына (index.js файлыңыз жайгашкан) өтүңүз жана төмөнкү саптарды териңиз:

sudo npm pm2 -gpm2 баштоо index.js орнотуу

Сиздин колдонмо азыр PM2 тарабынан көзөмөлдөнүп турат жана автоматтык түрдө кайра башталат! Анын иш жүзүндө ишке киришине ынануу үчүн pm2 тизмесин териңиз жана сиз аны тизмеде көрүшүңүз керек. Эгерде сиз журналдарды көргүңүз келсе, жөн эле pm2 журналдарын териңиз.

Сунушталууда: