Turinys:
- 1 žingsnis: sprendimo apžvalga
- 2 žingsnis: statulėlės sukūrimas
- 3 veiksmas: įdiekite OSMC
- 4 žingsnis: sukonfigūruokite skaitytuvą
- 5 veiksmas: įdiekite mazgą ir sukurkite projektą
- 6 žingsnis: paaiškintas kodas
- 7 žingsnis: Išbandykite
- 8 veiksmas: paleiskite automatiškai
Video: Pradėkite savo atostogų nuotraukų skaidrių demonstraciją su magija!: 9 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Bėgant metams įgijau įprotį pasiimti su savimi mažą figūrėlę keliaujant: dažnai nusiperku mažą, tuščią artoy (pvz., Nuotraukoje) ir nudažau ją taip, kad atitiktų šalies, su kuria aš vėliava, temą “m lankosi (šiuo atveju Sicilija).
Tuomet idėja yra nufotografuoti statulėlę prieš scenas ar garsius paminklus iš minėtos šalies: manau, kad tai daug juokingiau, nei turėti nuotraukas su tik pačiu paminklu (tam yra „Google“ir tai yra daug pigiau), bet vis tiek lengviau nei turėti būti kiekvienoje nuotraukoje pats (ne gerbėjas, tiesą pasakius)
Kadangi visada smagu susirinkti žmones, su kuriais atostogavote, praėjus kelioms dienoms po to, kai grįžote žiūrėti nuotraukų, pagalvojau, kad būtų puiku, jei kiekviena figūrėlė galėtų kažkaip automatiškai paleisti skaidrių demonstraciją iš kelionės, kuriai jie buvo padaryti.
Ši pamoka paaiškins, kaip aš tai padariau naudodamas NFC, aviečių pi, nodejs ir osmc
1 žingsnis: sprendimo apžvalga
Kadangi visa sąranka apima kelis dalykus, čia pateikiama bendra to, kas susiję, apžvalga, padedanti suprasti visa tai:
Techninė įranga
- figūrėlė yra naminė: kadangi aš rašau šią instrukciją savaitės trukmės kelionės Kopenhagoje/Osle/Stokholme/Helsinkyje viduryje, pridėsiu keletą šios kelionės padarytų figūrėlių kadrų
- po kiekviena figūrėlė yra NFC mikroschema: naudoju apvalius lipdukus, kuriuos galiu talpinti po kiekviena figūrėle, bet galite naudoti bet kokius kitus formos veiksnius - tiesiog įsitikinkite, kad jūsų naudojamas mikroschema yra suderinama su jūsų skaitytuvu
- norėdamas parodyti nuotraukas, naudosiu aviečių pi su įdiegta OSMC: tai mano pasirinktas medijos leistuvas TV laidoms ir filmams, todėl jis jau prijungtas prie mano televizoriaus
- kad aviečių pi galėtų skaityti NFC žymes, pridėjau NFC skaitytuvą - naudojau NXP „Explore -NFC“, kurį galima rasti daugelyje svetainių: jis prijungiamas prie „Pi“ir veikia kaip skydas
Programinė įranga
„Raspberry Pi“„NodeJS“scenarijus laukia, kol bus perskaityta NFC žyma: kai tai bus padaryta, scenarijus patikrins, ar jo ID atitinka reikšmių/porų sąrašą su kiekvienu OSMC paveikslėlių šaltinio aplanku ir atitinkamu NFC ID, kaip sukonfigūruota Vartotojas.
Kai skaitoma žyma, jei ID yra sąraše, „Node“scenarijus nurodo OSMC paleisti šio konkretaus aplanko skaidrių demonstraciją. Norėdami sukurti/sukonfigūruoti tą sąrašą, tas pats „NodeJS“scenarijus kas 5 minutes paleidžia nuskaitymo funkciją: nuskaito kiekvieną katalogą OSMC „Paveikslėlių“šaltinyje (naudodamas „Kodi“siūlomą JSON-RPC API) ir prideda jį prie sąrašo, kuris vėliau išsaugomas diske. Tiesiogiai redaguodamas šį teksto failą, vartotojas gali pridėti atitinkamą kiekvieno albumo NFC ID.
2 žingsnis: statulėlės sukūrimas
Savo figūrėlėms galite naudoti beveik viską, kas jums patinka: man patinka naudoti tuos vinilo meno žaislus, nes juos palyginti lengva piešti net tokiam žmogui kaip aš, kuris nemėgsta piešti, ir gana lengva nešiotis. Aš užsisakau jų tuščią versiją „pasidaryk pats“, mažiausio dydžio, kokį jie gauna, ir piešiu juos naudodami „Posca“žymeklius. Čia galite pamatyti tą, kurį padariau šiai kelionei, su keturių mūsų aplankytų šalių vėliavomis - jos buvo pakankamai panašios, kad galėčiau jas sujungti. Galite naudoti kelis dažų sluoksnius, jei tikrai leisite kiekvienam išdžiūti prieš dažydami kitą. Baigęs dažyti, mėgstu keletą minučių naudoti dažų šilumos pistoletą, nes skaičiau, kad „Posca“dažų rinkiniui padeda šiluma.
Paskutinėje nuotraukoje galite pamatyti Sveną - aš visada duodu jiems vardus - po gana ilgo ryto pertraukos Osle. Jis neturi galvos nuo originalaus žaislo, nes man pavyko sujaukti tą minutę iki išvykimo: turėjau išardyti ankstesnį žaislą, kad galėčiau naudoti jo galvą. Negaliu pasakyti, kad to niekada nebuvo …
3 veiksmas: įdiekite OSMC
Pirmas dalykas, kurį aš padariau, buvo įdiegti OSMC į „Raspberry Pi“„micro SD“kortelę: mūsų sąrankoje ji bus laikmena, skirta žiūrėti jūsų nuotraukas. Aš nesigilinsiu į šį aspektą, nes jis yra gana gerai dokumentuotas (jei reikia pagalbos, yra keletas instrukcijų). Tiesiog atsisiųskite diegimo programą į savo kompiuterį ir vykdykite instrukcijas. Kai baigiau, tiesiog prijungiau klaviatūrą ir pelę, prijungiau HDMI prie televizoriaus ir sekiau sąrankos vedlį, norėdamas nustatyti laiko juostą ir pan.
Galiausiai prie šaltinių pridėjau katalogą, kuriame saugoju savo nuotraukas: mano atveju jos yra saugomos NAS su fiksuotu IP tame pačiame tinkle, tačiau jas taip pat galite laikyti USB diske arba pačiame namų aplanke, jei jūsų „micro SD“yra pakankamai didelis.
Pridėdami šaltinį, būsite paprašyti įvesti jo pavadinimą: galite palikti numatytąjį arba jį pakeisti, bet būtinai užsirašykite, nes mums jo prireiks vėliau. Mano atveju tai pavadinau „MyPictures“
Dabar turėtumėte pamatyti pridėto katalogo turinį ir naršyti savo nuotraukas: mano atveju kiekvienai kelionei turiu po katalogą.
Sveikiname, dabar turite daugialypės terpės centrą su savo nuotraukomis ir galite paleisti konkretaus aplanko skaidrių demonstraciją (kaip premiją galite ją naudoti ir vaizdo įrašams ar muzikai paleisti)
4 žingsnis: sukonfigūruokite skaitytuvą
Likusioje instrukcijoje mes prisijungsime prie „Pi“naudodami komandinę eilutę per SSH. Norėdami tai padaryti, tiesiog prijunkite „Pi“prie tinklo naudodami eterneto kabelį ir naudokite terminalą arba specialią sotware, kad prisijungtumėte prie „Pi“. „Mac OS“ir „Linux“komanda yra
Jūsų bus paprašyta įvesti slaptažodį, tai vėl osmc
Kad skaitytuvas galėtų veikti, SPI turi būti įjungtas: daugelyje platinimų, pvz., „Raspbian“, tai galima padaryti naudojant raspi-config-konfigūravimo įrankį, leidžiantį pakeisti kai kurias konfigūracijos reikšmes.
Tačiau OSMC neapima raspi-config jūsų pačių saugumui jį naudojant. Vietoj to, išjunkite „Raspberry“, išimkite „micro SD“kortelę ir tiesiog prijunkite ją prie kompiuterio: dabar turėtų būti matomas „įkrovos“skaidinys. Ten, tomo šaknyje, pamatysite failą pavadinimu „config.txt“- tiesiog atidarykite jį ir pabaigoje pridėkite šią eilutę:
"dtparam = spi = on"
Dabar galite išsaugoti failą, iš naujo paleisti ir SPI turėtų būti įjungtas.
Po to turėsite atsisiųsti pridėtą ZIP failą ir išpakuoti jį avietėje - rekomenduoju sukurti aplanką „Projektai“ir ten jį išpakuoti. Norėdami tai padaryti, galite prisijungti prie „Raspberry“naudodami FTP per SSH (tam naudoju „CyberDuck“) arba įdėti failą į USB diską ir naudoti „Kodi“failų tvarkyklę, kad nukopijuotumėte jį į „Raspberry Pi“.
Bet kokiu atveju, nukopijavę ZIP failą į „Pi“, galite pereiti prie aplanko, į kurį jį nukopijavote, ir išpakuoti, pereiti į gautą aplanką ir įdiegti paketą:
išpakuoti SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb
Jei viskas gerai, turėtumėte turėti galimybę prijungti skaitytuvą, iš naujo paleisti ir tada įeiti
explorenfc-basic
Jei prie skaitytuvo priartėsite prie NFC lusto, jis dabar turėtų parodyti krūvą informacijos iš lusto (be kita ko, jo ID)
5 veiksmas: įdiekite mazgą ir sukurkite projektą
Toliau avietėje įdiegsime „NodeJS“, kad parašytume savo programą.
Mes norime įdiegti „nodejs“, tačiau numatytosios saugyklos versija yra tikrai sena, todėl prieš tai turite atlikti pirmąjį žingsnį: komandų eilutės sąsajoje įveskite
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Tada galite įvesti
sudo apt įdiegti nodejs
įdiegti naujausią galimą „nodejs“ir „npm“versiją.
Norėdami valdyti KODI iš nodejs, mes naudosime npm paketą, vadinamą kodi-ws.
Pradėkime nuo naujo projekto sukūrimo: tiesiog įveskite komandą
npm init
Jums bus užduota daugybė klausimų: daugumai jų galite palikti numatytąjį, tiesiog pasirinkite programos pavadinimą ir pabaigoje įveskite savo vardą. Kai jūsų paprašys atskaitos taško, tiesiog palikite index.js
Taip bus sukurtas failas package.json, kuriame bus apibendrintos jūsų paketo charakteristikos, pvz., Jo priklausomybės.
Dabar galite įeiti
sudo npm install kodi-ws sudo npm install jsonfilesudo npm install cronsudo npm install child_process
Jei po to atidarysite paketą.json, pastebėsite, kad visi šie paketai buvo pridėti prie priklausomybių.
6 žingsnis: paaiškintas kodas
Prie šio veiksmo pridedamas programos kodas.
Palikau nemažai registravimo, kurio galima nekomentuoti, kad suprastume scenarijų, bet kartu jį išardome.
Pastebėsite, kad nepaisant visų deklaruotų funkcijų, kodas iš pradžių atlieka tik keletą dalykų:
kodi ('localhost', 9090). Tada (funkcija (ryšys) {
Scenarijus bando prisijungti prie OSMC JSON-RPC API. Kai tai pavyksta (ir tik tada), jis tęsiasi su likusiu failu.
Jei dėl kokių nors priežasčių to nepaleidžiate iš savo Raspberry Pi, pakeiskite localhost į savo IP adresą. Taip pat įsitikinkite, kad OSMC paslaugų nustatymuose (Nustatymai/Paslaugos) pažymėtas žymimasis laukelis „Leisti nuotolinį valdymą iš kitų sistemų programų“(žr. Paveikslėlį)
Likusi failo dalis dažniausiai yra funkcijų, kurias naudosime vėliau, deklaracijos: dvi iš tikrųjų paleistos funkcijos yra čia (172/173 eilutės)
scanAndSetCron (); listenForTag ();
„ScanAndSetCron“:
- paleidžiama „scanPictures“funkcija. Viduje mes patikriname, ar kintamasis „mypicturedirectory“, kuris laikys kelią į mūsų paveikslėlius, yra tuščias. Jei taip, mes prašome OSMC pateikti mums visus šaltinius, kuriuos jis turi vaizdo turiniui („getPictureDirectory“funkcijos 11 eilutėje):
var piclist = laukti ryšio. Files. GetSources ("nuotraukos");
OSMC mums duoda masyvą: kiekvienam elementui patikriname, ar šaltinio pavadinime yra „Mano“: jei taip, mes jį saugome kaip savo vaizdo šaltinį (16 eilutė ir tolesnė). Čia norėsite pakeisti eilutę iš „Mano“į bet kurią, kurią anksčiau įvedėte kaip savo nuotraukų šaltinio pavadinimą
if (piclist.sources .label.includes ("Mano")) {console.log (">>> Radau katalogą" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }
Dabar, kai turime kelią į šaltinį (iš esmės šakninį aplanką į mūsų albumus), prašome OSMC jį nuskaityti ir pridėti kiekvieno aplanko kelią į masyvą, pavadintą albumas_katalogai (jei jo dar nėra). Kadangi ši funkcija bus vykdoma kas X sekundes, prieš pridėdami ją patikriname, ar katalogas dar nėra sąraše, o NFC ID nustatytas į tuščią eilutę - tokiu būdu kiekvienas naujas aplankas, kurį pridėsite prie savo nuotraukų, bus automatiškai pridėta - 46 eilutė
for (var j = 0; j <directories.length; j ++) {if (directory [j].filetype.includes ("directory")) {if (searchDirectory (katalogai [j].file, album_directories)) {console. log (katalogai [j].file +"jau yra"); } else {console.log (">> Pridedamas dir" + katalogai [j].file); album_directories.push ({katalogas: katalogai [j].failas, nfc: ""}); }}}
Pabaigoje mes išsaugome albumo_direktorių masyvą į „json“failą „Pi“, kurį bandome įkelti kiekvieną kartą, kai vykdoma funkcija: tai atsitinka funkcijos „scanAndSetCron“pabaigoje, kur mes naudojame į cron panašų paketą, kad užtikrintume, jog mūsų funkcija veikia kas 15 sekundžių.
Mūsų sukurtą JSON failą albumą_direktorijos.json galima atidaryti naudojant bet kurią užrašų knygelės programą. Kai tai padarysite, jums bus pateiktas jūsų nuotraukų albumų sąrašas, kurių kiekvienas turi tuščią lauką „nfc“:
[{"katalogas": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"katalogas": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"katalogas": "/home/osmc/Pictures/Test/", "nfc": ""}]
Šiame lauke dabar turite įklijuoti žymos, kurią norite susieti su šiuo albumu, ID. Norėdami gauti šį ID, tiesiog eikite į aplanką SW2827, paleiskite „explorenfc-basic“ir nuskaitykite norimą naudoti žymą. Išvestyje, kurią gaunate, tiesiog ieškokite vertės šalia ISO14443A UID. Nukopijuokite jį į albumą, kurį norite konfigūruoti. Mano atveju pvz.
[{"katalogas": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"katalogas": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" katalogas ":"/home/osmc/Pictures/Test/"," nfc ":" "}]
Išsaugokite failą ir jo turinys bus įkeltas, kai kitą kartą paleisite programą.
Naudodami funkciją „listenForTag“mes tai ir darome: kadangi neatrodo, kad „NodeJS“skirta skaitytojų bibliotekos prievadas, mes pasikliaujame vaikų procesais, kad paleistume skaitytojui skirtą dvejetainę:
var spawn = reikalauti ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );
Mes pasikliaujame įvykių klausytoju, kad gautume šio įvykdymo išvestį: atšaukimo lauke „child.stdout.on“(„duomenys“, funkcija (duomenys), analizuojame šios komandos išvestį naudodami funkciją „analyOutput“: ieškome anksčiau matytą eilutę, prasidedančią „ISO14443A UID:“, nes čia saugomas nuskaitytos žymos ID. Radę tą eilutę, ją nukerpame ir išsaugome objekte (vadinamame ID, kaip originalus).
Galiausiai, mes stengiamės suderinti šį ID su ID, kuriuos įvedėme į album_directories objektų masyvą (įkeltą per failą album_directories.json). Jei randama atitiktis, nurodome OSMC paleisti to konkretaus aplanko skaidrių demonstraciją:
var nfcid = analizuoti išvestį (duomenys); console.log ("nfcid yra" + nfcid.id); varrespondingalbum = searchTag (nfcid.id, albumo_katalogai); if (respondingalbum) {console.log ("Rastas albumas" + JSON.stringify (respondingalbum) + "šiai žymai"); var args = [{'kelias':respondingalbum.directory}]; connection.run ('Player. Open', args); } listenForTag ();
Pastebite, kaip pasibaigus funkcijai vėl paleidžiame „listenForTag“? Tai vienintelis sprendimas, kurį radau, kad programa veiktų: „explorenfc-basic“pagal numatytuosius nustatymus lauks žymos, ją perskaitys ir išeis. Programa turi nuolatinį režimą, kurį galime iškviesti naudodami „explorenfc -basic -k“, tačiau šiuo režimu „child_process“niekada neišveda žymos turinio, nes jis niekada nesibaigia (kitaip tariant, child.stdout.on („duomenys“) niekada nėra suaktyvinamas). Kadangi neradau kito būdo, kaip naudoti šį skaitytuvą, čia mes iš esmės paleidžiame „explorenfc-basic“vienos žymos režimu, o kai skaitoma žyma, paleidžiame „listenForTag“ir todėl iš naujo paleidžiame „explorenfc-basic“.
Jei turėčiau grįžti atgal (ir manau, kad tai padarysiu), rinkčiausi NFC skaitytuvą, kuris siūlo daugiau galimybių: pavyzdžiui, „Adafruit“(galbūt pastebėjote, kad man jie labai patinka) turi šį skaitytuvą https:// www..adafruit.com/product/789, kuris yra suderinamas su libnfc, o tai, mano manymu, reiškia, kad skaitytojas bus daug švaresnis už sąsają nei iškviesdamas antrinį procesą iš mazgo ir analizuodamas stdout!
7 žingsnis: Išbandykite
Norėdami paleisti programą, tiesiog eikite į tą aplanką ir įveskite „node index.js“(arba „npm start“, nes mes jį anksčiau sukonfigūravome „package.json“). Žurnale turėtumėte pamatyti programą, kuri prisijungia prie OSMC/„Kodi“ir pirmą kartą nuskaito. Po kelių sekundžių failas album_directories.json bus sukurtas projekto kataloge; Tada galite įvesti NFC žymų ID, kaip paaiškinta anksčiau, ir susieti juos su norimais albumais.
8 veiksmas: paleiskite automatiškai
Apibendrinant, mes sukūrėme „Node“programą, kuri (1) nuskaito jūsų KODI paveikslėlių biblioteką ir bando rasti aplanką, kuriame saugote atostogų nuotraukas, (2) klauso NCF žymų, remdamasi „explorenfc-basic“ir tada (3) paleidžia albumą, susietą su šiuo NFC ID.
Kad visas šis procesas vyktų fone, mes naudosime PM2, mazgo proceso tvarkyklę.
Komandinėje eilutėje eikite į savo projektų aplanką (kuriame yra jūsų index.js failas) ir įveskite šias eilutes:
sudo npm įdiegti pm2 -gpm2 pradėti index.js
Dabar jūsų programą stebi PM2 ir ji bus automatiškai paleista iš naujo! Norėdami įsitikinti, kad jis iš tikrųjų paleistas, įveskite pm2 sąrašą ir turėtumėte jį pamatyti sąraše. Jei norite matyti žurnalus, tiesiog įveskite pm2 žurnalus.
Rekomenduojamas:
[HASS.IO] Pradėkite kurti savo išmaniuosius namus be kodavimo - mažiau nei 100 USD: 6 veiksmai
[HASS.IO] Pradėkite kurti savo išmaniuosius namus be kodavimo už mažiau nei 100 USD: Pastaruoju metu aš blaškausi ir sėkmingai paversiu savo namus mažiau „idiotiškais“. Taigi aš pasidalinsiu, kaip sukurti išmaniųjų namų sistemą su maža kaina, dideliu suderinamumu, kuris veiktų sklandžiai ir stabiliai
Pradėkite savo Kalėdų šviesos šou mygtuku: 5 žingsniai
Pradėkite savo Kalėdų šviesos šou mygtuku: Kai rodote su muzika sinchronizuotą Kalėdų šviesos šou, galbūt norėsite pradėti šou paspausdami mygtuką. Ši pamoka taikoma tik šou, kuris valdomas naudojant „Falcon Pi Player“(FPP), veikiantį su „Raspberry Pi“. Jei bėgate F
Pradėkite savo pirmąjį projektą su avietėmis: mirksi šviesos diodas: 4 žingsniai
Pradėkite savo pirmąjį projektą su avietėmis: mirksi šviesos diodas: Šiame projekte aš jums parodysiu, kaip užprogramuoti „Raspberry Pi“, kad LED mirksėtų. Jei beveik nusipirkote „Raspberry pi“ir nieko nežinote, nuo ko pradėti, tai pamoka tai tinka. Be jūsų „Raspberry Pi“, kuriame veikia „Raspbian“
Sukurkite dinamišką „Snaps“skaidrių demonstraciją naudodami nuotraukų istoriją 3: 16 žingsnių
Sukurkite dinamišką savo momentinių nuotraukų demonstraciją naudodami „Photo Story 3“: tai yra vienas iš būdų sukurti „nice.wmv“nuotraukų skaidrių demonstraciją su panoraminiais ir mastelio keitimo efektais, naudojant daugiausia nemokamą programinę įrangą. Tikiuosi, kad yra paprastesnių būdų, bet neradau pamokomos temos. Mano metodas šiek tiek apeina namus, bet jis veikia
Rankų darbo atostogų nuotraukų kortelė, kuri yra dovana!: 8 žingsniai
Rankų darbo atostogų nuotraukų kortelė, kuri yra dovana!: Ši instrukcija parodys, kaip pasigaminti unikalų atvirukų rinkinį, kurį gavėjai gali įrėminti pasibaigus atostogų sezonui, ir dar lengviau, jei juos padovanosite IKEA nuotraukų rėmelį kartu su kortele. Šios kortelės gali būti