Orodha ya maudhui:

Anzisha Picha yako ya Likizo Slideshow Ukigusa Uchawi!: Hatua 9 (na Picha)
Anzisha Picha yako ya Likizo Slideshow Ukigusa Uchawi!: Hatua 9 (na Picha)

Video: Anzisha Picha yako ya Likizo Slideshow Ukigusa Uchawi!: Hatua 9 (na Picha)

Video: Anzisha Picha yako ya Likizo Slideshow Ukigusa Uchawi!: Hatua 9 (na Picha)
Video: Часть 08 — Аудиокнига «Моби Дик» Германа Мелвилла (гл. 089–104) 2024, Julai
Anonim
Anzisha Picha zako za Likizo Slideshow Ukigusa Uchawi!
Anzisha Picha zako za Likizo Slideshow Ukigusa Uchawi!
Anzisha Picha zako za Likizo Slideshow Ukigusa Uchawi!
Anzisha Picha zako za Likizo Slideshow Ukigusa Uchawi!

Kwa miaka iliyopita, nimekuwa na tabia ya kuchukua picha ndogo ndogo nikiwa safarini: Mara nyingi mimi hununua sanaa ndogo isiyo na kitu (kama ile iliyo kwenye picha) na kuipaka rangi ili ilingane na bendera na kaulimbiu ya nchi mimi ' m kutembelea (katika kesi hii, Sicily).

Wazo basi ni kuchukua picha za sanamu mbele ya pazia au makaburi maarufu kutoka kwa nchi iliyosemwa: Ninaona kuwa ya kufurahisha zaidi kuliko kuwa na picha na monument yenyewe tu (kuna Google kwa hiyo na ni ya bei rahisi sana) lakini bado ni rahisi kuliko kuwa na picha kuwa kwenye kila picha mimi mwenyewe (sio shabiki, kuwa mkweli)

Kwa kuwa ni raha kila wakati kukusanya watu uliokwenda likizo na siku chache baada ya kurudi kutazama picha, nilidhani itakuwa nzuri ikiwa kila sanamu inaweza kuzindua otomatiki picha ya picha kutoka kwa safari waliyotengenezewa..

Hii inaelezewa itaelezea jinsi nilifanya hivyo, kwa kutumia NFC, pi rasipberry, nodejs na osmc

Hatua ya 1: Muhtasari wa Suluhisho

Muhtasari wa Suluhisho
Muhtasari wa Suluhisho
Muhtasari wa Suluhisho
Muhtasari wa Suluhisho

Kwa kuwa usanidi mzima unajumuisha vitu vichache, hapa kuna muhtasari wa jumla wa kile kinachohusika kukusaidia kuelewa kila kitu kinachofuata:

Vifaa

- sanamu hiyo imetengenezwa nyumbani: kwa kuwa ninaandika maandishi haya katikati ya safari ya wiki moja huko Copenhagen / Oslo / Stockholm / Helsinki, nitajumuisha picha kadhaa za sanamu inayotengenezwa kwa safari hii

- chini ya kila sanamu kuna chip ya NFC: ninatumia stika za duara ambazo ninaweza kutoshea chini ya kila sanamu lakini unaweza kutumia sababu nyingine yoyote - hakikisha tu kwamba chip unayotumia inaambatana na msomaji wako

- kuonyesha picha, nitatumia pi raspberry na OSMC imewekwa: ni kicheza media changu cha kuchagua kwa vipindi vya Runinga na Sinema kwa hivyo tayari imeunganishwa na Runinga yangu

- ili pi ya raspberry isome vitambulisho vya NFC, niliongeza msomaji wa NFC - ile niliyotumia ni Explore-NFC kutoka NXP, inayopatikana kwenye wavuti nyingi: inaingiza kwenye Pi na hufanya kama ngao

Programu

Kwenye Raspberry Pi, hati ya NodeJS inasubiri kitambulisho cha NFC kisomwe: mara tu itakapomalizika, hati huangalia kitambulisho chake dhidi ya orodha ya thamani / jozi na kila folda kutoka kwa chanzo cha picha kwenye OSMC na kitambulisho cha NFC kinacholingana kama ilivyosanidiwa na mtumiaji.

Lebo inaposomwa, ikiwa kitambulisho kiko kwenye orodha, hati ya Node inaiambia OSMC kuzindua onyesho la slaidi kwa folda hii maalum Ili kujenga / kusanidi orodha hiyo, hati ile ile ya NodeJS huzindua kazi ya skanning kila dakika 5: ni Inatafuta kila saraka iliyo ndani ya chanzo cha "Picha" kwenye OSMC (kwa kutumia JSON-RPC API ambayo Kodi inatoa) na inaiongeza kwenye orodha ambayo imehifadhiwa kwenye diski. Kwa kuhariri faili hii ya maandishi moja kwa moja, mtumiaji basi anaweza kuongeza kitambulisho cha NFC kinachofanana kwa kila albamu.

Hatua ya 2: Kuunda Mtini

Kuunda Mtini
Kuunda Mtini
Kuunda Mtini
Kuunda Mtini
Kuunda Mtini
Kuunda Mtini
Kuunda Mtini
Kuunda Mtini

Unaweza kutumia kitu chochote unachopenda sana kwa sanamu yako: Ninapenda kutumia vitu vya kuchezea vya sanaa vya vinyl kwa sababu ni - rahisi - kuteka hata kwa mtu kama mimi ambaye hapendi kuchora, na ni rahisi kubeba karibu. Ninawaamuru katika toleo lao tupu, la DIY, kwa saizi ndogo zaidi huja, na chora juu yao kwa kutumia alama za Posca. Hapa unaweza kuona ile niliyoifanya kwa safari hii, na bendera za nchi nne ambazo tulizotembelea - zilifanana vya kutosha kwangu kuzichanganya kwa upande. Unaweza kutumia kanzu kadhaa za rangi kwa muda mrefu kama utamwacha kila mmoja kavu kabla ya kuchora inayofuata. Baada ya kumaliza uchoraji, napenda kutumia bunduki ya joto kwenye rangi kwa dakika chache, kwani nimesoma kuwa ni joto linalosaidia kuweka rangi ya Posca.

Katika picha ya mwisho unaweza kuona Sven - huwa ninawapa majina - nikipumzika Oslo baada ya asubuhi ndefu. Yeye hana kichwa kutoka kwa toy ya asili, kwani niliweza kuharibu dakika moja kabla ya kuondoka: ilibidi niondolee toy iliyopita ili kutumia kichwa chake badala yake. Siwezi kusema kuwa haijawahi kutokea hapo awali…

Hatua ya 3: Sakinisha OSMC

Sakinisha OSMC
Sakinisha OSMC

Jambo la kwanza nililofanya ni kusanikisha OSMC kwenye kadi ndogo ya SD kwa Raspberry Pi: katika usanidi wetu, itatumika kama kicheza media kutazama picha zako. Sitaenda kwa undani zaidi juu ya jambo hili kwani imeandikwa vizuri (kuna Maagizo machache yanapatikana ikiwa unahitaji msaada). Pakua kisanidi tu kwenye kompyuta yako na ufuate maagizo. Mara tu nilipomaliza, niliingiza tu kibodi na panya na nikaunganisha HDMI kwenye Runinga na kufuata mchawi wa usanidi kuanzisha eneo la wakati nk.

Mwishowe, niliongeza saraka ambapo ninahifadhi picha zangu kwenye vyanzo: kwa upande wangu zimehifadhiwa kwenye NAS na IP iliyowekwa kwenye mtandao huo huo, lakini pia unaweza kuzihifadhi kwenye gari la USB au kwenye folda ya nyumbani yenyewe, mradi SD yako ndogo ni kubwa vya kutosha.

Unapoongeza chanzo, utaulizwa kuweka jina lake: unaweza kuacha chaguomsingi au ubadilishe lakini hakikisha ukiandika kwa sababu tutaihitaji baadaye. Katika kesi yangu niliiita "Picha Zangu"

Unapaswa sasa kuona yaliyomo kwenye saraka uliyoongeza na kuvinjari picha zako: kwa upande wangu, nina saraka ndogo kwa kila safari.

Hongera, sasa una kituo cha media na picha zako na unaweza kuzindua onyesho la slaidi kwa folda maalum (kama bonasi, unaweza kuitumia kucheza video au muziki wako)

Hatua ya 4: Sanidi Msomaji

Kwa wengine wote wanaoweza kufundishwa, tutaunganishwa na Pi kwa kutumia laini ya amri juu ya SSH. Ili kufanya hivyo, inganisha tu Pi kwenye mtandao wako kwa kutumia kebo ya Ethernet na utumie terminal au sotware iliyojitolea kuungana na Pi. Kwenye Mac OS na Linux, amri ni

ssh [email protected]

Utaulizwa kuweka nenosiri, ni osmc tena

Ili msomaji aweze kufanya kazi, SPI inapaswa kuwezeshwa: katika usambazaji mwingi kama Raspbian hii inaweza kufanywa kwa kutumia raspi-config, chombo cha usanidi ambacho hukuruhusu kubadilisha maadili kadhaa ya usanidi.

OSMC, hata hivyo, haijumuishi raspi-config, kwa usalama wako wakati wa kuitumia. Badala yake, funga Raspberry, toa kadi ndogo ya SD na uiweke tu kwenye kompyuta yako: kizigeu cha "boot" kinapaswa sasa kuonekana. Huko, kwenye mzizi wa sauti, utaona faili inayoitwa "config.txt" - ifungue tu na uongeze mstari huu mwishoni:

"dtparam = spi = juu"

Sasa unaweza kuhifadhi faili, kuwasha upya na SPI inapaswa kuwezeshwa.

Baada ya hapo, utahitaji kupakua faili ya ZIP iliyoambatishwa na kuifungua kwenye rasiberi - ninapendekeza uunda folda ya Miradi na uifungue hapo. Ili kufanya hivyo, unaweza kuungana na Raspberry ukitumia FTP juu ya SSH (ninatumia CyberDuck kufanya hivyo) au weka faili kwenye Hifadhi ya USB na utumie meneja wa faili wa Kodi kuiiga kwenye Raspberry Pi.

Kwa vyovyote vile, ukisha nakili faili ya zip kwa Pi, unaweza kisha kuelekea kwenye folda uliyoinakili na kuifungua, songa kwa folda inayosababisha na usakinishe kifurushi:

unzip SW2827.zipcd SW2827 Sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explrenfc_1.2-1_armhf.deb

Ikiwa yote yanaenda vizuri unapaswa kuwa na uwezo wa kuziba msomaji, kuwasha upya na kisha ingiza

kuchunguza-msingi

Ikiwa unakaribia chip ya NFC kwa msomaji inapaswa sasa kuonyesha rundo la habari kutoka kwa chip (kati ya mambo mengine, kitambulisho chake)

Hatua ya 5: Sakinisha Node na Unda Mradi

Ifuatayo, tutaweka NodeJS kwenye rasiberi ili kuandika programu yetu.

Tunataka kusanikisha nodejs lakini toleo la hazina chaguo-msingi ni ya zamani sana, kwa hivyo lazima upitie hatua ya kwanza hapo awali: katika kiolesura cha laini ya amri, andika

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

Basi unaweza kuandika

Sudo apt kufunga nodejs

kusakinisha toleo la hivi karibuni la nodejs na npm inapatikana.

Ili kudhibiti KODI kutoka ndani ya nodejs, tutatumia kifurushi cha npm kinachoitwa kodi-ws.

Wacha tuanze kwa kuunda mradi mpya: andika tu amri

npm init

Utaulizwa maswali kadhaa: kwa mengi yao unaweza kuacha chaguomsingi, chagua tu jina la programu yako na uingie jina lako mwishoni. Unapoulizwa mahali pa kuanzia acha tu index.js

Hii itaunda faili ya package.json ambayo itajumlisha sifa za kifurushi chako, kama vile utegemezi wake.

Sasa unaweza kuingia

Sudo npm kufunga kodi-ws sudo npm kusanidi jsonfilesudo npm kusanidi cronsudo npm kufunga mtoto_process

Ukifungua package.json baada ya hapo, utagundua kuwa vifurushi hivyo vyote viliongezwa kwenye utegemezi.

Hatua ya 6: Kanuni, Imefafanuliwa

Kanuni, Imefafanuliwa
Kanuni, Imefafanuliwa

Kilichoambatishwa na hatua hii ni nambari ya programu.

Nimeacha idadi nzuri ya ukataji miti ambayo haiwezi kutafakari ili kuelewa hati lakini nitaivunja pamoja.

Utagundua kuwa licha ya kazi zote kutangazwa, nambari hufanya vitu vichache mwanzoni:

kodi ('localhost', 9090). basi (kazi (unganisho) {

Hati inajaribu kuungana na OSMC JSON-RPC API. Mara tu inafanikiwa (na kisha tu), inaendelea na faili yote.

Ikiwa kwa sababu fulani haiendeshi hii kutoka kwa Raspberry Pi yako, badilisha barua pepe kwa anwani yako ya IP. Pia hakikisha kwamba katika mipangilio ya huduma ndani ya OSMC (Mipangilio / Huduma) kisanduku cha kuangalia "Ruhusu udhibiti wa kijijini kutoka kwa programu kwenye mifumo mingine" (angalia picha)

Faili iliyobaki ni maazimio ya kazi ambayo tutatumia baadaye: kazi mbili ambazo zimezinduliwa kutoka hapa ni (mistari 172/173)

scanAndSetCron (); sikilizaForTag ();

Katika scanAndSetCron:

- kazi ya ScanPicha imezinduliwa. Ndani yake, tunaangalia ikiwa "muhtasari wa maandishi", ambao utashikilia njia ya picha zetu, hauna kitu. Ikiwa ni hivyo, tunauliza OSMC itupatie vyanzo vyote ambavyo ina maudhui ya picha (ndani ya kazi ya GetPictureDirectory, mstari wa 11):

var piclist = subiri unganisho. Files. GetSource ("picha");

OSMC inatupa safu kwa kurudi: kwa kila kitu, tunaangalia ikiwa jina la chanzo linajumuisha "Yangu": ikiwa ndio kesi tunaihifadhi kama chanzo chetu cha picha (mstari wa 16 na ufuatao). Hapa ndipo utataka kubadilisha kamba kutoka "Yangu" kwenda kwa chochote ulichoingiza hapo awali kama jina la chanzo chako cha picha

ikiwa (piclist.sources .label. Inajumuisha ("Yangu")) {console.log (">>> Imepata saraka" + piclist.sources .file); mypicturedirectory = piclist.source .file; }

Sasa kwa kuwa tuna njia ya chanzo (kimsingi folda ya mizizi kwenye Albamu zetu), tunauliza OSMC iichanganue na kuongeza njia ya kila folda kwenye safu inayoitwa albam_directories (ikiwa tayari haipo). Kwa kuwa kazi hii itaendeshwa kila sekunde X, tunaangalia kuwa saraka hiyo haiko tayari kwenye orodha kabla ya kuiongeza, na kitambulisho cha NFC kimewekwa kwa kamba tupu - kwa njia hiyo, kila folda mpya unayoongeza kwenye picha zako itakuwa moja kwa moja aliongeza - mstari wa 46

kwa (var j = 0; j <directories.length; j ++) {if (directories [j].filetype.includes ("directory")) {if (searchDirectory (directories [j].file, album_directories)) {console. log (saraka [j] faili. "tayari iko"); } mwingine {console.log (">> Kuongeza dir" + saraka [j] faili.; album_directories.push ({saraka: saraka [j]. faili, nfc: ""}); }}}

Mwishowe, tunahifadhi safu ya albamu_directories kwa faili ya json kwenye Pi, ambayo tunajaribu kupakia kila wakati kazi inatekelezwa: hii hufanyika mwishoni mwa kazi ya scanAndSetCron ambapo tunatumia kifurushi kama cha cron kuhakikisha kazi yetu inaendesha kila sekunde 15.

Faili ya JSON ambayo tunazalisha, album_directories.json, inaweza kufunguliwa kwa kutumia programu yoyote ya daftari. Mara tu unapofanya hivyo, utapewa orodha ya Albamu zako za picha, kila moja ikiwa na uwanja tupu wa "nfc":

[{"saraka": "/ nyumbani / osmc / Picha / Mada 2016 /", "nfc": ""}, {"saraka": "/ nyumbani / osmc / Picha / NewFolder /", "nfc": "" }, {"saraka": "/ nyumbani / osmc / Picha / Mtihani /", "nfc": ""}]

Kwenye uwanja huu, sasa lazima ubandike kitambulisho cha lebo unayotaka kuhusishwa na albamu hii. Ili kupata kitambulisho hiki, nenda tu kwenye folda ya SW2827, tumia explrenfc-basic na uchanganue lebo ambayo unataka kutumia. Katika pato unalopata, angalia tu thamani karibu na ISO14443A UID. Nakili kwenye albamu unayotaka kusanidi. Kwa upande wangu, kwa mfano,

[{"saraka": "/ nyumbani / osmc / Picha / Mada 2016 /", "nfc": "040A12EAFC3881"}, {"saraka": "/ home / osmc / Picha / NewFolder /", "nfc": " "}, {" saraka ":" / nyumbani / osmc / Picha / Mtihani / "," nfc ":" "}]

Hifadhi faili na yaliyomo yatapakiwa wakati utazindua programu hiyo wakati ujao.

Katika kazi ya kusikilizaForTag, tunafanya hivyo tu: kwa kuwa haionekani kuwa bandari ya kujitolea ya maktaba ya msomaji ya NodeJS, tunategemea watayarishaji wa watoto kuzindua binary kwa msomaji:

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

Tunategemea mtangazaji wa hafla kupokea pato kutoka kwa utekelezaji huu: ndani ya upigaji simu kwa mtoto.stdout.on ('data', kazi (data), tunachanganua pato la amri hii kwa kutumia kazi ya kuchambuaOutput: tunatafuta mstari ambao tuliona mapema, kuanzia na "ISO14443A UID:", kwani hapo ndipo kitambulisho cha lebo ambayo tumechunguza kinahifadhiwa. Mara tu tunapopata laini hiyo, tunaipunguza na kuhifadhi kitambulisho kwa kitu (kinachoitwa ID, jinsi gani asili).

Mwishowe, tunajaribu kulinganisha kitambulisho hiki na vitambulisho ambavyo tuliingiza kwenye safu ya vichwa vya albamu_directories (zilizobeba kupitia faili ya album_directories.json). Ikiwa mechi inapatikana, tunaamuru OSMC kuzindua onyesho la slaidi kwa folda hiyo maalum:

var nfcid = kuchambuaOutput (data); console.log ("nfcid ni" + nfcid.id); var correspondingalbum = searchTag (nfcid.id, albamu_directories); ikiwa (correspondingalbum) {console.log ("Albamu iliyopatikana" + JSON.stringify (correspondingalbum) + "kwa lebo hii"); var args = [{'' path ': correspondingalbum.directory}]; unganisho. kukimbia ('Mchezaji. Fungua', args); } sikilizaTag ();

Unaona jinsi mwisho wa kazi, tunazindua kusikilizaForTag tena? Hiyo ndio kazi pekee ambayo nimepata kufanya programu ifanye kazi: explorerenfc-basic will by default wait for tag, read it, and exit. Programu ina hali ya kuendelea ambayo tunaweza kupiga simu kwa kutumia explrenfc-basic -k lakini kwa hali hii, mtoto_process haitoi yaliyomo kwenye lebo kwani haiishii (kwa maneno mengine mtoto.stdout.on ('data') hajafukuzwa kazi). Kwa kuwa sijapata njia nyingine yoyote ya kutumia msomaji huu, tunachofanya hapa kimsingi ni kuzindua explorerenfc-basic katika hali ya tepe moja, na kitambulisho kinaposomwa, tunazindua listenForTag na kwa hivyo tunaanzisha upya explrenfc-basic.

Ikiwa ilibidi nirudi (na nadhani nitafanya hivyo), ningechagua msomaji wa NFC ambaye hutoa chaguzi zaidi: kwa mfano, Adafruit (unaweza kuwa umegundua ninawapenda sana) ana msomaji huyu https:// www.adafruit.com / product / 789 ambayo inaambatana na libnfc, ambayo naamini inamaanisha kuwa msomaji atakuwa wazi zaidi kwa unganisho na kuliko kuita mchakato wa mtoto kutoka ndani ya nodi na kuchambua stdout!

Hatua ya 7: Jaribu

Ili kuzindua programu hiyo, nenda kwenye folda hiyo na andika "node index.js" (au npm kuanza kwa kuwa tumeisanidi mapema katika package.json). Katika magogo unapaswa kuona programu ikiunganisha kwa OSMC / Kodi na skanning kwa mara ya kwanza. Baada ya sekunde chache faili ya albamu_directories.json itaundwa ndani ya saraka ya mradi; Kisha unaweza kuingiza vitambulisho vya lebo ya NFC kama ilivyoelezwa hapo awali na uwaunganishe na Albamu ambazo unataka.

Hatua ya 8: Anzisha moja kwa moja

Kwa muhtasari, tumeunda programu ya Node ambayo (1) inatafuta maktaba yako ya picha ya KODI na inajaribu kupata folda unapohifadhi picha zako za likizo, (2) inasikiliza lebo za NCF kwa kutegemea explrenfc-basic na kisha (3) huzindua albamu inayohusishwa na kitambulisho hiki cha NFC.

Ili kufanya mchakato huu wote kuendeshwa nyuma, tutatumia PM2, msimamizi wa mchakato wa node.

Katika mstari wa amri, nenda kwenye folda ya miradi yako (ambapo faili yako ya index.js iko) na andika mistari ifuatayo:

Sudo npm kufunga pm2 -gpm2 kuanza index.js

Programu yako sasa inafuatiliwa na PM2 na itawashwa tena kiotomatiki! Ili kuhakikisha kuwa imezinduliwa kweli, andika orodha ya pm2 na unapaswa kuiona kwenye orodha. Ikiwa unataka kuona magogo, andika magogo ya pm2.

Ilipendekeza: