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, Juli
Anonim
Pokrenite prezentaciju fotografija sa prazničnih slika s dodirom magije!
Pokrenite prezentaciju fotografija sa prazničnih slika s dodirom magije!
Pokrenite prezentaciju fotografija sa prazničnih slika s dodirom magije!
Pokrenite prezentaciju fotografija sa prazničnih slika s dodirom magije!

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

Ideja je zatim snimiti figuricu ispred scena ili poznatih spomenika iz spomenute zemlje: Smatram da je mnogo smiješnije od slikanja samo sa spomenikom (postoji Google za to i mnogo je jeftiniji), ali ipak lakše nego imati da i ja budem na svakoj slici (ne fan, 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 izrada: budući da ove upute pišem upravo usred jednonedeljnog putovanja u Kopenhagen/Oslo/Stockholm/Helsinki, uvrstit ću nekoliko snimaka figurice koja je napravljena 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 koristit ć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

- da 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 listu vrijednosti/parova sa svakom mapom iz izvora slika na OSMC -u i odgovarajući NFC ID koji je konfigurirao korisnika.

Kada se oznaka pročita, ako je ID na popisu, Node skripta govori OSMC -u da pokrene slideshow za ovu posebnu mapu. Kako bi izgradila/konfigurirala tu listu, ista NodeJS skripta 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 koristiti gotovo sve što vam se sviđa: volim 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 verziji, uradi sam, u najmanjoj veličini u kojoj se nalaze, 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 koristiti nekoliko slojeva boje sve dok zaista pustite da se svaki osuši prije nego što nanesete sljedeći. Nakon što završim sa slikanjem, volim nekoliko minuta toplinskim pištoljem nanositi boju, 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, jer sam to uspio zabrljati jednu minutu prije odlaska: morao sam demontirati prethodnu igračku da umjesto nje koristim njenu glavu. Ne mogu reći da se to nikada ranije 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 media player za gledanje vaših slika. Neću ulaziti u detalje o ovom aspektu jer je prilično dobro dokumentiran (na raspolaganju vam je nekoliko instrukcija ako vam je potrebna pomoć). Samo preuzmite instalacijski program na računalo i slijedite upute. Kad sam završio, samo sam priključio tastaturu i miša i priključio HDMI na televizor te slijedio čarobnjaka za postavljanje kako bih postavio vremensku zonu itd.

Na kraju sam izvorima 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 uslovom da je vaš mikro SD dovoljno veliki.

Prilikom dodavanja izvora od vas će se tražiti da unesete naziv za njega: možete ostaviti zadano ili ga promijeniti, ali ga 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 projekciju slajdova za određenu mapu (kao bonus, možete ga koristiti i za reprodukciju videozapisa ili muzike)

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 povezivanje na Pi. Na Mac OS -u i Linuxu naredba je

ssh [email protected]

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

Da bi čitač mogao funkcionirati, mora biti omogućen SPI: u većini distribucija, kao što je Raspbian, 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 vaše vlastite sigurnosti pri korištenju. Umjesto toga, isključite Raspberry, izbacite mikro SD karticu i samo je montirajte na računalo: particija za pokretanje bi sada 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 spojiti na Raspberry koristeći FTP preko SSH -a (za to koristim CyberDuck) ili staviti datoteku na USB pogon i upotrijebiti Kodi -jev 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:

unzip 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č, ponovo ga pokrenuti, a zatim ući

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 kreirajte projekt

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

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

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

Zatim možete upisati

sudo apt install nodejs

da biste instalirali najnoviju dostupnu verziju nodejsa i npm -a.

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

Počnimo 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 zavisnosti.

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 evidentiranja koja se može komentirati da bi se razumio scenarij, ali je zajedno razložimo.

Primijetit ćete da, unatoč svim deklariranim funkcijama, kod 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 -a, promijenite localhost na svoju IP adresu. Također se pobrinite da u postavkama usluge unutar OSMC -a (Postavke/Usluge) potvrdite okvir "Dozvoli daljinsko upravljanje iz aplikacija na drugim sistemima" (vidi sliku)

Ostatak datoteke su uglavnom deklaracije funkcija koje ćemo kasnije koristiti: dvije funkcije koje se zapravo pokreću odavde su (linije 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 jeste, tražimo od OSMC -a da nam da sve izvore koje ima za sadržaj slike (unutar funkcije getPictureDirectory, red 11):

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

OSMC nam zauzvrat daje niz: za svaku stavku provjeravamo uključuje li naziv izvora "Moje": u tom slučaju pohranjujemo ga kao izvor slike (red 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 .file; }

Sada kada imamo put do izvora (u osnovi korijenski folder do naših albuma), tražimo od OSMC -a da ga skenira i doda putanju 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 način će svaka nova mapa koju dodate slikama biti automatski dodano - red 46

za (var j = 0; j <imenici.dužina; j ++) {if (direktoriji [j].filetype.includes ("direktorij")) {if (searchDirectory (direktoriji [j].datoteka, album_direktoriji)) {konzola. log (direktoriji [j].file +"već postoje"); } else {console.log (">> Dodavanje dir" + direktorija [j].file); 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 kada 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 datoteka koju generiramo, album_directories.json, može se otvoriti pomoću bilo koje bilježnice. Nakon što to učinite, bit će vam prikazana lista vaših foto albuma, svaki sa praznim poljem "nfc":

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"direktorij": "/home/osmc/Slike/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 izlazu 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": " "}, {" imenik ":"/home/osmc/Slike/Test/"," nfc ":" "}]

Sačuvajte datoteku i njen sadržaj će se učitati kada sljedeći put pokrenete aplikaciju.

U funkciji listenForTag činimo 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 čitač:

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

Oslanjamo se na eventlistener da primimo izlaz 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 sa "ISO14443A UID:", jer je tu pohranjen ID oznake koju smo skenirali. Kada pronađemo tu liniju, skratimo je i pohranjujemo ID u objekt (naziva se ID, kako original).

Konačno, pokušavamo upariti ovaj ID s ID -ovima koje smo unijeli u niz objekata album_directories (učitava se putem datoteke album_directories.json). Ako se pronađe podudaranje, upućujemo OSMC da pokrene prezentaciju za tu mapu:

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

Primijetili ste kako na kraju funkcije ponovo 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 se nikada 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 kada se oznaka pročita, pokrećemo ListenForTag i stoga ponovno pokrećemo explorenfc-basic.

Da se moram vratiti (a mislim da hoću), izabrao 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 sa libnfc, što vjerujem da znači da će čitatelju biti mnogo jasnije da se poveže nego pozivanje podređenog procesa iz čvora i raščlanjivanje stdout -a!

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 dnevnicima biste trebali vidjeti aplikaciju koja se povezuje s OSMC/Kodi i skenira po prvi put. Nakon nekoliko sekundi datoteka album_directories.json bit će kreirana unutar direktorija projekta; Zatim možete unijeti ID -ove NFC oznaka 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 KODI biblioteku slika i pokušava pronaći mapu u koju pohranjujete slike s odmora, (2) sluša NCF oznake oslanjajući se na explorenfc-basic, a zatim (3) pokreće album povezan sa ovim NFC ID -om.

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

U komandnoj liniji idite do fascikle sa projektima (u kojoj se nalazi datoteka index.js) i otkucajte sledeće redove:

sudo npm install pm2 -gpm2 start index.js

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

Preporučuje se: