[Termux] Memanfaatkan sensor smartphone Android untuk memonitor intensitas cahaya
Diartikel kali ini, kita akan membuat sistem monitoring yang hanya menggunakan handphone android kita. Kita akan menggunakan sensor yang ada di smartphone untuk ditampilkan dalam halaman dashboard. Peralatan yang dibutuhkan yaitu :
1. Smartphone android
2. Komputer/laptop (opsional, tapi direkomendasikan disiapkan untuk membuat flow di node-red)
Skenario pada artikel ini saya akan memanfaatkan sensor intensitas cahaya yang ada di smartphone dan menampilkannya dalam tampilan gauge di web dashboard.
Berikut tahap-tahapnya :
A. Prerequisite :
1. Smartphone android
2. Komputer/laptop (opsional, tapi direkomendasikan disiapkan untuk membuat flow di node-red)
Skenario pada artikel ini saya akan memanfaatkan sensor intensitas cahaya yang ada di smartphone dan menampilkannya dalam tampilan gauge di web dashboard.
Berikut tahap-tahapnya :
A. Prerequisite :
- Install termux dan plugin termux:API yang dapat dicari di playstore atau link termux:api dan termux
- Setelah termux dan plugin termux:API terinstall, selanjutnya buka aplikasi termux yang sudah terinstall di HP
- Kemudian install sshd, termux-api, nano dan nodejs dengan menjalankan perintah pkg install termux-api coreutils nano nodejs openssh
- Lihat daftar sensor yang ada di smartphone teman-teman dengan perintah termux-sensor -l. Output dari perintah ini akan beragam, bergantung dari seri dan merk smartphone teman-teman. Berikut merupakan daftar sensor yang ada di smartphone saya. Disini saya akan menggunakan sensor "TMD3725 Light" yang berfungsi untuk mengukur intensitas cahaya. Pilih sensor yang muncul dari perintah yang telah dijalankan di smartphone teman-teman. Catat nama sensor tersebut.
- Lalu install node-red dengan perintah npm i -g --unsafe-perm node-red
- Selanjutnya install node dashboard dan termux-api dengan perintah cd ~/.node-red && npm i node-red-dashboard node-red-contrib-termux-api
- Jika teman-teman telah menyiapkan komputer/laptop, hubungkan laptop dan smartphone teman-teman dengan jaringan yang sama, bisa menggunakan tethering atau menggunakan wireless access point. Apabila sudah terhubung kejaringan yang sama, cek alamat IP smartphone dengan perintah ifconfig. Berikut merupakan contoh output yang akan keluar setelah perintah dijalankan. catat IP yang yang tampil di termux teman-teman. Jalankan juga service ssh dengan perintah sshd.
- Kemudian jalankan node-red dengan perintah node-red &
- Buka browser dan ketikkan http://<IP HP teman-teman>:1880 di address bar. Contoh dengan output IP dari tahap A.7, maka saya mengetikkan http://192.168.60.141:1880. Maka akan tampil halaman berikut :
- Selanjutnya, masukkan node inject (ada di sisi kiri web) kedalam flow. Ubah properti node tersebut dengan ketentuan berikut :
name : Start (bebas) - Selanjutnya masukkan node exec (ada disisi kiri web) kedalam flow. Dalam node exec terdapat satu input dan tiga output. Tiga output tersebut meliputi stdOut (link paling atas) yang akan mengeluarkan data yang dijalankan dalam node exec, stdErr (link tengah) yang akan mengeluarkan error apabila terjadi error dalam eksekusi perintah dan return code (link paling bawah) yang akan memberikan output kode setelah perintah selesai dieksekusi (biasanya return code berisi nilai 0 ketika perintah sukses dan angka lain apabila gagal/error). Silahkan ubah propertinya sebagai berikut :
command : termux-sensor -s "<nama sensor yang teman-teman pilih" -n 1. contoh termux-sensor -s "TMD3725 Light" -n 1
name : GetData (bebas) - Masukkan node debug ke flow.
- Sekarang hubungkan node inject (start) ke node exec (GetData), dan node exec (GetData) yang link stdOut (link paling atas) ke debug.
- Klik tombol deploy dipojok kanan atas untuk mendeploy flow.
- Setelah terdeploy, coba klik tombol start yang ada pada ujung kiri node inject (Start).
- Kemudian klik hamburger dipojok kanan atas->view. Pastikan show sidebar tercentang.
- Setelah itu, klik tombol bug/kutu yang ada di sidebar bagian atas. Maka data sensor akan tampil disana. Berikut contoh yang tampil diperangkat saya.
- Setelah didapat data tersebut, kita dapat memastikan bahwa data berupa data json. Untuk itu tambahkan node json ke flow. Kemudian hubungkan link stdOut node exec ke node json dan link node json ke node debug dan hapus link dari node exec (GetData) ke debug. Tidak perlu melakukan ubahan properti di node json tersebut. Namun kalau ingin mengubah nilai properti, silahkan ganti nilai properti nama dengan nama yang diinginkan.
- Selanjutnya klik deploy dan klik tombol on/start di node inject. Tunggu sampai proses eksekusi perintah dinode exec selesai. Maka akan tampil data json disidebar->debug, tepat dibawah data yang sudah kita eksekusi di tahap 9. expand data json tersebut sampai didapat nilai data yang dikirim sensor, dan klik tombol copy path.
- Selanjutnya, buka property node json, ubah properti berikut :
property : payload["TMD3725 Light"].values[0] - Selanjutnya tambahkan node gauge kedalam flow. Kemudian ubah property berikut :
Group : tekan tombol pensil dikanan->pada window group->tekan tombol pensil dikanan pada properti tab->Biarkan isinya default->Kemudian klik add->Kemudian di window group ganti properti name menjadi Light Intensity->Kemudian klik add
label : Light Intensity
units : Cd
range : min: 0, max: 200 (disesuaikan) - Setelah itu klik done dan klik deploy
- Buka tab baru dibrowser dan masukkan http://<IP Smartphone teman-teman>:1880/ui. Maka akan muncul halaman seperti dibawah. Data dari sensor berhasil ditampilkan dalam bentuk dashboard.
- Apabila gagal menampilkan data dalam dashboard atau data dalam tampilan gauge masih mentah (data belum terparsing), kembali ke tab management flow node-red dan cek di sidebar->debug. Apabila ada pesan error seperti dibawah. Lanjutkan ke tahap berikutnya.
- Masukkan node change kedalam flow. Ubah properti berikut :
name : rename
rules: move
msg : value yang dicopy pada tahap B.11. Contoh dari percobaan ini adalah payload["TMD3725 Light"].values[0]
to msg : payload - Kemudian hapus link node json ke node gauge. Lalu sambungkan node json ke node change (rename) dan node change (rename) ke node gauge.
- Selanjutnya klik done dan klik deploy.
- Cek kembali halaman dashboard. seharusnya data akan keluar seperti tahap B.15
- Agar data yang ada didashboard bisa tampil realtime, buka node inject dan ubah properti repeat menjadi interval dan isikan kolom every sesuai dengan kebutuhan. Misalnya data perlu diperbaharui per 2 detik, maka isikan nilai 2 dan pilih satuan seconds.
- Selanjutnya klik done dan klik deploy. Cek dihalam dashboard, maka gauge akan bergerak otomatis berdasarkan data yang dikirimkan oleh sensor di smartphone.
-----------SELESAI-----------
mantap jtm
BalasHapusHalo mas ardi. Terimakasih sudah mampir.
Hapus