Sisällysluettelo:

Käynnistä lomakuviesi diaesitys ripauksella taikuutta!: 9 vaihetta (kuvilla)
Käynnistä lomakuviesi diaesitys ripauksella taikuutta!: 9 vaihetta (kuvilla)

Video: Käynnistä lomakuviesi diaesitys ripauksella taikuutta!: 9 vaihetta (kuvilla)

Video: Käynnistä lomakuviesi diaesitys ripauksella taikuutta!: 9 vaihetta (kuvilla)
Video: Käynnistä sovellus järjestelmänvalvojana suoraan haun avulla 2024, Heinäkuu
Anonim
Käynnistä lomakuviesi diaesitys ripauksella taikuutta!
Käynnistä lomakuviesi diaesitys ripauksella taikuutta!
Käynnistä lomakuviesi diaesitys ripauksella taikuutta!
Käynnistä lomakuviesi diaesitys ripauksella taikuutta!

Vuosien mittaan minulla on ollut tapana ottaa pieni hahmo mukanani matkoilla: ostan usein pienen, tyhjän artoyn (kuten kuvassa) ja maalaan sen vastaamaan maan lippua ja teemaa '' m vierailen (tässä tapauksessa Sisilia).

Ajatuksena on ottaa kuvia hahmosta kohtausten tai kuuluisien muistomerkkien edessä mainitusta maasta: Minusta on paljon hauskempaa kuin ottaa kuvia, joissa on vain patsas (siellä on Google ja se on paljon halvempaa), mutta silti helpompaa kuin ottaa olla jokaisessa kuvassa itse (ei fani, ollakseni rehellinen)

Koska on aina hauskaa kerätä ihmiset, joille lähdit lomalle muutaman päivän kuluttua siitä, kun palasit katsomaan kuvia, ajattelin, että olisi hienoa, jos jokainen hahmo voisi jotenkin automaattisesti käynnistää diaesityksen kuvista matkalta, jolle he olivat tehneet.

Tämä opettavainen selittää, miten tein sen käyttämällä NFC: tä, vadelmapiä, nodejsia ja osmc: tä

Vaihe 1: Katsaus ratkaisuun

Katsaus ratkaisuun
Katsaus ratkaisuun
Katsaus ratkaisuun
Katsaus ratkaisuun

Koska koko kokoonpano sisältää muutamia asioita, tässä on yleiskatsaus asiaan liittyvistä asioista, jotta voit ymmärtää kaiken seuraavan:

Laitteisto

- hahmo on kotitekoinen: koska kirjoitan tämän ohjeen keskellä viikon pituista matkaa Kööpenhaminassa/Oslossa/Tukholmassa/Helsingissä, sisällytän muutamia otoksia tähän matkaan tehdystä hahmosta

- jokaisen hahmon alla on NFC -siru: Käytän pyöreitä tarroja, jotka mahtuu jokaisen hahmon alle, mutta voit käyttää mitä tahansa muuta muotoa - varmista, että käyttämäsi siru on yhteensopiva lukijan kanssa

- Kuvien näyttämiseen käytän vadelmapiä, johon on asennettu OSMC: se on paras mediasoitin TV -ohjelmille ja elokuville, joten se on jo kytketty televisioon

- Jotta vadelmapi lukisi NFC -tunnisteita, lisäsin NFC -lukijan - jota käytin, on NXP: n Explore -NFC, joka on saatavilla monilla verkkosivustoilla: se kytketään Pi: hen ja toimii suojana

Ohjelmisto

Raspberry Pi -laitteessa NodeJS -skripti odottaa NFC -tunnisteen lukemista: kun tämä on tehty, komentosarja tarkistaa tunnuksensa arvo-/pariluettelosta jokaisen OSMC: n kuvalähteen kansion ja vastaavan NFC -tunnuksen kanssa käyttäjä.

Kun tunniste luetaan, jos tunnus on luettelossa, solmukomentosarja kehottaa OSMC: tä käynnistämään diaesityksen tälle kansiolle. Luettelon luomiseksi/määrittämiseksi sama NodeJS -komentosarja käynnistää skannaustoiminnon 5 minuutin välein: it etsii jokaisen hakemiston OSMC: n "Kuvat" -lähteen sisällä (käyttäen Kodi: n tarjoamaa JSON-RPC-sovellusliittymää) ja lisää sen luetteloon, joka tallennetaan sitten levylle. Muokkaamalla tätä tekstitiedostoa suoraan käyttäjä voi lisätä vastaavan NFC -tunnuksen jokaiselle albumille.

Vaihe 2: Hahmon luominen

Hahmon luominen
Hahmon luominen
Hahmon luominen
Hahmon luominen
Hahmon luominen
Hahmon luominen
Hahmon luominen
Hahmon luominen

Voit käyttää hahmoosi melkein mitä tahansa: pidän näiden vinyylitaidelelujen käytöstä, koska niitä on suhteellisen helppo piirtää jopa kaltaiselleni, joka ei pidä piirtämisestä, ja melko helppo kuljettaa mukana. Tilaan ne tyhjänä, itse tehtyinä versioina, pienimmässä koossa, jota he tulevat, ja piirrän niihin Posca -merkkejä käyttäen. Täältä näet matkan, jonka olen tehnyt tälle matkalle, neljän käymämme maan lippujen kanssa - ne sattuivat olemaan tarpeeksi samanlaisia, jotta voisin yhdistää ne vierekkäin. Voit käyttää useita maalikerroksia, kunhan annat jokaisen kuivua ennen seuraavan maalaamista. Kun olen maalannut, haluan käyttää maalipistoolia muutaman minuutin ajan, koska olen lukenut, että Posca -maalisarjaa auttaa lämpö.

Viimeisessä kuvassa näet Svenin - annan heille aina nimet - tauon Oslossa melko pitkän aamun jälkeen. Hänellä ei ole alkuperäisen lelun päätä, koska onnistuin sotkemaan sen minuutti ennen lähtöä: minun oli purettava edellinen lelu käyttääkseni sen päätä. En voi sanoa, ettei sitä ole koskaan tapahtunut…

Vaihe 3: Asenna OSMC

Asenna OSMC
Asenna OSMC

Ensimmäinen asia, jonka tein, oli asentaa OSMC Micro SD -kortille Raspberry Pi -laitteelle: kokoonpanossamme se toimii mediasoittimena kuvien katseluun. En mene tähän yksityiskohtiin paljon yksityiskohtia, koska se on melko hyvin dokumentoitu (jos tarvitset apua, saatavilla on muutamia Instructable -ohjelmia). Lataa vain asennusohjelma tietokoneellesi ja noudata ohjeita. Kun olin valmis, liitin vain näppäimistön ja hiiren ja HDMI -liitännän televisioon ja seurasin ohjattua asennustoimintoa aikavyöhykkeen määrittämiseksi.

Lopuksi lisäsin kuvien tallentamisen hakemistoon lähteisiin: minun tapauksessani ne on tallennettu NAS -verkkoon, jolla on kiinteä IP -osoite samassa verkossa, mutta voit myös tallentaa ne USB -asemaan tai itse kotikansioon, edellyttäen, että micro SD on riittävän suuri.

Kun lisäät lähdettä, sinua pyydetään antamaan sille nimi: voit jättää oletusarvon tai muuttaa sitä, mutta muista kirjoittaa se muistiin, koska tarvitsemme sitä myöhemmin. Minun tapauksessani kutsuin sitä "MyPictures"

Sinun pitäisi nyt nähdä lisäämäsi hakemiston sisältö ja selata kuviasi: minun tapauksessani minulla on alihakemisto jokaiselle matkalle.

Onnittelut, sinulla on nyt mediakeskus, jossa on kuviasi, ja voit käynnistää diaesityksen tietystä kansiosta (bonuksena voit myös käyttää sitä videoidesi tai musiikkisi toistamiseen)

Vaihe 4: Määritä lukija

Muiden ohjeiden osalta muodostamme yhteyden Pi: hen SSH: n komentorivillä. Voit tehdä tämän yhdistämällä Pi verkkoon Ethernet -kaapelilla ja käyttämällä päätelaitetta tai erillistä sotwarea muodostaaksesi yhteyden Pi: hen. Mac OS- ja Linux -käyttöjärjestelmissä komento on

ssh [email protected]

Sinua pyydetään antamaan salasana, se on osmc uudelleen

Jotta lukija voi toimia, SPI on otettava käyttöön: useimmissa jakeluissa, kuten Raspbianissa, tämä voidaan tehdä käyttämällä raspi-config-määritystyökalua, jonka avulla voit muuttaa joitain määritysarvoja.

OSMC ei kuitenkaan sisällä raspi-configia oman turvallisuutesi vuoksi sitä käytettäessä. Sen sijaan sammuta Raspberry, poista micro SD -kortti ja kiinnitä se tietokoneeseen: "käynnistys" -osion pitäisi nyt näkyä. Siellä, aseman juuressa, näet tiedoston nimeltä "config.txt" - avaa se ja lisää tämä rivi loppuun:

"dtparam = spi = päällä"

Voit nyt tallentaa tiedoston, käynnistää uudelleen ja SPI: n pitäisi olla käytössä.

Sen jälkeen sinun on ladattava liitteenä oleva ZIP -tiedosto ja purettava se vadelmasta - suosittelen luomaan Projects -kansion ja purkamaan sen pakkauksen siellä. Tätä varten voit joko muodostaa yhteyden Raspberryyn käyttämällä FTP: tä SSH: n kautta (käytän sitä CyberDuckilla) tai laittaa tiedoston USB -asemaan ja kopioida se Kodin tiedostonhallinnan avulla Raspberry Pi: hen.

Joka tapauksessa, kun olet kopioinut zip -tiedoston Pi: hen, voit navigoida kansioon, johon olet kopioinut sen, ja purkaa sen, purkaa sen, siirtyä tuloksena olevaan kansioon ja asentaa paketin:

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

Jos kaikki menee hyvin, sinun pitäisi pystyä kytkemään lukija, käynnistä se uudelleen ja astu sitten sisään

explorenfc-basic

Jos lähestyt NFC -sirua lukijaan, sen pitäisi nyt näyttää joukko sirun tietoja (muun muassa sen tunnus)

Vaihe 5: Asenna solmu ja luo projekti

Seuraavaksi asennamme NodeJS: n vadelmalle kirjoittaaksemme sovelluksemme.

Haluamme asentaa nodejs: n, mutta oletussäilön versio on todella vanha, joten sinun on suoritettava ensimmäinen vaihe ennen: kirjoita komentorivikäyttöliittymään

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

Voit sitten kirjoittaa

sudo apt asentaa nodejs

asentaaksesi uusimman saatavilla olevan nodejs- ja npm -version.

KODI: n hallitsemiseksi nodejs: n sisältä aiomme käyttää npm-pakettia nimeltä kodi-ws.

Aloitetaan luomalla uusi projekti: kirjoita komento

npm init

Sinulta kysytään useita kysymyksiä: useimmissa tapauksissa voit jättää oletusasetuksen, valitse sovelluksellesi nimi ja kirjoita oma nimi loppuun. Kun sinulta kysytään aloituspistettä, jätä vain index.js

Tämä luo paketin.json -tiedoston, joka tiivistää paketin ominaisuudet, kuten sen riippuvuudet.

Voit nyt syöttää

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

Jos avaat package.json sen jälkeen, huomaat, että kaikki nämä paketit lisättiin riippuvuuksiin.

Vaihe 6: Koodi, selitetty

Koodi, selitetty
Koodi, selitetty

Tähän vaiheeseen on liitetty sovelluksen koodi.

Olen jättänyt kohtuullisen määrän kirjautumista, jota ei voi kommentoida käsikirjoituksen ymmärtämiseksi, mutta jaamme sen yhdessä.

Huomaat, että kaikista ilmoitetuista toiminnoista huolimatta koodi tekee aluksi vain muutamia asioita:

kodi ('localhost', 9090). then (toiminto (yhteys) {

Skripti yrittää muodostaa yhteyden OSMC JSON-RPC -sovellusliittymään. Kun se onnistuu (ja vasta sitten), se jatkuu muun tiedoston kanssa.

Jos jostain syystä et käytä tätä Raspberry Pi -laitteestasi, vaihda localhost IP -osoitteeseesi. Varmista myös, että OSMC: n (Asetukset/Palvelut) -palvelun asetuksissa valintaruutu "Salli kaukosäädin muiden järjestelmien sovelluksista" (katso kuva)

Loput tiedostosta ovat lähinnä toimintojen ilmoituksia, joita käytämme myöhemmin: kaksi toimintoa, jotka todella käynnistetään täältä, ovat (rivit 172/173)

scanAndSetCron (); listenForTag ();

ScanAndSetCronissa:

- scanPictures -toiminto käynnistyy. Sen sisällä tarkistamme, onko muuttuja "mypicturedirectory", joka pitää polkumme kuviin, tyhjä. Jos on, pyydämme OSMC: tä antamaan meille kaikki kuvasisällön lähteet (getPictureDirectory -funktion rivillä 11):

var piclist = odota yhteyttä. Files. GetSources ("kuvat");

OSMC antaa meille taulukon vastineeksi: tarkistamme jokaisen kohteen kohdalla, onko lähteen nimessä "My": jos näin on, tallennamme sen kuvalähteeksemme (rivi 16 ja sitä seuraavat). Tässä haluat vaihtaa merkkijonon "Oma" -merkkijonosta mihin tahansa, jonka annoit aiemmin kuvalähteesi nimeksi

if (piclist.sources .label.includes ("Oma")) {console.log (">>> Löytyi hakemisto" + piclist.sources .tiedosto); mypicturedirectory = piclist.sources .file; }

Nyt kun meillä on polku lähteeseen (lähinnä juurikansio albumeihimme), pyydämme OSMC: tä skannaamaan sen ja lisäämään jokaisen kansion polun albumin_hakemistoon (jos se ei ole jo olemassa). Koska tämä toiminto suoritetaan X sekunnin välein, tarkistamme, että hakemisto ei ole jo luettelossa ennen sen lisäämistä ja NFC -tunnus on asetettu tyhjäksi merkkijonoksi - näin jokainen uusi kansio, jonka lisäät kuviin, tulee automaattisesti lisätty - rivi 46

for (var j = 0; j <hakemistot.pituus; j ++) {if (hakemistot [j].filetype.includes ("hakemisto")) {if (searchDirectory (hakemistot [j].tiedosto, albumin_hakemistot)) {konsoli. log (hakemistot [j].file +"jo olemassa"); } else {console.log (">> dir lisääminen" + hakemistot [j].tiedosto); album_hakemistot.push ({hakemisto: hakemistot [j].tiedosto, nfc: ""}); }}}

Lopuksi tallennamme album_directories-matriisin json-tiedostoon Pi: ssä, jota yritämme ladata aina, kun toiminto suoritetaan: tämä tapahtuu scanAndSetCron-funktion lopussa, jossa käytämme cron-kaltaista pakettia toiminnon suorittamiseksi 15 sekunnin välein.

Luomamme JSON -tiedosto, album_directories.json, voidaan avata millä tahansa muistilehtiö -sovelluksella. Kun olet tehnyt niin, sinulle näytetään luettelo valokuva -albumeistasi, joista jokaisessa on tyhjä "nfc" -kenttä:

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

Tähän kenttään sinun on nyt liitettävä tunniste, jonka haluat liittää tähän albumiin. Saadaksesi tämän tunnuksen, siirry SW2827-kansioon, suorita explorenfc-basic ja skannaa haluamasi tagi. Etsi saamastasi tuotoksesta ISO14443A UID: n vieressä oleva arvo. Kopioi se albumiin, jonka haluat määrittää. Minun tapauksessani esim.

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

Tallenna tiedosto ja sen sisältö ladataan, kun käynnistät sovelluksen seuraavan kerran.

ListenForTag -toiminnossa teemme juuri sen: koska NodeJS: n lukijakirjastoon ei näytä olevan omaa porttia, luotamme lapsiprosesseihin käynnistääksesi binäärin lukijalle:

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

Luotamme tapahtumakuuntelijaan, joka vastaanottaa tämän suorituksen tuloksen: child.stdout.on ('data', function (data) -soittopyynnön sisällä jäsennämme tämän komennon tuloksen käyttämällä analysointitoimintoa: etsimme aiemmin näkemämme rivi, joka alkaa "ISO14443A UID:", koska sinne tallennetaan skannatun tunnisteen tunnus. Kun löydämme kyseisen rivin, leikataan se alas ja tallennetaan tunnus objektiin (nimeltään ID, miten alkuperäinen).

Lopuksi yritämme yhdistää tämän tunnuksen album_directories -objektiryhmään syötettyihin tunnuksiin (ladattu albumin_directories.json tiedoston kautta). Jos osuma löytyy, kehotamme OSMC: tä käynnistämään diaesityksen kyseistä kansiota varten:

var nfcid = analysoi lähtö (data); console.log ("nfcid on" + nfcid.id); varrespondingalbum = searchTag (nfcid.id, albumin_hakemistot); if (respondingalbum) {console.log ("Löytynyt albumi" + JSON.stringify (respondingalbum) + "tälle tunnisteelle"); var args = [{'polku': kirjeenvaihtopiste.hakemisto}]; connection.run ('Player. Open', args); } listenForTag ();

Huomaatko, kuinka toiminnon lopussa käynnistämme listenForTagin uudelleen? Tämä on ainoa ratkaisu, jonka olen löytänyt sovelluksen toimimiseksi: explorenfc-basic odottaa oletuksena tagia, lukee sen ja poistuu. Sovelluksella on jatkuva tila, jonka voimme kutsua käyttämällä explorenfc -basic -k, mutta tässä tilassa lapsiprosessi ei koskaan lähetä tunnisteen sisältöä, koska se ei koskaan lopu (toisin sanoen child.stdout.on ('data') ei koskaan laukaista). Koska en ole löytänyt muuta tapaa käyttää tätä lukijaa, teemme täällä pohjimmiltaan explorenfc-basicin käynnistämisen yhden tunnisteen tilassa, ja kun tunniste luetaan, käynnistämme listenForTag ja käynnistämme sen vuoksi uudelleen explorenfc-basic.

Jos minun pitäisi palata (ja luulen, että aion), valitsisin NFC -lukijan, joka tarjoaa enemmän vaihtoehtoja: esimerkiksi Adafruit (olet ehkä huomannut, että pidän niistä paljon) on tämä lukija https:// www..adafruit.com/product/789, joka on yhteensopiva libnfc: n kanssa, mikä mielestäni tarkoittaa sitä, että lukija on paljon puhtaampi käyttää kuin kutsua aliprosessi solmusta ja jäsentää stdout!

Vaihe 7: Kokeile

Voit käynnistää sovelluksen siirtymällä kyseiseen kansioon ja kirjoittamalla "node index.js" (tai npm start, koska olemme määrittäneet sen aiemmin paketissa.json). Lokeissa sinun pitäisi nähdä sovellus, joka muodostaa yhteyden OSMC/Kodiin ja skannaa ensimmäistä kertaa. Muutaman sekunnin kuluttua tiedosto album_directories.json luodaan projektihakemistoon; Voit sitten syöttää NFC -tunnistetunnukset edellä kuvatulla tavalla ja liittää ne haluamiisi albumeihin.

Vaihe 8: Käynnistä automaattisesti

Yhteenvetona, olemme luoneet Node-sovelluksen, joka (1) etsii KODI-kuvakirjastoasi ja yrittää löytää kansion, johon tallennat lomakuvasi, (2) kuuntelee NCF-tunnisteita käyttämällä explorenfc-basic ja sitten (3) käynnistää tähän NFC -tunnukseen liittyvän albumin.

Jotta koko prosessi toimisi taustalla, käytämme PM2: ta, solmun prosessinhallintaa.

Siirry komentoriviltä projektikansioosi (jossa index.js -tiedosto sijaitsee) ja kirjoita seuraavat rivit:

sudo npm install pm2 -gpm2 aloita index.js

PM2 valvoo sovellustasi ja se käynnistyy automaattisesti uudelleen! Varmistaaksesi, että se on todella käynnistetty, kirjoita pm2 -luettelo ja sinun pitäisi nähdä se luettelossa. Jos haluat nähdä lokit, kirjoita vain pm2 -lokit.

Suositeltava: