Isi kandungan:

Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: 9 Langkah (dengan Gambar)
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: 9 Langkah (dengan Gambar)

Video: Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: 9 Langkah (dengan Gambar)

Video: Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!: 9 Langkah (dengan Gambar)
Video: Adakah sebab ini Diana Danielle mahu berpisah... 2024, Julai
Anonim
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!
Lancarkan Tayangan Tayangan Gambar Percutian Anda Dengan Sentuhan Sihir!

Selama bertahun-tahun, saya telah mengembangkan kebiasaan mengambil patung kecil dengan saya ketika dalam perjalanan: Saya sering membeli artoy kosong (seperti gambar dalam gambar) dan melukisnya agar sesuai dengan bendera dan tema negara yang saya ' saya melawat (dalam kes ini, Sisilia).

Ideanya kemudian adalah untuk mengambil gambar patung di hadapan pemandangan atau monumen terkenal dari negara tersebut: Saya merasa lebih lucu daripada mempunyai gambar dengan monumen itu sendiri (ada Google untuk itu dan jauh lebih murah) tetapi masih lebih mudah daripada mempunyai untuk berada di setiap gambar sendiri (bukan peminat, jujur)

Oleh kerana selalu seronok mengumpulkan orang-orang yang anda pergi bercuti dengan beberapa hari setelah kembali menonton gambar, saya fikir akan lebih baik sekiranya setiap patung itu secara automatik dapat melancarkan tayangan gambar secara automatik dari perjalanan yang mereka buat.

Petunjuk ini akan menerangkan bagaimana saya melakukannya, dengan menggunakan NFC, pi raspberry, nodejs dan osmc

Langkah 1: Gambaran Keseluruhan Penyelesaian

Gambaran Keseluruhan Penyelesaiannya
Gambaran Keseluruhan Penyelesaiannya
Gambaran Keseluruhan Penyelesaiannya
Gambaran Keseluruhan Penyelesaiannya

Oleh kerana keseluruhan penyediaan merangkumi beberapa perkara, berikut adalah gambaran umum umum mengenai apa yang terlibat untuk membantu anda memahami semua perkara berikut:

Perkakasan

- patung itu buatan sendiri: kerana saya menulis petunjuk ini tepat di tengah-tengah perjalanan seminggu di Copenhagen / Oslo / Stockholm / Helsinki, saya akan memasukkan beberapa gambar patung yang dibuat untuk perjalanan ini

- di bawah setiap patung terdapat cip NFC: Saya menggunakan pelekat bulat yang boleh saya pasangkan di bawah setiap arca tetapi anda boleh menggunakan faktor bentuk lain - pastikan cip yang anda gunakan serasi dengan pembaca anda

- untuk memaparkan gambar, saya akan menggunakan raspberry pi dengan OSMC terpasang: pemain pilihan media saya untuk rancangan TV dan Filem jadi sudah disambungkan ke TV saya

- agar pi raspberry membaca tag NFC, saya menambahkan pembaca NFC - yang saya gunakan ialah Explore-NFC dari NXP, tersedia di banyak laman web: ia dipasang ke Pi dan bertindak sebagai perisai

Perisian

Pada Raspberry Pi, skrip NodeJS menunggu tag NFC dibaca: setelah selesai, skrip akan memeriksa IDnya terhadap senarai nilai / pasangan dengan setiap folder dari sumber gambar di OSMC dan NFC ID yang sesuai seperti yang dikonfigurasi oleh pengguna.

Semasa tag dibaca, jika ID ada dalam senarai, skrip Node memberitahu OSMC untuk melancarkan tayangan slaid untuk folder khusus ini. Untuk membina / mengkonfigurasi senarai itu, skrip NodeJS yang sama melancarkan fungsi pengimbasan setiap 5 minit: ia mengimbas setiap direktori di dalam sumber "Gambar" pada OSMC (menggunakan JSON-RPC API yang ditawarkan Kodi) dan menambahkannya ke senarai yang kemudian disimpan pada cakera. Dengan mengedit fail teks ini secara langsung, pengguna kemudian dapat menambahkan ID NFC yang sesuai untuk setiap album.

Langkah 2: Membuat Figurine

Membuat Figurine
Membuat Figurine
Membuat Figurine
Membuat Figurine
Membuat Figurine
Membuat Figurine
Membuat Figurine
Membuat Figurine

Anda boleh menggunakan apa sahaja yang anda suka untuk patung anda: Saya suka menggunakan mainan seni vinil itu kerana mereka - agak - senang digambar walaupun untuk orang seperti saya yang tidak suka melukis, dan agak mudah dibawa. Saya memesannya dalam versi DIY kosong mereka, dalam ukuran terkecil yang mereka dapatkan, dan menariknya menggunakan penanda Posca. Di sini anda dapat melihat negara yang saya buat untuk perjalanan ini, dengan bendera empat negara yang kami lawati - kebetulan mereka cukup serupa untuk saya menggabungkannya dari sisi ke sisi. Anda boleh menggunakan beberapa lapisan cat selagi anda membiarkannya kering sebelum mengecat cat yang berikutnya. Setelah selesai mengecat, saya suka menggunakan senapang panas pada cat selama beberapa minit, kerana saya telah membaca bahawa ia sebenarnya panas yang membantu set cat Posca.

Dalam gambar terakhir anda dapat melihat Sven - saya selalu memberi mereka nama - berehat di Oslo selepas pagi yang agak panjang. Dia tidak mempunyai kepala dari mainan asli, kerana saya berjaya mengacaukannya satu minit sebelum pergi: saya harus membongkar mainan sebelumnya untuk menggunakan kepalanya. Saya tidak boleh mengatakan bahawa tidak pernah berlaku sebelum ini …

Langkah 3: Pasang OSMC

Pasang OSMC
Pasang OSMC

Perkara pertama yang saya lakukan ialah memasang OSMC pada kad micro SD untuk Raspberry Pi: dalam persediaan kami, ia akan berfungsi sebagai pemain media untuk menonton gambar anda. Saya tidak akan memperincikan aspek ini kerana ia didokumentasikan dengan baik (terdapat beberapa Instruksional yang tersedia jika anda memerlukan bantuan). Hanya muat turun pemasang di komputer anda dan ikuti arahannya. Setelah selesai, saya hanya memasang papan kekunci dan tetikus dan menyambungkan HDMI ke TV dan mengikuti panduan penyediaan untuk mengatur zon waktu dll.

Akhirnya, saya menambahkan direktori di mana saya menyimpan gambar saya ke sumber: dalam kes saya gambar itu disimpan di NAS dengan IP tetap pada rangkaian yang sama, tetapi anda juga boleh menyimpannya di pemacu USB atau di folder rumah itu sendiri, dengan syarat bahawa micro SD anda cukup besar.

Semasa menambahkan sumber, anda akan diminta memasukkan nama: anda boleh meninggalkan lalai atau mengubahnya tetapi pastikan untuk menuliskannya kerana kami akan memerlukannya kemudian. Dalam kes saya, saya menyebutnya "MyPictures"

Anda sekarang harus melihat kandungan direktori yang anda tambahkan dan melihat-lihat gambar anda: dalam kes saya, saya mempunyai sub-direktori untuk setiap perjalanan.

Tahniah, anda sekarang mempunyai pusat media dengan gambar anda dan dapat melancarkan tayangan slaid untuk folder tertentu (sebagai bonus, anda juga dapat menggunakannya untuk memainkan video atau muzik anda)

Langkah 4: Konfigurasikan Pembaca

Selebihnya, kami akan menyambung ke Pi menggunakan baris perintah melalui SSH. Untuk melakukannya, cukup sambungkan Pi ke rangkaian anda menggunakan kabel Ethernet dan gunakan terminal atau sotware khusus untuk menyambung ke Pi. Pada Mac OS dan Linux, perintahnya adalah

ssh [email protected]

Anda akan diminta memasukkan kata laluan, ia osmc lagi

Agar pembaca dapat berfungsi, SPI harus diaktifkan: dalam sebilangan besar pengedaran seperti Raspbian ini dapat dilakukan dengan menggunakan raspi-config, alat konfigurasi yang membolehkan anda mengubah beberapa nilai konfigurasi.

OSMC, bagaimanapun, tidak termasuk raspi-config, untuk keselamatan anda sendiri semasa menggunakannya. Sebagai gantinya, matikan Raspberry, keluarkan kad SD mikro dan pasangkannya ke komputer anda: partition "boot" kini harus kelihatan. Di sana, pada akar jilid, anda akan melihat fail bernama "config.txt" - buka saja dan tambahkan baris ini di akhir:

"dtparam = spi = on"

Anda kini boleh menyimpan fail, but semula dan SPI harus diaktifkan.

Selepas itu, anda perlu memuat turun fail ZIP yang dilampirkan dan membuka zip pada raspberry - Saya cadangkan membuat folder Projects dan buka zip di sana. Untuk melakukan itu, anda boleh menyambung ke Raspberry menggunakan FTP melalui SSH (saya menggunakan CyberDuck untuk melakukannya) atau meletakkan fail pada Pemacu USB dan menggunakan pengurus fail Kodi untuk menyalinnya di Raspberry Pi.

Walau apa pun, setelah anda menyalin fail zip ke Pi, anda kemudian dapat menavigasi ke folder yang anda salin dan membuka zipnya, pindah ke folder yang dihasilkan dan pasang pakej:

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

Sekiranya semuanya berjalan lancar, anda seharusnya dapat memasukkan pembaca, but semula dan kemudian masukkan

explorenfc-asas

Sekiranya anda menghampiri cip NFC kepada pembaca, kini ia harus memaparkan sekumpulan maklumat dari cip (antara lain, IDnya)

Langkah 5: Pasang Node dan Buat Projek

Seterusnya, kami akan memasang NodeJS pada raspberry untuk menulis aplikasi kami.

Kami mahu memasang nodejs tetapi versi repositori lalai benar-benar lama, jadi anda harus melalui langkah pertama sebelum ini: di antara muka baris perintah, ketik

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

Anda kemudian boleh menaip

sudo apt pasang nodejs

untuk memasang versi terbaru nodejs dan npm yang ada.

Untuk mengawal KODI dari dalam nodejs, kita akan menggunakan pakej npm yang disebut kodi-ws.

Mari mulakan dengan membuat projek baru: hanya ketik perintah

npm init

Anda akan diajukan sejumlah pertanyaan: untuk kebanyakan mereka boleh meninggalkan lalai, cukup pilih nama untuk aplikasi anda dan masukkan nama anda sendiri di akhir. Apabila ditanya titik permulaan, tinggalkan index.js

Ini akan membuat fail package.json yang akan merangkum ciri-ciri pakej anda, seperti kebergantungannya.

Anda sekarang boleh masuk

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

Sekiranya anda membuka package.json selepas itu, anda akan perhatikan bahawa semua pakej tersebut telah ditambahkan ke dependensi.

Langkah 6: Kodnya, Dijelaskan

Kodnya, Dijelaskan
Kodnya, Dijelaskan

Terlampir pada langkah ini adalah kod untuk aplikasi.

Saya telah meninggalkan sebilangan besar pembalakan yang tidak dapat dibebaskan untuk memahami skrip tetapi berjaya memecahkannya.

Anda akan melihat bahawa walaupun semua fungsi dinyatakan, kod ini hanya melakukan beberapa perkara pada mulanya:

kodi ('localhost', 9090). kemudian (fungsi (sambungan) {

Skrip cuba menyambung ke OSMC JSON-RPC API. Sebaik sahaja ia berjaya (dan hanya kemudian), ia akan diteruskan dengan fail yang lain.

Sekiranya atas sebab tertentu anda tidak menjalankan ini dari Raspberry Pi anda, ubah localhost ke alamat IP anda. Pastikan juga bahawa dalam tetapan perkhidmatan di dalam OSMC (Tetapan / Perkhidmatan) kotak centang "Benarkan alat kawalan jauh dari aplikasi pada sistem lain" (lihat gambar)

Selebihnya fail kebanyakannya adalah deklarasi fungsi yang akan kita gunakan kemudian: dua fungsi yang sebenarnya dilancarkan dari sini adalah (baris 172/173)

scanAndSetCron (); listenForTag ();

Dalam scanAndSetCron:

- fungsi scanPictures dilancarkan. Di dalamnya, kami memeriksa apakah pemboleh ubah "mypicturedirectory", yang akan menyimpan jalan ke gambar kami, kosong. Sekiranya ada, kami meminta OSMC untuk memberi kami semua sumber yang dimilikinya untuk kandungan gambar (di dalam fungsi getPictureDirectory, baris 11):

var piclist = tunggu tunggu. Files. GetSources ("gambar");

OSMC memberi kami susunan sebagai balasan: untuk setiap item, kami memeriksa apakah nama sumbernya termasuk "Saya": jika demikian, kami menyimpannya sebagai sumber gambar kami (baris 16 dan berikut). Di sinilah anda mahu menukar rentetan dari "My" menjadi apa sahaja yang anda masukkan sebelumnya sebagai nama sumber gambar anda

if (piclist.sources .label.includes ("My")) {console.log (">>> Menemukan direktori" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }

Sekarang kita mempunyai jalan ke sumber (pada dasarnya folder root ke album kita), kami meminta OSMC untuk mengimbasnya dan menambahkan jalan untuk setiap folder ke array yang disebut album_directories (jika belum ada). Oleh kerana fungsi ini akan dijalankan setiap X saat, kami memeriksa bahawa direktori tersebut belum ada dalam senarai sebelum menambahkannya, dengan NFC ID ditetapkan ke rentetan kosong - dengan cara itu, setiap folder baru yang anda tambahkan pada gambar anda akan secara automatik tambah - baris 46

untuk (var j = 0; j <directories.length; j ++) {if (direktori [j].filetype.includes ("direktori")) {if (searchDirectory (direktori [j].file, album_directories)) {konsol. log (direktori [j].file + "sudah ada"); } lain-lain {console.log (">> Menambah dir" + direktori [j].file); album_directories.push ({direktori: direktori [j].file, nfc: ""}); }}}

Pada akhirnya, kami menyimpan array album_directories ke fail json pada Pi, yang kami cuba muat setiap kali fungsi dijalankan: ini berlaku pada akhir fungsi scanAndSetCron di mana kami menggunakan paket seperti cron untuk memastikan fungsi kami berjalan setiap 15 saat.

Fail JSON yang kami hasilkan, album_directories.json, dapat dibuka menggunakan aplikasi notepad apa pun. Sebaik sahaja anda melakukannya, anda akan diberi senarai album foto anda, masing-masing dengan medan "nfc" kosong:

[{"direktori": "/ home / osmc / Pictures / Mada 2016 /", "nfc": ""}, {"direktori": "/ home / osmc / Pictures / NewFolder /", "nfc": "" }, {"direktori": "/ rumah / osmc / Gambar / Ujian /", "nfc": ""}]

Dalam bidang ini, anda sekarang harus menampal ID tag yang ingin anda kaitkan dengan album ini. Untuk mendapatkan ID ini, cukup pergi ke folder SW2827, jalankan explorenfc-basic dan imbas tag yang ingin anda gunakan. Dalam output yang anda dapat, cari nilainya di sebelah ISO14443A UID. Salin ke album yang ingin anda konfigurasikan. Dalam kes saya, misalnya,

[{"direktori": "/ home / osmc / Pictures / Mada 2016 /", "nfc": "040A12EAFC3881"}, {"direktori": "/ home / osmc / Pictures / NewFolder /", "nfc": " "}, {" direktori ":" / home / osmc / Gambar / Ujian / "," nfc ":" "}]

Simpan fail dan kandungannya akan dimuat semasa anda melancarkan aplikasi lain kali.

Dalam fungsi listenForTag, kami hanya melakukan itu: kerana nampaknya tidak terdapat port khusus dari perpustakaan pembaca untuk NodeJS, kami bergantung pada proses kanak-kanak untuk melancarkan perduaan untuk pembaca:

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

Kami bergantung pada pendengar acara untuk menerima output dari pelaksanaan ini: di dalam panggilan balik untuk child.stdout.on ('data', function (data), kami menguraikan output perintah ini menggunakan fungsi analyseOutput: kami sedang mencari baris yang kita lihat sebelumnya, dimulai dengan "ISO14443A UID:", kerana di situlah ID untuk tag yang kami pindai disimpan. Setelah kami menemui garis itu, kami memotongnya dan menyimpan ID ke objek (disebut ID, bagaimana asli).

Akhirnya, kami cuba memadankan ID ini dengan ID yang kami masukkan dalam susunan objek album_directories (dimuat melalui fail album_directories.json). Sekiranya perlawanan dijumpai, kami mengarahkan OSMC untuk melancarkan tayangan slaid untuk folder tertentu:

var nfcid = analysisOutput (data); console.log ("nfcid is" + nfcid.id); var matchingalbum = searchTag (nfcid.id, album_directories); if (αντίστοιχοalbum) {console.log ("Found album" + JSON.stringify (αντίστοιχοalbum) + "untuk tag ini"); var args = [{'path': αντίστοιχοalbum.directory}]; sambungan.run ('Player. Open', args); } dengarForTag ();

Anda perhatikan bagaimana pada akhir fungsi, kita melancarkan listenForTag sekali lagi? Itulah satu-satunya penyelesaian yang saya dapati untuk menjadikan aplikasi berfungsi: explorenfc-basic akan secara default menunggu teg, membacanya, kemudian keluar. Aplikasi ini mempunyai mod berterusan yang boleh kita panggil menggunakan explorenfc-basic -k tetapi dalam mod ini, child_process tidak pernah mengeluarkan kandungan tag kerana tidak pernah berakhir (dengan kata lain child.stdout.on ('data') tidak pernah dipecat). Oleh kerana saya tidak menemui cara lain untuk menggunakan pembaca ini, apa yang kita lakukan di sini pada dasarnya melancarkan explorenfc-basic dalam mod tag tunggal, dan apabila tag dibaca, kami melancarkan listenForTag dan oleh itu memulakan semula explorenfc-basic.

Sekiranya saya terpaksa kembali (dan saya rasa akan), saya akan memilih pembaca NFC yang menawarkan lebih banyak pilihan: sebagai contoh, Adafruit (anda mungkin menyedari bahawa saya sangat menyukai mereka) mempunyai pembaca ini https:// www.adafruit.com / produk / 789 yang serasi dengan libnfc, yang saya percaya bermakna pembaca akan lebih mudah untuk berinteraksi daripada memanggil proses anak dari dalam node dan menguraikan stdout!

Langkah 7: Cubalah

Untuk melancarkan aplikasi, cukup pergi ke folder itu dan ketik "node index.js" (atau npm mulakan sejak kami telah mengkonfigurasinya lebih awal di package.json). Dalam log, anda akan melihat aplikasi menyambung ke OSMC / Kodi dan mengimbas buat kali pertama. Selepas beberapa saat, album_directories.json fail akan dibuat di dalam direktori projek; Anda kemudian boleh memasukkan ID tag NFC seperti yang dijelaskan sebelumnya dan mengaitkannya dengan album yang anda mahukan.

Langkah 8: Lancarkan Secara Automatik

Ringkasnya, kami telah membuat aplikasi Node yang (1) mengimbas pustaka gambar KODI anda dan cuba mencari folder tempat anda menyimpan gambar percutian anda, (2) mendengar teg NCF dengan bergantung pada explorenfc-basic dan kemudian (3) melancarkan album yang berkaitan dengan NFC ID ini.

Untuk menjadikan keseluruhan proses ini berjalan di latar belakang, kami akan menggunakan PM2, pengurus proses untuk nod.

Pada baris arahan, arahkan ke folder projek anda (di mana fail index.js anda berada) dan ketik baris berikut:

sudo npm pasang pm2 -gpm2 start index.js

Aplikasi anda kini dipantau oleh PM2 dan akan dimulakan semula secara automatik! Untuk memastikan ia benar-benar dilancarkan, ketik senarai pm2 dan anda mesti melihatnya dalam senarai. Sekiranya anda ingin melihat log, ketik sahaja log pm2.

Disyorkan: