Съдържание:

Стартирайте слайдшоуто си с празнични снимки с докосване на магия!: 9 стъпки (със снимки)
Стартирайте слайдшоуто си с празнични снимки с докосване на магия!: 9 стъпки (със снимки)

Видео: Стартирайте слайдшоуто си с празнични снимки с докосване на магия!: 9 стъпки (със снимки)

Видео: Стартирайте слайдшоуто си с празнични снимки с докосване на магия!: 9 стъпки (със снимки)
Видео: Детето ми се храни само със зеленчуци 2024, Ноември
Anonim
Стартирайте слайдшоуто си с празнични снимки с докосване на магия!
Стартирайте слайдшоуто си с празнични снимки с докосване на магия!
Стартирайте слайдшоуто си с празнични снимки с докосване на магия!
Стартирайте слайдшоуто си с празнични снимки с докосване на магия!

С годините съм развил навик да нося със себе си малка фигурка, когато пътувам: често си купувам малък, празен артой (като този на снимката) и го рисувам така, че да съответства на флага и темата на страната, в която съм посещавам (в случая Сицилия).

Идеята е след това да направите снимки на фигурката пред сцени или известни паметници от споменатата държава: Смятам, че е много по -смешно от снимките само със самия паметник (има Google за това и е много по -евтино), но все пак по -лесно, отколкото да имаш да бъда на всяка снимка сам (не фен, честно казано)

Тъй като винаги е забавно да събираш хората, с които си ходил на празници, няколко дни след като се върнеш да разгледаш снимките, реших, че би било хубаво всяка фигурка да може по някакъв начин автоматично да стартира слайдшоу на снимките от пътуването, за което са направени.

Тази инструкция ще обясни как го направих, използвайки NFC, малинов pi, nodejs и osmc

Стъпка 1: Преглед на решението

Преглед на решението
Преглед на решението
Преглед на решението
Преглед на решението

Тъй като цялата настройка включва няколко неща, ето общ преглед на това какво включва, за да ви помогне да разберете всичко, което следва:

Хардуер

- фигурката е домашна: тъй като пиша тези инструкции точно в средата на едноседмично пътуване в Копенхаген/Осло/Стокхолм/Хелзинки, ще включа няколко снимки на фигурката, направена за това пътуване

- под всяка фигурка има NFC чип: Използвам кръгли стикери, които мога да поставя под всяка фигурка, но можете да използвате всеки друг форм -фактор - просто се уверете, че чипът, който използвате, е съвместим с вашия четец

- за показване на снимките ще използвам малинов пи с инсталиран OSMC: това е моят медиен плейър по избор за телевизионни предавания и филми, така че вече е свързан с моя телевизор

- за да може малиновото пи да чете NFC тагове, добавих NFC четец - този, който използвах, е Explore -NFC от NXP, достъпен на много уебсайтове: той се включва към Pi и действа като щит

Софтуер

На Raspberry Pi скрипт NodeJS изчаква NFC маркер да бъде прочетен: след като това е направено, скриптът проверява за своя идентификатор спрямо списък със стойност/двойка с всяка папка от източника на снимки на OSMC и съответния NFC ID, конфигуриран от потребителя.

Когато маркерът се чете, ако идентификаторът е в списъка, Node скриптът казва на OSMC да стартира слайдшоуто за тази конкретна папка. За да се изгради/конфигурира този списък, същият NodeJS скрипт стартира функция за сканиране на всеки 5 минути: сканира всяка директория в източника „Картини“на OSMC (използвайки JSON-RPC API, който Kodi предлага) и го добавя към списък, който след това се записва на диск. Чрез директно редактиране на този текстов файл, потребителят може да добави съответния NFC ID за всеки албум.

Стъпка 2: Създаване на фигурка

Създаване на фигурка
Създаване на фигурка
Създаване на фигурката
Създаване на фигурката
Създаване на фигурката
Създаване на фигурката
Създаване на фигурка
Създаване на фигурка

Можете да използвате почти всичко, което харесвате за вашата фигурка: Обичам да използвам тези играчки от винилово изкуство, защото те - сравнително - лесно се рисуват дори за някой като мен, който не обича да рисува, и са доста лесни за носене. Поръчвам ги в тяхната празна, DIY версия, в най -малкия размер, в който идват, и рисувам върху тях с помощта на маркери Posca. Тук можете да видите този, който направих за това пътуване, със знамената на четирите държави, които посетихме - те се оказаха достатъчно сходни, за да ги комбинирам една до друга. Можете да използвате няколко слоя боя, стига наистина да оставите всеки да изсъхне, преди да боядисате следващия. След като приключа с боядисването, обичам да използвам топлинен пистолет върху боята за няколко минути, тъй като прочетох, че всъщност топлината помага на комплекта боя Posca.

На последната снимка можете да видите Свен - винаги им давам имена - почивка в Осло след доста дълга сутрин. Той няма главата от оригиналната играчка, тъй като успях да объркам това една минута преди да тръгна: трябваше да демонтирам предишна играчка, за да използвам главата й вместо това. Не мога да кажа, че никога досега не се е случвало …

Стъпка 3: Инсталирайте OSMC

Инсталирайте OSMC
Инсталирайте OSMC

Първото нещо, което направих, беше да инсталирам OSMC на микро SD карта за Raspberry Pi: в нашата настройка той ще служи като медиен плейър за гледане на вашите снимки. Няма да навлизам в подробности по този аспект, тъй като е доста добре документиран (има няколко инструктажа на разположение, ако имате нужда от помощ). Просто изтеглете инсталатора на вашия компютър и следвайте инструкциите. След като приключих, просто включих клавиатура и мишка и включих HDMI към телевизора и последвах съветника за настройка, за да настроя часовата зона и т.н.

Накрая добавих директорията, в която съхранявам снимките си, към източниците: в моя случай те се съхраняват на NAS с фиксиран IP адрес в същата мрежа, но можете да ги съхранявате и на USB устройство или в самата домашна папка, при условие, че вашата микро SD е достатъчно голяма.

Когато добавяте източника, ще бъдете помолени да въведете име за него: можете да оставите по подразбиране или да го промените, но не забравяйте да го запишете, защото по -късно ще имаме нужда от него. В моя случай го нарекох "MyPictures"

Сега трябва да видите съдържанието на добавената от вас директория и да прегледате снимките си: в моя случай имам поддиректория за всяко пътуване.

Поздравления, вече имате медиен център с вашите снимки и можете да стартирате слайдшоу за конкретна папка (като бонус можете да го използвате и за възпроизвеждане на вашите видеоклипове или музика)

Стъпка 4: Конфигурирайте четеца

За останалата част от инструкциите ще се свързваме с Pi, използвайки командния ред през SSH. За да направите това, просто свържете Pi към вашата мрежа с помощта на Ethernet кабел и използвайте терминала или специален софтуер, за да се свържете с Pi. На Mac OS и Linux командата е

ssh [email protected]

Ще бъдете помолени да въведете парола, това е отново osmc

За да може читателят да функционира, SPI трябва да бъде активиран: в повечето дистрибуции, като Raspbian, това може да стане с помощта на raspi-config, инструмент за конфигуриране, който ви позволява да променяте някои конфигурационни стойности.

OSMC обаче не включва raspi-config, за ваша собствена безопасност, когато го използвате. Вместо това изключете Raspberry, извадете micro SD картата и просто я монтирайте към компютъра: дялът "boot" вече трябва да се вижда. Там, в основата на тома, ще видите файл, наречен "config.txt" - просто го отворете и добавете този ред в края:

"dtparam = spi = on"

Вече можете да запишете файла, рестартирането и SPI трябва да бъдат активирани.

След това ще трябва да изтеглите прикачения ZIP файл и да го разархивирате на малината - препоръчвам ви да създадете папка Projects и да я разархивирате там. За да направите това, можете или да се свържете с Raspberry, използвайки FTP през SSH (използвам CyberDuck, за да направя това), или да поставите файла на USB устройство и да използвате файловия мениджър на Kodi, за да го копирате на Raspberry Pi.

Така или иначе, след като сте копирали 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: Инсталирайте Node и създайте проекта

След това ще инсталираме NodeJS на малината, за да напишем нашето приложение.

Искаме да инсталираме nodejs, но версията на хранилището по подразбиране е наистина стара, така че трябва да преминете през първата стъпка преди: в интерфейса на командния ред въведете

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

След това можете да пишете

sudo apt install nodejs

за да инсталирате най -новата налична версия на nodejs и npm.

За да контролираме KODI от nodejs, ще използваме npm пакет, наречен kodi-ws.

Нека започнем със създаването на нов проект: просто въведете командата

npm init

Ще ви бъдат зададени редица въпроси: за повечето от тях можете да оставите настройката по подразбиране, просто изберете име за приложението си и въведете собственото си име в края. Когато бъдете попитани за отправна точка, просто оставете index.js

Това ще създаде файл package.json, който ще обобщи характеристиките на вашия пакет, като неговите зависимости.

Вече можете да влезете

sudo npm инсталирайте kodi-ws sudo npm инсталирайте jsonfilesudo npm инсталирайте cronsudo npm инсталирайте child_process

Ако отворите package.json след това, ще забележите, че всички тези пакети са добавени към зависимостите.

Стъпка 6: Кодът е обяснен

Кодексът, обяснен
Кодексът, обяснен

Към тази стъпка е приложен кодът за приложението.

Оставих доста регистрационни файлове, които могат да бъдат декомментирани, за да разбера скрипта, но го разбием заедно.

Ще забележите, че въпреки всички декларирани функции, кодът прави само няколко неща в началото:

kodi ('localhost', 9090).then (функция (връзка) {

Скриптът се опитва да се свърже с OSMC JSON-RPC API. След като успее (и едва тогава), той продължава с останалата част от файла.

Ако по някаква причина не стартирате това от вашия Raspberry Pi, променете localhost на вашия IP адрес. Уверете се също, че в настройките на услугата в OSMC (Настройки/Услуги) поставете отметка в квадратчето „Разрешаване на дистанционното управление от приложения на други системи“(вижте снимката)

Останалата част от файла са предимно декларации за функции, които ще използваме по -късно: двете функции, които всъщност се стартират от тук, са (редове 172/173)

scanAndSetCron (); listenForTag ();

В scanAndSetCron:

- функцията scanPictures се стартира. Вътре в него проверяваме дали променливата "mypicturedirectory", която ще задържи пътя към нашите снимки, е празна. Ако е така, ние молим OSMC да ни предостави всички източници, които има за съдържанието на картината (във функцията getPictureDirectory, ред 11):

var piclist = изчакайте връзка. Files. GetSources ("снимки");

OSMC ни дава масив в замяна: за всеки елемент проверяваме дали името на източника включва „My“: в такъв случай го съхраняваме като наш източник на картина (ред 16 и следващите). Това е мястото, където ще искате да промените низа от „My“на това, което сте въвели преди като име за източника на вашите снимки

if (piclist.sources .label.includes ("Моят")) {console.log (">>> Намерен в директорията" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }

Сега, когато имаме пътя към източника (по същество основната папка към нашите албуми), ние молим OSMC да го сканира и да добави пътя за всяка папка към масив, наречен album_directories (ако вече не е там). Тъй като тази функция ще се изпълнява на всеки X секунди, ние проверяваме дали директорията вече не е в списъка, преди да я добавим, като NFC ID е зададен на празен низ - по този начин всяка нова папка, която добавите към снимките си, ще бъде автоматично добавен - ред 46

for (var j = 0; j <директории.дължина; j ++) {if (директории [j].filetype.includes ("директория")) {if (searchDirectory (директории [j].file, album_directories)) {конзола. log (директории [j].file +"вече има"); } else {console.log (">> Добавяне на директория" + директории [j].file); album_directories.push ({директория: директории [j].file, nfc: ""}); }}}

В края запазваме масива album_directories в json файл на Pi, който се опитваме да зареждаме всеки път, когато функцията се изпълнява: това се случва в края на функцията scanAndSetCron, където използваме пакет, подобен на cron, за да гарантираме, че функцията ни работи на всеки 15 секунди.

Генерираният от нас JSON файл, album_directories.json, може да бъде отворен с всяко приложение за бележник. След като направите това, ще ви бъде представен списъкът с вашите фотоалбуми, всеки от които с празно поле „nfc“:

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"директория": "/home/osmc/Pictures/Test/", "nfc": ""}]

В това поле сега трябва да поставите идентификационния номер на маркера, който искате да свържете с този албум. За да получите този идентификатор, просто отидете в папката SW2827, стартирайте explorenfc-basic и сканирайте маркера, който искате да използвате. В изхода, който получавате, просто потърсете стойността до ISO14443A UID. Копирайте го в албума, който искате да конфигурирате. В моя случай например

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" директория ":"/home/osmc/Pictures/Test/"," nfc ":" "}]

Запазете файла и съдържанието му ще се зареди, когато стартирате приложението следващия път.

Във функцията listenForTag правим точно това: тъй като изглежда, че няма специален порт на библиотеката за четене за NodeJS, ние разчитаме на детски процеси, за да стартираме двоичния файл за четеца:

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

Ние разчитаме на eventlistener, за да получи изхода от това изпълнение: вътре в callback за child.stdout.on ('data', function (data), ние анализираме изхода на тази команда, използвайки функцията analysisOutput: ние търсим ред, който видяхме по -рано, започвайки с „ISO14443A UID:“, тъй като там се съхранява идентификационният номер на сканирания от нас маркер. След като намерим този ред, го изрязваме и съхраняваме идентификатора в обект (наречен ИД, как оригинал).

Накрая се опитваме да съпоставим този ID с идентификаторите, които въведохме в масива от обекти album_directories (заредени чрез файла album_directories.json). Ако се намери съвпадение, инструктираме OSMC да стартира слайдшоу за тази конкретна папка:

var nfcid = analysisOutput (данни); console.log ("nfcid е" + nfcid.id); var съответния албум = searchTag (nfcid.id, директории на албуми); 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 четец, който предлага повече възможности: например Adafruit (може би сте забелязали, че много ги обичам) има този четец https:// www.adafruit.com/product/789, който е съвместим с libnfc, което според мен означава, че читателят ще бъде много по -чист за взаимодействие, отколкото да извика дъщерния процес от вътрешния възел и да анализира stdout!

Стъпка 7: Опитайте

За да стартирате приложението, просто отидете до тази папка и въведете „node index.js“(или npm start, тъй като сме го конфигурирали по -рано в package.json). В регистрационните файлове трябва да видите приложението, свързващо се с OSMC/Kodi и сканиращо за първи път. След няколко секунди файлът album_directories.json ще бъде създаден в директорията на проекта; След това можете да въведете идентификаторите на NFC тагове, както е обяснено по -рано, и да ги свържете с албумите, които искате.

Стъпка 8: Стартирайте автоматично

За да обобщим, създадохме приложението Node, което (1) сканира вашата библиотека с изображения KODI и се опитва да намери папката, в която съхранявате вашите празнични снимки, (2) слуша за NCF тагове, разчитайки на explorenfc-basic и след това (3) стартира албума, свързан с този NFC ID.

За да накараме целия този процес да работи във фонов режим, ще използваме PM2, мениджър на процеси за възел.

В командния ред отворете папката с проекти (където се намира вашият файл index.js) и въведете следните редове:

sudo npm инсталирате pm2 -gpm2 начало index.js

Вашето приложение вече се наблюдава от PM2 и ще бъде рестартирано автоматично! За да сте сигурни, че действително е стартиран, въведете pm2 list и трябва да го видите в списъка. Ако искате да видите регистрационните файлове, просто въведете pm2 logs.

Препоръчано: