Tartalomjegyzék:

Indítsa el ünnepi képeinek diavetítését egy varázslattal!: 9 lépés (képekkel)
Indítsa el ünnepi képeinek diavetítését egy varázslattal!: 9 lépés (képekkel)

Videó: Indítsa el ünnepi képeinek diavetítését egy varázslattal!: 9 lépés (képekkel)

Videó: Indítsa el ünnepi képeinek diavetítését egy varázslattal!: 9 lépés (képekkel)
Videó: Обзор на смарт-часы Blackview X2 Black ⌚ 2024, Július
Anonim
Indítsa el ünnepi képeinek diavetítését egy varázslattal!
Indítsa el ünnepi képeinek diavetítését egy varázslattal!
Indítsa el ünnepi képeinek diavetítését egy varázslattal!
Indítsa el ünnepi képeinek diavetítését egy varázslattal!

Az évek során kialakult bennem egy szokás, hogy utazás közben magammal viszek egy kis figurát: gyakran veszek egy kicsi, üres artoy -t (mint a képen), és lefestem az ország zászlajához és témájához. m látogatóba (jelen esetben Szicíliába).

Az ötlet az, hogy az említett ország jelenetei vagy híres műemlékei előtt készítsen képeket a figuráról: sokkal viccesebbnek tartom, mint ha csak az emlékművel készítenek képeket (van Google erre, és sokkal olcsóbb), de mégis könnyebb, mint magam is minden képen szerepelni (őszinte nem rajongó)

Mivel mindig szórakoztató összegyűjteni azokat az embereket, akikkel nyaralni jártál néhány nappal azután, hogy visszatértél a képek megtekintésére, úgy gondoltam, jó lenne, ha minden figura automatikusan elindíthatna egy diavetítést az utazásról készült képekről.

Ez az utasítás elmagyarázza, hogyan csináltam, NFC, málna pi, nodejs és osmc használatával

1. lépés: A megoldás áttekintése

A megoldás áttekintése
A megoldás áttekintése
A megoldás áttekintése
A megoldás áttekintése

Mivel a teljes beállítás néhány dolgot tartalmaz, íme egy általános áttekintés arról, hogy mit kell tartalmaznia, hogy segítsen megérteni az alábbiakat:

Hardver

- a figura házi készítésű: mivel ezt az oktatóanyagot egy egyhetes koppenhágai/oslói/stockholmi/helsinki utazás kellős közepén írom, néhány képet is felteszek az utazáshoz készült figuráról

- minden figura alatt van egy NFC chip: kerek matricákat használok, amelyeket minden figura alá el tudok helyezni, de bármilyen más formát is használhat - csak győződjön meg arról, hogy az Ön által használt chip kompatibilis az olvasóval

- a képek megjelenítéséhez egy málna pi -t fogok használni, telepített OSMC -vel: ez a kedvenc médialejátszóm a TV -műsorokhoz és a filmekhez, így már csatlakoztatva van a TV -mhez

- Annak érdekében, hogy a málna pi olvassa az NFC -címkéket, hozzáadtam egy NFC -olvasót - az általam használt Explore -NFC az NXP -től, amely számos webhelyen elérhető: csatlakozik a Pi -hez és pajzsként működik

Szoftver

A Raspberry Pi -n egy NodeJS -szkript várja az NFC -címke olvasását: miután ez megtörtént, a szkript ellenőrzi az azonosítóját az érték/pár listában az OSMC képforrás minden mappájával és a megfelelő NFC -azonosítóval, a felhasználó.

A címke olvasásakor, ha az azonosító szerepel a listában, a Node parancsfájl utasítja az OSMC -t, hogy indítsa el a diavetítést az adott mappához. A lista létrehozásához/konfigurálásához ugyanaz a NodeJS parancsfájl 5 percenként indít beolvasási funkciót: keres minden könyvtárat az OSMC "Pictures" forrásában (a Kodi által kínált JSON-RPC API segítségével), és hozzáadja a listához, amelyet ezután a lemezre menti. A szövegfájl közvetlen szerkesztésével a felhasználó hozzáadhatja a megfelelő NFC azonosítót minden albumhoz.

2. lépés: A figura létrehozása

A figura létrehozása
A figura létrehozása
A figura létrehozása
A figura létrehozása
A figura létrehozása
A figura létrehozása
A figura létrehozása
A figura létrehozása

Nagyjából bármit használhatsz a figurádhoz: Imádom ezeket a vinil művészeti játékokat használni, mert viszonylag könnyen rajzolhatók még olyanok számára is, akik nem szeretnek rajzolni, és meglehetősen könnyen hordozhatók. Megrendelem üres, barkácsolt változatukban, a legkisebb méretben, amit kapnak, és rajzolok rájuk Posca markerek segítségével. Itt láthatja az egyiket, amelyet erre az útra készítettem, a négy ország zászlójával, amelyeket meglátogattunk - történetesen eléggé hasonlítottak ahhoz, hogy egyesítsem őket egymás mellett. Több réteg festéket is használhat, amíg valóban hagyja megszáradni, mielőtt a következőt festené. Miután befejeztem a festést, szeretek néhány percig hőpisztolyt használni a festéken, mivel olvastam, hogy valójában a hő segíti a Posca festékkészletet.

Az utolsó képen látható Sven - mindig neveket adok nekik -, aki egy meglehetősen hosszú reggel után pihenőt tart Oslóban. Nem az eredeti játék fejét kapta, mivel ezt egy perccel az indulás előtt sikerült elrontanom: le kellett szerelnem egy korábbi játékot, hogy a fejét használhassam. Nem mondhatom, hogy ez még soha nem történt…

3. lépés: Telepítse az OSMC -t

Telepítse az OSMC -t
Telepítse az OSMC -t

Az első dolog, amit megtettem, az OSMC telepítése volt a Raspberry Pi micro SD kártyájára: a mi beállításunkban médialejátszóként fogja használni a képeit. Nem részletezem ezt a szempontot, mivel meglehetősen jól dokumentált (néhány Instructable áll rendelkezésre, ha segítségre van szüksége). Csak töltse le a telepítőt a számítógépére, és kövesse az utasításokat. Miután befejeztem, csak csatlakoztattam egy billentyűzetet és egy egeret, és a HDMI -t a TV -hez, majd követtem a beállítás varázslót az időzóna beállításához stb.

Végül a forrásokhoz hozzáadtam azt a könyvtárat, ahol a képeimet tárolom: az én esetemben ugyanazon a hálózaton rögzített IP -címmel rendelkező NAS -on vannak tárolva, de USB -meghajtón vagy magán a saját mappában is tárolhatók, feltéve, hogy a micro SD elég nagy.

Amikor hozzáadja a forrást, meg kell adnia annak nevét: hagyhatja az alapértelmezettet, vagy módosíthatja, de feltétlenül írja le, mert később szükségünk lesz rá. Esetemben "MyPictures" -nek neveztem el

Most látnia kell a hozzáadott könyvtár tartalmát, és böngésznie a képeit: az én esetemben minden utazáshoz van egy alkönyvtárom.

Gratulálunk, most már van egy médiaközpontja a képeivel, és diavetítést indíthat egy adott mappához (bónuszként videók vagy zene lejátszására is használhatja)

4. lépés: Állítsa be az olvasót

Az utasíthatóság többi részében az SSH -n keresztül a parancssor segítségével csatlakozunk a Pi -hez. Ehhez csak csatlakoztassa a Pi -t a hálózatához Ethernet -kábellel, és használja a terminált vagy egy dedikált sotware -t a Pi -hez való csatlakozáshoz. Mac OS és Linux esetén a parancs az

ssh [email protected]

Meg kell adnia a jelszót, ez ismét osmc

Ahhoz, hogy az olvasó működni tudjon, engedélyezni kell az SPI-t: a legtöbb disztribúcióban, mint például a Raspbian, ezt a raspi-config, egy konfigurációs eszköz segítségével lehet elvégezni, amely lehetővé teszi bizonyos konfigurációs értékek módosítását.

Az OSMC azonban nem tartalmazza a raspi-config-ot, a saját biztonsága érdekében, amikor használja. Ehelyett kapcsolja ki a Raspberry -t, vegye ki a micro SD -kártyát, és csak csatlakoztassa a számítógéphez: a "boot" partíciónak most láthatónak kell lennie. Ott, a kötet gyökerében egy "config.txt" nevű fájlt fog látni - csak nyissa meg, és adja hozzá ezt a sort a végén:

"dtparam = spi = be"

Most mentheti a fájlt, az újraindítást és az SPI -t engedélyezni kell.

Ezt követően le kell töltenie a mellékelt ZIP fájlt, és ki kell csomagolnia a málnán - javaslom, hogy hozzon létre egy Projects mappát, és bontsa ki ott. Ehhez vagy csatlakozhat a Raspberry -hez FTP -vel SSH -n keresztül (én a CyberDuck -ot használom ehhez), vagy tegye a fájlt egy USB -meghajtóra, és használja a Kodi fájlkezelőjét a Raspberry Pi -re.

Akárhogy is, miután a zip fájlt átmásolta a Pi -be, navigálhat a mappába, ahová másolta, és kicsomagolja, áthelyezheti a kapott mappába, és telepítheti a csomagot:

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

Ha minden jól megy, csatlakoztatnia kell az olvasót, újra kell indítania, majd be kell lépnie

explorenfc-basic

Ha egy NFC chiphez közelít az olvasóhoz, akkor most egy csomó információt kell megjelenítenie a chipről (többek között az azonosítóját)

5. lépés: Telepítse a csomópontot, és hozza létre a projektet

Ezután telepítjük a NodeJS -t a málnára az alkalmazásunk megírásához.

Telepíteni szeretnénk a nodejs -t, de az alapértelmezett lerakat verziója nagyon régi, ezért először meg kell tennie az első lépést: a parancssori felületen írja be

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

Ezután gépelhet

sudo apt install nodejs

a nodejs és npm legújabb verziójának telepítéséhez.

Annak érdekében, hogy a KODI-t a nodejs-ről vezéreljük, egy npm csomagot fogunk használni, amelyet kodi-ws-nek hívnak.

Kezdjük egy új projekt létrehozásával: csak írja be a parancsot

npm init

Számos kérdést fog feltenni Önnek: legtöbbjüknél hagyhatja az alapértelmezettet, csak válasszon egy nevet az alkalmazásnak, és írja be a saját nevét a végén. Amikor a kezdőpontot megkérdezi, hagyja el az index.js fájlt

Ezzel létrejön egy package.json fájl, amely összegzi a csomag jellemzőit, például a függőségeit.

Most beléphet

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

Ha ezt követően megnyitja a package.json fájlt, megjegyzi, hogy ezeket a csomagokat hozzáadta a függőségekhez.

6. lépés: A kód, magyarázattal

A kód, magyarázva
A kód, magyarázva

Ehhez a lépéshez csatolták az alkalmazás kódját.

Elég sok naplózást hagytam, amelyek megjegyzéseket nem fűznek ahhoz, hogy megértsük a szkriptet, de et lebontjuk együtt.

Észre fogja venni, hogy az összes deklarált funkció ellenére a kód eleinte csak néhány dolgot tesz:

kodi ('localhost', 9090). then (funkció (kapcsolat) {

A szkript megpróbál csatlakozni az OSMC JSON-RPC API-hoz. Miután sikerült (és csak akkor), folytatódik a fájl többi részével.

Ha valamilyen oknál fogva nem a Raspberry Pi -ről futtatja ezt, módosítsa a localhost -ot az IP -címére. Győződjön meg arról is, hogy az OSMC szolgáltatásbeállításaiban (Beállítások/Szolgáltatások) jelölőnégyzet "Távvezérlés engedélyezése más rendszerek alkalmazásaiból" jelölőnégyzet (lásd a képet)

A fájl többi része többnyire a későbbiekben használni kívánt függvények deklarációja: a két innen ténylegesen elindított függvény (172/173. Sor)

scanAndSetCron (); listenForTag ();

A scanAndSetCronban:

- elindul a scanPictures funkció. Belül ellenőrizzük, hogy a "mypicturedirectory" változó, amely a képeinkhez vezető utat fogja tartani, üres. Ha igen, kérjük az OSMC -t, hogy adja meg a képtartalomhoz szükséges összes forrást (a getPictureDirectory függvény 11. sorában):

var piclist = várjon a kapcsolatra. Files. GetSources ("képek");

Az OSMC egy tömböt ad cserébe: minden elemnél ellenőrizzük, hogy a forrás neve tartalmazza -e a "My" -t: ha ez az eset, akkor képforrásként tároljuk (16. sor és azt követő sorok). Itt szeretné megváltoztatni a "My" karakterláncot arra, amelyet korábban a képek forrásaként megadott

if (piclist.sources .label.includes ("My")) {console.log (">>> Találtam a" + piclist.sources .file) könyvtárat); mypicturedirectory = piclist.sources .file; }

Most, hogy megvan a forrás elérési útja (lényegében az albumok gyökérmappája), megkérjük az OSMC -t, hogy szkennelje be, és adja hozzá minden mappa elérési útját az album_directories nevű tömbhöz (ha még nincs meg). Mivel ez a funkció X másodpercenként fog futni, a hozzáadása előtt ellenőrizzük, hogy a könyvtár nincs -e már a listában, és az NFC azonosítót üres karakterláncra állítjuk - így minden új mappa automatikusan hozzáadódik a képekhez kiegészítve - 46. sor

for (var j = 0; j <directories.length; j ++) {if (könyvtárak [j].filetype.includes ("könyvtár")) {if (searchDirectory (könyvtárak [j].fájl, album_könyvtárak)) {konzol. log (könyvtárak [j].file +"már ott"); } else {console.log (">> dir hozzáadása" + könyvtárak [j].file); album_könyvtár.push ({könyvtár: könyvtárak [j].fájl, nfc: ""}); }}}

A végén mentjük az album_directories tömböt egy json fájlba a Pi-n, amelyet minden alkalommal megpróbálunk betölteni, amikor a funkció végrehajtásra kerül: ez a scanAndSetCron függvény végén történik, ahol egy cron-szerű csomagot használunk a funkciónk futtatásának biztosítására. 15 másodpercenként.

Az általunk létrehozott JSON fájl, az album_directories.json, bármelyik jegyzettömb alkalmazással megnyitható. Miután ezt megtette, megjelenik a fotóalbumok listája, mindegyik üres "nfc" mezővel:

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

Ebben a mezőben most be kell illesztenie az albumhoz társítani kívánt címke azonosítóját. Ennek az azonosítónak a megszerzéséhez navigáljon az SW2827 mappába, futtassa az explorenfc-basic fájlt, és vizsgálja meg a használni kívánt címkét. A kapott kimenetben csak keresse meg az ISO14443A UID melletti értéket. Másolja át a konfigurálni kívánt albumba. Az én esetemben pl.

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

Mentse a fájlt, és annak tartalma betöltődik, amikor legközelebb elindítja az alkalmazást.

A listenForTag függvényben csak ezt tesszük: mivel úgy tűnik, hogy nincs dedikált portja a NodeJS olvasókönyvtárának, a bináris program elindításához gyermekfolyamatokra támaszkodunk:

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

Az eseményfigyelőre támaszkodunk, hogy megkapjuk a kimenetet ebből a végrehajtásból: a child.stdout.on ('data', function (data) visszahíváson belül ennek a parancsnak a kimenetét elemezzük az analyOutput függvénnyel: a sor, amelyet korábban láttunk, "ISO14443A UID:" kezdettel, mivel itt tároljuk a beolvasott címke azonosítóját. Miután megtaláltuk ezt a sort, levágjuk és tároljuk az azonosítót egy objektumban (az úgynevezett ID, hogyan eredeti).

Végül megpróbáljuk azonosítani ezt az azonosítót az album_directories objektumtömbbe beírt azonosítókkal (az album_directories.json fájlon keresztül töltve). Ha talál egyezést, utasítjuk az OSMC -t, hogy indítson diavetítést az adott mappához:

var nfcid = analysisOutput (adatok); console.log ("nfcid is" + nfcid.id); varrespondingalbum = searchTag (nfcid.id, album_könyvtárak); if (respondingalbum) {console.log ("Talált album" + JSON.stringify (levelezőgalbum) + "ehhez a címkéhez"); var args = [{'útvonal': levelezőkönyvtár.könyvtár}]; connection.run ('Player. Open', args); } listenForTag ();

Észreveszi, hogy a funkció végén újra elindítjuk a listenForTag -ot? Ez az egyetlen megoldás, amelyet az alkalmazás működésére találtam: az explorenfc-basic alapértelmezés szerint vár egy címkét, elolvassa, majd kilép. Az alkalmazásnak van egy folyamatos üzemmódja, amelyet az explorenfc -basic -k használatával hívhatunk meg, de ebben a módban a child_process soha nem adja ki a címke tartalmát, mivel soha nem ér véget (más szóval a child.stdout.on ('adatok') soha nem indul el). Mivel nem találtam más módot ennek az olvasónak a használatára, itt alapvetően az explorenfc-basic indítását végezzük el egyetlen címke módban, és amikor egy címkét olvasunk, elindítjuk a listenForTag-ot, és ezért újraindítjuk az explorenfc-basic programot.

Ha vissza kellene térnem (és azt hiszem, hogy fogok is), olyan NFC -olvasót választanék, amely több lehetőséget kínál: például az Adafruit (talán észrevetted, hogy nagyon szeretem őket) rendelkezik ezzel az olvasóval https:// www.adafruit.com/product/789, amely kompatibilis a libnfc -vel, ami szerintem azt jelenti, hogy az olvasó sokkal tisztább lesz a kezelőfelületén, mint egy gyermekfolyamat meghívása a csomóponton belül és az elemzés elemzése!

7. lépés: Próbáld ki

Az alkalmazás elindításához csak navigáljon ahhoz a mappához, és írja be a "node index.js" parancsot (vagy npm start, mivel korábban beállítottuk a package.json fájlban). A naplókban látnia kell az alkalmazást, amely először csatlakozik az OSMC/Kodi -hoz, és szkennel. Néhány másodperc múlva az album_directories.json fájl létrejön a projekt könyvtárában; Ezután megadhatja az NFC -címke azonosítóit a korábban leírtak szerint, és társíthatja azokat a kívánt albumokhoz.

8. lépés: Indítsa el automatikusan

Összefoglalva, létrehoztuk a Node alkalmazást, amely (1) megkeresi a KODI képkönyvtárat, és megpróbálja megtalálni azt a mappát, ahol az ünnepi képeit tárolja, (2) meghallgatja az NCF címkéket az explorenfc-basic, majd (3) elindítja az ehhez az NFC azonosítóhoz társított albumot.

Annak érdekében, hogy ez az egész folyamat a háttérben fusson, a PM2 -t, a csomópont folyamatkezelőjét fogjuk használni.

A parancssorban navigáljon a projektek mappájához (ahol az index.js fájl található), és írja be a következő sorokat:

sudo npm install pm2 -gpm2 start index.js

Alkalmazását most a PM2 figyeli, és automatikusan újraindul! Annak ellenőrzéséhez, hogy valóban elindult -e, írja be a pm2 list parancsot, és látnia kell a listában. Ha látni szeretné a naplókat, írja be a pm2 naplókat.

Ajánlott: