Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

ARDUINO INDONESIA OFFICIAL

Rabu, 06 April 2022

Menjalankan Kode Program Aplikasi IoT

- Tidak ada komentar


 

Beberapa kode program yang telah ditulis berikutnya perlu diunggah pada VPS. Pada contoh akan diunggah dengan fungsi dari program scp. Program ini memanfaatkan jalur komunikasi yang sama dengan ssh. Contoh perintah dari program ini adalah :

 

scp apps/*iot@206.189.94.98:/home/iotapps/apps

 

Perintah tersebut akan memindahkan semua berkas yang ada pada direktori apps di komputer ke sebuah VPS dengan alamat 206.189.94.98 pada direktori /home/iot/apps. Berikutnya simpan kode program untuk antarmuka halaman website ke dalam direktori templates.

 

 

Untuk menjalankan program tersebut pada terminal gunakan perintah Phyton webservice.py. Pada gambar di bawah ini adalah tampilan dari rekaman proses jalankan kode program webservice.py. Terdapat status kode 200 dari fungsi GET dan POST pada gambar tersebut, hal ini menandakan program telah berjalan dengan baik dalam melayani permintaan pengguna.



Opsi lain untuk menjalankan program adalah dengan perintah nohub

 

nohub Phyton /home/iotapps/webservice.py > log.txt &

 

Program ini menjadikan kode webservice.py berjalan secara daemon, jika menggunakan opsi pertama program akan tertutup saat akses ke terminal terputus. Ketika menggunakan opsi nohub sebuah berkas dengan log.txt akan terbuat, berkas tersebut sebagai luaran dari program webservice.py. Isi dari log.txt sama dengan tampilan pada gambar di atas pada berkas log.txt dapat juga berisi catatan error., jika ada konfigurasi atau kode yang salah saat program dijalankan. Karena berbasis daemon, selain dari log.txt, dapat juga dilihat dengan perintah netstat, apakah program telah berjalan.

 


Pada gambar di atas terlihat ada port 5001 yang aktif, hal itu menandakan program telah berjalan dan sudah dapat digunakan untuk menerima data dari IGD. Program ini akan berjalan pada port 5001 dan listen ke semua interface, jadi setelah dijalankan untuk fungsi POST dapat dilakukan dengan alamat :

 

https://206.189.94.98:5001/api/post

 

Sedangkan untuk meminta data berdasarkan topik dapat dilakukan dengan mengakses alamat :

 

https://206.189.94.98:5001/getData/<idTopic>

 

Setelah web services siap digunakan, jalankan internet gateway dan kirim beberapa data ke web services dengan method POST. Pada gambar di bawah ini contoh data yang telah tersimpan pada database MongoDB. Data tersebut dilihat dengan MongoShell.

 


  
 


Pada gambar di atas adalah tampilan awal aplikasi IoT berbasis web yang berjalan pada sebuah VPS. Aplikasi tersebut diakses dengan alamat https://206.189.94.98:5001/. Terlihat ada 2 topik yang tersimpan yaitu /dht dan /image. Pada gambar di atas adalah informasi terkait data apa saja yang disimpan dengan topik /dht. Sedangkan gambar di bawahnya lagi adalah gambar tampilan terkait data yang disimpan dengan topik /image.

 

Dengan demikian pembahasan terkait IoT yang terbagi antara layer infrastruktur IoT, layer middleware dan layer aplikasi telah selesai.  



Selasa, 05 April 2022

Praktik Pengembangan Aplikasi IoT Berbasis Cloud Computing

- Tidak ada komentar

Pada bagian ini disajikan bagaimana membangun sebuah aplikasi IoT yang dijalankan pada lingkungan komputasi awan (cloud computing). Aplikasi yang dicontohkan terdiri dari web services, media penyimpanan dan aplikasi visualisasi data. Sebagai contoh program ini dijalankan pada virtual private server (VPS) dengan alamat IP 206.189.94.98. Untuk mendapatkan VPS dapat dilakukan dengan cara menyewa ke penyedia jasa internet atau ISP.

 

Pada pembuatan aplikasi, ditulis menggunakan bahasa pemrograman Phyton dengan menggunakan beberapa library tambahan di antaranya :

 

1. Sebuah virtual private server dengan sistem operasi Ubuntu server

 

Pada saat pembuatan instance pada VPS terdapat pilihan sistem operasi. Pada praktik dicontohkan menggunakan Ubuntu server.

 

2. Database NoSQL MongoDB

 

Setelah VPS siap digunakan, berikutnya adalah instalasi database MongoDB. Perintahnya sudo apt-target install -y mongodb-org. Berikutnya jalankan layanan MongoDB dengan perintah sudo server mongod start

 

3. Library Phyton yang digunakan

 

    pip

 

Sebuah alat bantu untuk memasang library yang dibutuhkan pada pemrograman dengan bahasa Phyton. Cara penggunaannya pip install [nama library].


    Flask

 

Sebuah framework perangkat lunak untuk mengembangkan aplikasi berbasis web dengan bahasa pemrograman Phyton. Framework ini juga dilengkapi dengan fungsi untuk menyediakan web server, jadi kode program yang telah ditulis dapat dijalankan tanpa bantuan web server seperti apache. Cara instalasi framework ini dengan perintah pip install flask.


    Pymongo

 

Sebuah library untuk menghubungkan antara kode program dari bahasa Phyton dengan database MongoDB. Cara instalasi library ini dengan perintah pip install pymongo.


    Bootstrap

 

Sebuah framework yang menyediakan beberapa fungsi untuk membuat antarmuka atau tampilan sebuah halaman website.


    Editor program

 

Sebuah editor kode program diperlukan untuk menulis program aplikasi IoT. Setelah kode selesai ditulis berikutnya unggah ke virtual private server dengan program FTP client atau perintah scp. Cara unggah akan dijelaskan kemudian. Untuk keseluruhan kode program dapat dilihat pada kode program 9 sampai 14.

 

Kode Program Aplikasi IoT

 

Terdapat beberapa kode program yang akan digunakan untuk menjalankan fungsi seperti gambar sebelumnya, kode program tersebut meliputi :

 

1. webservices.py 

 

Berfungsi sebagai program utama, di dalamnya terdapat beberapa  fungsi yaitu method POST untuk menerima pesan dari pengirim (Node sensor atau IGD). Berikutnya data akan disimpan ke database mongodb berdasarkan topik. Jika topik yang diterima belum pernah tersimpan sebelumnya, maka akan dibuat collection baru pada MongoDB. Berikutnya method GET untuk menerima permintaan dari aplikasi lain terkait data yang telah tersimpan. 

 

2. Usershowdata.htmls

 

Sebuah kode program antarmuka untuk menampilkan topik-topik yang tersimpan.

 

3. showdataJSON.htmls

 

Kode program antarmuka untuk menampilkan data dari sensor dengan topik /DHT.

 

4. showDataFiles.html

 

Kode program untuk visualisasi isi data dari sensor yang dikirim dengan topik /image.

 

5. userNavabar.html

 

Kode program antarmuka untuk navigasi ke tampilan awal.

 

6. userHeader.html

 

Kode program antarmuka untuk memberi judul header halaman website.

 

Keenam kode tersebut membentuk sebuah hubungan yang digambarkan pada gambar di bawah ini. Fungsi utama terdapat pada webservice.py sedangkan kode lainnya berguna untuk menampilkan data secara grafis.

 

 

Berikutnya adalah pembahasan untuk masing-masing kode program. Kode program 9 dengan nama webservice.py adalah inti dari aplikasi IoT yang dicontohkan, untuk pembahasan terdapat garis penting pada kode program ditandai dengan [blok pada baris].

 

 

Pada kode program 9, terdapat beberapa fungsi yaitu :

 

a. Inisialisasi database

 

Baris 17 adalah inisialisasi database yang digunakan. Untuk database yang digunakan dalam program ini adalah MongoDB dengan alamat 127.0.0.1. Artinya database tersebut ada dalam host yang sama dengan program webservice.py. Sedangkan port yang digunakan adalah 27107. Nama database yang digunakan adalah IoTapps, pada baris 167.

 

b. Fungsi POST data 

 

Pada baris 49-83, adalah kode yang mendefinisikan method POST. Fungsi bekerja dengan menangkap parameter data dari Internet Gateway berdasarkan topik. Berikutnya data akan disimpan pada koleksi database MongoDB sesuai dengan masing-masing topik. Fungsi ini dapat diakses pada http://[alamat-host]/api/post. Pada baris ke 82 merupakan pesan response dari server ke pengirim (IGD) jika data telah berhasil disimpan pada database.

 

c. Fungsi create topic

 

Pada baris 40-47,  data yang diterima akan disimpan dalam sebuah database dan setiap topik akan dipisah pada masing-masing collection. Jika topik baru disimpan maka akan dibuat collection baru, jika topik sudah ada maka akan langsung disimpan pada collection yang sudah ada.

 

d. Fungsi melihat semua topik yang tersimpan

 

    Pada baris 85-90 berisi kode untuk menampilkan topik yang tersimpan pada database MongoDB. Hasil dari fungsi ini akan ditampilkan pada sebuah halaman website dengan memanggil kode program 10 userShowData.html.

 

 

e. Metode GET

 

Baris ke 92-144ada kode program webservice.py adalah fungsi untuk menampilkan semua data yang tersimpan pada database sesuai dengan topik. Dalam contoh terdapat kode untuk menampilkan data ke dalam halaman website. Untuk data json dengan topik /dht ditampilkan ke halaman dengan memanggil kode program 24 'showDataJSON.html', sedangkan untuk data gambar dengan topik /image, ditampilkan dengan kode program 12 yaitu 'showDataFiles.html'.

 


f. Fungsi melihat data file 

 

Baris ke 146 sampai 152 pada kode program webservice.py, digunakan untuk melihat data jenis gambar yang tersimpan pada MongoDB. Pada contoh program ini hanya menampilkan secara raw data, belum sampai ke konversi data gambar.

 

g. Fungsi delete topic

 

Baris ke 154-161 pada kode program webservice.py adalah fungsi untuk menghapus topik yang tersimpan pada database. Fungsi ini dipanggil dalam halaman yang sama pada userShowData.html. Penghapusan topik dilakukan dengan menghapus satu collection pada database MongoDB.

 

h. Fungsi navigasi pada halaman website

 

Untuk memudahkan pengguna dalam mengenali halaman website, perlu ditambahkan menu navigasi berupa "Dashboard" pada kode program userNavabar.html dan judul website "Aplikasi IoT" pada kode program userHeader.html. Kedua kode ini dipanggil pada masing-masing kode html sebelumnya.

 


Aplikasi Berbasis Cloud Computing

- Tidak ada komentar

Pada bagian ini akan disajikan layer aplikasi dari IoT yang terdiri dari : protokol komunikasi berbasis HTTP dengan web services RestFull, media penyimpanan dan aplikasi visualisasi data dari sensor.

 


Sebagai contoh pada gambar di atas, aplikasi IoT pada lingkungan cloud computing berupa, web services dengan method POST untuk menerima data dari internet gateway atau node sensor. Berikutnya terdapat method GET untuk melayani permintaan dari aplikasi IoT lain. Di dalam aplikasi terdapat mekanisme pengelolaan data yang masuk terkait pengaturan topik ke media penyimpanan. Untuk media penyimpanan digunakan mongoDB untuk menjawab tantangan keberagaman data sensor. Hal ini dibuktikan pada penelitian sebelumnya, MongoDB terbukti dapat menyimpan berbagai jenis pesan yang dikirim oleh node sensor (Pramukantoro et al., 2017). Berikutnya terdapat fungsi untuk menampilkan data dari node sensor secara visual.

 

Komponen utama dalam aplikasi ini meliputi :

 

1. RestFull web services

 

Dalam Internet of Things (IoT), RestFull Web Service digunakan untuk menyediakan antarmuka komunikasi berbasis web services dengan metode GET dan POST. Keuntungan penggunaan RestFull pada IoT adalah dukungan standardisasi dan mudah dalam implementasi. Mekanisme ini cocok jika digunakan pada jaringan sensor berbasis nirkabel yang memiliki keterbatasan sumber daya (Guinard, Trifa dan Wilde, 2010).

 

Standardisasi yang dimaksud adalah data dari node sensor yang akan dikirim diubah ke dalam format HTTP, hal ini sangat memungkinkan jika node sensor terdapat kemampuan untuk komputasi dan menerapkan konsep HTTP. Beberapa referensi menyebutkan ide ini dengan istilah Web of Things (WoT).

 

2. Database NoSQL Mongodb

 

Tantangan yang ada pada bagian media penyimpanan IoT adalah harus mampu menyesuaikan dengan kondisi data yang beragam dan ukuran besar. Media penyimpanan berbasis mongoDB dan gridFS mampu menjawab tantangan tersebut (Pramukantoro dkk., 2017). Data pada MongoDB akan tersimpan dalam sebuah koleksi, di dalam koleksi berisi data-data yang berisi data sensor.

 

3. Visualisasi data

 

Bagian ini bertugas untuk menampilkan data yang tersimpan pada database MongoDB. Data dapat ditampilkan berdasarkan topik apa saja yang tersimpan, detail data pada setiap topik, statistik data yang masuk dan fitur untuk mengelola data.


Internet Gateway Device dalam Praktik Membangun IoT Middleware dengan Raspberry PI

- Tidak ada komentar

Bagian terakhir dari IoT middleware adalah sebuah perangkat yang meneruskan data ke aplikasi pada lingkungan cloud computing. Untuk itu diperlukan sebuah perangkat lunak dengan fungsi meminta atau berlangganan (subscribe) data ke message broker selanjutna mengirim ke cloud dengan protokol HTTP (RestFull). Pada gambar di bawah ini adalah gambaran dari alur sistem ini. Pada IoT middleware di dalamnya terdapat sebuah program yang bertugas untuk berlangganan topik / dht ke semua middleware dalam infrastruktur IoT. Pada infrastruktur IoT memungkinkan terdiri dari lebih dari satu message broker. Data yang di dapat kemudian diteruskan ke web services dari aplikasi IoT dengan method POST. Dengan memanfaatkan koneksi internet jaringan seluler pada pembahasan sebelumnya.

 

Skema Komunikasi Internet Gateway

 

Contoh program yang melakukan subscribe terhadap topik yang telah di-publish oleh node sensor dapat dilihat pada kode program 8 InternetGw.py. Untuk menjalankan program ini dibutuhkan pip install paho-MQTT. Program ini dapat dijalankan pada IoT middleware atau perangkat lain yang berada dalam satu jaringan lokal (intranet) dengan message broker. Berikut adalah penjelasan dari potongan kode di program 8 InternetGw.py.

 

Pada baris 70 sampai dengan 79 adalah potongan kode untuk fungsi subscribe topik "/dht" ke message broker dengan protokol MQTT. Program ini akan berlangganan topik "/dht". Pada baris 14 sampai baris 68 adalah kode program untuk mengubah format data yang di dapat dari proses subscribe ke dalam format json. Data berupa temperature dan humidity dari sensor DHT22, adapun isi data berisi informasi "device", "temp", "humid" dan "time". Sebelum data dikirim perlu ditambahkan header agar sesuai dengan mekanisme komunikasi dengan protokol HTTP. Header dapat berupa informasi data yang dikirim, dalam contoh yaitu : 'Content-type': 'application/json'. Berikutnya dengan method POST pada baris 17 data akan dikirim ke alamat 206.189.94.98 yang merupakan alamat dari aplikasi IoT pada sebuah VPS di lingkungan cloud computing.

 


Sebelum menjalankan program ini, pastikan akses internet sudah tersedia. Berikutnya jalankan kode program 8 pada terminal dengan perintah Phyton InternetGw.py.
 
 

Senin, 04 April 2022

Message Broker dalam Praktik Membangun IoT Middleware dengan Raspberry PI

- Tidak ada komentar

Raspberry PI

Protokol perpesanan yang umum digunakan pada IoT adalah MQTT dan CoAP. Untuk MQTT dalam praktik menggunakan Mosquito dengan tambahan library paho-MQTT. Untuk CoAP digunakan CoAPthon, alasan penggunaan dari perangkat lunak tersebut adalah sesuai dengan bahasa pemrograman Phyton. Kedua perangkat lunak tersebut berada pada perangkat yang berfungsi sebagai IoT middleware.

 

1. Instalasi dan Konfigurasi MQTT

 

Pesan yang tersimpan pada Mosquito bersifat volatile, artinya pesan dari publisher yang diterima akan hilang saat perangkat middleware dimatikan atau reboot. Untuk pemasangan perangkat lunak ini cukup sederhana, dengan menjalankan perintah sudo apt install mosquito mosquito-clients. Selanjutnya periksa dengan perintah netstat -ntulp apakah Mosquito telah berjalan dan listen pada port 1883. Pada gambar di bawah ini terlihat 0.0.0.0:1883 yang menandakan Mosquito telah berjalan dan binding pada port 1883, sedangkan 0.0.0.0 menandakan Mosquito dapat menerima data dari semua IP address yang digunakan oleh IoT middleware.

 


2. CoAPthon

 

Pada bagian ini akan dicontohkan praktik dalam memasang CoAPthon sebagai perangkat lunak message broker untuk protokol CoAP. Untuk pemasangan library CoAPthon pada Raspberry Pi dapat dilakukan dengan perintah sudo pip install CoAPthon. Jika tidak terdapat program, pip bisa di-install dahulu dengan perintah sudo apt-get install Phyton pip. Berikutnya unduh program CoAP server dari github dengan perintah :

 

git close https://github.com/Tanganelli/CoAPthon.git

 

Setelah selesai unduh program CoAPthon dengan perintah cd CoAPthon. Dalam direktori tersebut terdapat berbagai berkas, di antaranya library dan contoh program. Berikutnya coba jalankan CoAP server dengan perintah Phyton CoAPserver.py. Program tersebut akan menjalankan CoAP server pada port 5683. Untuk memastikan dapat digunakan program netstat.

 

Gambar di bawah ini menunjukkan MQTT bekerja (listen) pada port 1883 dan siap menerima data dari sensor baik melalui IPv4 dan IPv6 ditunjukkan dengan udp dan udp6. Sedangkan CoAP menggunakan port standart yaitu 5353. Terdapat banyak opsi untuk proses instalasi kedua broker tersebut, akan tetapi lebih baik menggunakan pip agar library atau perangkat lunak yang dibutuhkan oleh message broker secara otomatis diinstal oleh pip.

 



LoRa dalam Praktik Membangun IoT Middleware dengan Raspberry PI

- Tidak ada komentar


Sama halnya dengan BLE, LoRa tidak berjalan di atas TCP / IP. Setelah modul bekerja, diperlukan LoRa gateway yang bertugas meneruskan data dari node sensor ke message broker. Untuk modul LoRa dalam praktik digunakan HopeRF-RFM9x (Hoperf, 2019).

 

Adapun langkah-langkah untuk integrasi modul LoRa tersebut ke Raspberry Pi sebagai berikut :

 

1. Hubungkan pin antara modul LoRa dengan Raspberry Pi dengan ketentuan pada tabel di bawah ini, kemudian sambungkan dengan kabel GPIO antara kedua perangkat. Sebagai contoh pada kedua gambar di bawah ini.

 


Modul HopeRF-RFM9x

Modul HopeRF-RFM9x dan Raspberry Pi

2. Unduh library dari github dengan alamat :

 

https://github.com/Wei1234c/SX127x_driver_f_or_MicroPython_on_ESP8266

 

Library tersebut akan digunakan untuk beberapa fungsi pada program LoRa gateway. Pada gambar di bawah ini adalah struktur dari berkas yang digunakan pada Raspberry Pi.

 


3. Ada beberapa parameter yang perlu disesuaikan dalam library controller_rpi.py dan sx127x.py agar modul dapat bekerja pada Raspberry Pi. Untuk modifikasi berkas controller.py gunakan editor nano atau lainnya. Berikutnya hilangkan baris yang ditandai pada kode program 5. Program yang nantinya akan dicontohkan tidak memerlukan fungsi tersebut. Berikutnya sesuaikan pada parameter pengaturan pin yang digunakan PIN_ID_FOR_LORA_RESET = 17, PIN_ID_FOR_LORA_SS = 8, PIN_ID_SCK = 11. PIN_ID_MOSI = 10, PIN_ID_MISO = 9 dan PIN_ID_FOR_LORA_D100 = 25.

 

 

4. Berikutnya modifikasi berkas sx127x.py untuk menyesuaikan frekuensi yang digunakan yaitu 915MHz. Cari pada fungsi init dan ubah frekuensi 915E6.


LoRa Gateway

Seperti yang telah disampaikan sebelumnya, LoRa tidak berjalan di atas TCP / IP sehingga data dari node sensor tidak dapat langsung diterima oleh messaage broker. Solusinya adalah menyediakan fungsi untuk menerima data dan mengubah ke mekanisme publish-subscribe. Kode program ini bernama LoRa_gateway.py, dapat dilihat pada kode program 7.

 

Pada kode program 7 : baris kode 1-7 adalah inisialisasi library yang diperlukan. Pada baris 9-22 adalah inisialisasi dari parameter yang diterima dari node sensor. Parameter tersebut berisi topic, device, temp dan hum. Sedangkan isi parameter tersebut di dapat dari fungsi penerimaan data pada baris ke 38-40. Data-data device, temp dan hum selanjutnya diubah ke dalam format json pada baris ke 23-24. Berikutnya informasi topic dan data dalam bentuk json lain dikirim ke message broker pada alamat 192.168.1.1 port 1883 dengan fungsi pada baris 32-33.