Sisukord:

Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!: 9 sammu (piltidega)
Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!: 9 sammu (piltidega)

Video: Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!: 9 sammu (piltidega)

Video: Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!: 9 sammu (piltidega)
Video: Медведь умолял человека о помощи. Но охотник поступил ужасно! 2024, November
Anonim
Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!
Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!
Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!
Käivitage oma pühadepiltide slaidiseanss maagilise puudutusega!

Aastate jooksul on mul kujunenud harjumus reisile kaasa võtta väike kujuke: ostan sageli väikese tühja artoy (nagu pildil) ja joonistan selle oma riigi lipu ja teemaga kokku.” m külastan (antud juhul Sitsiilia).

Idee on siis pildistada kujukest stseenide või mainitud riigi kuulsate mälestusmärkide ees: minu arvates on see palju naljakam kui pildistada ainult monumenti ennast (selle jaoks on Google ja see on palju odavam), kuid siiski lihtsam kui ise igal pildil olema (ausalt öeldes mitte fänn)

Kuna alati on lõbus koguda paar päeva pärast piltide vaatamist tagasi inimesi, kellega puhkusel käisite, arvasin, et oleks tore, kui iga kujuke saaks kuidagi automaatselt käivitada nende reiside piltide slaidiseansi,.

Selles juhendis selgitatakse, kuidas ma seda tegin, kasutades NFC -d, vaarika pi, nodejs ja osmc

1. samm: ülevaade lahendusest

Ülevaade lahendusest
Ülevaade lahendusest
Ülevaade lahendusest
Ülevaade lahendusest

Kuna kogu seadistus sisaldab mõningaid asju, on siin üldine ülevaade sellest, mis aitab teil mõista kõike järgmist.

Riistvara

- kujuke on omatehtud: kuna kirjutan neid juhendeid keset nädalast reisi Kopenhaagenis/Oslos/Stockholmis/Helsingis, lisan mõned pildid selle reisi jaoks valmivast kujukest

- iga kujukese all on NFC -kiip: kasutan ümaraid kleebiseid, mis mahuvad iga kujukese alla, kuid võite kasutada mis tahes muid vormitegureid - veenduge, et kasutatav kiip ühilduks teie lugejaga

- piltide kuvamiseks kasutan vaarika pi, millele on installitud OSMC: see on minu valitud telesaadete ja filmide meediapleier, nii et see on juba minu teleriga ühendatud

- et vaarika pi saaks lugeda NFC -silte, lisasin NFC -lugeja - kasutasin NXP -st pärit Explore -NFC -d, mis on saadaval paljudel veebisaitidel: see ühendatakse Pi -ga ja toimib kilbina

Tarkvara

Raspberry Pi -l ootab NodeJS -i skript NFC -märgendi lugemist: kui see on tehtud, kontrollib skript oma ID väärtuste/paaride loendi suhtes OSMC piltide allika iga kausta ja vastava NFC -ID järgi kasutaja.

Kui silt loetakse, kui ID on loendis, käsib sõlme skript OSMC -l selle konkreetse kausta slaidiseansi käivitada. Selle loendi koostamiseks/konfigureerimiseks käivitab sama NodeJS -skript iga 5 minuti järel skannimisfunktsiooni: see skannib iga kataloogi OSMC allika "Pildid" all (kasutades Kodi pakutavat JSON-RPC API-d) ja lisab selle loendisse, mis seejärel kettale salvestatakse. Seda tekstifaili otse redigeerides saab kasutaja seejärel lisada igale albumile vastava NFC -ID.

2. samm: kujukese loomine

Kujukese loomine
Kujukese loomine
Kujukese loomine
Kujukese loomine
Kujukese loomine
Kujukese loomine
Kujukese loomine
Kujukese loomine

Saate oma kujukese jaoks kasutada peaaegu kõike, mis teile meeldib: mulle meeldib neid vinüülkunsti mänguasju kasutada, sest neid on suhteliselt lihtne joonistada isegi minusugusele, kellele ei meeldi joonistada, ja seda on üsna lihtne kaasas kanda. Tellin need tühja DIY -versioonina, väikseimas suuruses, nagu nad on, ja joonistan neile Posca markerite abil. Siin näete seda, mille olen selle reisi jaoks teinud, koos nelja külastatud riigi lippudega - need juhtusid olema piisavalt sarnased, et saaksin neid kõrvuti kombineerida. Võite kasutada mitut värvikihti, kui lasete enne järgmise värvimist tõesti kuivada. Kui ma olen maalimise lõpetanud, meeldib mulle mõne minuti jooksul kasutada värvi peal kuumutuspüstolit, kuna olen lugenud, et Posca värvikomplekti aitab tegelikult kuumus.

Viimasel pildil näete Svenit - panen neile alati nimesid - pärast üsna pikka hommikut Oslos puhkust. Tal ei ole originaalse mänguasja pead, kuna mul õnnestus see üks minut enne lahkumist sassi ajada: pidin eelmise mänguasja lahti võtma, et selle pead kasutada. Ma ei saa öelda, et seda pole kunagi varem juhtunud…

Samm: installige OSMC

Installige OSMC
Installige OSMC

Esimene asi, mida ma tegin, oli OSMC installimine Raspberry Pi mikro -SD -kaardile: meie seadistuses toimib see teie piltide vaatamiseks meediumipleierina. Ma ei süvene selles osas palju üksikasju, kuna see on üsna hästi dokumenteeritud (kui vajate abi, on saadaval mõned juhised). Laadige lihtsalt installiprogramm oma arvutisse ja järgige juhiseid. Kui olin valmis, ühendasin lihtsalt klaviatuuri ja hiire ning ühendasin HDMI teleriga ja järgisin seadistusviisardit ajavööndi seadistamiseks jne.

Lõpuks lisasin allikatesse kataloogi, kuhu oma pilte salvestan: minu puhul salvestatakse need samas võrgus fikseeritud IP -ga NAS -i, kuid saate neid salvestada ka USB -draivile või kodukataloogi, eeldusel, et teie micro SD on piisavalt suur.

Allika lisamisel palutakse teil sellele nimi sisestada: võite vaikeseade jätta või seda muuta, kuid kirjutage see kindlasti üles, sest meil on seda hiljem vaja. Minu puhul nimetasin seda "MyPictures"

Nüüd peaksite nägema lisatud kataloogi sisu ja sirvima oma pilte: minu puhul on mul iga reisi jaoks alamkataloog.

Õnnitleme! Nüüd on teil oma piltidega meediumikeskus ja saate käivitada konkreetse kausta slaidiseansi (boonusena saate seda kasutada ka oma videote või muusika esitamiseks)

Samm: seadistage lugeja

Ülejäänud juhiste jaoks ühendame Pi -ga käsurea kaudu SSH kaudu. Selleks ühendage Pi lihtsalt võrguga Etherneti kaabli abil ja kasutage Pi -ga ühenduse loomiseks terminali või spetsiaalset sotvara. Mac OS -is ja Linuxis on käsk

ssh [email protected]

Teil palutakse sisestada parool, see on uuesti osmc

Et lugeja saaks funktsioneerida, peab SPI olema lubatud: enamikus distributsioonides, nagu Raspbian, saab seda teha, kasutades konfiguratsioonitööriista raspi-config, mis võimaldab teil mõningaid konfiguratsiooniväärtusi muuta.

OSMC ei sisalda aga raspi-config teie turvalisuse tagamiseks selle kasutamisel. Selle asemel lülitage Raspberry välja, eemaldage mikro -SD -kaart ja ühendage see lihtsalt arvutiga: nüüd peaks olema nähtav "boot" sektsioon. Seal näete helitugevuse juurest faili nimega "config.txt" - lihtsalt avage see ja lisage see rida lõpus:

"dtparam = spi = on"

Nüüd saate faili salvestada, taaskäivitada ja SPI peaks olema lubatud.

Pärast seda peate alla laadima lisatud ZIP -faili ja pakkima selle vaarikale lahti - soovitan luua kausta Projects ja seal lahti pakkida. Selleks saate ühenduse luua Raspberryga, kasutades FTP -d SSH kaudu (ma kasutan selleks CyberDucki) või panna fail USB -draivi ja kopeerida see Kodi failihalduri abil Raspberry Pi -le.

Mõlemal juhul, kui olete ZIP -faili Pi -sse kopeerinud, saate seejärel navigeerida kausta, kuhu selle kopeerisite, ja selle lahti pakkida, liikuda saadud kausta ja installida pakett:

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

Kui kõik läheb hästi, peaksite lugeja ühendama, taaskäivitama ja seejärel sisenema

explorenfc-basic

Kui lähenete lugejale NFC -kiibile, peaks see nüüd kuvama hunniku teavet kiibilt (muu hulgas ka selle ID)

Samm: installige sõlm ja looge projekt

Järgmisena installime oma rakenduse kirjutamiseks vaarikale NodeJS.

Tahame installida nodejs, kuid vaikehoidla versioon on tõesti vana, seega peate enne seda tegema esimese sammu: tippige käsurealiidesesse

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

Seejärel saate tippida

sudo apt install nodejs

installida uusim saadaolev nodejs ja npm versioon.

KODI juhtimiseks nodejs-i seast kasutame npm paketti nimega kodi-ws.

Alustuseks loome uue projekti: lihtsalt tippige käsk

npm init

Teilt küsitakse mitmeid küsimusi: enamiku puhul saate vaikimisi jätta, valige lihtsalt oma rakendusele nimi ja sisestage lõpus oma nimi. Kui küsitakse lähtepunkti, jätke lihtsalt indeks.js

See loob faili package.json, mis võtab kokku teie paketi omadused, näiteks selle sõltuvused.

Nüüd saate siseneda

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

Kui avate pakendi.json pärast seda, märkate, et kõik need paketid lisati sõltuvustesse.

6. samm: seletatud kood

Kood, selgitatud
Kood, selgitatud

Sellele sammule on lisatud rakenduse kood.

Olen jätnud üsna palju logimist, mida ei saa kommenteerida, et skripti mõista, kuid lagundage see koos.

Märkate, et vaatamata kõigile deklareeritud funktsioonidele teeb kood esialgu vaid mõnda asja:

kodi ('localhost', 9090). then (funktsioon (ühendus) {

Skript proovib luua ühenduse OSMC JSON-RPC API-ga. Kui see õnnestub (ja alles siis), jätkub see ülejäänud failiga.

Kui te mingil põhjusel seda Raspberry Pi -st ei käivita, muutke localhost oma IP -aadressiks. Veenduge ka, et OSMC teenuse seadetes (seaded/teenused) oleks märgitud ruut "Luba kaugjuhtimine teiste süsteemide rakendustest" (vt pilti)

Ülejäänud fail on enamasti funktsioonide deklaratsioonid, mida me hiljem kasutame: kaks funktsiooni, mis siit tegelikult käivitatakse, on (read 172/173)

scanAndSetCron (); listenForTag ();

ScanAndSetCronis:

- käivitatakse funktsioon scanPictures. Selle sees kontrollime, kas muutuja "mypicturedirectory", mis hoiab meie piltide teed, on tühi. Kui see on nii, palume OSMC -l anda meile kõik pildisisu jaoks vajalikud allikad (funktsiooni getPictureDirectory rida 11):

var piclist = oota ühendust. Files. GetSources ("pildid");

OSMC annab meile vastutasuks massiivi: iga üksuse puhul kontrollime, kas allika nimi sisaldab "Minu": kui see on nii, siis salvestame selle oma pildiallikaks (rida 16 ja järgmised). Siin soovite muuta stringi "Minu" asemel mis tahes, mille olete varem oma pildiallika nimeks sisestanud

if (piclist.sources .label.includes ("Minu")) {console.log (">>> Leidsin kataloogi" + piclist.sources .fail); mypicturedirectory = piclist.sources .file; }

Nüüd, kui meil on tee allika juurde (sisuliselt meie albumite juurkaust), palume OSMC -l see skannida ja lisada iga kausta tee massiivi nimega album_directories (kui see pole juba olemas). Kuna seda funktsiooni käivitatakse iga X sekundi tagant, kontrollime enne selle lisamist, et kataloog ei oleks juba loendis ja NFC ID oleks seatud tühjale stringile - nii saab iga uus piltidele lisatav kaust automaatselt lisatud - rida 46

jaoks (var j = 0; j <kataloogid.pikkus; j ++) {if (kataloogid [j].filetüüp.sisaldab ("kataloog")) {if (searchDirectory (kataloogid [j].fail, albumi_kataloogid)) {konsool. log (kataloogid [j].fail +"juba olemas"); } else {console.log (">> Juhi lisamine" + kataloogid [j].fail); album_kataloogid.push ({kataloog: kataloogid [j].fail, nfc: ""}); }}}

Lõppkokkuvõttes salvestame massiivi album_directories Pi-s json-faili, mida püüame laadida iga kord, kui funktsiooni täidetakse: see juhtub funktsiooni scanAndSetCron lõpus, kus kasutame funktsiooni käivitamiseks cron-tüüpi paketti iga 15 sekundi järel.

Meie loodud JSON -faili album_directories.json saab avada mis tahes märkmikurakenduse abil. Kui olete seda teinud, kuvatakse teile oma fotoalbumite loend, millest igaühel on tühi väli "nfc":

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

Sellele väljale peate nüüd kleepima selle märgendi ID, mida soovite selle albumiga seostada. Selle ID saamiseks liikuge lihtsalt kausta SW2827, käivitage explorenfc-basic ja skaneerige silt, mida soovite kasutada. Otsige saadud väljundist lihtsalt väärtust ISO14443A UID kõrval. Kopeerige see albumisse, mida soovite konfigureerida. Minu puhul näiteks

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

Salvestage fail ja selle sisu laaditakse rakenduse järgmisel käivitamisel.

Funktsioonis listenForTag teeme just seda: kuna NodeJS -i lugejaraamatukogu jaoks ei tundu olevat spetsiaalset porti, loodame lugeja jaoks binaarsüsteemi käivitamiseks lapsprotsessidele:

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

Selle täitmise väljundi saamiseks toetume sündmuste kuulajale: call.stdout.on ('andmed', funktsioon (andmed) tagasihelistamisel parsime selle käsu väljundi funktsiooni analyOutput abil: otsime rida, mida nägime varem, alustades "ISO14443A UID:", kuna sinna salvestatakse skannitud märgendi ID. Kui oleme selle rea leidnud, kärpime selle alla ja salvestame selle objektile (nimega ID originaal).

Lõpuks proovime seda ID -d sobitada ID -dega, mille sisestasime objektide massiivi album_directories (laaditud faili album_directories.json kaudu). Sobivuse leidmisel anname OSMC -le käsu käivitada selle konkreetse kausta slaidiseanss:

var nfcid = analüüsi väljund (andmed); console.log ("nfcid on" + nfcid.id); varrespondingalbum = searchTag (nfcid.id, album_kataloogid); if (respondingalbum) {console.log ("Leitud album" + JSON.stringify (respondingalbum) + "selle märgendi jaoks"); var args = [{'tee': korrespondengalbum.kataloog}]; connection.run ('Player. Open', args); } listenForTag ();

Märkate, kuidas funktsiooni lõpus käivitame kuulamise uuesti ForFagi? See on ainus lahendus, mille olen rakenduse toimimiseks leidnud: explorenfc-basic ootab vaikimisi märgendit, loeb seda ja siis väljub. Rakendusel on küll pidev režiim, millele saame helistada, kasutades explorenfc -basic -k, kuid selles režiimis ei väljasta laps_protsess kunagi sildi sisu, kuna see ei lõpe kunagi (teisisõnu laps.stdout.on ('andmed') ei käivitata kunagi). Kuna ma pole selle lugeja kasutamiseks muud võimalust leidnud, käivitame siin põhimõtteliselt ühe märgendi režiimis explorenfc-basic ja kui sildi loetakse, käivitame listenForTag ja seetõttu taaskäivitame explorenfc-basic.

Kui peaksin tagasi minema (ja arvan, et lähen), valiksin NFC -lugeja, mis pakub rohkem võimalusi: näiteks Adafruitil (olete ehk märganud, et mulle need väga meeldivad) on see lugeja https:// www.adafruit.com/product/789, mis ühildub libnfc -ga, mis minu arvates tähendab, et lugeja on liidesega palju puhtam kui helistada sõlme seest alamprotsessile ja parsida stdout!

Samm: proovige seda

Rakenduse käivitamiseks liikuge lihtsalt sellesse kausta ja tippige "node index.js" (või käivitage npm, kuna oleme selle varem seadistanud pakendis.json). Logides peaksite nägema rakendust, mis ühendab OSMC/Kodi ja skannib esimest korda. Mõne sekundi pärast luuakse projektikataloogi fail album_directories.json; Seejärel saate sisestada NFC -märgendi ID -d, nagu varem selgitatud, ja seostada need soovitud albumitega.

8. samm: käivitage automaatselt

Kokkuvõtteks oleme loonud rakenduse Node, mis (1) otsib teie KODI pilditeeki ja proovib leida kausta, kuhu oma puhkusepildid salvestate, (2) kuulab NCF-i silte, tuginedes explorenfc-basic ja seejärel (3) käivitab selle NFC ID -ga seotud albumi.

Kogu selle protsessi taustal töötamiseks kasutame sõlme protsessihaldurit PM2.

Liikuge käsureal oma projektide kausta (kus asub fail index.js) ja tippige järgmised read:

sudo npm install pm2 -gpm2 start index.js

Teie rakendust jälgib nüüd PM2 ja see taaskäivitatakse automaatselt! Veendumaks, et see on tegelikult käivitatud, tippige pm2 list ja peaksite seda loendis nägema. Kui soovite logisid näha, sisestage lihtsalt pm2 logid.

Soovitan: