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.