Obsah:
- Krok 1: Přehled řešení
- Krok 2: Vytvoření figurky
- Krok 3: Nainstalujte OSMC
- Krok 4: Konfigurace čtečky
- Krok 5: Nainstalujte Node a vytvořte projekt
- Krok 6: Kód, vysvětleno
- Krok 7: Zkuste to
- Krok 8: Spusťte automaticky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Za ta léta jsem si osvojil zvyk brát si s sebou na cesty malou figurku: často si kupuji malou, prázdnou artoy (jako ta na obrázku) a maluji ji tak, aby odpovídala vlajce a tématu země, ve které jsem jsem na návštěvě (v tomto případě na Sicílii).
Smyslem je potom vyfotit figurku před scénami nebo slavnými památkami z uvedené země: Připadá mi to mnohem zábavnější než mít obrázky pouze se samotnou památkou (na to existuje Google a je to mnohem levnější), ale stále jednodušší než mít být na každém obrázku sám (abych nebyl upřímný)
Protože je vždy zábavné shromáždit lidi, se kterými jste jeli o prázdninách, několik dní poté, co jste se vrátili, a podívat se na obrázky, říkal jsem si, že by bylo hezké, kdyby každá figurka mohla nějakým způsobem automaticky spustit prezentaci obrázků z výletu, pro který byla vytvořena..
Tento návod vysvětlí, jak jsem to udělal, pomocí NFC, malinového pi, nodejs a osmc
Krok 1: Přehled řešení
Protože celé nastavení obsahuje několik věcí, zde je obecný přehled toho, co je součástí, aby vám pomohl porozumět všemu, co následuje:
Hardware
- figurka je domácí: jelikož píši tyto instrukce přímo uprostřed týdenního výletu v Kodani/Oslo/Stockholmu/Helsinkách, přidám několik záběrů figurky, která byla pro tento výlet vyrobena
- pod každou figurkou je čip NFC: Používám kulaté nálepky, které se mi vejdou pod každou figurku, ale můžete použít jakýkoli jiný tvar - jen se ujistěte, že použitý čip je kompatibilní s vaší čtečkou
- k zobrazení obrázků použiji malinový pi s nainstalovaným OSMC: je to můj oblíbený přehrávač médií pro televizní pořady a filmy, takže je již připojen k mé televizi
- aby malina pi mohla číst NFC tagy, přidal jsem čtečku NFC - používal jsem Explore -NFC od NXP, dostupný na mnoha webech: zapojuje se do Pi a funguje jako štít
Software
Na Raspberry Pi čeká skript NodeJS na přečtení značky NFC: jakmile je hotovo, skript zkontroluje své ID podle seznamu hodnot/párů s každou složkou ze zdroje obrázků v OSMC a odpovídajícím ID NFC, jak je nakonfigurováno uživatel.
Když je tag přečten, pokud je ID v seznamu, skript Node řekne OSMC, aby spustil prezentaci pro tuto konkrétní složku. Aby bylo možné tento seznam sestavit/nakonfigurovat, spustí stejný skript NodeJS funkci skenování každých 5 minut: prohledá každý adresář ve zdroji „Obrázky“na OSMC (pomocí rozhraní JSON-RPC API, které Kodi nabízí) a přidá jej do seznamu, který se poté uloží na disk. Přímou úpravou tohoto textového souboru je pak uživatel schopen přidat odpovídající ID NFC pro každé album.
Krok 2: Vytvoření figurky
Pro svoji figurku můžete použít téměř cokoli, co se vám líbí: Miluji používání těchto vinylových uměleckých hraček, protože jsou - relativně - snadno čerpatelné i pro někoho, jako jsem já, který nerad kreslí, a poměrně snadno se nosí. Objednávám je v jejich prázdné, kutilské verzi, v nejmenší velikosti, kterou mají, a kreslím na ně pomocí značek Posca. Zde můžete vidět tu, kterou jsem vytvořil pro tento výlet, s vlajkami čtyř zemí, které jsme navštívili - shodou okolností byly dost podobné na to, abych je mohl kombinovat ze strany na stranu. Můžete použít několik vrstev barvy tak dlouho, dokud opravdu necháte každou zaschnout, než namalujete další. Poté, co jsem skončil s malováním, rád na pár minut použiji na barvu tavnou pistoli, protože jsem se dočetl, že je to vlastně teplo, které pomáhá sadě barev Posca.
Na posledním obrázku můžete vidět, že Sven - vždy jim dávám jména - má po docela dlouhém ránu přestávku v Oslu. Nemá hlavu z původní hračky, protože minutu před odjezdem se mi to podařilo pokazit: Musel jsem demontovat předchozí hračku, abych místo toho použil její hlavu. Nemohu říci, že se to nikdy předtím nestalo …
Krok 3: Nainstalujte OSMC
První věc, kterou jsem udělal, bylo nainstalovat OSMC na kartu micro SD pro Raspberry Pi: v našem nastavení bude sloužit jako přehrávač médií pro sledování vašich obrázků. Nebudu se o tomto aspektu příliš rozepisovat, protože je to docela dobře zdokumentováno (pokud potřebujete pomoc, je k dispozici několik instrukcí). Stačí si stáhnout instalační program do počítače a postupovat podle pokynů. Jakmile jsem skončil, jednoduše jsem připojil klávesnici a myš, připojil HDMI k televizoru a podle průvodce nastavením nastavil časové pásmo atd.
Nakonec jsem ke zdrojům přidal adresář, kam ukládám své obrázky: v mém případě jsou uloženy na NAS s pevnou IP ve stejné síti, ale můžete je také uložit na USB disk nebo do samotné domovské složky, za předpokladu, že je vaše micro SD dostatečně velká.
Při přidávání zdroje budete vyzváni k zadání názvu: výchozí hodnotu můžete ponechat nebo změnit, ale nezapomeňte si ji poznamenat, protože ji budeme potřebovat později. V mém případě jsem tomu říkal „Moje obrázky“
Nyní byste měli vidět obsah adresáře, který jste přidali, a procházet obrázky: v mém případě mám podadresář pro každé cestování.
Gratulujeme, nyní máte mediální centrum, na kterém jsou vaše obrázky, a můžete spustit prezentaci pro konkrétní složku (jako bonus ji můžete použít také k přehrávání videí nebo hudby)
Krok 4: Konfigurace čtečky
Po zbytek instruktážního programu se budeme k Pi připojovat pomocí příkazového řádku přes SSH. Chcete -li to provést, připojte Pi k síti pomocí ethernetového kabelu a pomocí terminálu nebo vyhrazeného sotwaru se připojte k Pi. Na Mac OS a Linux je příkaz
Budete požádáni o zadání hesla, je to opět osmc
Aby mohla čtečka fungovat, musí být povoleno SPI: ve většině distribucí, jako je Raspbian, to lze provést pomocí raspi-config, konfiguračního nástroje, který vám umožňuje změnit některé konfigurační hodnoty.
OSMC však neobsahuje raspi-config, pro vaši vlastní bezpečnost při používání. Místo toho vypněte Raspberry, vysuňte kartu micro SD a připojte ji k počítači: nyní by měl být viditelný oddíl „boot“. V kořenovém adresáři svazku uvidíte soubor s názvem „config.txt“- stačí jej otevřít a na konec přidat tento řádek:
"dtparam = spi = zapnuto"
Nyní můžete soubor uložit, restartovat a SPI by mělo být povoleno.
Poté budete muset stáhnout připojený soubor ZIP a rozbalit jej na malině - doporučuji vytvořit složku Projekty a tam ji rozbalit. Chcete -li to provést, můžete se buď připojit k Raspberry pomocí FTP přes SSH (k tomu používám CyberDuck), nebo umístit soubor na USB disk a pomocí správce souborů Kodi jej zkopírovat na Raspberry Pi.
Ať tak či onak, jakmile zkopírujete soubor zip do Pi, pak můžete přejít do složky, do které jste jej zkopírovali, a rozbalit jej, přesunout se do výsledné složky a nainstalovat balíček:
rozbalit SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb
Pokud vše půjde dobře, měli byste být schopni připojit čtečku, restartovat počítač a poté zadat
explorenfc-basic
Pokud se ke čtečce přiblížíte k čipu NFC, měl by nyní zobrazit hromadu informací z čipu (mimo jiné jeho ID)
Krok 5: Nainstalujte Node a vytvořte projekt
Dále nainstalujeme NodeJS na Raspberry a napíšeme naši aplikaci.
Chceme nainstalovat nodejs, ale verze výchozího úložiště je opravdu stará, takže musíte nejprve projít prvním krokem: v rozhraní příkazového řádku zadejte
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Poté můžete psát
sudo apt install nodejs
nainstalovat nejnovější verzi nodejs a npm k dispozici.
Abychom mohli KODI ovládat zevnitř nodejs, použijeme balíček npm nazvaný kodi-ws.
Začněme vytvořením nového projektu: stačí zadat příkaz
npm init
Bude vám položena řada otázek: u většiny z nich můžete ponechat výchozí nastavení, stačí vybrat název aplikace a na konci zadat své vlastní jméno. Až budete dotázáni na výchozí bod, ponechte index.js
Tím se vytvoří soubor package.json, který shrne vlastnosti vašeho balíčku, například jeho závislosti.
Nyní můžete vstoupit
sudo npm install kodi-ws sudo npm install jsonfilesudo npm install cronsudo npm install child_process
Pokud potom otevřete balíček.json, všimnete si, že všechny tyto balíčky byly přidány do závislostí.
Krok 6: Kód, vysvětleno
K tomuto kroku je připojen kód aplikace.
Zanechal jsem značné množství protokolování, které lze odkomentovat, abychom porozuměli skriptu, ale společně to rozdělíme.
Všimnete si, že navzdory všem deklarovaným funkcím kód zpočátku dělá jen několik věcí:
kodi ('localhost', 9090). pak (funkce (připojení) {
Skript se pokusí připojit k rozhraní OSMC JSON-RPC API. Jakmile se to podaří (a teprve potom), pokračuje se zbytkem souboru.
Pokud to z nějakého důvodu nespustíte ze svého Raspberry Pi, změňte localhost na vaši IP adresu. Také se ujistěte, že v nastavení služby v OSMC (Nastavení/Služby) je zaškrtávací políčko „Povolit dálkové ovládání z aplikací v jiných systémech“(viz obrázek)
Zbytek souboru jsou většinou deklarace funkcí, které použijeme později: dvě funkce, které jsou zde skutečně spuštěny, jsou (řádky 172/173)
scanAndSetCron (); listenForTag ();
V scanAndSetCron:
- je spuštěna funkce scanPictures. V něm kontrolujeme, zda je proměnná „mypicturedirectory“, která bude obsahovat cestu k našim obrázkům, prázdná. Pokud ano, požádáme OSMC, aby nám poskytl všechny zdroje, které má pro obsah obrázku (uvnitř funkce getPictureDirectory, řádek 11):
var piclist = čekejte na connection. Files. GetSources ("obrázky");
OSMC nám na oplátku poskytuje pole: u každé položky zkontrolujeme, zda název zdroje obsahuje „My“: v takovém případě jej uložíme jako zdroj obrázku (řádek 16 a následující). Zde budete chtít změnit řetězec z „My“na cokoli, co jste dříve zadali jako název zdroje obrázků
if (piclist.sources .label.includes ("My")) {console.log (">>> Found the directory" + piclist.sources .file); mypicturedirectory = piclist.sources .soubor; }
Nyní, když máme cestu ke zdroji (v podstatě kořenovou složku našich alb), požádáme OSMC, aby ji naskenovala a přidala cestu pro každou složku do pole s názvem album_directories (pokud již není). Protože tato funkce bude spuštěna každých X sekund, zkontrolujeme, zda adresář ještě není v seznamu, než jej přidáme, s ID NFC nastaveným na prázdný řetězec - tak bude každá nová složka, kterou přidáte do svých obrázků, automaticky doplněno - řádek 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áře [j].soubor +"již existuje"); } else {console.log (">> Přidávání adresářů" + adresáře [j].soubor); album_directories.push ({adresář: adresáře [j].soubor, nfc: ""}); }}}
Nakonec uložíme pole album_directories do souboru json na Pi, který se pokusíme načíst pokaždé, když je funkce spuštěna: to se stane na konci funkce scanAndSetCron, kde použijeme balíček podobný cronu, abychom zajistili spuštění naší funkce každých 15 sekund.
Soubor JSON, který generujeme, album_directories.json, lze otevřít pomocí jakékoli aplikace poznámkového bloku. Jakmile tak učiníte, zobrazí se vám seznam vašich fotoalb, každé s prázdným polem „nfc“:
[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"adresář": "/home/osmc/Obrázky/Test/", "nfc": ""}]
Do tohoto pole nyní musíte vložit ID značky, kterou chcete přiřadit k tomuto albu. Chcete-li získat toto ID, přejděte do složky SW2827, spusťte explorenfc-basic a naskenujte značku, kterou chcete použít. Na výstupu, který získáte, stačí hledat hodnotu vedle ISO14443A UID. Zkopírujte jej do alba, které chcete konfigurovat. V mém případě např.
[{"adresář": "/home/osmc/Obrázky/Mada 2016/", "nfc": "040A12EAFC3881"}, {"adresář": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" adresář ":"/home/osmc/Obrázky/Test/"," nfc ":" "}]
Uložte soubor a jeho obsah se načte při příštím spuštění aplikace.
Ve funkci listenForTag děláme právě to: protože se nezdá, že by pro NodeJS existoval vyhrazený port knihovny čtenářů, spoléháme se na to, že dětské procesy spustí binární soubor pro čtečku:
var spawn = require ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );
Při přijímání výstupu z tohoto provedení spoléháme na událostní listener: uvnitř zpětného volání pro child.stdout.on ('data', function (data) analyzujeme výstup tohoto příkazu pomocí funkce analyzeOutput: hledáme řádek, který jsme viděli dříve, počínaje „ISO14443A UID:“, protože tam je uloženo ID pro značku, kterou jsme skenovali. Jakmile tento řádek najdeme, zkrátíme jej a ID uložíme do objektu (nazývaného ID, jak originál).
Nakonec se pokusíme přiřadit toto ID k ID, která jsme zadali do pole objektů album_directories (načteno prostřednictvím souboru album_directories.json). Pokud je nalezena shoda, zadáváme OSMC spuštění prezentace pro tuto konkrétní složku:
var nfcid = analyzeOutput (data); console.log ("nfcid is" + nfcid.id); var odpovídající album = searchTag (nfcid.id, album_directories); if (correspondingalbum) {console.log ("Found album" + JSON.stringify (correspondingalbum) + "for this tag"); var args = [{'cesta': korespondenční album.directory}]; connection.run ('Player. Open', args); } listenForTag ();
Všimli jste si, jak na konci funkce znovu spustíme listenForTag? To je jediné řešení, které jsem našel, aby aplikace fungovala: explorenfc-basic bude ve výchozím nastavení čekat na značku, přečíst si ji a poté ukončit. Aplikace má nepřetržitý režim, který můžeme volat pomocí explorenfc -basic -k, ale v tomto režimu child_process nikdy nevydává obsah tagu, protože nikdy nekončí (jinými slovy child.stdout.on ('data') se nikdy nespouští). Jelikož jsem nenašel žádný jiný způsob, jak tuto čtečku použít, děláme zde v zásadě spouštění explorenfc-basic v režimu jedné značky, a když je tag přečten, spustíme listenForTag, a proto restartujeme explorenfc-basic.
Pokud bych se měl vrátit (a myslím, že budu), zvolil bych čtečku NFC, která nabízí více možností: například Adafruit (možná jste si všimli, že je mám velmi rád) má tuto čtečku https:// www.adafruit.com/product/789, který je kompatibilní s libnfc, což podle mě znamená, že čtečka bude mnohem čistší na rozhraní než volat podřízený proces zevnitř uzlu a analyzovat stdout!
Krok 7: Zkuste to
Chcete -li aplikaci spustit, přejděte do této složky a zadejte „node index.js“(nebo npm start, protože jsme ji nakonfigurovali dříve v Package.json). V protokolech byste měli vidět připojení aplikace k OSMC/Kodi a první skenování. Po několika sekundách se v adresáři projektu vytvoří soubor album_directories.json; Poté můžete zadat ID tagů NFC, jak bylo vysvětleno výše, a přiřadit je k požadovaným albům.
Krok 8: Spusťte automaticky
Abychom to shrnuli, vytvořili jsme aplikaci Node, která (1) prohledává vaši knihovnu obrázků KODI a pokusí se najít složku, kam ukládáte obrázky z dovolené, (2) naslouchá tagům NCF spoléháním na explorenfc-basic a poté (3) spustí album spojené s tímto NFC ID.
Aby celý tento proces běžel na pozadí, použijeme PM2, správce procesů pro uzel.
Na příkazovém řádku přejděte do složky projektů (kde se nachází váš soubor index.js) a zadejte následující řádky:
sudo npm install pm2 -gpm2 start index.js
Vaše aplikace je nyní monitorována PM2 a bude automaticky restartována! Abyste se ujistili, že je skutečně spuštěn, zadejte seznam pm2 a měli byste ho v seznamu vidět. Pokud chcete zobrazit protokoly, zadejte protokoly pm2.
Doporučuje:
Jak vytvořit prezentaci v PowerPointu: 18 kroků
Jak vytvořit prezentaci v PowerPointu: Prohlášení - Toto je obecný úvod k vytvoření základní prezentace v aplikaci Microsoft PowerPoint, nejedná se o vyčerpávající výukový program. Kroky se mohou lišit v závislosti na verzi aplikace PowerPoint, kterou používáte, a na operačním systému vašeho počítače
Transformace obrázku na sochu hmoždinky: 7 kroků (s obrázky)
Transformace obrázku na sochu hmoždinky: V tomto projektu jsem převedl obrázek horkovzdušného balónu na sochu hmoždinky. Konečnou strukturou je transformace digitální informace uložené na fotografii do fyzického 3D objektu. Postavil jsem sochu, abych pomohl vizualizovat, jak si představ
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: 13 kroků (s obrázky)
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: Toto je návod, jak rozebrat počítač. Většina základních komponent je modulární a lze je snadno odstranit. Je však důležité, abyste o tom byli organizovaní. To vám pomůže zabránit ztrátě součástí a také při opětovné montáži
Rámeček obrázku Neo Pixel LED: 6 kroků (s obrázky)
Fotorámeček Neo Pixel LED: Ještě jednou dobrý den! Tento projekt jsem udělal speciálně pro " barvy duhy " soutěž. Pokud se vám to líbí, hlasujte pro mě v soutěži, a tak jsem se rozhodl vytvořit opravdu rychlý a snadný projekt pro soutěž. Jedná se o neo-pixel L
Vytvořte dynamickou prezentaci svých snímků pomocí Photo Story 3: 16 kroků
Vytvořte dynamickou prezentaci snímků pomocí aplikace Photo Story 3: Toto je jeden ze způsobů, jak vytvořit pěknou prezentaci fotografií. Wmv s efekty posouvání a zvětšování pomocí převážně bezplatného softwaru. Očekávám, že existují jednodušší způsoby, ale nenašel jsem návod k tomuto tématu. Moje metoda trochu obchází domy, ale funguje