Sadržaj:

Pokrenite prezentaciju svojih slika s odmora s dodirom magije!: 9 koraka (sa slikama)
Pokrenite prezentaciju svojih slika s odmora s dodirom magije!: 9 koraka (sa slikama)

Video: Pokrenite prezentaciju svojih slika s odmora s dodirom magije!: 9 koraka (sa slikama)

Video: Pokrenite prezentaciju svojih slika s odmora s dodirom magije!: 9 koraka (sa slikama)
Video: How to Use Microsoft Teams for iPhone 2024, Srpanj
Anonim
Pokrenite prezentaciju svojih slika s odmora s daškom magije!
Pokrenite prezentaciju svojih slika s odmora s daškom magije!
Pokrenite prezentaciju svojih slika s odmora s daškom magije!
Pokrenite prezentaciju svojih slika s odmora s daškom magije!

S godinama sam stekao naviku da sa sobom nosim malu figuricu na putovanju: često kupujem malu, praznu artoju (poput one sa slike) i slikam je tako da odgovara zastavi i temi zemlje u kojoj sam m posjećujem (u ovom slučaju Siciliju).

Ideja je zatim snimiti figuricu ispred prizora ili poznatih spomenika iz spomenute zemlje: Smatram da je mnogo smiješnije nego slikati samo spomenik (postoji Google za to i mnogo je jeftiniji), ali ipak lakše nego imati da i ja budem na svakoj slici (ne obožavatelj, da budem iskren)

Kako je uvijek zabavno okupiti ljude s kojima ste otišli na praznike nekoliko dana nakon što ste se vratili pogledati slike, pomislio sam da bi bilo lijepo da svaka figurica može nekako automatski pokrenuti dijaprojekciju slika s putovanja za koje su napravljene.

Ova instrukcija će objasniti kako sam to učinio, koristeći NFC, maline pi, nodejs i osmc

Korak 1: Pregled rješenja

Pregled rješenja
Pregled rješenja
Pregled rješenja
Pregled rješenja

Budući da cjelokupno postavljanje uključuje nekoliko stvari, evo općeg pregleda onoga što je uključeno kako biste lakše razumjeli sve što slijedi:

Hardver

- figurica je domaća: budući da ove upute pišem upravo usred jednotjednog putovanja u Kopenhagen/Oslo/Stockholm/Helsinki, uvrstit ću nekoliko snimaka figurice napravljene za ovo putovanje

- ispod svake figurice nalazi se NFC čip: koristim okrugle naljepnice koje mogu staviti ispod svake figurice, ali možete koristiti bilo koji drugi faktor oblika - samo provjerite je li čip koji koristite kompatibilan s vašim čitačem

- za prikaz slika upotrijebit ću maline pi sa instaliranim OSMC -om: to je moj medijski player po izboru za TV emisije i filmove pa je već povezan s mojim televizorom

- kako bi malina pi mogla čitati NFC oznake, dodao sam NFC čitač - ja sam koristio Explore -NFC iz NXP -a, dostupan na mnogim web stranicama: priključuje se na Pi i djeluje kao štit

Softver

Na Raspberry Pi -u, NodeJS skripta čeka da se pročita NFC oznaka: nakon što to učini, skripta provjerava svoj ID u odnosu na popis vrijednosti/parova sa svakom mapom iz izvora slika na OSMC -u i odgovarajući NFC ID kako je konfigurirao korisnik.

Kad se oznaka pročita, ako je ID na popisu, skripta Node govori OSMC -u da pokrene slideshow za ovu određenu mapu. Kako bi izgradila/konfigurirala taj popis, ista skripta NodeJS pokreće funkciju skeniranja svakih 5 minuta: skenira svaki direktorij unutar izvora "Slike" na OSMC-u (koristeći JSON-RPC API koji Kodi nudi) i dodaje ga na popis koji se zatim sprema na disk. Izravnim uređivanjem ove tekstualne datoteke korisnik tada može dodati odgovarajući NFC ID za svaki album.

Korak 2: Izrada figurice

Stvaranje figurice
Stvaranje figurice
Stvaranje figurice
Stvaranje figurice
Stvaranje figurice
Stvaranje figurice
Stvaranje figurice
Stvaranje figurice

Za svoju figuricu možete upotrijebiti gotovo sve što vam se sviđa: obožavam koristiti te umjetničke igračke od vinila jer se - relativno - lako crtaju čak i za nekoga poput mene koji ne voli crtati i prilično ih je lako nositi. Naručujem ih u njihovoj praznoj, DIY verziji, u najmanjoj veličini u kojoj dolaze, i crtam na njima pomoću markera Posca. Ovdje možete vidjeti onu koju sam napravio za ovo putovanje sa zastavama četiri zemlje koje smo posjetili - bile su dovoljno slične da ih spojim jednu do druge. Možete upotrijebiti nekoliko slojeva boje sve dok stvarno pustite da se svaki osuši prije nego što naslikate sljedeći. Nakon što završim sa slikanjem, volim koristiti toplinski pištolj na boji nekoliko minuta, jer sam pročitao da zapravo toplina pomaže u postavljanju boje Posca.

Na posljednjoj slici možete vidjeti Svena - uvijek im dajem imena - kako ima pauzu u Oslu nakon prilično dugog jutra. On nema glavu od originalne igračke, budući da sam to uspio zabrljati jednu minutu prije odlaska: morao sam demontirati prethodnu igračku kako bih umjesto nje koristio njenu glavu. Ne mogu reći da se to nikada prije nije dogodilo …

Korak 3: Instalirajte OSMC

Instalirajte OSMC
Instalirajte OSMC

Prvo što sam učinio bilo je instaliranje OSMC -a na mikro SD karticu za Raspberry Pi: u našim postavkama poslužit će kao medijski player za gledanje vaših slika. Neću ulaziti u detalje o ovom aspektu jer je prilično dobro dokumentiran (postoji nekoliko instrukcija na raspolaganju ako vam je potrebna pomoć). Samo preuzmite instalacijski program na računalo i slijedite upute. Kad sam završio, samo sam priključio tipkovnicu i miš, priključio HDMI na televizor i slijedio čarobnjaka za postavljanje kako bih postavio vremensku zonu itd.

Na kraju, izvorima sam dodao direktorij u koji spremam svoje slike: u mom slučaju one su pohranjene na NAS -u s fiksnim IP -om na istoj mreži, ali ih možete pohraniti i na USB pogon ili u samu matičnu mapu, pod uvjetom da je vaš mikro SD dovoljno velik.

Prilikom dodavanja izvora od vas će se tražiti da unesete naziv za njega: možete ostaviti zadanu vrijednost ili je promijeniti, ali je obavezno zapišite jer će nam kasnije trebati. U mom slučaju nazvao sam to "Moje slike"

Sada biste trebali vidjeti sadržaj imenika koji ste dodali i pregledati svoje slike: u mom slučaju imam poddirektorij za svako putovanje.

Čestitamo, sada imate medijski centar sa svojim slikama i možete pokrenuti dijaprojekciju za određenu mapu (kao bonus, možete ga koristiti i za reprodukciju vaših videozapisa ili glazbe)

Korak 4: Konfigurirajte čitač

Za ostatak instrukcija povezivat ćemo se s Pi -om pomoću naredbenog retka preko SSH -a. Da biste to učinili, samo povežite Pi na svoju mrežu pomoću Ethernet kabela i upotrijebite terminal ili namjenski softver za spajanje na Pi. Na Mac OS -u i Linuxu naredba je

ssh [email protected]

Od vas će se tražiti da unesete lozinku, ponovno je osmc

Da bi čitač mogao funkcionirati, mora biti omogućen SPI: u većini distribucija, poput Raspbiana, to se može učiniti pomoću raspi-config, alata za konfiguraciju koji vam omogućuje promjenu nekih konfiguracijskih vrijednosti.

OSMC, međutim, ne uključuje raspi-config, radi vlastite sigurnosti pri korištenju. Umjesto toga, isključite Raspberry, izbacite mikro SD karticu i samo je montirajte na računalo: particija "boot" sada bi trebala biti vidljiva. Tamo, u korijenu volumena, vidjet ćete datoteku pod nazivom "config.txt" - samo je otvorite i dodajte ovaj redak na kraju:

"dtparam = spi = on"

Sada možete spremiti datoteku, ponovno pokretanje i SPI bi trebali biti omogućeni.

Nakon toga ćete morati preuzeti priloženu ZIP datoteku i raspakirati je na malini - preporučujem da stvorite mapu Projects i tamo je raspakirate. Da biste to učinili, možete se povezati s Raspberry -jem pomoću FTP -a preko SSH -a (za to koristim CyberDuck) ili staviti datoteku na USB pogon i upotrijebiti Kodijev upravitelj datoteka za kopiranje na Raspberry Pi.

U svakom slučaju, nakon što ste kopirali zip datoteku u Pi, tada se možete pomaknuti do mape u koju ste je kopirali i raspakirati, premjestiti se u rezultirajuću mapu i instalirati paket:

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

Ako je sve u redu, trebali biste moći priključiti čitač, ponovno ga pokrenuti i zatim unijeti

explorenfc-basic

Ako čitatelju približite NFC čip, on bi sada trebao prikazati hrpu podataka iz čipa (između ostalog, njegov ID)

Korak 5: Instalirajte čvor i izradite projekt

Zatim ćemo instalirati NodeJS na malinu za pisanje naše aplikacije.

Želimo instalirati nodejs, ali verzija zadanog spremišta je zaista stara, pa prije toga morate proći prvi korak: u sučelje naredbenog retka upišite

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

Zatim možete upisati

sudo apt install nodejs

za instaliranje najnovije dostupne verzije nodejsa i npm -a.

Kako bismo kontrolirali KODI iz nodejsa, koristit ćemo npm paket koji se zove kodi-ws.

Počnimo s stvaranjem novog projekta: samo upišite naredbu

npm init

Bit će vam postavljeno nekoliko pitanja: za većinu njih možete ostaviti zadanu vrijednost, samo odaberite naziv svoje aplikacije i na kraju unesite svoje ime. Na upit za početnu točku samo ostavite index.js

Ovo će stvoriti datoteku package.json koja će sažeti karakteristike vašeg paketa, kao što su njegove ovisnosti.

Sada možete ući

sudo npm install kodi-ws sudo npm install jsonfilesudo npm install cronsudo npm install child_process

Ako nakon toga otvorite package.json, primijetit ćete da su svi ti paketi dodani ovisnostima.

Korak 6: Objašnjenje koda

Kodeks, objašnjeno
Kodeks, objašnjeno

Ovom koraku prilaže se kôd aplikacije.

Ostavio sam priličnu količinu bilježenja koja se može komentirati kako bi se razumio scenarij, ali ćemo je zajedno razbiti.

Primijetit ćete da, unatoč svim deklariranim funkcijama, kôd u početku čini samo nekoliko stvari:

kodi ('localhost', 9090).then (funkcija (veza) {

Skripta se pokušava povezati s OSMC JSON-RPC API. Nakon što uspije (i tek tada), nastavlja se s ostatkom datoteke.

Ako iz nekog razloga ovo ne pokrećete sa svog Raspberry Pi, promijenite localhost na svoju IP adresu. Također provjerite je li u postavkama usluge unutar OSMC -a (Postavke/Usluge) potvrdan okvir "Dopusti daljinsko upravljanje iz aplikacija na drugim sustavima" (vidi sliku)

Ostatak datoteke uglavnom su deklaracije funkcija koje ćemo kasnije koristiti: dvije funkcije koje se zapravo pokreću odavde su (retci 172/173)

scanAndSetCron (); listenForTag ();

U scanAndSetCron:

- pokrenuta je funkcija scanPictures. Unutar njega provjeravamo je li varijabla "mypicturedirectory", koja će držati put do naših slika, prazna. Ako jest, tražimo od OSMC -a da nam da sve izvore koje ima za sadržaj slike (unutar funkcije getPictureDirectory, redak 11):

var piclist = await connection. Files. GetSources ("slike");

OSMC nam zauzvrat daje niz: za svaku stavku provjeravamo uključuje li naziv izvora "Moje": ako je to slučaj, spremamo ga kao izvor slike (redak 16 i sljedeće). Ovdje ćete htjeti promijeniti niz iz "Moje" u ono što ste prethodno unijeli kao naziv izvora slika

if (piclist.sources .label.includes ("My")) {console.log (">>> Pronađen direktorij" + piclist.sources .file); mypicturedirectory = piclist.sources .datoteka; }

Sada kada imamo put do izvora (u biti korijenske mape do naših albuma), tražimo od OSMC -a da ga skenira i doda put za svaku mapu u niz koji se zove album_directories (ako već ne postoji). Budući da će se ova funkcija pokretati svakih X sekundi, provjeravamo da direktorij već nije na popisu prije dodavanja, s NFC ID -om postavljenim na prazan niz - na taj će način svaka nova mapa koju dodate svojim slikama biti automatski dodan - redak 46

for (var j = 0; j <directory.length; j ++) {if (direktoriji [j].filetype.includes ("direktorij")) {if (searchDirectory (direktoriji [j].datoteka, album_direktoriji)) {konzola. log (direktoriji [j].datoteka +"već postoje"); } else {console.log (">> Dodavanje direktorija" + direktoriji [j].datoteka); album_directories.push ({direktorij: direktoriji [j].datoteka, nfc: ""}); }}}

Na kraju spremamo niz album_directories u json datoteku na Pi, koju pokušavamo učitati svaki put kad se funkcija izvrši: to se događa na kraju funkcije scanAndSetCron gdje koristimo paket sličan cron-u kako bismo osigurali da naša funkcija radi svakih 15 sekundi.

JSON datoteku koju generiramo, album_directories.json, možemo otvoriti pomoću bilo koje bilježnice. Nakon što to učinite, bit će vam prikazan popis vaših foto albuma, svaki s praznim poljem "nfc":

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"directory": "/home/osmc/Pictures/Test/", "nfc": ""}]

U ovo polje sada morate zalijepiti ID oznake koju želite povezati s ovim albumom. Da biste dobili ovaj ID, samo idite do mape SW2827, pokrenite explorenfc-basic i skenirajte oznaku koju želite koristiti. U ispisu koji dobijete samo potražite vrijednost pored ISO14443A UID. Kopirajte ga u album koji želite konfigurirati. U mom slučaju, na primjer,

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

Spremite datoteku i njezin će se sadržaj učitati prilikom sljedećeg pokretanja aplikacije.

U funkciji listenForTag radimo upravo to: budući da izgleda da nema namjenskog porta čitateljske biblioteke za NodeJS, oslanjamo se na dječje procese za pokretanje binarnog programa za čitatelja:

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

Oslanjamo se na eventlistener za primanje rezultata iz ove izvedbe: unutar povratnog poziva za child.stdout.on ('data', function (data), raščlanjujemo izlaz ove naredbe pomoću funkcije analysisOutput: tražimo redak koji smo vidjeli ranije, počevši s "ISO14443A UID:", budući da je tu pohranjen ID oznake koju smo skenirali. Kad pronađemo tu liniju, skratimo je i spremamo ID u objekt (naziva se ID, kako izvornik).

Na kraju, pokušavamo uskladiti ovaj ID s ID -ovima koje smo unijeli u niz objekata album_directories (učitano putem datoteke album_directories.json). Ako se pronađe podudaranje, upućujemo OSMC da pokrene dijaprojekciju za tu određenu mapu:

var nfcid = analysisOutput (podaci); console.log ("nfcid je" + nfcid.id); var odgovarajućialbum = searchTag (nfcid.id, direktoriji_ albuma); if (odgovarajući album) {console.log ("Pronađen album" + JSON.stringify (odgovarajući album) + "za ovu oznaku"); var args = [{'put': odgovarajućialbum.direktorij}]; connection.run ('Player. Open', args); } listenForTag ();

Primijetili ste kako na kraju funkcije ponovno pokrećemo ListenForTag? To je jedino zaobilazno rješenje za koje sam naveo da aplikacija radi: explorenfc-basic će prema zadanim postavkama čekati oznaku, pročitati je, a zatim izaći. Aplikacija ima kontinuirani način rada koji možemo nazvati pomoću explorenfc -basic -k, ali u ovom načinu rada child_process nikada ne emitira sadržaj oznake jer nikad ne završava (drugim riječima child.stdout.on ('data') se nikad ne pokreće). Kako nisam pronašao drugi način korištenja ovog čitača, ovdje radimo u osnovi pokretanje explorenfc-basic u načinu rada s jednom oznakom, a kad se oznaka pročita, pokrećemo listenForTag i stoga ponovno pokrećemo explorenfc-basic.

Da se moram vratiti (a mislim da hoću), odabrao bih NFC čitač koji nudi više mogućnosti: na primjer, Adafruit (možda ste primijetili da mi se jako sviđaju) ima ovaj čitač https:// www.adafruit.com/product/789 koji je kompatibilan s libnfc, što vjerujem da znači da će čitatelju biti puno jasnije sučeliti se nego pozvati podređeni proces iz čvora i raščlaniti stdout!

Korak 7: Isprobajte

Da biste pokrenuli aplikaciju, samo idite do te mape i upišite "node index.js" (ili npm start budući da smo je ranije konfigurirali u package.json). U zapisnicima biste trebali vidjeti aplikaciju koja se povezuje s OSMC/Kodi i skenira po prvi put. Nakon nekoliko sekundi datoteka album_directories.json bit će stvorena unutar direktorija projekta; Zatim možete unijeti ID -ove oznaka NFC kao što je ranije objašnjeno i povezati ih s albumima koje želite.

Korak 8: Automatski pokrenite

Ukratko, stvorili smo aplikaciju Node koja (1) skenira vašu biblioteku slika KODI i pokušava pronaći mapu u koju pohranjujete slike s odmora, (2) osluškuje NCF oznake oslanjajući se na explorenfc-basic, a zatim (3) pokreće album povezan s ovim NFC ID -om.

Kako bismo cijeli proces pokrenuli u pozadini, koristit ćemo PM2, upravitelja procesa za čvor.

U naredbenom retku idite do mape svojih projekata (gdje se nalazi datoteka index.js) i upišite sljedeće retke:

sudo npm install pm2 -gpm2 start index.js

PM2 vašu aplikaciju sada nadzire i automatski će se ponovno pokrenuti! Da biste bili sigurni da je zaista pokrenut, upišite pm2 list i trebali biste ga vidjeti na popisu. Ako želite vidjeti zapisnike, samo upišite zapisnike pm2.

Preporučeni: