Obsah:

Spustite svoju prezentáciu prázdninových fotografií s kúzlom mágie!: 9 krokov (s obrázkami)
Spustite svoju prezentáciu prázdninových fotografií s kúzlom mágie!: 9 krokov (s obrázkami)

Video: Spustite svoju prezentáciu prázdninových fotografií s kúzlom mágie!: 9 krokov (s obrázkami)

Video: Spustite svoju prezentáciu prázdninových fotografií s kúzlom mágie!: 9 krokov (s obrázkami)
Video: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, November
Anonim
Spustite svoju prezentáciu fotografií z dovolenky s nádychom mágie!
Spustite svoju prezentáciu fotografií z dovolenky s nádychom mágie!
Spustite svoju prezentáciu fotografií z dovolenky s nádychom mágie!
Spustite svoju prezentáciu fotografií z dovolenky s nádychom mágie!

Za tie roky som si zvykol brať so sebou na cesty malú figúrku: často kupujem malú, prázdnu figúrku (ako na obrázku) a maľujem ju tak, aby zodpovedala vlajke a téme krajiny, v ktorej sa nachádzam. som na návšteve (v tomto prípade na Sicílii).

Ide potom o to, odfotiť figúrku pred scénami alebo známymi pamiatkami z uvedenej krajiny: Pripadá mi to oveľa zábavnejšie, ako mať obrázky iba so samotným pamätníkom (na to existuje Google a je to oveľa lacnejšie), ale stále jednoduchšie ako mať byť sám na každom obrázku (nie som fanúšik, aby som bol úprimný)

Pretože je vždy zábavné zhromaždiť ľudí, s ktorými ste išli na prázdniny niekoľko dní po návrate, a pozrieť sa na obrázky, povedal som si, že by bolo pekné, keby každá figúrka mohla nejako automaticky spustiť prezentáciu obrázkov z výletu, pre ktorý boli vyrobené..

Tento návod vysvetlí, ako som to urobil, pomocou NFC, malinového pi, nodejs a osmc.

Krok 1: Prehľad riešenia

Prehľad riešenia
Prehľad riešenia
Prehľad riešenia
Prehľad riešenia

Pretože celé nastavenie obsahuje niekoľko vecí, tu je všeobecný prehľad toho, čo je súčasťou, aby ste pochopili všetko, čo nasleduje:

Hardvér

- figúrka je domáca: keďže tieto návody píšem priamo uprostred týždenného výletu v Kodani/Osle/Štokholme/Helsinkách, priložím niekoľko záberov figuríny, ktorá bola na tento výlet vyrobená

- pod každou figúrkou je čip NFC: používam okrúhle nálepky, ktoré sa mi hodia pod každú figúrku, ale môžete použiť aj iný tvar - uistite sa, že čip, ktorý používate, je kompatibilný s vašou čítačkou

- na zobrazenie obrázkov použijem malinový pi s nainštalovaným OSMC: je to môj obľúbený prehrávač médií pre televízne relácie a filmy, takže je už pripojený k môjmu televízoru

- aby malinový pi mohol čítať značky NFC, pridal som čítačku NFC - použil som čítačku Explore -NFC od NXP, dostupnú na mnohých webových stránkach: pripája sa k Pi a funguje ako štít

Softvér

Na Raspberry Pi skript NodeJS čaká na prečítanie značky NFC: akonáhle je to hotové, skript skontroluje svoje ID v zozname hodnôt/párov s každým priečinkom zo zdroja obrázkov v OSMC a zodpovedajúcim ID NFC nakonfigurovaným používateľ.

Keď je tag prečítaný a ak je ID v zozname, skript Node povie OSMC, aby spustil prezentáciu pre tento konkrétny priečinok. Na zostavenie/konfiguráciu tohto zoznamu spustí ten istý skript NodeJS funkciu skenovania každých 5 minút: prehľadá každý adresár v zdroji „Obrázky“na OSMC (pomocou rozhrania JSON-RPC API, ktoré ponúka spoločnosť Kodi) a pridá ho do zoznamu, ktorý sa potom uloží na disk. Úpravou tohto textového súboru priamo je potom užívateľ schopný pridať zodpovedajúce ID NFC pre každý album.

Krok 2: Vytvorenie figúrky

Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky
Vytvorenie figúrky

Na svoju figúrku môžete použiť takmer čokoľvek, čo sa vám páči: Milujem používanie týchto vinylových umeleckých hračiek, pretože sú - relatívne - jednoduché na kreslenie aj pre niekoho, ako som ja, ktorý nerád kreslí, a pomerne ľahko sa nosí. Objednávam ich v prázdnej verzii pre domácich majstrov, v najmenšej veľkosti, v akej sú, a kreslím na ne pomocou značiek Posca. Tu vidíte ten, ktorý som vyrobil pre tento výlet, s vlajkami štyroch krajín, ktoré sme navštívili - boli si dosť podobné na to, aby som ich skombinoval zo strany na stranu. Môžete použiť niekoľko vrstiev farby, pokiaľ každú z nich skutočne necháte zaschnúť a až potom natriete ďalšiu. Potom, čo som skončil s maľovaním, rád na pár minút použijem teplovzdušnú pištoľ na farbu, pretože som sa dočítal, že v skutočnosti sade farby Posca pomáha teplo.

Na poslednom obrázku môžete vidieť, že Sven - vždy im dávam mená - má prestávku v Osle po poriadne dlhom ráne. Nemá hlavu z pôvodnej hračky, pretože som to stihol pokaziť jednu minútu pred odchodom: musel som demontovať predchádzajúcu hračku, aby som namiesto toho použil jej hlavu. Nemôžem povedať, že sa to nikdy predtým nestalo …

Krok 3: Nainštalujte OSMC

Nainštalujte OSMC
Nainštalujte OSMC

Prvá vec, ktorú som urobil, bolo nainštalovať OSMC na kartu micro SD pre Raspberry Pi: v našom nastavení bude slúžiť ako prehrávač médií na sledovanie vašich obrázkov. Nebudem sa veľmi rozpisovať o tomto aspekte, pretože je pomerne dobre zdokumentovaný (ak potrebujete pomoc, je k dispozícii niekoľko inštrukcií). Stačí stiahnuť inštalátor do počítača a postupovať podľa pokynov. Akonáhle som skončil, jednoducho som zapojil klávesnicu a myš, zapojil HDMI do televízora a podľa sprievodcu nastavením nastavil časové pásmo atď.

Nakoniec som k zdrojom pridal adresár, kam ukladám svoje obrázky: v mojom prípade sú uložené na NAS s pevnou IP v rovnakej sieti, ale môžete ich uložiť aj na USB disk alebo do samotného domovského priečinka, za predpokladu, že je váš micro SD dostatočne veľký.

Pri pridávaní zdroja budete požiadaní o zadanie názvu: môžete ponechať predvolené nastavenie alebo ho zmeniť, ale nezabudnite si to zapísať, pretože ho budeme potrebovať neskôr. V mojom prípade som to nazval „Moje obrázky“

Teraz by ste mali vidieť obsah adresára, ktorý ste pridali, a prehliadať si obrázky: v mojom prípade mám pre každé cestovanie podadresár.

Gratulujeme, teraz máte mediálne centrum, na ktorom sú vaše obrázky, a môžete spustiť prezentáciu pre konkrétny priečinok (ako bonus ho môžete použiť aj na prehrávanie videí alebo hudby)

Krok 4: Nakonfigurujte čítačku

Vo zvyšku inštrukcií sa budeme k Pi pripájať pomocou príkazového riadka cez SSH. Ak to chcete urobiť, stačí pripojiť Pi k vašej sieti pomocou ethernetového kábla a pomocou terminálu alebo špeciálneho sotwaru sa pripojiť k Pi. V systéme Mac OS a Linux je príkaz

ssh [email protected]

Budete vyzvaní na zadanie hesla, je to znova osmc

Aby čitateľ mohol fungovať, musí byť povolený SPI: vo väčšine distribúcií, ako je Raspbian, to možno vykonať pomocou raspi-config, konfiguračného nástroja, ktorý vám umožňuje zmeniť niektoré konfiguračné hodnoty.

OSMC však neobsahuje raspi-config, pre vašu vlastnú bezpečnosť pri jeho používaní. Namiesto toho vypnite Raspberry, vysuňte kartu micro SD a jednoducho ju pripojte k počítaču: oddiel „boot“by mal byť teraz viditeľný. V koreňovom adresári zväzku uvidíte súbor s názvom „config.txt“- stačí ho otvoriť a na koniec pridať tento riadok:

"dtparam = spi = zapnuté"

Teraz môžete súbor uložiť, reštartovať a SPI by malo byť povolené.

Potom si budete musieť stiahnuť priložený súbor ZIP a rozbaliť ho na maline - odporúčam vytvoriť priečinok Projekty a tam ho rozbaliť. Ak to chcete urobiť, môžete sa buď pripojiť k Raspberry pomocou FTP cez SSH (na to používam CyberDuck), alebo vložiť súbor na USB disk a pomocou správcu súborov Kodi ho skopírovať na Raspberry Pi.

V každom prípade, akonáhle skopírujete súbor zip do súboru Pi, potom môžete prejsť do priečinka, do ktorého ste ho skopírovali, a rozbaliť ho, presunúť sa do výsledného priečinka a nainštalovať balík:

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

Ak všetko pôjde dobre, mali by ste byť schopní pripojiť čítačku, reštartovať počítač a potom vstúpiť

explorenfc-basic

Ak sa k čítačke priblížite k čipu NFC, mal by teraz zobrazovať veľa informácií z čipu (okrem iného aj jeho ID)

Krok 5: Nainštalujte uzol a vytvorte projekt

Ďalej nainštalujeme NodeJS na malinu, aby sme mohli písať našu aplikáciu.

Chceme nainštalovať nodejs, ale verzia predvoleného úložiska je skutočne stará, takže musíte najskôr prejsť prvým krokom: do rozhrania príkazového riadka zadajte

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

Potom môžete písať

sudo apt install nodejs

nainštalovať najnovšiu verziu nodejs a npm, ktoré sú k dispozícii.

Aby sme mohli ovládať KODI zvnútra nodejs, použijeme balík npm s názvom kodi-ws.

Začnime vytvorením nového projektu: stačí napísať príkaz

npm init

Bude vám položených niekoľko otázok: Pre väčšinu z nich môžete ponechať predvolené nastavenia, stačí vybrať názov aplikácie a na konci zadať svoje vlastné meno. Keď sa vás opýta na počiatočný bod, nechajte index.js

Vytvorí sa súbor package.json, ktorý zhrnie vlastnosti vášho balíka, napríklad jeho závislosti.

Teraz môžete vstúpiť

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

Ak potom otvoríte balík.json, všimnete si, že všetky tieto balíky boli pridané do závislostí.

Krok 6: Vysvetlenie kódu

Vysvetlenie kódu
Vysvetlenie kódu

K tomuto kroku je pripojený kód aplikácie.

Nechal som značné množstvo protokolovania, ktoré je možné odkomentovať, aby sme porozumeli scenáru, ale spoločne to rozoberieme.

Všimnite si, že napriek všetkým deklarovaným funkciám kód na začiatku robí iba niekoľko vecí:

kodi ('localhost', 9090). potom (funkcia (pripojenie) {

Skript sa pokúša pripojiť k rozhraniu OSMC JSON-RPC API. Keď sa to podarí (a iba potom), pokračuje sa so zvyškom súboru.

Ak to z nejakého dôvodu nespúšťate zo svojho Raspberry Pi, zmeňte localhost na svoju IP adresu. Tiež sa uistite, že v nastaveniach služby v OSMC (Nastavenia/Služby) je začiarkavacie políčko „Povoliť diaľkové ovládanie z aplikácií v iných systémoch“(pozri obrázok)

Zvyšok súboru sú väčšinou deklarácie funkcií, ktoré použijeme neskôr: dve funkcie, ktoré sa odtiaľ skutočne spustia, sú (riadky 172/173)

scanAndSetCron (); listenForTag ();

V programe scanAndSetCron:

- je spustená funkcia scanPictures. V jeho vnútri kontrolujeme, či je premenná „mypicturedirectory“, ktorá bude obsahovať cestu k našim obrázkom, prázdna. Ak je, požiadame OSMC, aby nám poskytol všetky zdroje, ktoré má k obrazovému obsahu (vo funkcii getPictureDirectory, riadok 11):

var piclist = čakajte na connection. Files. GetSources („obrázky“);

OSMC nám dáva na oplátku pole: pre každú položku skontrolujeme, či názov zdroja obsahuje „My“: ak je to tak, uložíme ho ako svoj zdroj obrázku (riadok 16 a nasledujúci). Tu budete chcieť zmeniť reťazec z „My“na čokoľvek, čo ste predtým zadali ako názov zdroja obrázkov

if (piclist.sources .label.includes ("My")) {console.log (">>> Found the directory" + piclist.sources .file); mypicturedirectory = piclist.sources .súbor; }

Teraz, keď máme cestu k zdroju (v podstate koreňový priečinok našich albumov), požiadame OSMC, aby ho skenoval a pridal cestu pre každý priečinok do poľa s názvom album_directories (ak tam ešte nie je). Pretože táto funkcia bude spustená každých X sekúnd, pred pridaním skontrolujeme, či adresár ešte nie je v zozname, pričom NFC ID je nastavené na prázdny reťazec - každý nový priečinok, ktorý pridáte do svojich fotografií, bude tak automaticky doplnené - riadok 46

for (var j = 0; j <directories.length; j ++) {if (directories [j].filetype.includes ("directory")) {if (searchDirectory (directories [j].file, album_directories)) {console. log (adresáre [j].súbor +"už tam"); } else {console.log (">> Pridavanie dir" + adresare [j].file); album_directories.push ({adresár: adresáre [j].file, nfc: ""}); }}}

Na konci uložíme pole album_directories do súboru json na Pi, ktorý sa pokúsime načítať pri každom spustení funkcie: toto sa stane na konci funkcie scanAndSetCron, kde pomocou balíka podobného cronu zaistíme spustenie našej funkcie každých 15 sekúnd.

Súbor JSON, ktorý generujeme, album_directories.json, je možné otvoriť pomocou ľubovoľnej aplikácie poznámkového bloku. Akonáhle to urobíte, zobrazí sa vám zoznam vašich fotoalbumov, z ktorých každý má prázdne pole „nfc“:

[{"adresár": "/domov/osmc/Obrázky/Mada 2016/", "nfc": ""}}, {"adresár": "/domov/osmc/Obrázky/NewFolder/", "nfc": "" }, {"adresár": "/domov/osmc/obrázky/test/", "nfc": ""}]

Do tohto poľa teraz musíte vložiť ID značky, ktorú chcete priradiť k tomuto albumu. Ak chcete získať toto ID, stačí prejsť do priečinka SW2827, spustiť explorenfc-basic a naskenovať značku, ktorú chcete použiť. Na výstupe, ktorý získate, stačí hľadať hodnotu vedľa ISO14443A UID. Skopírujte ho do albumu, ktorý chcete konfigurovať. V mojom prípade napr.

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" adresár ":"/domov/osmc/obrázky/test/"," nfc ":" "}]

Uložte súbor a jeho obsah sa načíta pri ďalšom spustení aplikácie.

Vo funkcii listenForTag robíme len to: pretože sa zdá, že neexistuje vyhradený port knižnice čítačiek pre NodeJS, pri spustení binárneho súboru pre čítačku sa spoliehame na detské procesy:

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

Na prijatie výstupu z tohto spustenia sa spoliehame na zariadenie na zachytávanie udalostí: vo vnútri spätného volania pre dieťa.stdout.on („údaje“, funkcia (údaje) analyzujeme výstup tohto príkazu pomocou funkcie analyzeOutput: hľadáme riadok, ktorý sme videli skôr, začínajúc „ISO14443A UID:“, pretože tam je uložené ID pre značku, ktorú sme skenovali. Akonáhle tento riadok nájdeme, skrátime ho a ID uložíme do objektu (nazývaného ID, ako originál).

Nakoniec sa pokúsime priradiť toto ID k identifikátorom, ktoré sme zadali do poľa objektov album_directories (načítaných prostredníctvom súboru album_directories.json). Ak sa nájde zhoda, dávame príkazu OSMC, aby spustil prezentáciu pre tento konkrétny priečinok:

var nfcid = analyzeOutput (údaje); console.log ("nfcid je" + nfcid.id); var zodpovedajúci album = searchTag (nfcid.id, adresáre_albumov); if (correspondingalbum) {console.log ("Found album" + JSON.stringify (correspondingalbum) + "for this tag"); var args = [{'cesta': zodpovedajúci album.directory}]; connection.run ('Player. Open', args); } listenForTag ();

Všimli ste si, ako na konci funkcie znova spustíme listenForTag? To je jediné riešenie, ktoré mi prinieslo správnu funkciu aplikácie: explorenfc-basic bude predvolene čakať na značku, prečítať ju a potom ukončiť. Aplikácia má nepretržitý režim, ktorý môžeme volať pomocou explorenfc -basic -k, ale v tomto režime child_process nikdy nevydáva obsah značky, pretože sa nikdy nekončí (inými slovami, dieťa.stdout.on ('data') sa nikdy nespúšťa). Pretože som nenašiel žiadny iný spôsob použitia tejto čítačky, robíme tu v podstate spustenie programu explorenfc-basic v režime jednej značky a keď je tag prečítaný, spustíme nástroj listenForTag, a preto znova spustíme program explorenfc-basic.

Ak by som sa mal vrátiť (a myslím, že aj urobím), vybral by som si čítačku NFC, ktorá ponúka viac možností: napríklad Adafruit (možno ste si všimli, že ich mám veľmi rád) má túto čítačku https:// www.adafruit.com/product/789, ktorý je kompatibilný s libnfc, čo podľa mňa znamená, že s čítačkou bude oveľa prehľadnejšie komunikovať, ako s volaním podradeného procesu zvnútra uzla a rozoberaním výstupov!

Krok 7: Skúste to

Aplikáciu spustíte tak, že prejdete do tohto priečinka a zadáte príkaz „node index.js“(alebo npm start, pretože sme ho predtým nakonfigurovali v balíku package.json). V denníkoch by ste mali vidieť aplikáciu, ktorá sa pripája k OSMC/Kodi a prvýkrát skenuje. Po niekoľkých sekundách sa v adresári projektu vytvorí súbor album_directories.json; Potom môžete zadať ID značiek NFC, ako bolo vysvetlené vyššie, a priradiť ich k požadovaným albumom.

Krok 8: Spustite automaticky

Aby sme to zhrnuli, vytvorili sme aplikáciu Node, ktorá (1) skenuje vašu knižnicu obrázkov KODI a pokúša sa nájsť priečinok, do ktorého ukladáte obrázky z dovolenky, (2) počúva značky NCF a spolieha sa na explorenfc-basic a potom (3) spustí album spojený s týmto NFC ID.

Aby bol celý tento proces spustený na pozadí, použijeme PM2, správcu procesov pre uzol.

V príkazovom riadku prejdite do priečinka projektov (kde sa nachádza váš súbor index.js) a zadajte nasledujúce riadky:

sudo npm install pm2 -gpm2 start index.js

Vaša aplikácia je teraz monitorovaná systémom PM2 a bude sa automaticky reštartovať! Aby ste sa uistili, že je skutočne spustený, zadajte príkaz pm2 list a v zozname by ste ho mali vidieť. Ak chcete zobraziť protokoly, zadajte protokoly pm2.

Odporúča: