Daftar Isi:

Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)

Video: Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)

Video: Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib !: 9 Langkah (dengan Gambar)
Video: Piala Dunia Junior Wanita - Semua Klip | Aturan Hoki Lapangan Dijelaskan 2024, Juli
Anonim
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib!
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib!
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib!
Luncurkan Slideshow Gambar Liburan Anda Dengan Sentuhan Ajaib!

Selama bertahun-tahun, saya telah mengembangkan kebiasaan membawa patung kecil saat bepergian: Saya sering membeli artoy kecil yang kosong (seperti yang ada di gambar) dan mengecatnya agar sesuai dengan bendera dan tema negara saya' m mengunjungi (dalam hal ini, Sisilia).

Idenya kemudian untuk memotret patung di depan pemandangan atau monumen terkenal dari negara tersebut: Saya merasa jauh lebih lucu daripada berfoto hanya dengan monumen itu sendiri (ada Google untuk itu dan itu jauh lebih murah) tetapi masih lebih mudah daripada memiliki untuk berada di setiap gambar sendiri (bukan penggemar, jujur)

Karena selalu menyenangkan untuk mengumpulkan orang-orang yang pergi berlibur dengan Anda beberapa hari setelah kembali untuk menonton gambar, saya pikir akan lebih baik jika setiap patung entah bagaimana bisa secara otomatis meluncurkan tayangan slide gambar dari perjalanan mereka dibuat.

Instruksi ini akan menjelaskan bagaimana saya melakukannya, menggunakan NFC, raspberry pi, nodejs dan osmc

Langkah 1: Ikhtisar Solusi

Ikhtisar Solusi
Ikhtisar Solusi
Ikhtisar Solusi
Ikhtisar Solusi

Karena seluruh penyiapan mencakup beberapa hal, berikut adalah ikhtisar umum tentang apa yang terlibat untuk membantu Anda memahami semua hal berikut:

Perangkat keras

- patung itu buatan sendiri: karena saya menulis instruksi ini tepat di tengah perjalanan selama seminggu di Kopenhagen/Oslo/Stockholm/Helsinki, saya akan menyertakan beberapa foto patung yang dibuat untuk perjalanan ini

- di bawah setiap patung ada chip NFC: Saya menggunakan stiker bulat yang bisa saya muat di bawah setiap patung tetapi Anda dapat menggunakan faktor bentuk lainnya - pastikan chip yang Anda gunakan kompatibel dengan pembaca Anda

- untuk menampilkan gambar, saya akan menggunakan raspberry pi dengan OSMC terpasang: ini adalah pemutar media pilihan saya untuk acara TV dan Film jadi sudah terhubung ke TV saya

- agar raspberry pi dapat membaca tag NFC, saya menambahkan pembaca NFC - yang saya gunakan adalah Explore-NFC dari NXP, tersedia di banyak situs web: itu dicolokkan ke Pi dan bertindak sebagai perisai

Perangkat lunak

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

Saat tag dibaca, jika ID ada dalam daftar, skrip Node memberi tahu OSMC untuk meluncurkan tayangan slide untuk folder khusus ini. Untuk membuat/mengonfigurasi daftar itu, skrip NodeJS yang sama meluncurkan fungsi pemindaian setiap 5 menit: itu memindai setiap direktori di dalam sumber "Gambar" di OSMC (menggunakan JSON-RPC API yang ditawarkan Kodi) dan menambahkannya ke daftar yang kemudian disimpan di disk. Dengan mengedit file 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 dapat menggunakan hampir semua hal yang Anda suka untuk patung Anda: Saya suka menggunakan mainan seni vinil karena mereka - relatif - mudah untuk menggambar bahkan untuk orang seperti saya yang tidak suka menggambar, dan cukup mudah untuk dibawa-bawa. Saya memesannya dalam versi kosong, DIY, dalam ukuran terkecil, dan menggambarnya menggunakan spidol Posca. Di sini Anda dapat melihat salah satu yang saya buat untuk perjalanan ini, dengan bendera empat negara yang kami kunjungi - mereka cukup mirip untuk saya gabungkan dari sisi ke sisi. Anda dapat menggunakan beberapa lapis cat selama Anda benar-benar membiarkan masing-masing cat mengering sebelum mengecat yang berikutnya. Setelah saya selesai melukis, saya suka menggunakan senapan panas pada cat selama beberapa menit, karena saya telah membaca bahwa sebenarnya panas yang membantu pengecatan Posca.

Pada gambar terakhir Anda dapat melihat Sven - saya selalu memberi mereka nama - istirahat di Oslo setelah pagi yang agak panjang. Dia tidak memiliki kepala dari mainan aslinya, karena saya berhasil mengacaukannya satu menit sebelum pergi: Saya harus membongkar mainan sebelumnya untuk menggunakan kepalanya sebagai gantinya. Saya tidak bisa mengatakan itu tidak pernah terjadi sebelumnya…

Langkah 3: Instal OSMC

Instal OSMC
Instal OSMC

Hal pertama yang saya lakukan adalah menginstal OSMC pada kartu micro SD untuk Raspberry Pi: dalam pengaturan kami, ini akan berfungsi sebagai pemutar media untuk menonton gambar Anda. Saya tidak akan membahas banyak detail tentang aspek ini karena didokumentasikan dengan cukup baik (ada beberapa Instructable yang tersedia jika Anda memerlukan bantuan). Cukup unduh penginstal di komputer Anda dan ikuti petunjuknya. Setelah saya selesai, saya hanya mencolokkan keyboard dan mouse dan menghubungkan HDMI ke TV dan mengikuti wizard pengaturan untuk mengatur zona waktu dll.

Akhirnya, saya menambahkan direktori tempat saya menyimpan gambar saya ke sumber: dalam kasus saya mereka disimpan di NAS dengan IP tetap di jaringan yang sama, tetapi Anda juga dapat menyimpannya di drive USB atau di folder rumah itu sendiri, asalkan micro SD Anda cukup besar.

Saat menambahkan sumber, Anda akan diminta untuk memasukkan nama untuk itu: Anda dapat membiarkan default atau mengubahnya tetapi pastikan untuk menuliskannya karena kami akan membutuhkannya nanti. Dalam kasus saya, saya menyebutnya "MyPictures"

Anda sekarang akan melihat isi direktori yang Anda tambahkan dan menelusuri gambar Anda: dalam kasus saya, saya memiliki sub-direktori untuk setiap perjalanan.

Selamat, Anda sekarang memiliki pusat media dengan gambar Anda di dalamnya dan dapat meluncurkan tayangan slide untuk folder tertentu (sebagai bonus, Anda juga dapat menggunakannya untuk memutar video atau musik Anda)

Langkah 4: Konfigurasikan Pembaca

Untuk instruksi lainnya, kami akan menghubungkan ke Pi menggunakan baris perintah melalui SSH. Untuk melakukannya, cukup sambungkan Pi ke jaringan Anda menggunakan kabel Ethernet dan gunakan terminal atau perangkat lunak khusus untuk terhubung ke Pi. Di Mac OS dan Linux, perintahnya adalah

ssh [email protected]

Anda akan diminta untuk memasukkan kata sandi, itu osmc lagi

Agar pembaca dapat berfungsi, SPI harus diaktifkan: di sebagian besar distribusi seperti Raspbian ini dapat dilakukan dengan menggunakan raspi-config, alat konfigurasi yang memungkinkan Anda mengubah beberapa nilai konfigurasi.

OSMC, bagaimanapun, tidak menyertakan raspi-config, untuk keamanan Anda sendiri saat menggunakannya. Sebagai gantinya, matikan Raspberry, keluarkan kartu micro SD dan pasang saja ke komputer Anda: partisi "boot" sekarang akan terlihat. Di sana, di akar volume, Anda akan melihat file bernama "config.txt" - buka saja dan tambahkan baris ini di akhir:

"dtparam=spi=on"

Anda sekarang dapat menyimpan file, reboot dan SPI harus diaktifkan.

Setelah itu, Anda perlu mengunduh file ZIP terlampir dan membuka ritsletingnya di raspberry - Saya sarankan untuk membuat folder Proyek dan membuka ritsletingnya di sana. Untuk melakukan itu, Anda dapat terhubung ke Raspberry menggunakan FTP melalui SSH (saya menggunakan CyberDuck untuk melakukannya) atau meletakkan file di Drive USB dan menggunakan pengelola file Kodi untuk menyalinnya di Raspberry Pi.

Either way, setelah Anda menyalin file zip ke Pi, Anda kemudian dapat menavigasi ke folder yang Anda salin dan unzip, pindah ke folder yang dihasilkan dan menginstal paket:

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

Jika semuanya berjalan dengan baik, Anda harus dapat memasang pembaca, reboot, lalu masuk

explorenfc-basic

Jika Anda mendekati chip NFC ke pembaca, sekarang seharusnya menampilkan banyak informasi dari chip (antara lain, ID-nya)

Langkah 5: Instal Node dan Buat Proyek

Selanjutnya, kita akan menginstal NodeJS pada raspberry untuk menulis aplikasi kita.

Kami ingin menginstal nodejs tetapi versi repositori default sangat lama, jadi Anda harus melalui langkah pertama sebelum: di antarmuka baris perintah, ketik

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

Anda kemudian dapat mengetik

sudo apt install nodejs

untuk menginstal versi terbaru dari nodejs dan npm yang tersedia.

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

Mari kita mulai dengan membuat proyek baru: cukup ketik perintah

npm init

Anda akan ditanya sejumlah pertanyaan: untuk sebagian besar dari mereka Anda dapat meninggalkan default, cukup pilih nama untuk aplikasi Anda dan masukkan nama Anda sendiri di akhir. Ketika ditanya titik awalnya, tinggalkan saja index.js

Ini akan membuat file package.json yang akan merangkum karakteristik paket Anda, seperti dependensinya.

Anda sekarang dapat masuk

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

Jika Anda membuka package.json setelah itu, Anda akan melihat bahwa semua paket tersebut telah ditambahkan ke dependensi.

Langkah 6: Kode, Dijelaskan

Kode, Dijelaskan
Kode, Dijelaskan

Terlampir pada langkah ini adalah kode untuk aplikasi.

Saya telah meninggalkan cukup banyak logging yang dapat dibatalkan komentarnya untuk memahami skrip, tetapi mari kita uraikan bersama.

Anda akan melihat bahwa meskipun semua fungsi dideklarasikan, kode hanya melakukan beberapa hal pada awalnya:

kodi('localhost', 9090).lalu(fungsi(koneksi) {

Script mencoba terhubung ke OSMC JSON-RPC API. Setelah berhasil (dan hanya kemudian), itu berlanjut dengan sisa file.

Jika karena alasan tertentu Anda tidak menjalankan ini dari Raspberry Pi Anda, ubah localhost ke alamat IP Anda. Pastikan juga bahwa dalam pengaturan layanan di dalam OSMC (Pengaturan/Layanan) kotak centang "Izinkan kendali jarak jauh dari aplikasi di sistem lain" (lihat gambar)

Sisa file sebagian besar adalah deklarasi fungsi yang akan kita gunakan nanti: dua fungsi yang sebenarnya diluncurkan dari sini adalah (baris 172/173)

scanAndSetCron();listenForTag();

Di scanAndSetCron:

- fungsi scanPictures diluncurkan. Di dalamnya, kami memeriksa apakah variabel "mypicturedirectory", yang akan menyimpan jalur ke gambar kami, kosong. Jika ya, kami meminta OSMC untuk memberi kami semua sumber yang dimilikinya untuk konten gambar (di dalam fungsi getPictureDirectory, baris 11):

var piclist = menunggu koneksi. Files. GetSources("gambar");

OSMC memberi kita sebuah array sebagai gantinya: untuk setiap item, kita memeriksa apakah nama sumber menyertakan "My": jika itu masalahnya, kita menyimpannya sebagai sumber gambar kita (baris 16 dan berikut). Di sinilah Anda ingin mengubah string dari "Saya" menjadi apa pun yang Anda masukkan sebelumnya sebagai nama untuk sumber gambar Anda

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

Sekarang kita memiliki path ke sumber (pada dasarnya folder root ke album kita), kita meminta OSMC untuk memindainya dan menambahkan path untuk setiap folder ke array yang disebut album_directories (jika belum ada). Karena fungsi ini akan dijalankan setiap X detik, kami memeriksa apakah direktori tersebut belum ada dalam daftar sebelum menambahkannya, dengan ID NFC disetel ke string kosong - dengan begitu, setiap folder baru yang Anda tambahkan ke gambar Anda akan otomatis ditambahkan - baris 46

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

Pada akhirnya, kami menyimpan array album_directories ke file json di Pi, yang kami coba muat setiap kali fungsi dijalankan: ini terjadi di akhir fungsi scanAndSetCron di mana kami menggunakan paket mirip cron untuk memastikan fungsi kami berjalan setiap 15 detik.

File JSON yang kami buat, album_directories.json, dapat dibuka menggunakan aplikasi notepad apa pun. Setelah Anda melakukannya, Anda akan disajikan daftar album foto Anda, masing-masing dengan bidang "nfc" kosong:

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

Di bidang ini, Anda sekarang harus menempelkan ID tag yang ingin Anda kaitkan dengan album ini. Untuk mendapatkan ID ini, cukup arahkan ke folder SW2827, jalankan explorenfc-basic dan pindai tag yang ingin Anda gunakan. Pada output yang Anda dapatkan, cari saja nilai di sebelah ISO14443A UID. Salin ke album yang ingin Anda konfigurasikan. Dalam kasus saya, misalnya,

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

Simpan file dan kontennya akan dimuat saat Anda meluncurkan aplikasi di lain waktu.

Dalam fungsi listenForTag, kami melakukan hal itu: karena sepertinya tidak ada port khusus dari perpustakaan pembaca untuk NodeJS, kami mengandalkan proses anak untuk meluncurkan biner untuk pembaca:

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

Kami mengandalkan eventlistener untuk menerima output dari eksekusi ini: di dalam callback untuk child.stdout.on('data', function (data), kami mengurai output dari perintah ini menggunakan fungsi analyzeOutput: kami mencari baris yang kita lihat tadi, diawali dengan "ISO14443A UID:", karena di situlah ID untuk tag yang kita pindai disimpan. Setelah kita menemukan garis itu, kita memangkasnya dan menyimpan ID tersebut ke suatu objek (disebut ID, caranya asli).

Terakhir, kami mencoba mencocokkan ID ini dengan ID yang kami masukkan dalam larik objek album_directories (dimuat melalui file album_directories.json). Jika kecocokan ditemukan, kami menginstruksikan OSMC untuk meluncurkan tayangan slide untuk folder tertentu itu:

var nfcid = analisisOutput(data); console.log("nfcid adalah " + nfcid.id); var sesuaialbum = searchTag(nfcid.id, album_directories); if(correspondingalbum) { console.log("Ditemukan album " + JSON.stringify(correspondingalbum) + " untuk tag ini"); var args = [{'path': sesuaialbum.directory}]; connection.run('Pemain. Buka', argumen); } listenForTag();

Anda perhatikan bagaimana di akhir fungsi, kami meluncurkan listenForTag lagi ? Itulah satu-satunya solusi yang saya temukan untuk membuat aplikasi berfungsi: explorenfc-basic secara default akan menunggu tag, membacanya, lalu keluar. Aplikasi memang memiliki mode berkelanjutan yang dapat kita panggil menggunakan explorenfc-basic -k tetapi dalam mode ini, child_process tidak pernah mengeluarkan konten tag karena tidak pernah berakhir (dengan kata lain child.stdout.on('data') tidak pernah diaktifkan). Karena saya belum menemukan cara lain untuk menggunakan pembaca ini, yang kami lakukan di sini pada dasarnya adalah meluncurkan explorenfc-basic dalam mode tag tunggal, dan ketika sebuah tag dibaca, kami meluncurkan listenForTag dan oleh karena itu memulai ulang explorenfc-basic.

Jika saya harus kembali (dan saya pikir saya akan melakukannya), saya akan memilih pembaca NFC yang menawarkan lebih banyak opsi: misalnya, Adafruit (Anda mungkin telah memperhatikan bahwa saya sangat menyukainya) memiliki pembaca ini https://www.adafruit.com/product/789 yang kompatibel dengan libnfc, yang saya yakini berarti pembaca akan jauh lebih bersih untuk berinteraksi daripada memanggil proses anak dari dalam node dan mengurai stdout !

Langkah 7: Cobalah

Untuk meluncurkan aplikasi, cukup navigasikan ke folder itu dan ketik "node index.js" (atau npm start karena kami telah mengonfigurasinya sebelumnya di package.json). Di log Anda akan melihat aplikasi terhubung ke OSMC/Kodi dan memindai untuk pertama kalinya. Setelah beberapa detik, file album_directories.json akan dibuat di dalam direktori proyek; Anda kemudian dapat memasukkan ID tag NFC seperti yang dijelaskan sebelumnya dan mengaitkannya dengan album yang Anda inginkan.

Langkah 8: Luncurkan Secara Otomatis

Singkatnya, kami telah membuat aplikasi Node yang (1) memindai perpustakaan gambar KODI Anda dan mencoba menemukan folder tempat Anda menyimpan gambar liburan Anda, (2) mendengarkan tag NCF dengan mengandalkan explorenfc-basic dan kemudian (3) meluncurkan album yang terkait dengan ID NFC ini.

Untuk membuat seluruh proses ini berjalan di latar belakang, kami akan menggunakan PM2, manajer proses untuk node.js.

Di baris perintah, navigasikan ke folder proyek Anda (tempat file index.js Anda berada) dan ketik baris berikut:

sudo npm install pm2 -gpm2 start index.js

Aplikasi Anda sekarang dipantau oleh PM2 dan akan dimulai ulang secara otomatis! Untuk memastikan itu benar-benar diluncurkan, ketik daftar pm2 dan Anda akan melihatnya di daftar. Jika Anda ingin melihat log, ketik saja log pm2.

Direkomendasikan: