Seluruh Artikel

Penerapan IoT di Pertanian: 5 Manfaat Penting

Penerapan IoT di Pertanian.Internet of Things atau IoT adalah suatu hal yang jamak digunakan di dunia 4.0. IOT merupakan hal yang pasti ada di dalam berbagai bidang tidak terkecuali sektor pertanian. Ledakan populasi dunia pada tahun 2040 yang tentu juga akan berdampak pada meningkatnya kebutuhan pangan akan menuntut sistem pertanian yang lebih cerdas dibanding sebelumnya. Di antara berbagai kendala peningkatan produksi pertanian, pertanian teknologi modern, drone untuk pertanian, pemantauan hewan, dan rumah kaca modern penerapan teknologi Internet of Things adalah terobosan yang dapat membuat produksi pertanian lebih efektif dan berkelanjutan.

Pendahuluan Penerapan IoT di Pertanian:

Pondasi dasar dari ekonomi suatu bangsa adalah sektor pertanian. Apabila kita mendambakan situasi ekonomi bangsa yang stabil, maka pembangunan sektor pertanian pun mesti mendapatkan perhatian yang serius. Sebuah bangsa dapat dikatakan maju jika seluruh rakyat terpenuhi kebutuhan utamanya yaitu makanan. Di saat yang bersamaan, pondasi dasar sebuah negara menjadi kuat ketika produksi pertanian merupakan industri kedua dan ketiga dengan bahan mentah dan pemasukan sumber daya keuangan

[penerapan IoT di pertanian]. Layout sawah
[penerapan IoT di pertanian]. Layout sawah. Sumber: Unsplash

Dalam hal ini, Indonesia memiliki modal besar untuk menjadi negara yang maju sebab sumber daya alam dan potensi bidang pertaniannya. Negara kita merupakan Negara pertanian terbesar yang menghasilkan serta mengkonsumsi hasil pertanian. Masalah kebutuhan akan pangan dan papan bagi 200 jutaan penduduk Indonesia terselesaikan oleh sektor pertanian. Namun, sayangnya  sektor Pertanian di Indonesia sendiri masih banyak yang menggunakan teknologi tradisional tanpa perlu bantuan alat modern dikarenakan kondisi alam yang serba tanpa kekurangan.

Selain itu, kelebihan Indonesia yang berada di cincin pergunungan api  membuat tanah Indonesia sangat subur. Dengan kelebihan tersebut, tentu Indonesia berpotensi menjadi produsen pangan terbesar dunia melalui penerapan teknologi IoT. Dengan kecanggihan Internet of Things, Indonesia dapat menjadi Negara pengekspor hasil pertanian terbesar bagi negara lainnya. Fakta bahwa permintaan bahan pangan di negara ini cukup tinggi, maka dengan teknologi pertanian yang maju hasil yang kita dapat dari hasil pertanian pun akan semakin besar.

Tidak efektifnya proses distribusi pasokan dalam sektor pertanian saat ini pada dasarnya disebabkan karena kesalahan manajemen yang tersebar dan kurangnya titik temu dalam pertanian. Yang menyebabkan efisiensi dan proses operasi yang mudah dan sempurna dalam sistem produksi pertanian sulit untuk diterapkan.

[penerapan IoT di pertanian]. Sensor terkoneksi dengan smartphone
[penerapan IoT di pertanian]. Sensor terkoneksi dengan smartphone. Sumber: Farmers Review Africa

Sampai di sini tentu kita dapat melihat bahwa untuk mengubah industri di dunia menjadi industri yang lebih efisien, Internet of Things merupakan salah satu solusi ideal dan efektif. Bersama teknologi IoT, bidang agribisnis dan agroteknologi pun akan mendapatkan dampak positif yang besar. Oleh karena itu, dapat dikatakan bahwa dunia pertanian dan perkebunan perlu mengenal dan menerima konsep Internet of Things agar lebih berkembang daripada sebelumnya.

Penerapan IoT di pertanian dapat mengurangi bahkan menjadi solusi yang tepat bagi berbagai problematika bisnis pada sektor pertanian. Akurasi Internet of Things dapat memberikan perubahan pada distribusi pasokan pertanian dan menyediakan teknologi yang membuat pasokan logistik pertanian menjadi lebih lancar.

Oleh sebab itu, sudah jelas bahwa teknologi IoT sangat bagus dan cocok sekali diterapkan pada sektor pertanian sebab karakteristik bidang agribisnis yang berpotensi sekali menerapkan IoT.

Seperti apa penerapan secara Internet of Things secara praktis di bidang pertanian? Simak contoh-contoh di bawah ini!

Maksimalisasi produk

Cuaca, keadaan tanah, dan kebutuhan pasar terhadap tanaman tertentu adalah situasi-situasi yang berpengaruh terhadap maksimalisasi produk pertanian. Dalam membuat keputusan yang tepat petani membutuhkan data secara langsung tentang kondisi cuaca saat itu. Teknologi tanpa kabel, penerapan mapping berbasi GPS dan juga penyimpanan data berbasis internet bisa membantu banyak petani untuk hal ini.

[penerapan IoT di pertanian]. Advance reporting. Sumber: KG2

Pemanfaatan sumber daya secara efektif

Sumber daya utama pertanian adalah air dan nutrisi tanah. Komponen ini harus digunakan secara efektif. Kekurangan air dan unsur hara tanah merupakan musuh utama kegagalan panen. Oleh karena itu, kedua komponen tersebut harus dikelola dan dikendalikan secara detail dan akurat. Dengan menggunakan kekuatan Internet of Things, petani dapat mengukur dan menemukan kekurangan komponen utama pertanian sedini mungkin, agar kemudian dapat mengatur penggunaan energi yang digunakan.

Pest Control atau Penanganan hama

Penerapan IoT dalam persoalan kontrol dan penanganan hama dapat diaplikasikan ke dalam bentuk jaringan sensor untuk memantau jumlah hama bisa. Pada prakteknya, jika sensor mendeteksi terlalu banyak hama, informasi tersebut dapat dikirim ke sistem pengendalian hama secara otomatis untuk mengambil tindakan. Dalam beberapa kasus, hal ini dapat menggantikan penggunaan pestisida, sehingga hasil panen pun bisa menjadi lebih sehat untuk dikonsumsi

[penerapan IoT di pertanian] UAV Pembasmi hama
[penerapan IoT di pertanian] UAV Pembasmi hama. Sumber: Pixabay

Memaksimalkan operasi produksi

Kegiatan produksi pertanian meliputi pemupukan, penyemprotan hama dan pemanenan. Semua aktivitas ini menggunakan mesin atau peralatan khusus. Dengan menggunakan Internet of Things, petani dapat menemukan lokasi peralatan secara real time. Mereka menggunakan data ini untuk menganalisis dan secara akurat menentukan lokasi efektif area operasi produksi. Hal ini tentu akan berdampak baik pada alur kegiatan pertanian.

Penerapan IoT di Pertanian untuk Monitoring

Dalam memaksimalkan hasil pertanian, pemanfaatan IoT sebagai alat monitoing sangat diperlukan. Hal ini tentu akan menambah efisiensi waktu para pelaku bisnis pertanian sebab kegiatan monitoring perkembangan tanaman dengan IoT akan menggunakan sensor-sensor dan beberapa peralatan khusus. Memanfaatkan keunggulan dari teknologi IoT, petani bisa mengukur, dan mendeteksi dari dini data perkembangan tanaman berbasis agroteknologi ini. Dengan teknologi IoT, petani bisa mengetahui kesehatan tanaman yang ditanam secara real-time.

Penerapan Internet of Things di bidang pertanian dapat digunakan sesuai dengan permintaan pangan global yang terus meningkat dari tahun ke tahun. Internet of Things tidak hanya berlaku untuk rantai pasokan pertanian, tetapi juga untuk teknologi sensor air, sensor untuk mendeteksi invasi organisme berbahaya, dan sensor untuk menjaga suhu lingkungan. Melalui aplikasi ini, efisiensi kerja akan bertambah dan hasil pertanian dapat meningkat pesat.

Internet of Things menggunakan aplikasi yang memproses informasi dan infrastruktur. Teknologi Internet of Things (IoT) seperti penggabungan dari ilmu pengetahuan, manajemen, dan pengambilan keputusan  pertanian terkait produksi pertanian. Aplikasi Internet of Things (IOT) mencakup fasilitas untuk memproses data pertumbuhan pabrik, manajemen produksi digital, berbagi data, antarmuka pengguna, dan layanan jaringan cerdas serta pengambilan keputusan.

[penerapan IoT di pertanian] Smart Realtime monitoring. Sumber: Redtone

Konsep Internet of Things terkait dengan jaringan, yang menghubungkan segala sesuatu ke Internet melalui identifikasi frekuensi radio (RFID), sensor, sistem pemosisian global (GPS), pemindai laser dan sensor informasi lainnya sesuai dengan protokol yang disetujui dan pertukaran informasi pengetahuan identifikasi, pelacakan lokasi, pemantauan serta manajemen.

Internet of Things dapat secara otomatis mengidentifikasi objek dan lokasi, melacak, memantau, dan memicu peristiwa. Dengan menggunakan teknologi RFID untuk memindai dan membaca tag EPC pada komoditas pertanian, serta memperoleh informasi identitas dari komoditas dan berbagi informasi terkait komoditas tersebut.

[penerapan IoT di pertanian] RFID pada produk Pertanian. Sumber: Agritechtomorrow

Pertanian berbasis Internet of Things memungkinkan pemangku kepentingan mendapatkan data secara langsung yang valid, akurat dan berguna. Proses ini akan memangkas semua kegiatan yang memakan waktu tertentu dan mengurangi banyaknya tenaga kerja di industri pertanian. Oleh karena itu, industri pertanian saat ini harus menyadari dan mulai menerima konsep IoT serta potensi penerapan pasar Internet of Things di bidang pertanian.

Penggunaan teknologi pintar dapat meningkatkan daya saing dan keberlanjutan produk pertanian. Ketika Internet of Things dalam bidang pertanian telah diaplikasikan, maka masalah-masalah yang menghambat produksi pertanian seperti keterbatasan lahan, perubahan iklim serta masalah kekurangan tenaga kerja akan tertanggulangi sehingga kebutuhan untuk mempercepat produktivitas pangan untuk meningkatkan populasi dunia dapat tercapai.

Lalu perlukah dunia pertanian mengenal teknologi IoT ? Tentu saja, jika tidak ingin tertinggal di sektor pertanian Global.

Kesimpulan

Pada artikel penerapan IoT di pertanian ini Anda telah mengetahui beberapa manfaat yang utama agar menjadi lebih optimal dan effisien. Jika Anda tertarik untuk mendalami lebih mengenai IoT, Anda dapat membaca artikel rujukan di bawah ini:

Sejarah dan perkembangan IoT
Penerapan IoT di kehidupan sehari-hari
Bagaimana Membuat IoT Dashboard
Contoh IoT Platform
Membuat Project IoT Sederhana realtime monitoring
Sistem Pengelolaan Sampah berbasis IoT

Read More
10 Contoh IoT Sederhana

10 contoh IoT sederhana. Menghubungkan kapabilitas mesin satu dengan mesin lainnya secara langsung melalui sambungan internet merupakan fungsi dari Internet of Things atau yang biasa disingkat IoT. Melalui IoT, mesin yang satu dengan lainnya bisa langsung berinteraksi tanpa perlu adanya campur tangan manusia.

Dengan mengurangi interaksi dan bantuan manusia, mesin bisa bekerja secara otomatis sehingga berdampak pada efisiensi dan kecepatan dalam ketika melakukan suatu tugas tertentu. Sebuah kegiatan bisa dikatakan menggunakan teknologi IoT jika setidaknya memenuhi tiga komponen dalam penerapanya yakni perangkat elektronik, adanya internet, serta aplikasi untuk mengendalikan alat.

Contoh IoT sederhana di negara kita diantaranya :

Sistem Monitor Rumah Pintar atau Smart Home

Seperti penerapan smart home. Sebuah rumah bisa dikatakan sebagai smart home jika kegiatan dalam rumah tersebut sebagian besar menggunakan teknologi IoT. Sebagai contoh, untuk menyalakan lampu, rumah tersebut sudah memakai smart kamp yang bisa dikendalikan lewat aplikasi untuk menyalakan dan mematikannya.

Cara kerja serupa juga berlaku untuk perangkat elektronik pintar lainnya seperti air conditioner, air purifier atau penjernih udara, atau sensor gerak. Tidak hanya untuk menyalakan, pengguna juga bisa memasang pengatur waktu atau langsung mematikan semua perangkat pintar tersebut dari jarak jauh jika kita lupa untuk mematikannya saat meninggalkan rumah.

[Contoh IoT sederhana] Smart Home. Sumber: Pixabay

 untuk kenyamanan, IoT juga bisa dimanfaatkan untuk memaksimalkan keamanan di rumah. Melalui CCTV yang mendukung teknologi IoT, pemilik rumah bisa mengawasi rumahnya melalui aplikasi saat sedang bepergian.

Sistem Monitor Untuk Anak Sekolah

Salah satu penerapan IoT sederhana yang bermanfaat bagi kalangan orang tua di berbagai negara adalah adanya sistem monitor anak-anak sekolah atau beberapa mengenalnya dengan MABO. Sistem ini bekerja dengan men-tag beberapa jenis sensor pada anak-anak di sekolah. Dengan sistem ini, Anda bisa memonitor lokasi anak-anak saat di sekolah dan mendapat notifikasinya via internet

IoT Sederhana pada Penerapan Smart City

Penerapan teknologi berbasis IoT juga bisa dimanfaatkan untuk kebutuhan publik dan pemerintahan. Misalnya, dalam penerapan Command Center yang dibentuk oleh setiap pemerintah kota maupun kabupaten. Melalui Command Center, pemerintah kota atau kabupaten bisa memantau mobilitas warganya melalui pantauan kamera CCTV yang disebar di berbagai titik.

Adanya Command Center juga memudahkan warga untuk menyampaikan keluhan terkait fasilitas atau masalah publik yang mereka hadapi. Hal ini akan memangkas proses birokrasi sehingga keluhan warga bisa cepat ditanggapi oleh instansi terkait.

[Contoh IoT sederhana] Smart City. sumber: Pixabay

Cara penyampaian keluhan ini pun bisa melalui berbagai saluran, tidak hanya melalui panggilan telepon, SMS, atau media sosial. Saat ini beberapa Command Center juga terhubung dengan aplikasi yang dikembangkan oleh pihak ketiga demi memperluas saluran pada publik untuk menyampaikan laporan atau keluhan.

Beberapa contoh aplikasinya berada di kota Surabaya yaitu : E-health untuk screening di Puskesmas, Layanan Satu Atap hingga Wadul untuk menerima keluhan hingga saran dari warga.

Pengelolaan Pelayanan Kesehatan dan Medis Puskesmas

Secara keseluruhan, penambahan fitur IoT sederhana ke beberapa puskesmas bertujuan untuk meminimalisir terjadinya hal-hal yang tidak diinginkan pada pasien dan calon pasien. Jadi, bahkan sebelum terjadipun dokter bisa mengetahui potensi gangguan kesehatan pada seorang individu dan melakukan upaya pencegahan.

[Contoh IoT sederhana] E-health
[Contoh IoT sederhana] E-health

Pada E-health riwayat penyakit, hingga rumah sakit rujukan bisa terintegrasi dengan layanan BPJS kesehatan.

Sistem Penerangan Lampu Jalan Otomatis

Teknologi IoT ini diterapkan agar dapat menghemat penggunaan energi listrik yang terbilang sangat tinggi. Teknologi lampu jalan pintar ini akan mengganti lampu penerangan di jalan yang sebelumnya menggunakan lampu biasa menjadi lampu yang lebih “smart“. Lampu yang akan dikendalikan jarak jauh dan bisa memberikan notifikasi apabila sudah harus diganti.

Sistem Lampu Lalu Lintas Otomatis

Teknologi IoT yang mirip seperti yang diterapkan pada lampu jalan, memiliki fungsi yang sama agar dapat menghemat penggunaan energi listrik yang terbilang sangat tinggi. Teknologi lampu lalu lintas pintar ini akan mengganti tanda lalu lintas di jalan yang sebelumnya menggunakan lampu biasa menjadi lampu yang lebih “smart“ dengan integrasi dengan tenaga surya. Lampu lalu lintas yang akan dikendalikan jarak jauh serta otomatis dan bisa memberikan notifikasi apabila ada kerusakan atau sistem yang mengalami gangguan.

Sistem Informasi Terintegrasi Kota Surabaya

Kehadiran SITS atau Sistema Informasi Terintegrasi Kota Surabaya berbasis IoT turut membantu sinergi antar instansi di Surabaya ketika menghadapi keadaan darurat. Sebagai contoh, ketika kamera CCTV menangkap adanya kecelakaan yang mengakibatkan tersendatnya lalu-lintas, petugas SITS bisa langsung menghubungi instansi yang berwenang untuk menghadapi masalah tersebut.

Sistem Informasi Terintegrasi Surabaya juga bisa dimanfaatkan untuk mencegah hal-hal yang tidak diinginkan. Misalnya, ketika kamera CCTV menangkap gambar pergerakan massa dalam jumlah besar, petugas Command Center SITS bisa menghubungi instansi berwenang untuk mengawal dan mengamankan aksi tersebut agar tetap sesuai koridor dan tak mengganggu aktivitas publik. Selain itu warga juga dapat ikut memantau kondisi lingkungan sekitar.

Sistem Tilang Elektronik

Penerapan sistem tilang ini menerapkan banyak CCTV disetiap lampu merah dan persimpangan kota yang di mana terkoneksi dengan data center di Kepolisian, yang merekam nomor polisi pelanggar lalu mencocokannya dengan BPKB pengguna lalu polisi akan mendatangi rumah pelanggar lalu melakukan tilang.

[Contoh IoT sederhana] Tilang elektronik
[Contoh IoT sederhana] Tilang elektronik. Gambar: Seva.id

Cara ini terbilang cukup efektif untuk mengurangi pelanggar lalu lintas dan cocok untuk diterapkan di banyak kota besar di Indonesia. Diharapkan dengan adanya sistem ini pelanggar akan berkurang.

Smart E Toll

Seperti namanya, sistem bernama Smart E Toll merupakan sistem IoT yang dapat memonitor status E-money dan pintu tol sekaligus membukanya dengan fitur scanner beam. Apabila menerapkan sistem ini, Anda bisa masuk ke pintu tol dimanapun berada tanpa mengeluarkan kartu E-Toll dari mobil. Untuk akses pembukanya juga akan lebih aman karena hanya E Toll yang ada di mobil Anda. Cara Smart E Toll ini akan memudahkan Anda yang tidak perlu mengeluarkan tongkat tol ketika ada akses masuk ke Tol.

Tempat Sampah Sementara Terintegrasi

Pengolahan sampah terintegrasi pada tempat pembuangan sampah sementara untuk memonitor volume sampah di suatu TPS yang bisa dipantau dari jarak jauh pada kantor pasukan kuning Surabaya. Petugas kebersihan tidak perlu mendatangi tempat sampah warga untuk memeriksanya setiap hari karena terbantu adanya Internet Of Things pada perangkat smartphone dan sistem sensor yang terdapat pada bak sampah angkut sementara.

Warga juga bisa membuang sampah plastik dan botol yang bisa ditukarkan menjadi tiket Surabaya Bus. Cukup menggunakan KTP saja serta menghitung banyaknya jumlah sampah botol.

Masih banyak sekali penerapan teknologi IoT yang bisa dikembangkan dalam proses pengembangan indonesia. Penerapan pada industri hingga Smart City. Penanggulangan bencana, kerusuhan hingga masalah kesehatan dengan Command Center yang terintegrasi.

Setelah penjelasan di atas, kapan Anda dapat menerapkan teknologi IoT sederhana? Apakah sudah ada keinginan untuk menerapkan teknologi IoT ?   

Rekomendasi Artikel Terkait:

Penerapan IoT di Kehidupan Sehari-hari: 13 Contoh Real

Mengetahui Sejarah dan Perkembangan IoT: 3 Pilar Penting

Sistem Pengelolaan Sampah Berbasis IoT

Read More
Penerapan IoT di Kehidupan Sehari-hari: 13 Contoh Real

Penerapan IoT di kehidupan sehari-hari. Beberapa dekade yang lalu, munculnya Internet benar-benar mengubah cara dunia beroperasi dengan kecepatan yang sedemikian cepat. Era baru sudah di ambang pintu, yaitu era IoT atau Internet of Things . Secara umum, Internet of Things mendukung semua orang untuk memiliki pemahaman yang tinggi tentang dunia di sekitar kita dan perkembangannya.

Internet of Things dalam kehidupan sehari-hari juga menjadi fokus perkembangan teknologi saat ini. Pasalnya, Internet of Things (IoT) dapat memfasilitasi pekerjaan semua orang. Di bawah ini kami akan memberikan informasi tentang penerapan Internet of Things dalam kehidupan sehari-hari. Mau tahu tentang teknologi IoT yang mempermudah pekerjaan kita sehari-hari? Silahkan telusuri artikel ini.

Studi Kasus IoT pada aplikasi hidroponik

Contoh Penerapan IoT

Penerapan IoT di kehidupan sehari – hari pun menjadi perhatian pada perkembangan teknologi saat ini. Karna internet of things (IoT) dapat memudahkan pekerjaan setiap orang. Dibawah ini saya akan memberikan informasi tentang penerapan IoT pada kehidupan sehari – hari. Bingung seperti apa sih yang disebut dapat memudahkan pekerjaan ? Daripada penasaran langsung aja ya.

Colokan Listrik Pintar

Colokan listrik ini memiliki koneksi wifi dan terhubung ke produk elektronik, seperti lampu atau oven.

Nah cara kerjanya adalah Anda dapat menghidupkan dan mematikan koneksi listrik melalui jangkauan Internet pada smartphone yang terhubung ke stopkontak.

Dengan sistem Internet of Things ini, ketika kita lupa mematikan lampu atau alat elektronik lainnya saat kita berada di luar rumah, kita hanya perlu mematikannya dengan smartphone yang terkoneksi dengan internet.

Smart Garage Door

Proyek IoT garasi pintar ini dapat memantau status pintu garasi dan membuka garasi secara otomatis, atau menggunakan fungsi pemindai sidik jari (mirip di luar negeri). Dikatakan bahwa garasi dengan IoT ini dapat menjaga keamanan pada garasi rumah. Teknologi itu dapat mengirimkan pemberitahuan ketika seseorang mencoba memasuki garasi secara paksa atau seseorang ingin mencuri sesuatu.

Kulkas Pintar

Keunggulan dari kulkas pintar ini adalah kita bisa melihat persediaan makanan dan miuman yang ada di kulkas, dengan bantuan sensor yang ada. Oleh karena itu, ketika kita berada di luar, kita tahu bahwa barang-barang di lemari es telah habis, dan kita akan segera mengetahui dan membeli makanan ketika kita memeriksa di ponsel kita.

Penerapan IoT pada Tempat Sampah Pintar

Tempat sampah pintar ini adalah bentuk yang sangat kreatif dan inovatif yang dapat digunakan sebagai saran membelinya. Dengan menggunakan alat ini, Anda dapat mengoptimalkan pengumpulan sampah dan meminimalkan konsumsi bahan bakar.

https://www.youtube.com/watch?v=kB-tYUyIS3w
[Penerapan IoT] Prototype Tempat Sampah Pintar

Jika jumlah tempat sampah dan suhu tempat sampah tidak normal, sistem kerja tempat sampah akan memberi tahu Anda. Sangat berguna untuk mengumpulkan sampah utuh.. Jika Anda ingin membuat tempat sampah pintar, maka dapat membaca artikel tutorial system pengelolaan sampah berbasis IoT.

Jakarta One Card

Jakarta One card merupakan “kartu pintar” yang dapat digunakan sebagai KTP elektronik, alat pembayaran belanja, dan kartu BPJS. Pemerintah Jakarta bekerja sama dengan Bank DKI untuk memproduksi "Kartu Jakarta". Semua layanan di kota dapat digunakan hanya dengan satu kartu, dan orang dapat membayar sesuai dengan kebutuhannya tanpa menghabiskan banyak uang dan waktu.

Penyiram Otomatis

Inovasi berikutnya adalah mesin penyiram otomatis yang saat ini sudah ada beberapa kota besar di Indonesia, seperti di taman-taman di Jakarta Anda yang mengetahui, di bundaran tugu tani, tanaman disana sudah menggunakan teknologi ini.

Menyiramkan air secara otomatis tanpa harus menunggu petugas kebersihan yang menggunakan armada penyiram air yang berkeliling. Cara kerjanya adalah dengan menetapkan jadwal penyiraman dan menghubungkannya ke jaringan wifi.

Studi Kasus IoT pada aplikasi hidroponik

Surabaya Bus

Dengan mengaktifkan fitur scan QR ketika menunggu bus di halte, pengguna transportasi akan mengetahui posisi bus terdekat, bus yang sudah berangkat hingga jalur Bus Kota Surabaya.

[Penerapan IoT] Surabaya Bus
[Penerapan IoT] Surabaya Bus

Sistem kerja Surabaya Bus ini akan memberikan notifikasi ketika bus akan datang. Dan sangat berguna untuk mengetahui berapa lama bus akan sampai, sehingga Anda bisa bersiap-siap.

Sepeda Pintar

Sepeda adalah salah satu alat olah raga yang tepat digabungkan dengan teknologi IoT. Sepeda Pinter atau connected bicycle dibuat untuk pengendara urban.

Sepeda pintar ini dilengkapi dengan sistem pemosisian universal atau GPS, berbagai sensor, serta koneksi Wi-Fi dan Bluetooth, sehingga memudahkan komunikasi dengan ponsel atau jam tangan pintar.

Smart Bike atau Sepeda Pintar dapat mendeteksi kendaraan di titik buta pengemudi untuk meminimalkan kecelakaan.

Selain itu, setiap kali digunakan, sepeda akan mencatat data perjalanan.Misalnya, apakah ada lubang pada rute yang dilewati. Pada sesi bersepeda berikutnya,  sepeda pintar ini dapat menyarankan rute yang lebih aman untuk dilalui.

Smart Helmet Visor

Helm dengan tambahan fitur IoT akan sangat mendukung kenyamanan pengguna kendaraan bermotor.

Smart Helmet Visor ini dilengkapi dengan layar mini yang tepat berada didepan mata pengendara, dimana terdapat GPS dan Map untuk mengetahui jarak dan petunjuk arah ketika ingin mencapai ke suatu lokasi.

Selain itu Smart Helmet juga bisa berintegrasi dengan kondisi kendaraan yang tersambung dengan bluetooth, dimana helm ini juga bisa mengetahui kondisi mesin, panas mesin, oli hingga kapasitas bensin.

Smart Home

Teknologi IoT yang dimanfaatkan untuk menjaga keamanan sebuah hunian adalah Smart Home. Dengan menggunakan Smart Home, Anda bisa mengetahui segala kondisi disetiap sudut rumah.

Terkoneksi dengan internet dan WiFi, Smart Home dapat mendeteksi pergerakan yang ada didalam dan diluar rumah. Termasuk juga untuk menyalakan lampu, menutup pagar rumah hingga menyalakan televisi dan radio.

[Penerapan IoT] Smart home
[Penerapan IoT] Smart home

Pemilik rumah dan bisnis memanfaatkan sensor IoT untuk memanfaatkan teknologi Smart Home untuk pemantauan yang ramah lingkungan dan hemat energi. Perangkat yang dilengkapi dengan sensor ini dapat memantau konsumsi energi, baik untuk rumah individu dan bisnis.

Smart Mirror

Kaca yang sekilas nampak biasa saja, sebenarnya memiliki fitur yang sangat canggih.Smart Mirror dapat mengatur kecerahan cahaya pada kaca Anda. Terdapat juga berbagai fitur yang mirip dengan smartphone seperti, layanan cuaca, penunjuk waktu, hingga anda bisa melakukan video call menggunakan kaca ini.

[Penerapan IoT] Smart mirror
[Penerapan IoT] Smart mirror

Menggunakan platform android sebagai otaknya, membuat kaca ini bisa melakukan segala hal yang sama persis dengan smart home anda.

Sistem Perawatan Lansia

Penduduk lansia di berbagai negara terus berkembang pesat, dan kebanyakan anak sibuk dengan pekerjaan dan tidak memiliki banyak waktu untuk mengurus orang tuanya di rumah. Sistem perawatan lansia mengacu pada penggunaan teknologi pengumpulan informasi untuk mengumpulkan informasi tentang aktivitas lansia, dan kemudian mengirimkan informasi tersebut ke komputer melalui jaringan nirkabel.

 Alat ini secara realtime dapat dianalisis oleh anak melalui ponsel. Dengan memasukkan akselerometer axis, termometer, sfigmomanometer (jam tangan tekanan darah) dan juga sepatu lansia yang dilengkapi dengan sensor perawatan pakaian lansia untuk merekam aktivitas lansia.

Lampu jalan pintar

Lampu jalan berkemampuan IoT sekarang dapat otomatis nyala dan mati dengan bantuan manajemen penerangan kota besar di Indonesia yang jaraknya beberapa kilometer jauhnya, Lampu jalan pintar akan mengirimkan data IoT yang relevan tentang penggunaan daya dan menyesuaikan lampu dari jarak jauh untuk menyesuaikan dengan kondisi lingkungan setempat - seperti lampu redup di malam hari di bawah sinar bulan.

[Penerapan IoT] Smart Lighting
[Penerapan IoT] Smart Lighting

Lampu menyala saat hujan deras dan kabut. Kemampuan untuk mengatur lampu jalan berdasarkan kondisi lingkungan dapat menghemat energi dan mengurangi biaya energi.

Penggunaan teknologi ini bisa Anda temukan dibeberapa perumahan elit di kota kota besar di Indonesia.

Nah itulah tadi beberapa contoh dari IoT di kehidupan Sehari-hari, apakah Anda sadar bahwa teknologi disekitar kita menerapkan IoT?

Kesimpulan

Anda telah mengetahui penerapan IoT pada kehidupan sehari-hari. Banyak sekali manfaat yang didapatkan dengan teknologi ini. Jika Anda ingin memulai membuat project IoT ada beberapa rekomendasi artikel yang dapat Anda baca untuk di ikuti tutorialnya step by step:

Studi Kasus IoT pada aplikasi hidroponik

Apa itu Arduino?
Mengenali 4 Jenis Arduino
Memulai Raspbery Pi
Membuat realtime monitoring system

Read More
Mengetahui Sejarah dan Perkembangan IoT: 3 Pilar Penting

Sejarah dan perkembangan IoT. Internet of Things atau IoT adalah teknologi komunikasi antar mesin dengan menggunakan koneksi internet. Bentuk komunikasi pintar ini juga disebut Machine-to-Machine  dengan manusia sebagai pengelola dan penggunanya.

Sejarah dan perkembangan IoT

Sebagaimana telepon seluler dapat menjadi telepon pintar dengan menghubungkan ke Internet, demikian pula mesin dan peralatan bisnis dapat menjadi pintar dengan menghubungkan ke Internet. Mesin di pabrik, peralatan perbankan, kamera keamanan di tempat umum, dan bahkan sensor di sektor pertanian semuanya bisa menjadi perangkat pintar.

Internet of Things tidak terbatas pada lingkungan industri, tetapi juga dapat digunakan untuk kebutuhan sehari-hari. Seperti kontrol suara rumah, bel pintu, lampu pintar, monitor polusi ruangan, dan lain sebagainya.

Ketika berbagai aset bisnis Anda terhubung ke Internet, Anda bisa mendapatkan informasi detail tentang kondisi bisnis saat ini atau real-time. Oleh karena itu, sangat memungkinkan untuk melakukan perencanaan operasional berdasarkan data yang benar, memantau kinerja dan menjaga kualitas produk.

Sejarah IoT

Sebelum tanki bensin IoT, sensor listrik NB-IoT, atau smart TV, perangkat pertama yang terkoneksi dengan internet adalah… pemanggang roti!

Pada tahun 1989, John Romkey dan Simon Hackett menghubungkan pemanggang roti ke Internet yang dapat dijalankan di bawah perintah komputer. Pada saat itu, konsep ini disebut "Internet tertanam" atau "komputasi pervasive". Namun, setelah pengenalan teknologi RFID atau teknologi identifikasi frekuensi radio pada tahun 1999, Kevin Ashton menciptakan istilah "Internet of Things".

[sejarah dan perkembangan IoT] Illustrasi electrical engineer
[sejarah dan perkembangan IoT] Illustrasi electrical engineer. Sumber: Unsplash

Perkembangan Internet of Things telah dimulai. Mulai dari inovasi RFID yang memungkinkan pelacakan barang jarak jauh melalui frekuensi radio, hingga berbagai inovasi objek tampilan data berupa bola berwarna atau robot kelinci, penggunaan Internet Protocol (IP) pada jaringan objek pintar mulai tahun 2008, dan penggunaan IPv6 pada tahun 2011 . Memberikan informasi tentang identitas dan lokasi perangkat di jaringan internet.

Perkembangan IoT

Teknologi Internet of Things terus berkembang hingga saat ini. Seperti yang ditunjukkan pada gambar Hype-Cycle berikut yang diteliti oleh Gartner pada tahun 2019, pasar Internet of Things diharapkan cukup matang sehingga teknologinya akan lebih stabil dan diterima secara luas oleh pasar dalam waktu 5-10 tahun. Setelah memasuki generasi kedua dan ketiga, risiko penerapan Internet of Things akan berkurang, dan 20% target pasar akan menggunakan Internet of Things.

Mesin yang saling berkomunikasi dapat mempermudah proses bisnis, karena tidak seperti manusia, mesin tidak perlu istirahat. Mesin dapat bekerja tanpa gangguan selama 24 jam. Oleh karena itu, menghemat tenaga dan waktu. Pekerjaan perangkat IoT juga akan otomatis terekam secara detail, dan parameter kerja dapat dikelola dari jarak jauh, sehingga menghemat energi. Manajemen sederhana ini akan menghemat biaya operasional dan mendorong perencanaan bisnis.

Internet of Things bukan hanya sekedar alat, tetapi juga merupakan solusi teknis yang akan memberikan aspek baru dalam kegiatan bisnis yaitu visibilitas. Dengan solusi IoT, pemilik bisnis dapat memahami kondisi bisnisnya secara real time. Misalnya, solusi Managed SD-WAN mendemonstrasikan penggunaan data Internet di cabang bisnis dan memberikan kontrol atas manajemen lalu lintas Internet kantor pusat. Contoh lainnya adalah bahwa solusi manajemen kinerja aset (APM) memberikan visibilitas ke dalam kondisi fisik aset (seperti suhu, kelembaban, pencahayaan), terlepas dari lokasi aset.

Sejarah dan perkembangan IoT
[sejarah dan perkembangan IoT] Ilustrasi papan elektronik.

Visibilitas menyederhanakan jalur komunikasi di perusahaan, memfasilitasi pemantauan, meningkatkan keamanan, dan memastikan bahwa semua perencanaan didasarkan pada data tertentu dalam solusi IoT.

Sesuai dengan namanya, Internet of Things mengandalkan internet sebagai penghubung antar sensor atau perangkat, yang akan saling berkomunikasi di cloud. Data yang dikirim dari sensor ke cloud akan diproses oleh perangkat lunak, yang akan menentukan langkah selanjutnya. Tindakan ini dapat berupa: mengirim peringatan, menyesuaikan rencana, menutup akses ke alat, atau lainnya.

Solusi IoT dapat dikontrol oleh pengguna melalui dashboard di komputer, laptop, atau perangkat seluler lainnya. Pengguna atau karyawan yang telah diberikan izin dapat mengatur dan mengubah operasi dan aturan sesuai kebutuhan perusahaan. Perubahan ini akan dikirim kembali ke cloud, dan sensor yang sesuai akan diperbarui secepatnya.

Kegunaan Internet of Things di Masa Depan

Di masa depan, teknologi akan memainkan peran yang lebih besar dalam operasi dan manajemen perusahaan. Data akan menjadi penentu utama keputusan. Visibilitas bisnis dan transparansi data yang disediakan oleh IoT akan membuka pintu isolasi antar unit bisnis. Departemen pengembangan bisnis dapat melihat data tangan pertama dari hasil kerja di tempat yang sebelumnya hanya dimiliki oleh departemen operasi. Keterbukaan ini akan mendorong karyawan untuk mengambil tanggung jawab dan mengedepankan efisiensi waktu dan kinerja produksi. Nilai teknologi IoT dalam sebuah perusahaan tidak hanya akan menjadi alat pendukung, tetapi juga sebagai penggerak utama bisnis tersebut.

[sejarah dan perkembangan IoT] Ilustrasi perangakat IoT.

Internet of Things adalah solusi komunikasi mesin-ke-mesin yang memberikan visibilitas bisnis secara real-time. Konektivitas 24 jam dan berbagai fungsi otomatis menjadikan Internet of Things metode yang efektif untuk pemantauan jarak jauh dan manajemen bisnis. Dengan cara ini, sumber daya yang ada dapat digunakan untuk situasi darurat. Perusahaan dapat dengan cepat beradaptasi dan mempertahankan produktivitas, bahkan di era normal yang baru berubah.

Bagian pembentuk IoT

Teknologi seperti kecerdasan buatan, Machine Learning, dan visi komputer dapat ditambahkan ke sistem IoT. Empat elemen utama yang membentuk sistem IoT, diantaranya:

Sensor atau device

Ada banyak bentuk solusi IoT. Terkadang suatu perangkat memiliki banyak sensor. Misalnya, solusi manajemen aset cair INTANK memiliki sensor suhu dan sensor pengukur level. Solusi pemantauan aset (seperti APM) memiliki 2 perangkat untuk ditinjau, yang ditempatkan di aset dan ruang atau transportasi aset.

[sejarah dan perkembangan IoT] Ilustrasi perangkat elektronik
[sejarah dan perkembangan IoT] Ilustrasi perangkat elektronik

Menurut kegunaannya masing-masing, tugas sensor tersebut adalah mengumpulkan data setiap saat sesuai interval waktu yang ditentukan. Karena data yang dikumpulkan oleh sensor sangat kecil, baterai pada perangkat dapat digunakan dalam jangka waktu yang lebih lama, misalnya sensor NB-IoT dapat bertahan selama 10 tahun tanpa perlu mengganti baterai.

Konektivitas

Tanpa koneksi, data di perangkat tidak akan bisa mencapai sistem. Metode komunikasi antara perangkat dan sistem IoT mungkin berbeda. Seluler, satelit, WiFi, Bluetooth, koneksi jaringan area luas berdaya rendah (LPWAN), dll.

[sejarah dan perkembangan IoT] Contoh Perangkat IoT. Sumber: Pexels

Pilihan koneksi selalu disesuaikan dengan kebutuhan pengguna. Untuk industri yang banyak menggunakan perangkat kecil dalam skala besar (seperti pertanian dan distribusi tenaga listrik), LPWAN adalah jenis sambungan yang tepat. Pada saat yang sama, hal yang sama berlaku untuk SD-WAN dan konektivitas layanan terkelola untuk industri keuangan yang membutuhkan keamanan tinggi.

Data processing

Saat data dari sensor memasuki cloud, pemrosesan pun dimulai. Karena data selalu datang dan selalu diperbarui, perangkat lunak dapat melihat perkembangan aset secara real time dan memastikan bahwa aktivitas aset memenuhi aturan atau parameter yang telah ditentukan sebelumnya.

Prosesnya sesederhana mengonfirmasi tanggal pemeliharaan truk pengiriman pada solusi FleetSight. Bisa juga lebih rumit, seperti menggunakan teknologi computer vision untuk mengidentifikasi penggunaan masker atau alat pelindung diri (APD) di tempat umum melalui gambar dari kamera keamanan.

Proses ini sangat cepat dan dapat mengaktifkan tindakan segera, seperti memberi tahu manajer armada tentang kebutuhan perawatan truk atau memberi tahu personel keamanan yang tidak mengenakan APD di area yang ditentukan.

Nah itulah sejarah dan perkembangan Internet of Things. IoT sendiri merupakan solusi komunikasi antar mesin yang dapat memberi visibilitas usaha secara real-time.

Kesimpulan

Pada artikel ini Anda telah mengetahui sejarah dan perkembangan IoT, serta 3 pillar pembentuk bagian IoT yang utama. Untuk memahami dasar aplikasi IoT, Anda dapat memulai dengan mempelajari Arduino dan sensor-sensor open source. Dengan demikian Anda dapat mengaplikasikannya pada kehidupan sehari-hari dan membantu tugas Anda. Oleh karena itu, segera mulai untuk membangun IoT project

Read More
Cara Menggunakan Jupyter Notebook dengan Mudah

Pada artikel ini Anda akan mengetahui cara menggunakan jupyter notebook untuk project Anda.

Adapun daftar isi dari artikel ini ialah:

Intro Cara Menggunakan Jupyter Notebook

Jupyter notebook adalah aplikasi berbasis web open source yang dapat digunakan untuk membuat dan membagikan dokumen. Dokumen ini berisi kode, persamaan matematika, visualisasi maupun text. Jupyter notebook ini di kelola oleh orang-orang yang tergabung pada Project Jupyter.

Jupyter notebook merupakan project spin-off dari IPython, yang pada mulanya memiliki proyek tersendiri yaitu Notebook IPyhton. Memiliki nama Jupyter karena dapat mendukung bahasa pemrograman Julia, Python dan R. Jupyter disajikan dengan kernel IPython, sehingga memungkinkan Anda untuk menulis program dengan menggunakan Python. Namun, pada saat ini ada lebih dari 100 kernel lainnya yang dapat Anda gunakan.

[Cara menggunakan Jupyter Notebook] Tampilan full Jupyter Project. Sumber:Jupyter.org

Menjalankan Jupyter notebook

Jupyter notebook tidak termasuk di dalam Python package. Oleh karena itu, Anda perlu menginstallnya secara terpisah jiga ingin memakai nya.

https://www.youtube.com/watch?v=HQaCF2F_MRo
Cara Menggunakan Jupyter Notebook

Ada banyak pilihan distribusi bahasa pemrogramanan Python. Pada artikel ini akan difokuskan pada dua saja, salah satu diantaranya adalah menginstall Jupyter notebook. Distribusi Python paling populer adalah CPython, yang bisa Anda dapatkan dari website official nya.

Cara Install Jupyter Notebook

Anda dapat menginstall Jupyter Notebook secara praktis dengan menggunakan "pip" untuk instalasi Jupyter notebook. Perintah yang harus Anda tulis pada powershell adalah seperti ini:

pip install jupyter

Selain itu CPython, distribusi Python yang populer lainnya adalah Anaconda. Anaconda memiliki installer package tersendiri yang disebut dengan conda. Anaconda hadir dengan paket library scientifik, termasuk Jupyter Notebook. Oleh karena itu, Anda tidak perlu melakukan instalasi tambahan.

Cara menggunakan Jupyter notebook anaconda navigation
[Cara menggunakan Jupyter notebook] Anaconda Navigation

Cara Menggunakan Jupyter notebook server

Setelah Anda menginstall Jupyter notebook, sekarang saatnya untuk mempelajari bagaimana cara menggunakannya. Jika Anda menggunakan windows, maka dapat mencarinya pada kolom pencarian program, lalu tulis Jupyter Notebook, lalu klik.
Atau Anda dapat menuju folder instalasi jupyter notebook, lalu buka terminal windows dan eksekusi perintah:

jupyter notebook

Dengan perintah tersebut, maka akan terbuka browser baru dengan URL: http://localhost:8888/tree. Sehingga Anda akan melihat tampilan browser seperti ini:

Cara menggunakan jupyter notebook
[Cara menggunakan Jupyter notebook] Tampilan browser Jupyter Notebook

Perlu diperhatikan bahwa saat ini Anda hanya menjalankan Jupyter notebook server. Untuk membuat notebook itu sendiri, akan di bahas pada bagian selanjutnya.

Membuat Notebook

Setelah Anda memahami cara menggunakan Jupyter Notebook Server. Sekarang saatnya untuk mengetahui cara membuat dokumen pada Jupyter Notebook

Hal pertama yang perlu dilakukan adalah dengan klik tombol "New" di bagian kanan atas, lalu akan terbuka beberapa pilihan. Pilihlah Python 3, selanjutnya halaman web akan terlihat seperti pada gambar di bawah ini:

cara menggunakan jupyter notebook
[Cara menggunakan Jupyter notebook] Membuat Notebook baru

Penamaan

Jika Anda lihat pada bagian judul, secara default akan membuat file dengan nama "untitled", ini adalah nama dari halaman jupyter notebook Anda. Karena nama tersebut tidak memiliki arti, maka Anda dapat mengubahnya dengan mudah.

Anda dapat langsung menggerakkan mouse pada tulisan "untitled" tersebut, lalu klik textnya. Selanjutnya Anda dapat mengubah nama apapun tergantung kebutuhan Anda. Misalkan Anda ingin mengubahnya menjadi "Hello Jupyter":

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Mengubah nama judul

Menjalankan Cell

Secara default, setiap cell pada notebook berupa kode yang siap untuk di eksekusi berdasarkan kernel yang Anda pilih pada bagian awal.

Dalam hal ini, Anda telah menggunakan Python 3 sebagai kernel, artinya adalah Anda dapat menulis kode Python pada cell tersebut. Oleh karena pada awalnya Anda hanya memiliki cell yang kosong, sehingga, Notebook tersebut tidak dapat melakukan apapun.

Untuk memverifikasi bahwa semuanya berfungsi sesuai harapan, Anda dapat menambahkan kode Python kedalam cell tersebut, lalu mencoba untuk menjalankannya.

Silahkan Anda coba pada cell tersebut:

print('Hello Jupyter!')

Dengan menjalankan cell, itu artinya Anda mengeksekusi konten pada cell tersebut. Untuk mengeksekusinya, Anda tinggal pilih cell yang akan di eksekusi dan klik tombol "Run" pada bagian atas. Selain itu Anda pun dapat menggunakan shortcut "Shift+Enter".

Ketika Anda menjalankan kode di atas, maka akan memiliki output seperti pada gambar di bawah ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Menjalankan cell

Jika Anda memiliki beberapa cell di dalam Notebook, maka Anda menjalankan cell secara berurutan. Selain itu, Anda dapat menggunakan variable dan import pada seluruh cell. Hal ini dapat mempermudah untuk memisahkan kode menjadi bagian-bagian logika tanpa perlu mengimport ulang ataupun mendefinisikan variable maupun fungsi pada setiap cell.

Ketika Anda menjalankan cell, Anda akan melihat bahwa ada beberapa tanda kurung siku di sebelah kata "Ln" pada bagian kiri sel. Tanda kurung siku ini akan otomatis terisi dengan angka yang menunjukkan urutan menjalankan cell. Misalnya, jika Anda menjalankan notebook baru, lalu menjalankan cell pertama pada bagian atas notebook, maka tanda kurung siku itu akan menunjukkan angka 1.

Menu

Jupyter Notebook memiliki beberapa menu interaktif. Lokasi dari menu ini seperti pada aplikasi web lainnya, yaitu ada di bagian atas. Daftar menu yang terdapat pada Jupyter Notebook, diantaranya:

  • File
  • Edit
  • View
  • Insert
  • Cell
  • Kernel
  • Widgets
  • Help

Pada artikel ini tidak akan dibahas secara mendetail mengenai isi dari setiap menu terserbut, namun, lebih difokuskan pada itemnya.

Menu pertama ialah File Menu. Di dalam nya, Anda dapat membuat Notebook yang baru atau membuka yang file yang telah ada sebelumnya. Pada bagian ini Anda pun dapat memberi nama ulang Notebook tersebut.

Selanjutnya adalah menu Edit. Di sini Anda dapat melakukan operasi cut, copy dan paste dari suatu cell. Selain itu, Anda dapat melakukan proses delete, split, merge ataupun mengatur ulang posisi dari suatu cell.

Jika Anda perhatikan pada beberapa item di dalam menu ada yang berwarna abu-abu. Ini artinya bahwa tidak sedang diaplikasikan pada cell yang sedang di pilih. Sebagai contoh, jika cell yang sedang Anda pilih memiliki tipe berupa "code", maka Anda tidak dapat menambahkan gambar pada cell tersebut. Namun, jika tipe cell yang Anda pilih berupa "Markdown", Anda dapat menambahkan gambar pada cell ini. Jika Anda mendapatkan menu yang abu-abu ini, cobalah ubah tipe cell nya, maka Anda akan dapat melihat menu tersebut akan dapat digunakan.

Menu View berguna untuk Toogling visibilitas dari header dan toolbar. Anda pun dapat mengaktifkan atau menonaktifkan nomor baris dalam cell. Pada menu ini pun, Anda dapat mengotak-atik toolbar suatu cell.

Untuk memasukkan cell baru berada di atas maupun di bawah dari cell yang sedang di pilih, Anda dapat menggunakan pilihan menu Insert.

Pilihan Menu cell, memungkinkan Anda untuk menjalankan satu cell, kumpulan maupun seluruh cell yang terdapat pada Notebook. Pada menu ini pun Anda dapat mengubah tipe cell.

Jika Anda berencana untuk membagikan Notebook dengan orang lain, Anda dapat menggunakan menu clear output. Sehingga orang lain dapat menjalankan setiap cell secara mandiri.

Menu Kernel untuk memilihi jenis kernel yang digunakan pada project Notebook Anda di belakang layar. Disini Anda dapat merestart nya, lalu mengoneksikan ulang, mematikannya ataupun mengganti kernel sesuai dengan kebutuhan Anda.

Anda mungkin tidak akan sering mengotak-atik kernel, akan tetapi terkadang ketika kita hendak melakukan debugging pada Jupyter Notebook, maka Anda akan melakukan restart kernel.

Menu Widget adalah untuk menyimpan atau membersihkan status widget. Widget pada dasarknya adalah JavaScript code yang dapat Anda tambahkan ke dalam cell untuk membuat konten dinamis menggunakan Python atau kernel lain.

Yang terakhir adalah menu Help. Di sini Anda dapat mempelajari berbagai jenis fitur dan cara menggunakan jupyter notebook sebagai bahan referensi.

Menjalankan Terminal dan yang lain

Jupyter Notebook memungkinkan Anda untuk memulai lebih dari sekedar Notebook. Anda pun dapat membuat file berupa text, folder ataupun Terminal pada browser. Kembali pada homepage yang telah di buka sebelumnya atau menuju link http://localhost:8888/tree. Kembali menuju tombol "new", lalu pilih salah satu opsi lainnya.

Terminal ini mungkin cukup menarik, karena ia dapat menjalankan terminal sistem operasi Anda pada browser. Sehingga Anda dapat menjalankan bash, Powershell, dan sebagainya pada browser, lalu menjalankan perintah shell yang mungkin Anda butuhkan di sana.

Memeriksa yang sedang berjalan

Selain itu pada homepage Jupyter Server (http://localhost:8888/tree) ada dua tab lainnya: Running dan Cluster

Tab Running akan memberitahu Notebook dan Terminal mana yang saat ini sedang running. Hal ini sangat berguna ketika Anda ingin menshutdown server, namun Anda perlu memastikan semua data telah tersimpan. Namun tidak perlu khawatir, karena Notebook menjalankan autosave secara berkala, sehingga kehilangan data sangat jarang terjadi.

Menambahkan Konten

Jupyter notebook mensupport untuk menambahkan "rich content" di dalam cell nya. Pada bagian ini, Anda akan memiliki gambaran umum mengenai beberapa hal yang dapat dilakukan pada cell dengan menggunakan Markup dan Kode.

Jenis Cell

Secara teknis ada empat macam sel: Code, Markdown, Raw NBConvert, dan Heading.

Jenis cell berupa Heading tidak lagi dapat di support oleh versi terbaru dari Jupyter Notebook. Namun, Anda dapat menggunakan tipe cell Markdown untuk heading.

Tipe cell Raw NBConvert adalah tipe yang hanya ditujukan untuk penggunaan secara khusus ketika menggunakan nbconvert pada command line. Pada dasarnya memungkinkan Anda untuk mengontrol format dengan cara yang sangat spesifik saat mengonversi dari Notebook ke format lain, misalnya ke dalam bentuk pdf.

Styling Teks

Jupyter Notebook mendukung Markdown, yang merupakan bahasa markup dari superset HTML. Tutorial kali ini akan membahas beberapa dasar dari apa yang dapat Anda lakukan dengan menggunakan tipe cell Markdown.

Atur cell menjadi Markdown, lalu tulislah text di bawah ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Tulisan italic

Saat Anda menjalankan cell, maka hasilnya akan terlihat seperti ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Terlihat bahwa hasilnya menjadi italic

Jika Anda ingin menjadikan text tersebut menjadi Bold , maka Anda dapat menggunakan dua tanda underscore pada bagian depan dan belakang kata tersebut. Itulah cara menggunakan jupyter notebook untuk keperluan styling konten

Header

Membuat header cukup sederhana, Anda hanya perlu menggunakan tanda tagar. Semakin banyak tanda tagar artinya header semakin mengecil. Selain itu, Jupyter Notebook pun memberikan gambar preview untuk Anda.

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Tingkatan header

Setelah Anda mengeksekusinya, maka hasilnya akan menunjukkan format yang teratur.

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Bentuk header setelah di eksekusi

List

Anda dapat membuat list berupa (point) dengan menggunakan tanda dash, plus ataupun tanda bintang. Ini contoh nya:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] List pada Jupyter Notebook

Kode dan Highlight Sintaks

Jika Anda ingin memasukkan contoh kode, dimana Anda tidak ingin pengguna menjalankannya, maka dapat menggunakan Markdown. Untuk menghighlight code di baris tersebut, Anda hanya perlu menggunakan tanda petik terbarik di antara nya. Jika Anda ingin menghighlightnya pada suatu block, maka Anda dapat menggunakan tiga tanda petik terbalik, contohnya:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Highlight Kode

Mengeksport Notebook

Ketika Anda bekerja dengan Jupyter notebook, Anda akan menemukan bahwa perlunya membagikan hasilnya kepada orang non-teknis. Jika hal itu Anda hadapi, maka Anda dapat menggunakan nbconvert yang telah terintegrasi dengan Jupyter Notebook. Hasil konversi file tersebut dapat berupa:

  • HTML
  • LaTeX
  • PDF
  • RevealJS
  • Markdown
  • ReStructured Text
  • Executable Script

nbconvert menggunakan Jinja template untuk mengkonversikan file notebook (.ipynb) ke dalam format tersebut.

Jinja adalah template engine yang di buat untuk Python. Perlu diperhatikan bahwa nbconvert tersebut bergantung kepada Pandoc dan TeX agar dapat mengeksportnya kedalam bentuk seluruh format di atas.

Bagaimana menggunakan nbconvert

Untuk mengeksekusi perintah nbconvert, tidak menggunakan banyak parameter, sehingga mempelajari untuk memahaminya menjadi lebih mudah. Buka command prompt dan navigasikan kepada folder yang memiliki file Jupyter Notebook. Untuk memerintahkan konversi, maka Anda dapat mengunakan:

jupyter nbconvert <input notebook> --to <output format>

Contoh penggunaan

Misalkan Anda memiliki Notebook bernama contoh_py.ipynb dan ingin mengubahnya menjadi file PDF. Maka perintah yang harus Anda eksekusi adalah:

jupyter nbconvert contoh_py.ipynb --to pdf

Ketika Anda menjalankan perintah ini, Anda akan melihat beberapa output yang memberitahukan mengenai proses konversi. nbconvert akan menunjukkan warning dan error jika memang terjadi masalah ketika dalam prosesnya. Asumsikan bahwa seluruhnya berjalan dengan baik, maka Anda akan mendapatkan output file bernama contoh_py.pdf di dalam folder yang sama.

Proses konversi menjadi bentuk file yang lain pun sama. Anda tinggal memerintahkan nbconvert output file apa yang Anda inginkan (PDF, Markdown, HTML, dan lainnya).

Menggunakan Menu

Anda pun dapat mengeksport Jupyter Notebook yang sedang running dengan pergi menuju menu File dan pilih opsi Download as.

Opsi ini memungkinkan Anda untuk mendownload seluruh format nbconvert yang dapat di support. Keuntungan menggunakan Menu ini ialah kemudahannya, sehingga Anda tidak perlu mempelajari cara konversi nbconvert dengan power shell. Namun, direkomendasikan menggunakan cara nbconvert untuk mengkonversikan multiple file Notebook sekaligus, yang tidak dapat dipenuhi oleh Menu.

Itulah beberapa cara menggunakan jupyter notebook dalam mengkonversi file .ipynb menjadi file yang Anda inginkan

Ekstensi Notebook

Dengan begitu banyak nya fungsionalitas dari bawaan Jupyter Notebook, Anda dapat menambahkan fungsi lainnya dengan melalui ekstensi. Jupyter dapat mensupport empat tipe ekstensi, diantaranya:

  • Kernel
  • IPython kernel
  • Notebook
  • Notebook server

Pada tutorial kali ini kita akan fokus pada ekstensi notebook

Apa itu ekstensi?

Ekstensi Notebook (nbextension) adalah Module JavaScript yang Anda gunakan pada Sebagian besar tampilan front-end Notebook. Jika Anda mahir menggunakan JavaScript, Anda pun dapat membuat ekstensi sendiri. Ekstensi ini dapat mengakses DOM pada halaman dan Jupyter JavaScript API.

Di mana mendapatkan extensi tersebut?

Anda dapat menggunakan Google dengan kata kunci Jupyter notebook extension. Tidak banyak pilihan untuk mendapatkan Jupyter Notebook extension. Ekstensi yang paling popular adalah jupyter_contrib_nbextensions, Anda bisa mendapatkannya dari Github. Repository ini merupakan ekstensi yang disediakan oleh komunitas Jupyter Notebook dan dapat di install dengan perintah pip.

Bagaimana cara instalasinya?

Sebagian besar ekstensi Jupyter Notebook dapat di install dengan menggunakan Python pip. Jika Anda tidak dapat menginstall dengan menggunakan pip, maka alternatif nya adalah dengan perintah:

jupyter nbextension install EXTENSION_NAME

Perintah di atas hanya untuk instalasi, namun tidak membuatnya aktif. Anda perlu mengaktifkan ekstensi nya setelah proses instalasi selesia dengan perintah:

jupyter nbextension enable EXTENSION_NAME

Anda perlu untuk merestart Jupyter Notebook kernel untuk melihat ekstensi tersebut. Bagian ini adalah cara menggunakan jupyter notebook untuk penambahan ekstensi. Sehingga, Anda dapat menambahkan sesuai dengan kebutuhan.

Kesimpulan

Anda telah memahami sebagian besar cara menggunakan Jupyter notebook. Setelah membacanya diharapkan Anda lebih percaya diri dan tidak mendapati hambatan dalam menjalankannya. Walaupun jika Anda terlewat beberapa langkah ataupun masalah, Anda dapat kembali membaca artikel ini dengan cara membookmark nya pada browser favorit Anda. Terima kasih telah membaca artikel ini, semoga bermanfaat untuk project yang sedang Anda kerjakan.

Rekomendasi

Jika Anda ingin praktek latihan cara menggunakan Jupyter Notebook dengan Python maka Anda dapat membaca artikel ini:
Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT Dengan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi
Dasar pemrograman Python
Object Oriented Programming dengan Python
Youtube channel Python dan IoT

Read More
Apa itu tensorflow? 3 Hal Penting Untuk Dipahami

Apa itu Tensorflow? Tensorflow ialah Python library open source untuk komputasi numerik yang dapat mempercepat dan memudahkan dalam menggunakan machine learning.

Machine learning adalah disiplin ilmu yang sangat kompleks. Namun, menerapkan model machine learning jauh dari kata menakutkan dan tidak terlalu sulit, semua itu karena tersedianya framework machine learning seperti "Google Tensorflow". Sehingga, memudahkan proses dalam memperoleh data, melatih "training" model, prediksi dan menyempurnakan hasil yang akan di peroleh.

Tensorflow diciptakan oleh tim Google Brain, di mana framework ini ialah library open source yang digunakan untuk komputasi numerik dan project machine learning berskala besar. Tensorflow menggabungkan banyak model dan algoritma machine learning termasuk deep learning (neural network). Framework ini di susun menggunakan Python front-end API untuk membuat suatu aplikasi penggunaannya, dan menggunakan C++ yang memiliki kinerja terbaik dalam hal mengeksekusi.

Tensorflow dapat melatih dan menjalankan neural network untuk keperluan mengklasifikasikan tulisan tangan, pengenalan gambar/object, serta menggabungkan suatu kata. Selanjutnya adalah re-current neural network, yang merupakan model sequential, dapat digunakan untuk Natural Language Processing (NLP), PDE (Partial Differential Equation) berdasarkan simulasi. Dan yang palng utama adalah bahwa Tensorflow dapat digunakan pada skala yang besar untuk produksi dengan menggunakan model yang sama pada ketika proses training data.

Apa itu Tensorflow dan Bagaimana Cara Kerjanya

Tensorflow memungkinkan developer untuk membuat grafik aliran data (dataflow graph), yaitu struktur yang mendeskripsikan bagaimana data yang digunakan bergerak melalui tampilan grafis atau serangkaian pemprosesan node. Setiap node di dalam grafik mewakili operasi matematika, dan setiap koneksi atau ujung antara node tersebut merupakan baris data multidimensi (multidimentional data array) atau yang disebut juga tensor.

Tensorflow menyediakan itu semua untuk programmer dengan menggunakan bahasa pemrograman Python. Python sangat mudah dipelajari dan digunakan, jika Anda belum familiar, Anda dapat membaca artikel : Dasar bahasa pemrograman Python. Node dan Tensor di dalam Tensorflow merupakan suatu object pada Python. Selain itu, aplikasi Tensorflow itu sendiri adalah aplikasi yang ada di dalam Python.

Perhitungan operasi matematika tidak dilakukan oleh Python. Tranformasi library ini ditulis dengan menggunakan bahasa biner C++ yang berperforma tinggi dalam menggabungkan keduanya.

Aplikasi Tensorflow dapat dijalankan pada hampir semua target perangkat. Seperti diantaranya, local machine, kluster pada platform cloud, perangkat IoS dan Android, CPU atau GPU. Jika Anda menggunakan platform Google Cloud, Anda dapat menjalankan Tensorlow menggunakan TPU (Tensorflow Processing Unit) agar dapat berakselerasi lebih baik. Model yang dihasilkan oleh Tensorflow dapat diterapkan pada sebagian besar perangkat yang akan digunakan untuk hasil suatu prediksi.

apa itu tensorflow
[Apa itu tensorflow?] Tensorflow 2.0

Tensorflow 2.0, di rilis pada Oktober 2019, dimana versi ini mengubah framework berdasarkan masukan dari para pengguna, sehingga membuatnya lebih mudah untuk digunakan (misalnya menggunakan API Keras) yang relatif lebih sederhana untuk proses training model serta memiliki kinerja lebih baik. Training yang terdistribusi menjadi lebih mudah berkat API baru ini. Selain itu versi ini memberi dukungan kepada Tensorflow Lite, sehingga memungkinkan untuk menerapkan model di berbagai platform yang lebih besar.

Namun, dengan berbagai macam keuntungan yang ditawarkan pada framework Tensorflow 2.0, kode yang telah di tulis pada versi sebelumnya perlu di tulis ulang, ada yang hanya memerlukan sedikit perubahan dan ada pula perubahan yang signifikan untuk memanfaatkan fitur Tensorflow 2.0 secara maksimal.

Manfaat Tensorflow

Manfaat terbesar yang diberikan Tensorflow untuk pengembangan machine learning adalah abstraksi (abstraction). Anda tidak perlu berurusan dengan seluk beluk implementasi suatu algoritma atau mencari jawaban cara yang tepat dalam menghubungkan keluaran dari satu fungsi kepada fungsi lainnya, sehingga, developer dapat fokus pada logika aplikasinya secara keseluruhan, biarkan Tensorflow menanganinya dari balik layar.

Tensorflow menawarkan berbagai kemudahan bagi developer yang memerlukan proses debugging dan melakukan instrospeksi ke dalam aplikasi Tensorflow. Mode "eager execution" memungkinkan Anda untuk mengevaluasi dan memodifikasi setiap operasi grafik secara terpisah dan transparan, tidak membangun seluruh grafik sebagai objek tunggal dan memeriksa seluruhnya sekaligus. Visualisasi dari Tensorboard membuat Anda dapat memeriksa secara langsung dan interaktif, tools ini berupa dashboard web-based.

[Memahami Tensorflow dengan project: Mendeteksi objek dengan Raspberry Pi, Training Tensorflow dengan object yang kita tentukan, Memanfaatkan Google Super Komputer untuk training Tensorflow ]

Tensorfolw mendapatkan bayak keuntungan secara komersial di Google. Google tidak hanya mendorong laju kecepatan pengembangannya di balik layar, tetapi juga menciptakan banyak penawaran yang menarik seputar Tensorflow yang membuatnya lebih mudah untuk diterapkan dan digunakan. TPU yang telah disebutkan di atas digunakan untuk mempercepat performa pada platform Google Cloud, online hub untuk berbagi model yang dibuat dengan menggunakan framework, di dalam browser ataupun framework yang mobile-friendly. dan masih banyak lagi.

Satu catatan penting: Beberapa detail penerapan Tensorflow mempersulit perolehan hasil pelatihan model yang sepenuhnya deterministik untuk beberapa kasus training. Terkadang model yang di training pada satu sistem akan sedikit berbeda dari model yang di training pada sistem yang lain, walaupun menggunakan data yang sama persis. Namun demikian, masalah tersebut dapat terselesaikan, tim Tensorfolw sedang mempertimbangkan untuk memberikan kontrol lebih luas yang dapat mempengaruhi determinisme di dalam workflow.

Tensorflow vs Kompetitor

Tensorflow bersaing dengan banyak framework machine learning lainnya. PyTorch, CNTK, dan MXNet adalah ketiga kompetitor utama yang dapat menangani kebutuhan yang sama. Di bawah ini dapat Anda lihat beberapa kelebihan dan kekurangannya dibandingkan dengan Tensorflow.

Pytorch

Selain dibuat dengan menggunakan Python dan memiliki kemiripan yang sama lainnya dengan Tensorflow. Dengan menggunakan komponen penggerak utama hardware-accelerated, model pengembangan yang sangat interaktif memungkinkan proses desain berjalan seiring dengan pekerjaan, serta memiliki banyak komponen lainnya.

[Apa itu tensorflow?] Kompetitor Tensorflow: Pytorch

Pytorch pada umumnya merupakan pilihan yang lebih baik untuk pengembangan yang cepat, dimana perlu waktu yang singkat untuk menyeselesaikan project. Di sisi lain, Tensorflow unggul untuk project skala lebih besar dan untuk alur kerja yang lebih kompleks.

CNTK

[apa itu tensorflow]. Tensorflow kompetitor: CNTK

CNTK adalah Microsoft Cognitive Toolkit, seperti Tensorflow yang menggunakan struktur grafik untuk mendeskripsikan aliran data, namun sebagian besar berfokus pada pembuatan deep learning neural network. CNTK mampu menangani banyak task neural network lebih cepat, serta memiliki kumpulan API yang lebih luas (Python, C++, C#, Java). Akan tetapi, CNTK tidak mudah untuk dipelajari atau diterapkan seperti pada Tensorflow.

Apache MXNet

[apa itu tensorflow]. Tensorflow kompetitor: MXNet

Apacha MXNet di adopsi oleh Amazon sebagai framework deeplearning pada AWS, dapat di skalakan secara linier terhadap multiple GPU dan machine. Framework ini pun dapat mendukung berbagai macam API seperti, Python, C++, Scala, R, JavaScript, Julia, Perl, Go. Meskipun API aslinya tidak semenyenangkan untuk digunakan seperti pada Tensorflow.

Kesimpulan

Anda telah mengetahui apa itu Tensorflow mulai dari bagaimana cara kerjanya, keuntungan menggunakannya, serta alternatif lain dari framework machine learning yang memiliki kesamaan.

Semoga artikel ini bermanfaat untuk memulai project Tensorflow.

Read More
Tensorflow Object Detection Colabs : 14 Langkah Cepat

Pendahuluan Tensorflow Object Detection Colabs

Memiliki komputer low-end namun ingin membuat model deep learning dengan segala keterbatasan yang Anda miliki? Tidak perlu khawatir artikel ini akan membahas 14 langkah training Tensorflow model secara cepat. Anda tidak perlu membeli super-computer untuk membantu pekerjaan agar lebih cepat. Bersyukurlah, karena Google telah menyediakan "Virtual Computer" secara GRATIS yang memungkinkan Anda untuk menikmati performa GPU Nvidia Tesla K80 untuk proses komputasi deep learning, terutama untuk training tensorflow model. Sebagai perbandingan yang saya rasakan mengenai performa dengan konfigurasi yang sama untuk proses training tensorflow model yang menggunakan komputasi GPU NVIDIA GTX970 pada laptop ASUS ROG. Untuk menyelesaikan training dengan step, model, dan sample yang sama. Saya membutuhkan waktu 10 jam untuk menyelasaikan nya. Namun, dengan menggunakan GPU NVidia Tesla K80, dapat diselesaikan hanya dengan 2 jam saja. Sehingga, jika ingin mengganti model yang tepat, terutama untuk objek detection, kita tidak perlu menunggu seharian penuh untuk melihat hasilnya. Lalu caranya bagiamana? Tidak perlu terburu-buru, Anda akan menemukan caranya pada artikel ini dan langsung dapat mengaplikasikannya untuk project Anda, sekalipun menggunakan Raspberry Pi untuk training Tensorflow model dan tidak perlu menunggu berhari-hari untuk mengetes model Anda. Tensorflow Object Detection Colabs Jawabannya adalah Google Colab

Table of Contents

Apa itu Google Colab?

Google colab adalah service cloud gratis dan menyediakan GPU secara gratis pula! Secara umum Anda dapat melakukan:
  • Meningkatkan kemampuan programming dengan bahasa Python
  • Mengembangkan aplikasi deep learning dengan menggunakan library yang populer seperti Keras, TensorFlow, PyTorch, dan OpenCV
Sebagai seorang programmer, Anda dapat menggunakan colab untuk melakukan hal-hal di bawah ini:
  • Menulis dan Mengesekusi code pada Python
  • Membuat dokumen yang dapat memuat persamaan matematika
  • Membuat/Upload/ share notebook
  • Import/Save notebook dari dan ke Google Drive Anda
  • Import/Publish notebook dari github
  • Import dataset eksternal seperti dari Kaggle
  • Mengintegrasikan PyTorch, TensorFlow, Keras dan OpenCV
  • Dan yang paling penting adalah service cloud secara gratis dengan GPU super.
Sebelum Anda menggunakan colab ada baiknya Anda terbiasa menggunakan Jupyter Notebook untuk mengerjakan projek Python Anda. Namun, tidak perlu khawatir, Anda dapat mengambil materi tutorial Python dasar pada platform ini secara gratis dengan durasi 3 jam lebih. Di mana tutorial tersebut full menggunakan Jupyter notebook untuk pemula. Perlu di ingat bahwa, maksimum runtime untuk versi gratis pada Google Colab adalah 12 jam. Sehingga, jika Anda menggunakan lebih dari itu, seluruh file Anda akan hilang dan refresh seperti sedia kala tanpa bekas. Oleh karena itu, setelah selesai proses training tensorflow model, selalu backup file hasil training tersebut pada Google Drive atau komputer Anda. Banner Udemy

Setup Google Colab

Google Colab dapat Anda jalankan dengan menggunakan Google Drive Anda. Hal pertama yang dilakukan adalah dengan membuat folder khusus untuk projek Colab tersebut. Pada contoh di bawah ini saya membuat folder bernama "Colab Notebooks". Anda dapat membuat nama sesuai dengan kebutuhan Anda.
training tensorflow model
Nama folder di dalam Google Drive Anda
Selanjutnya Anda masuk ke dalam folder lalu right click, dan pilih "Google Collaboratory" Tensorflow Object Detection Colabs Selanjutnya Anda akan memasuki halaman "colab.research.google.com/drive/IDfileAnda" secara otomatis. Anda akan melihat bahwa tampilannya sangat mirip dengan Jupyter Notebook. Secara default nama file yang baru Anda buat adalah "untitled.ipynb". Anda dapat menggantinya dengan nama sesuai project yang Anda kerjakan.

Menjalankan program Python pada platform Google Colab

Pada bagian ini, kita akan mencoba untuk menjalankan beberapa perintah sederhana dengan menggunakan bahasa Python. Contoh nya adalah pada gambar di bawah ini:
Tensorflow Object Detection Colabs
Penampilan Google Colab Notebook
Keterangan yang ada di gambar: 1. Nama file Anda dan navigation menu 2. Anda dapat menambah cell berupa code atau text 3. Informasi mengenai Google Compute Engine yang Anda gunakan 4. Cell di mana Anda menuliskan code atau text 5. Tombol "play" untuk mengeksekusi cell

Pada contoh di atas dapat di lihat bahwa kita telah berhasil menjalankan program Python sederhana.  Dan pada contoh kedua yang berupa fungsi, akan menghasilkan pesan error, karena seharusnya kita panggil dengan perkalian(a,b). Sehingga, semua fitur Python sama seperti jika kita menggunakan local komputer.

Selain itu ada beberapa setup yang perlu di perhatikan untuk menjalankan training Tensorflow model

Tensorflow Object Detection Colabs

Di sini jangan sampai terlewat, karena kita diberikan pilihan tipe hardware accelerator. By default, pilihannya adalah None (CPU). Lalu, ada dua pilihan lain GPU(Graphical Processing Unit) dan TPU (Tensorflow Processing Unit).

Berdasarkan percobaan yang telah saya lakukan dengan menggunakan masing-masing type hardware accelerator, yang paling cepat perhitungannya adalah dengan menggunakan GPU pada konfigurasi perhitungan training tensorflow model yang sama. Oleh karena itu, pilihlah yang ini. Namun, jika ingin mencobanya sendiri Anda pun dapat melakukan experiment.

Project Mendeteksi Merk Minuman Ringan

Sekian artikel kali ini , semoga bermanfaat untuk Anda.

Upss.. hanya bercanda :) , kita belum membahas mengenai isi topik sesungguhnya.

Pada bagian ini kita akan memanfaatkan Google Colab untuk training mendeteksi objek merk minuman ringan yang berupa gambar, namun Anda dapat juga menggunakannya untuk mendeteksi melalui camera/webcam berupa video.

Persiapan

Sebelum kita menggunakan fasilitasi dari Google Colab. Kita akan melakukan beberapa persiapan yang dibutuhkan agar dapat berfungsi sesuai dengan keinginan kita, diantaranya:

Resize seluruh gambar menjadi seragam

Script di bawah Anda tempatkan pada folder bersamaan dengan kumpulan gambar yang akan di resize.
# tensorflow object detection colabs
"""
Created on Fri Oct  4 14:26:49 2019
@author: Muhammad Zacky Asy'ari
"""
from PIL import Image
import os, sys
path = r"C:tensorflow1SpecimentBotol Kaleng dan PlastikTrain\"
dirs = os.listdir( path )
def resize():
    i = 0 
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((720,540), Image.ANTIALIAS)
            imResize.save('Image_'+str(i)+'.jpg', 'JPEG', quality=90)
            i=i+1
            print("done image " + str(i))
resize()
 

Setelah proses resizing selesai, selanjutnya tempatkan gambar pada folder yang berbeda yaitu ./data/images/train dan./data/images/test Sebarkan jumlah gambar tersebut menjadi 80-20 %. Maksudnya jika Anda memiliki 100 gambar, tempatkan 80 pada folder train dan 20 pada folder test.

Folder ini akan Anda dapatkan jika cloning dari github: 'https://github.com/zacky131/object_detection_demo'

Memberi anotasi pada gambar

Selanjutnya adalah hal yang paling membosankan dan memakan waktu. Namun, Anda harus melakukannya, yaitu membuat anotasi dari setiap gambar yang telah kita resize seluruhnya.

Penjelasan detail dapat Anda baca pada artikel saya sebelumnya pada bagian labelling image.

Konfigurasi awal dan parameter

Setelah selesai persiapan spesimen pada lokal komputer Anda. Mari kita menuju Notebook pada platform Colab. Model yang akan kita gunakan dapat mensupport berbagai macam model, Anda dapat menemukan pretrained model lebih banyak dari link ini: Tensorflow detection model zoo: COCO-trained models. Sama seperti halnya konfigurasi file pada pipeline model tersebut. object_detection/samples/configs
# tensorflow object detection colabs
# Jika Anda melakukan Fork, ganti link di bawah ini sesuai dengan link github Anda.
repo_url = 'https://github.com/zacky131/object_detection_demo'
# Jumlah training step.
num_steps = 20000  # 200000
# Jumlah evaluation step.
num_eval_steps = 50
# Jumlah sample di dalam folder "test".
num_examples = 45
MODELS_CONFIG = {
    'ssd_mobilenet_v2': {
        'model_name': 'ssd_mobilenet_v2_coco_2018_03_29',
        'pipeline_file': 'ssd_mobilenet_v2_coco.config',
        'batch_size': 12
    },
    'faster_rcnn_inception_v2': {
        'model_name': 'faster_rcnn_inception_v2_coco_2018_01_28',
        'pipeline_file': 'faster_rcnn_inception_v2_pets.config',
        'batch_size': 1
    },
    'rfcn_resnet101': {
        'model_name': 'rfcn_resnet101_coco_2018_01_28',
        'pipeline_file': 'rfcn_resnet101_pets.config',
        'batch_size': 8
    },
    'ssd_mobilenet_small_v3': {
        'model_name': 'ssd_mobilenet_v3_small_coco_2019_08_14',
        'pipeline_file': 'ssdlite_mobilenet_v3_small_320x320_coco.config',
        'batch_size': 12
    },
    'ssd_inception_v2_coco': {
        'model_name': 'ssd_inception_v2_coco_2018_01_28',
        'pipeline_file': 'ssd_inception_v2_coco.config',
        'batch_size': 12
    },
    'ssd_mobilenet_large_v3': {
        'model_name': 'ssd_mobilenet_v3_large_coco_2019_08_14',
        'pipeline_file': 'ssdlite_mobilenet_v3_large_320x320_coco.config',
        'batch_size': 512
    }
}
# Pilih model yang akan Anda gunakan 
# Pilih model di dalam `MODELS_CONFIG`.
selected_model = 'faster_rcnn_inception_v2'
# Nama objek detection model yang digunakan.
MODEL = MODELS_CONFIG[selected_model]['model_name']
# NAma file pipeline pada Tensorflow object detection API.
pipeline_file = MODELS_CONFIG[selected_model]['pipeline_file']
# Training batch size fit di dalam Colab Tesla K80 GPU memory untuk model yang di pilih.
batch_size = MODELS_CONFIG[selected_model]['batch_size'] 

Clone object_detection_demo dari repository atau fork

Pada bagian ini, Anda akan melakukan proses cloning dari repository url pada bagian sebelumnya. Sebaiknya Anda fork terlebih dahulu dari url di atas. Lalu, Anda dapat meng-clone nya dari dari github pribadi.
# tensorflow object detection colabs
import os
%cd /content
repo_dir_path = os.path.abspath(os.path.join('.', os.path.basename(repo_url)))
!git clone {repo_url}
%cd {repo_dir_path}
!git pull 

Install package yang dibutuhkan

Selanjutnya adalah install beberapa package yang dibutuhkan pada virtual machine Google Colabs.
# tensorflow object detection colabs
%cd /content
!git clone --quiet https://github.com/tensorflow/models.git
!apt-get install -qq protobuf-compiler python-pil python-lxml python-tk
!pip install -q Cython contextlib2 pillow lxml matplotlib
!pip install -q pycocotools
%cd /content/models/research
!protoc object_detection/protos/*.proto --python_out=.
import os
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py 

Persiapkan file 'tfrecord

Script bagian ini telah tersedia pada file Jupyter Notebook di akhir artikel ini, Anda dapat menggunakannya secara langsung. Secara umum, bagian ini akan melakukan dua step, yaitu:
  • Mengkonversikan dari file*.xml kepada *.csv untuk masing-masing set (train/test).
  • Mengubah anotasi *.csv dan file gambar setiap set (train/test) ke dalam bentuk file *.record (TFRecord format)
# tensorflow object detection colabs
%cd {repo_dir_path}
# Konversikan anotasi pada folder train yang berupa file xml ke dalam satu csv file,
# Buat file `label_map.pbtxt` kepada folder `data/`.
!python xml_to_csv.py -i data/images/train -o data/annotations/train_labels.csv -l data/annotations
# Konversikan anotasi pada folder test yang berupa file xml ke dalam satu csv file.
!python xml_to_csv.py -i data/images/test -o data/annotations/test_labels.csv
# Buat file `train.record`
!python generate_tfrecord.py --csv_input=data/annotations/train_labels.csv --output_path=data/annotations/train.record --img_path=data/images/train --label_map data/annotations/label_map.pbtxt
# Buat file `test.record`
!python generate_tfrecord.py --csv_input=data/annotations/test_labels.csv --output_path=data/annotations/test.record --img_path=data/images/test --label_map data/annotations/label_map.pbtxt 
# tensorflow object detection colabs
test_record_fname = '/content/object_detection_demo/data/annotations/test.record'
train_record_fname = '/content/object_detection_demo/data/annotations/train.record'
label_map_pbtxt_fname = '/content/object_detection_demo/data/annotations/label_map.pbtxt' 

Download model referensi

Pada bagian ini, script akan melakukan proses download model dari repository Tensorflow, lalu menempatkannya pada directory virtual machine Google Colab Anda.
# tensorflow object detection colabs
%cd /content/models/research
import os
import shutil
import glob
import urllib.request
import tarfile
MODEL_FILE = MODEL + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
DEST_DIR = '/content/models/research/pretrained_model'
if not (os.path.exists(MODEL_FILE)):
    urllib.request.urlretrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE)
tar = tarfile.open(MODEL_FILE)
tar.extractall()
tar.close()
os.remove(MODEL_FILE)
if (os.path.exists(DEST_DIR)):
    shutil.rmtree(DEST_DIR)
os.rename(MODEL, DEST_DIR) 

Konfigurasi Training Pipeline

Anda tinggal menjalankan beberapa script di bawah ini, konfigurasi pipeline akan terbentuk secara otomatis.
# tensorflow object detection colabs auftechnique.com
import os
pipeline_fname = os.path.join('/content/models/research/object_detection/samples/configs/', pipeline_file)
assert os.path.isfile(pipeline_fname), '`{}` not exist'.format(pipeline_fname) 
# tensorflow object detection colabs auftechnique.com
def get_num_classes(pbtxt_fname):
    from object_detection.utils import label_map_util
    label_map = label_map_util.load_labelmap(pbtxt_fname)
    categories = label_map_util.convert_label_map_to_categories(
        label_map, max_num_classes=90, use_display_name=True)
    category_index = label_map_util.create_category_index(categories)
    return len(category_index.keys()) 
# tensorflow object detection colabs auftechnique.com
import re
num_classes = get_num_classes(label_map_pbtxt_fname)
with open(pipeline_fname) as f:
    s = f.read()
with open(pipeline_fname, 'w') as f:
    # fine_tune_checkpoint
    s = re.sub('fine_tune_checkpoint: ".*?"',
               'fine_tune_checkpoint: "{}"'.format(fine_tune_checkpoint), s)
    # tfrecord file train dan test.
    s = re.sub(
        '(input_path: ".*?)(train.record)(.*?")', 'input_path: "{}"'.format(train_record_fname), s)
    s = re.sub(
        '(input_path: ".*?)(val.record)(.*?")', 'input_path: "{}"'.format(test_record_fname), s)
    # label_map_path
    s = re.sub(
        'label_map_path: ".*?"', 'label_map_path: "{}"'.format(label_map_pbtxt_fname), s)
    # Set training batch_size.
    s = re.sub('batch_size: [0-9]+',
               'batch_size: {}'.format(batch_size), s)
    # Set training steps, num_steps
    s = re.sub('num_steps: [0-9]+',
               'num_steps: {}'.format(num_steps), s)
    # Set jumlah classes num_classes.
    s = re.sub('num_classes: [0-9]+',
               'num_classes: {}'.format(num_classes), s)
    # Set jumlah contoh (jumlah gambar).
    s = re.sub('num_examples: [0-9]+',
               'num_examples: {}'.format(num_examples), s)
    f.write(s) 
# tensorflow object detection colabs auftechnique.com
!cat {pipeline_fname} 
# tensorflow object detection colabs auftechnique.com
model_dir = 'training/'
# Menghapus output konten sebelumnya agar mulai dari fresh kembali (Optional)
!rm -rf {model_dir}
os.makedirs(model_dir, exist_ok=True) 

Jalankan Tensorboard (Optional)

Jika Anda ingin melihat proses training dalam bentuk grafik. Anda dapat mengeksekusi rangkaian script di bawah ini.
# tensorflow object detection colabs auftechnique.com
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -o ngrok-stable-linux-amd64.zip 
# tensorflow object detection colabs auftechnique.com
LOG_DIR = model_dir
get_ipython().system_raw(
    'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
    .format(LOG_DIR)
) 
# tensorflow object detection colabs auftechnique.com
get_ipython().system_raw('./ngrok http 6006 &') 
Pada awalnya tampilan Tensorboard akan kosong, karena memang kita belum menjalankan training model tersebut. Namun, setelah proses training di mulai, grafik akan mulai terlihat.

Dapatkan Tensorboard link

Setelah proses di atas berhasil di eksekusi. Anda akan mendapatkan url link untuk melihat progress training tensorflow model.
# tensorflow object detection colabs auftechnique.com
! curl -s http://localhost:4040/api/tunnels | python3 -c 
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])" 

Train Model

Proses training tensorflow model di mulai. Anda dapat menunggunya, atau bisa mengerjakan hal lain hingga proses selesai. Anda pun dapat melihat tensorboard mengenai progress yang sedang dijalani nya.
# tensorflow object detection colabs auftechnique.com
!python /content/models/research/object_detection/model_main.py 
    --pipeline_config_path={pipeline_fname} 
    --model_dir={model_dir} 
    --alsologtostderr 
    --num_train_steps={num_steps} 
    --num_eval_steps={num_eval_steps} 
# tensorflow object detection colabs auftechnique.com
!ls {model_dir} 
# Cara klasik untuk training(dapat juga di lakukan).
# !python /content/models/research/object_detection/legacy/train.py --logtostderr --train_dir={model_dir} --pipeline_config_path={pipeline_fname} 

Export Inference Graph yang telah di training

Setelah proses training selesai, Anda perlu mengekstrak inference graph yang telah di training, di mana file ini akan digunakan dalam melakukan proses mendeteksi objek.
# tensorflow object detection colabs auftechnique.com
import re
import numpy as np
output_directory = './fine_tuned_model'
lst = os.listdir(model_dir)
lst = [l for l in lst if 'model.ckpt-' in l and '.meta' in l]
steps=np.array([int(re.findall('d+', l)[0]) for l in lst])
last_model = lst[steps.argmax()].replace('.meta', '')
last_model_path = os.path.join(model_dir, last_model)
print(last_model_path)
!python /content/models/research/object_detection/export_inference_graph.py 
    --input_type=image_tensor 
    --pipeline_config_path={pipeline_fname} 
    --output_directory={output_directory} 
    --trained_checkpoint_prefix={last_model_path} 
# training tensorflow model auftechnique.com
!ls {output_directory} 

Download model file .pb

Setelah proses training selesai, Anda perlu mengekstrak inference graph yang telah di training, di mana file ini akan digunakan dalam melakukan proses mendeteksi objek.
# training tensorflow model auftechnique.com
import os
pb_fname = os.path.join(os.path.abspath(output_directory), "frozen_inference_graph.pb")
assert os.path.isfile(pb_fname), '`{}` not exist'.format(pb_fname) 
!ls -alh {pb_fname} 

Pilihan 1: Upload file.pb pada google drive Anda

Hasil file training .pb yang saat ini berada pada virtual machine google colab. Akan di upload ke dalam folder google drive. Anda akan mendapatkan token untuk proses verifikasi.
# training tensorflow model auftechnique.com
# Install PyDrivce wrapper dan import beberapa library.
# Hanya perlu dilakukan sekali pada notebook.
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
# Auntetifikasikan dan buat PyDrive client.
# Hanya perlu dilakukan sekali pada notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
fname = os.path.basename(pb_fname)
# Buat dan uoload text file.
uploaded = drive.CreateFile({'title': fname})
uploaded.SetContentFile(pb_fname)
uploaded.Upload()
print('Uploaded file with ID {}'.format(uploaded.get('id'))) 

Pilihan 2: Download file .pb pada komputer Anda secara langsung

Pilihan ini akan secara langsung memberikan notifikasi download file dari web browser Anda.
# training tensorflow model auftechnique.com
from google.colab import files
files.download(pb_fname) 

Download file label_map.pbtxt

# training tensorflow model auftechnique.com
from google.colab import files
files.download(label_map_pbtxt_fname) 

Download file pipeline yang baru

# training tensorflow model auftechnique.com
files.download(pipeline_fname) 

Tahap terakhir, Jalankan Inference Test

Inilah tahap terakhir, dan jalankan hasil inference test dari model yang telah di training.
# training tensorflow model auftechnique.com
import os
import glob
# Path kepada frozen detection graph. Ini adalah model aktual yang digunakan untuk mendeteksi model.
PATH_TO_CKPT = pb_fname
# List dari string yang digunakan untuk menggunakan label dengan benar pada setiap box.
PATH_TO_LABELS = label_map_pbtxt_fname
# Jika Anda ingin mengetest kode dengan gambar yang Anda sediakan. Anda tinggal menambahkan file gambar kepada PATH_TO_TEST_IMAGES_DIR.
PATH_TO_TEST_IMAGES_DIR =  os.path.join(repo_dir_path, "test")
assert os.path.isfile(pb_fname)
assert os.path.isfile(PATH_TO_LABELS)
TEST_IMAGE_PATHS = glob.glob(os.path.join(PATH_TO_TEST_IMAGES_DIR, "*.*"))
assert len(TEST_IMAGE_PATHS) > 0, 'Gambar tidak ditemukan pada `{}`.'.format(PATH_TO_TEST_IMAGES_DIR)
print(TEST_IMAGE_PATHS) 
Script di bawah ini untuk menampilkan hasil deteksi pada virtual machine google colab.
# training tensorflow model auftechnique.com
%cd /content/models/research/object_detection
import numpy as np
import os
import six.moves.urllib as urllib
import sys
import tarfile
import tensorflow as tf
import zipfile
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
# Kode di bawah ini diperlukan karena notebook di simpan pada folder object_detection.
sys.path.append("..")
from object_detection.utils import ops as utils_ops
# Kode di bawah untuk menampilkan gambar.
%matplotlib inline
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
detection_graph = tf.Graph()
with detection_graph.as_default():
    od_graph_def = tf.GraphDef()
    with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
        serialized_graph = fid.read()
        od_graph_def.ParseFromString(serialized_graph)
        tf.import_graph_def(od_graph_def, name='')
label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
categories = label_map_util.convert_label_map_to_categories(
    label_map, max_num_classes=num_classes, use_display_name=True)
category_index = label_map_util.create_category_index(categories)
def load_image_into_numpy_array(image):
    (im_width, im_height) = image.size
    return np.array(image.getdata()).reshape(
        (im_height, im_width, 3)).astype(np.uint8)
# Ukuran, dalam inch, output dari gambar.
IMAGE_SIZE = (12, 8)
def run_inference_for_single_image(image, graph):
    with graph.as_default():
        with tf.Session() as sess:
            # 
            Get handles to input and output tensors
            ops = tf.get_default_graph().get_operations()
            all_tensor_names = {
                output.name for op in ops for output in op.outputs}
            tensor_dict = {}
            for key in [
                'num_detections', 'detection_boxes', 'detection_scores',
                'detection_classes', 'detection_masks'
            ]:
                tensor_name = key + ':0'
                if tensor_name in all_tensor_names:
                    tensor_dict[key] = tf.get_default_graph().get_tensor_by_name(
                        tensor_name)
            if 'detection_masks' in tensor_dict:
                # Di bawah ini untuk memproses satu gambar 
                detection_boxes = tf.squeeze(
                    tensor_dict['detection_boxes'], [0])
                detection_masks = tf.squeeze(
                    tensor_dict['detection_masks'], [0])
                # Perlu di lakukan frame ulang untuk menerjemahkan mask dari box koordinat ke dalam koordinat gambar dan sesuai dengan ukuran gambar.
                real_num_detection = tf.cast(
                    tensor_dict['num_detections'][0], tf.int32)
                detection_boxes = tf.slice(detection_boxes, [0, 0], [
                                           real_num_detection, -1])
                detection_masks = tf.slice(detection_masks, [0, 0, 0], [
                                           real_num_detection, -1, -1])
                detection_masks_reframed = utils_ops.reframe_box_masks_to_image_masks(
                    detection_masks, detection_boxes, image.shape[0], image.shape[1])
                detection_masks_reframed = tf.cast(
                    tf.greater(detection_masks_reframed, 0.5), tf.uint8)
                # Ikuti konvensi dengan menambahkan ukuran batch
                tensor_dict['detection_masks'] = tf.expand_dims(
                    detection_masks_reframed, 0)
            image_tensor = tf.get_default_graph().get_tensor_by_name('image_tensor:0')
            # Jalankan inference
            output_dict = sess.run(tensor_dict,
                                   feed_dict={image_tensor: np.expand_dims(image, 0)})
            # Seluruh output adalah float32 numpy array, sehingga konversikan yang sesuai.
            output_dict['num_detections'] = int(
                output_dict['num_detections'][0])
            output_dict['detection_classes'] = output_dict[
                'detection_classes'][0].astype(np.uint8)
            output_dict['detection_boxes'] = output_dict['detection_boxes'][0]
            output_dict['detection_scores'] = output_dict['detection_scores'][0]
            if 'detection_masks' in output_dict:
                output_dict['detection_masks'] = output_dict['detection_masks'][0]
    return output_dict
for image_path in TEST_IMAGE_PATHS:
    image = Image.open(image_path)
    # Gambar dalam bentuk array akan digunakan untuk mempersiapkan 
    # Hasil akhir gambar termasuk box dan label di dalamnya
    image_np = load_image_into_numpy_array(image)
    # Ekspansi ukuran, karena gambar ekspektasi nya memiliki ukuran [1, None, None, 3]    
    image_np_expanded = np.expand_dims(image_np, axis=0)
    # Deteksi aktual
    output_dict = run_inference_for_single_image(image_np, detection_graph)
    # Visualisasi dari hasil deteksi.
    vis_util.visualize_boxes_and_labels_on_image_array(
        image_np,
        output_dict['detection_boxes'],
        output_dict['detection_classes'],
        output_dict['detection_scores'],
        category_index,
        instance_masks=output_dict.get('detection_masks'),
        use_normalized_coordinates=True,
        line_thickness=8)
    plt.figure(figsize=IMAGE_SIZE)
    plt.imshow(image_np) 
Tensorflow Object Detection Colabs VOILA!!! Kita telah berhasil mendeteksi objek dengan memanfaatkan Google Colab Virtual Machine. Jika gambar di atas tidak muncul. Anda dapat menjalankan ulang perintah terakhir setelah menunggu beberapa menit.

Kesimpulan

Kita dapat menggunakan Google Compute Engine yang gratisan untuk training Tensorflow model dengan cepat. Namun, perlu di ingat bahwa tutorial ini hanya menyajikan cara untuk mendapatkan file hasil training menggunakan Google Colab. Jika Anda ingin mengkonfigurasikan komputer Anda untuk dapat mendeteksi objek, maka harus mengikuti artikel Training Tensorflow 1.13 dengan object tertentu terlebih dahulu.  Kecepatan untuk mendeteksi objek bergantung pada kemampuan komputer Anda masing-masing, tidak di bantu lagi oleh Google Colabs :). Namun, jika Anda ingin menggunakan service Google untuk itu, Anda dapat menelusuri product Google Cloud Platform (GCP), yang harganya lumayan mahal jika hanya digunakan untuk latihan. Banner Tutorial

File Pendukung

Anda dapat mendownload file Notebook dan Python script pada link di bawah ini. Link file Notebook Google Colab Jika menemukan masalah, Anda dapat menuliskan pesan pada kolom komentar atau pada forum dan group pada platform ini.

Referensi

Google Colab Medium Blog DLology Blog Tutorialspoint
Read More
4 pillar pemrograman berorientasi objek Python

Object Oriented Programming (OOP) atau pemrograman berorientasi objek adalah salah satu pendekatan paling efektif dalam menulis kode suatu software. Pada OOP kita menulis class yang merepresentasikan suatu situasi seperti pada keadaan sebenarnya dan kita dapat membuat suatu objek berdasarkan class tersebut. Sebelum memulai mengenai OOP pada Python, ada baiknya memahami dasar pemrograman Python terlebih dahulu. Tunggu apa lagi, mari kita mulai!!!

Jika Anda ingin download file jupyter notebook. Silahkan menuju bagian kesimpulan.

Konsep pemrograman berorientasi objek

Python adalah bahasa pemrograman berorientasi objek. Tidak seperti pada pemrograman berorientasi prosedural, di mana penekanan utama adalah pada fungsi(walaupun Python dapat melakukannya). Sedangkan pemrograman berorientasi objek lebih menekankan pada suatu objek

Kita pasti bertanya-tanya apa perbedaan antara pemrograman prosedural dan berorientasi objek. Untuk menghilangkan keraguan tersebut, mari kita bahas di antara kedua nya. Pada pemrograman prosedural, seluruh kode ditulis dalam satu prosedur yang panjang meskipun mungkin mengandung suatu fungsi dan subrutin. Dengan menggunakan cara tersebut, akan sangat sulit untuk di kelola di kemudian hari. Karena, data dan logika di campur bersama-sama.

Namun, ketika kita berbicara mengenai pemrograman berorientasi objek, kode program di bagi lagi menjadi suatu objek tersendiri.

Setiap objek mewakili bagian yang berbeda dari suatu program, dimana objek tersebut memiliki data dan logika tersendiri untuk saling berkomunikasi. Kita dapat membayangkan suatu situs web yang memiliki objek yang berbeda-beda seperti tulisan, gambar, video, dll.

Pemrograman berorientasi objek mencakup empat pillar utama, yaitu Encapsulation, Inheritance, Polymorphism dan Abstraction. Mari kita pahami topik ini secara lebih detail pada bagian selanjutnya.

Video penjelasan konsep pemrograman berorientasi objek:

https://www.youtube.com/watch?v=KttircPszwI
[Pemrograman berorientasi objek Python] Konsep OOP

Youtube Playlist mengenai OOP pada Python

Objek, Class, Attribute dan Metode

Objek adalah suatu kumpulan data (variabel) dan metode (fungsi) yang bekerja pada data tersebut. Sedangkan, class adalah blueprint dari suatu objek. Lalu, bagaimana class memungkinkan untuk dapat mengelompokkan suatu data dan fungsi secara logis dengan cara yang mudah digunakan kembali serta bagaimana cara membangunnya jika diperlukan?

Kita dapat membayangkan class adalah sketsa dari sebuah rumah. Yang secara detail berisi mengenai lantai, pintu, jendela, dll. Berdasarkan uraian tersebut kita dapat membangun sebuah rumah. Maka, rumah adalah suatu objek.

Objek dan class pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Objek dan Class

Karena banyak rumah dapat di bangun dari sketsa tersebut. Sehingga, kita dapat membuat banyak objek dari suatu class jika dianalogikan pada pemrograman berorientasi objek. Selain itu, objek pun dapat disebut sebagai turunan dari suatu class. Proses pembuatan objek ini disebut sebagai instantiation.

Dengan menggunakan class, program yang kita tulis akan lebih konsisten. Sehingga, dapat menjadikannya lebih rapih dan efisien.

Class memiliki suatu atribut, yaitu data yang terdapat di dalamnya (variable class dan instance variable) serta metode yang dapat di akses dengan tanda titik ( . )

  • Class variable yaitu variabel yang dapat di akses oleh semua objek / instance pada kelas yang berbeda.
  • Instance variable ialah variabel khusus untuk setiap instance yang didefinisikan di dalam suatu metode dan hanya dimiliki oleh instance kelas yang digunakan pada saat itu.
  • Methods adalah fungsi yang didefinisikan di dalam kelas serta menggambarkan perilaku suatu objek.

Syntax untuk mendeskripsikan suatu class:

class NamaSuatuClass:
    pernyataan-1
    pernyataan-2
    .
    .
    .
    pernyataan-N
class Rumah():
    #Instance attribute
    def __init__(self,bahan,harga,lokasi): 
        # self adalah instance dari class
        self.bahan = bahan 
        self.harga = harga
        self.lokasi = lokasi
        
#membuat objek 
rumah1 = Rumah("Kayu",700000000,"desa") 
rumah2 = Rumah("Beton",1500000000,"tengah kota")
print(rumah1)

#Output:
<__main__.Rumah object at 0x0000019371D149C8>

Output di atas memberitahukan kepada kita bahwa rumah merupakan suatu objek pada lokasi memory tertentu pada komputer. Untuk mengakses nilai atribut tersebut, kita perlu menggunakan dot ( . ), lalu memanggil atribut yang ingin diketahui nilainya, seperti pada contoh di bawah ini:

rumah1.bahan

#output:
'Kayu'
rumah1.harga

$output:
700000000

Untuk mencetak seluruh nilai atribut dari suatu object "rumah1" terhadap parameter yang telah diketahui (bahan, harga, lokasi), kita dapat menggunakan __dict__ "dictionary".

rumah1.__dict__

#output:
{'bahan': 'Kayu', 'harga': 700000000, 'lokasi': 'desa'}

Perlu diperhatikan bahwa self juga merupakan instance dari suatu class. Oleh karena instance suatu kelas memiliki nilai yang berbeda-beda kita dapat menyatakan Rumah.harga = harga daripada self.harga = harga. Namun, karena setiap rumah tidak memiliki harga yang sama, kita harus menetapkan nilai yang berbeda untuk contoh yang berbeda. Oleh karena itu diperlukan variable khusus self yang dapat membantu kita untuk melacak contoh individu dari setiap kelas.

catatan [Pemrograman berorientasi objek]: Variable khusus tidak harus menggunakan kata self. Penggunaan self dimaksudkan untuk standarisasi penulisan class pada Python agar dapat dipahami oleh seluruh Python programmer untuk keseragaman penulisan kode.

Encapsulation

Encapsulation adalah salah satu konsep fundamental pada pemrograman berorientasi objek. Encapsulation menggambarkan suatu ide untuk membungkus data dan metode yang bekerja pada suatu data di dalam satu unit. Hal ini memberikan batasan dalam mengakses suatu variabel dan metode secara langsung. Sehingga, dapat mencegah modifikasi data yang tidak disengaja. Hal tersebut sangatlah penting, karena dapat mencegah perubahan yang tidak disengaja. Bukan tidak dapat di ubah, namun, variabel objek tersebut hanya dapat di ubah dengan metode objek.

[Pemrograman berorientasi objek Python] Metode dan Variable

Python tidak memiliki kata kunci private seperti pada bahasa pemrograman yang lain. Sebagai gantinya, hal ini dapat dilakukan oleh encapsulation. Variable class yang tidak boleh di akses secara langsung diawali oleh dua tanda garis bawah seperti pada contoh di bawah ini:

class Halo:
    def __init__(self, angka):
        self.a = 123
        self._b = 20
        self.__c = 40
        
halo = Halo("angka")
print(halo.a)
print(halo._b)
print(halo.__c)

#output:

123
20
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-40-a2c62dd721c7> in <module>
      8 print(halo.a)
      9 print(halo._b)
---> 10 print(halo.__c)
     11 

AttributeError: 'Halo' object has no attribute '__c'

Dapat diperhatikan pada contoh di atas bahwa variable a dan _ b dapat tercetak. Namun, variable __ c memberikan AttributeError.

  • Single underscore: variable private, tidak seharusnya di akses secara langsung. Namun, tidak menghentikan Python untuk mengeksekusi perintah (kecuali konvensi).
  • Double underscore: Private variable, sulit untuk di akses, namun masih memungkinkan.
  • Keduanya masih dapat di akses. Python memiliki variable private secara konvensi.

Private variable dapat di ubah dengan menggunakan metode get dan set yang dapat memberikan akses secara tidak langsung.

class Software():
    #Instance attribute
    def __init__(self):
        self.__version = 1
    
    # Instance method
    def getVersion(self):
        print(self.__version)

    def setVersion(self, version):
        self.__version = version

# instanstiate objek Software
obj = Software()
obj.getVersion()
obj.setVersion(3)
obj.getVersion()

#Output:
1
3

Dapat di lihat pada contoh di atas, bahwa, untuk mengubah software version dari 1 kepada version 3 diperlukan metode get dan set. Oleh karena itu untuk mengakses variable yang memiliki double underscore harus di ubah dengan cara yang tidak langsung, yaitu dengan mengunakan metode get dan set.

Inheritance

Inheritance memungkinkan kita untuk mewarisi atribut dan metode dari suatu kelas dasar (base)atau induk(parent). Hal ini sangat berguna karena kita membuat sub-kelas yang dapat menggunakan semua fungsi dari parent class. Selain itu, kita dapat menimpa atau menambahkan fungsi yang baru tanpa mempengaruhi parent class. Untuk memahami konsep inheritance dengan mudah, kita dapat menganalogikan sifat seorang anak mewarisi sifat orang tuanya. Sama hal nya pada Python yang memiliki dua kelas, yaitu:

  1. Parent class (super atau base class)
  2. Child class (subclass atau derived class)

Class yang mewarisi sifat disebut sebagai Child class, sedangkan class yang diwarisi sifat nya adalah Parent class.

Inheritance memiliki kemampuan untuk membuat Sub-classes yang berisi spesialisasi dari Parent class. Selanjutnya, inheritance dapat di bagi lagi menjadi empat tipe. Yaitu single, multilevel, hierarchical, dan multiple inheritance. Untuk memahaminya lebih jelas, mari kita lihat diagram di bawah ini.

Contoh inheritance pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Contoh Tipe Inheritance

Untuk memahaminya pada Python, mari kita telusuri satu persatu.

Single Inheritance

Pada inheritance, child class dapat mengakses seluruh metode yang telah didefinisikan pada parent class. Selain itu, child class dapat meliputi metode spesifik yang dimilikinya.

Dalam bahasa pemrograman berorientasi objek pada Python, class turunan dapat mewarisi class utama dengan cara memanggil kembali kelas utama di dalam tanda kurung.

Misalkan kita ingin membuat class untuk Hewan. Lalu, dari jenis hewan memiliki spesies kucing. Seperti pada contoh di bawah ini:

# Parent class
class Hewan:  
    def bicara(self):  
        print("Hewan berbicara")  
        
# Child class mewarisi dari class Hewan
class Kucing(Hewan):
    def meaow(self):  
        print("meaow....meaow....meaow..!!!") 

k = Kucing()
k.meaow()
k.bicara()

#output:
meaow....meaow....meaow..!!!
Hewan berbicara

Dapat di lihat pada contoh di atas, hewan adalah parent class dari se ekor kucing. Sehingga ketika kita menggunakan metode meaow(), maka yang keluar adalah suara kucing. Namun, ketika kita menggunakan metode bicara() pada kucing, maka yang keluar adalah suara hewan karena class Kucing dapat menggunakan metode parent class Hewan.

 Multilevel inheritance

Multilevel inheritance adalah kondisi dimana ketika suatu class mewariskan class yang lainnya. Tidak ada batasan hingga berapa banyak jumlah level yang dapat digunakan pada multilevel inheritance pada Python. Contoh syntax:

# Parent class
class Hewan:  
    def bicara(self):  
        print("Hewan berbicara")  
        
# Child class mewarisi dari class Hewan
class Kucing(Hewan):
    def meaow(self):  
        print("meaow....meaow....meaow..!!!") 
        
# Child class AnakKucing mewarisi dari class hewan
class AnakKucing(Kucing):
    def minum(self):  
        print("minum susu") 

a_k = AnakKucing()
a_k.bicara()
a_k.meaow()
a_k.minum() 

#Output:
Hewan berbicara
meaow....meaow....meaow..!!!
minum susu

Dapat di lihat pada contoh di atas, bahwa, class AnakKucing dapat mewarisi sifat dari Kucing dan Hewan.

Hierarchical Inheritance

Hierarchical inheritance memungkinkan kita menurunkan lebih dari satu child class untuk mewarisi sifat dari parent class.

# Class utama 
class Parent: 
      def fungsi1(self): 
            print("Fungsi pada parent class.") 
  
# class 1 turunan 
class Child1(Parent): 
      def fungsi2(self): 
            print("Fungsi pada child 1.") 
  
# class 2 turunan
class Child2(Parent): 
      def fungsi3(self): 
            print("Fungsi pada child 2.") 

object1 = Child1() 
object2 = Child2() 

object1.fungsi1() 
object1.fungsi2()  

object2.fungsi1() 
object2.fungsi3()

#Output:
Fungsi pada parent class.
Fungsi pada child 1.
Fungsi pada parent class.
Fungsi pada child 2.

Contoh di atas menunjukkan bahwa class turunan Child1 dan Child2 dapat menggunakan fungsi pada class parent yang sama.
Silahkan untuk mencobanya:

Multiple inheritance

Multiple inheritance memungkinkan satu kelas turunan untuk mewarisi lebih dari satu kelas utama.

## parent 1
class Perhitungan1:
    def penjumlahan(self, a, b):
        return a+b
## parent 2
class Perhitungan2:
    def perkalian(self, a, b):
        return a*b
## child    
class Child(Perhitungan1, Perhitungan2):
    def pembagian(self, a, b):
        return a/b

c = Child()

print(c.penjumlahan(20, 30))
print(c.perkalian(5, 4))
print(c.pembagian(6, 12))

#output:
50
20
0.5

Pada contoh di atas menunjukkan bahwa class Child mewarisi sifat dari dua parent class yaitu class Perhitungan1 dan Perhitungan2.

Silahkan untuk mencobanya:

Polymorphism

Polymorphism adalah kemampuan untuk mengambil bentuk yang berbeda. Polymorphism dalam Python memungkinkan kita untuk mendefinisikan metode pada child class dengan menggunakan nama yang sama seperti pada parent class.

Definisi polymorphism

Polymorphism di bangun berdasarkan dua suku kata, yaitu Poly (banyak) dan Morphism (bentuk). Artinya adalah fungsi yang sama dapat digunakan pada tipe yang berbeda. Sehingga membuat membuat programming lebih intuitif dan mudah. Dalam bahasa pemrograman berorientasi objek pada Python, kita memiliki cara-cara yang berbeda untuk mendefinisikan polymorphism.

Class child mewarisi seluruh method dari parent class. Namun, ada beberapa kasus di mana metode tersebut tidak cocok dengan child class. Oleh karena itu, kita harus mengimplementasikan kembali metode yang pada child class yang dinamakan Method Overriding. Contohnya dapat di lihat pada bagian Polymorphism dengan inheritance. (link ke bawah)

Polymorphism pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Ilustrasi polymorphism

 

Ada beberapa metode untuk menggunakan polymorphism pada pemrograman berorientasi objek Python. Kita dapat menggunakan fungsi berbeda, metode class atau objek untuk mendefinisikannya.

Polymorphism dengan function

Kita dapat membuat fungsi yang dapat mengambil objek apapun untuk mengimplememtasikan polymorphism.

Contoh di atas adalah menggunakan fungsi yang sudah terintegrasi pada Python yaitu len(). Fungsi tersebut dapat digunakan untuk tipe data yang berbeda. Pada kasus di atas adalah contoh untuk menghitung jumlah huruf dari string, list dan pasangan key-value pada dictonary.

Polymorphism dengan class

Kita dapat menggunakan konsep polymorphism ketika membuat metode class. Python memungkinkan class yang berbeda untuk menggunakan metode dengan nama yang sama. Kemudian kita dapat memanggil metode tersebut dengan mengabaikan objek yang sedang kita gunakan. Contoh:

class Kucing:
    def __init__(self, nama, umur):
        self.nama = nama
        self.umur = umur

    def bersuara(self):
        print("Meow")


class Dog:
    def __init__(self, nama, umur):
        self.nama = nama
        self.umur = umur

    def bersuara(self):
        print("Guk..guk...")

kucing1 = Kucing("Tom", 3)
anjing1 = Dog("Spike", 4)

for hewan in (kucing1, anjing1):
    hewan.bersuara()

# Output:
Meow
Guk..guk..

Kita telah membuat class Kucing dan Anjing. Keduanya memiliki struktur dan metode yang sama, yaitu bersuara().

 Polymorphism dengan Inheritance

Polymorphism pada pemrograman berorientasi objek Python mendefinisikan child class yang memiliki kesamaan nama metode pada parent class. Pada inheritance, child class mewarisi metode dari parent class. Selain itu, memungkinkan untuk memodifikasi metode di dalam child class yang telah diwarisi dari parent class. Contoh polymorphism dengan Inheritance dapat dilihat pada contoh di bawah ini:

class Burung:
     def intro(self):
        print("Di dunia ini ada beberapa type berbeda dari spesies burung")
 
     def terbang(self):
        print("Hampir semua burung dapat terbang, namun ada beberapa yang tidak dapat terbang")
        
 
class Elang(Burung):
     def terbang(self):
        print("Elang dapat terbang")
    
 
class BurungUnta(Burung):
     def terbang(self):
        print("Burung unta tidak dapat terbang")
 
obj_burung = Burung()
obj_elang = Elang()
obj_burung_unta = BurungUnta()
 
obj_burung.intro()
obj_burung.terbang()
 
obj_elang.intro()
obj_elang.terbang()
 
obj_burung_unta.intro()
obj_burung_unta.terbang()

#Output:
Di dunia ini ada beberapa type berbeda dari spesies burung
Hampir semua burung dapat terbang, namun ada beberapa yang tidak dapat terbang
Di dunia ini ada beberapa type berbeda dari spesies burung
Elang dapat terbang
Di dunia ini ada beberapa type berbeda dari spesies burung
Burung unta tidak dapat terbang

Contoh di atas adalah metode overriding, dimana metode terbang() pada parent class Burung, di timpa oleh oleh masing-masing metode child class-nya yang terdapat pada class Elang dan BurungUnta.

Abstraction

Abstraction adalah pilar terakhir dari ke-empat pilar pemrograman berorientasi objek yang di bahas pada artikel ini. Abstraction memiliki tujuan untuk menyembunyikan detail yang tidak terlalu penting dari user. Kita dapat membayangkannya seperti sebuah smartphone, dimana untuk menggunakan device tersebut, kita tidak perlu memahami apa yang terjadi di dalam logika elektronik dan software di dalamnya. Namun, kita hanya perlu menekan tombol power dan menyentuh layar dengan menggunakan tangan kita agar alat tersebut bisa bekerja dengan semestinya.

Python memiliki module untuk menggunakan Abstract Base Classes (ABC). Modulenya bernama abc. Contoh kode di bawah ini adalah cara penggunaan modul abc untuk mendefinisikan abstraction.

Untuk menggunakan metode abstrak, kita harus menambahkan dekorator pada metode yang akan dijadikan abstrak dengan cara menambahkan @abstraction di atas metode tersebut. Untuk menunjukkan bahwa metode tersebut adalah abstrak. Mari kita coba untuk menjalankan code ini.

from abc import ABC, abstractmethod
class Bentuk(ABC):
    @abstractmethod
    def luas(self): 
        return self.__sisi * self.__sisi

    @abstractmethod
    def keliling(self): 
        return 4 * self.__sisi

class Persegi(Bentuk):
    def __init__(self, sisi):
        self.__sisi = sisi

persegi = Persegi(6)

#Output:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-159-d0755e2ccceb> in <module>
     13         self.__sisi = sisi
     14 
---> 15 persegi = Persegi(6)

TypeError: Can't instantiate abstract class Persegi with abstract methods keliling, luas

Kode di atas memberikan peringatan TypeError karena metode di dalam class Bentuk yaitu area dan perimeter adalah metode yang abstrak. Perlu diperhatikan juga ketika kita menggunakan class Persegi, maka, akan menimbulkan error yang sama, karena pada kode di atas kita mewarisi parent class Bentuk pada child class Persegi. Untuk menjalankan metode tersebut, kita harus mengimplementasikan kembali metode yang ada pada parent class Bentuk agar tidak menimbulkan pesan error, seperti pada contoh di bawah ini:

from abc import ABC, abstractmethod
class Bentuk(ABC):
    @abstractmethod
    def luas(self): 
        return self.__sisi * self.__sisi

    @abstractmethod
    def keliling(self): 
        return 4 * self.__sisi

class Persegi(Bentuk):
    def __init__(self, sisi):
        self.__sisi = sisi
    def luas(self):
        return self.__sisi * self.__sisi
    def keliling(self):
        return 4 * self.__sisi


persegi = Persegi(6)
print(persegi.luas())
print(persegi.keliling())

#Output:
36
24

Kesimpulan Pemrograman berorientasi objek Python

Pada artikel ini kita telah membahas mengenai empat pilar pemrograman berorientasi objek pada Python serta contoh penggunaannya. Sehingga lebih mudah untuk memahami konsep penting dalam pemrograman berorientasi objek.

Anda dapat membaca artikel lain mengenai dasar pemrograman python. Anda pun dapat mendownload catatan mengenai OOP dalam Jupyter notebook pada link di bawah ini:


Download file OOP Dasar

Terima kasih telah meluangkan waktunya untuk membaca. Semoga memberikan suatu manfaat.

Artikel Rekomendasi:

Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT Dengan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi

Referensi

https://www.programiz.com
python-textbok.readthedocs.io
Edureka
Javatpoint
Python-course.eu

 

 

Read More
15 Dasar simple bahasa pemrograman Python

Dasar-dasar bahasa pemrograman Python meliputi banyak hal, sama seperti bahasa pemrograman lain, yaitu adanya syntax tertentu untuk mendeklarasikan variable, tipe data, operator dan lainnya. Perbedaan yang fundamental adalah hanya pada penulisannya saja. Oleh karena itu kali ini kita akan menelurisi satu persatu, terutama untuk bahasa pemrograman Python.

Pendahuluan bahasa pemrograman python

catatan: tutorial ini menggunakan Jupyter notebook. Jika Anda ingin menggunakan IDE yang sama, Anda harus menginstallnya terlebih dahulu (install menggunakan Anaconda akan lebih mudah).

Selain itu Anda dapat mendownload file interaktif jupyter notebook untuk tutorial ini pada bab kesimpulan secara gratis.

Jika Anda tipe pembelajar visual dan auditory, maka Anda dapat langsung menonton ini:

https://www.youtube.com/watch?v=f2KuLt7u-LA
[Bahasa Pemrograman Python] Mencoba program pertama

Jika Anda lebih menyukai menonton langsung pada platform youtube. Maka Anda dapat klik disini untuk playlist detail dan dapat subscribe untuk mendapatkan notifikasi update terbaru konten tutorial pada channel Auftechnique.

bahasa pemrograman python
Python

Indentasi

Perbedaan bahasa pemrograman Python dibandingkan bahasa yang lain seperti Java, JavaScript dan C++ adalah indentasi. Mengapa demikian? Jawabnya sederhana, yaitu agar mudah di baca, dapat dibandingkan jika kita membaca Java, kebanyakan programmer pemula akan mengalami kesulitan untuk memahami koding yang di tulis oleh bahasa tersebut jika disandingkan dengan bahasa pemrograman Python.

Indentasi pada bahasa pemrograman Python adalah hal yang wajib. jika kita tidak mematuhi aturan tersebut, maka akan memberikan pesan error seperti di bawah ini:

IndentationError: unexpected indent

Pada bahasa pemrograman Python, notifikasi pesan Error pun sangat mudah di baca. Bagi anda yang pada mulanya menggunakan bahasa lain, lalu beralih menggunakan Python. Mungkin awalnya Anda akan merasa risih, namun pada akhirnya Anda akan menyadari bahwa indentasi ini sangat menyenangkan mata programmer, terlebih jika kode program tersebut di tulis oleh orang lain. Hal tersebut akan mempermudah jika kita bekerja di dalam tim yang besar, sehingga akan cepat memahami intensi dari kode program tersebut.

Variable

Sesuai dengan namanya, variable adalah sesuatu yang dapat berubah. Variabel ini digunakan untuk merujuk menuju lokasi memori oleh program komputer.

Pada sebagian besar bahasa lain, Anda perlu menetapkan tipe data terhadap suatu variabel. Namun, hal itu tidak perlu dilakukan pada bahasa pemrograman python. Sebagai contoh, jika Anda menulis program dengan menggunakan bahasa C, maka sintaks yang harus anda tulis adalah int num = 39; Dengan Python Anda hanya cukup menuliskan num = 39.

Untuk memeriksanya, Anda dapat membuka Jupyter notebook atau Python Shell, lalu lakukan langkah demi langkah perintah di bawah ini:

Integer

Integer adalah angka numerik yang dapat berupa nilai positif, negatif, atau nol tanpa memiliki angka desimal

num = 39
print(num)
39
type(num)
<class 'int'>

Seperti yang telah kita lihat di atas, kita telah mendeklarasikan variabel num dan menetapkan angka 39 sebagai nilai variabel tersebut. Metode type yang sudah built-in pada bahasa pemrograman python dapat digunakan untuk memeriksa jenis suatu variabel. 

Ketika kita memeriksa jenis variable num dengan menggunakan metode type, maka kita akan melihat output   <class 'int'>

Float

Float adalah angka numerik sama seperti integer , namun ada sedikit perbedaan, yaitu adanya angka desimal

num = 39.0
print(num)
39.0
type(num)
<class 'float'>

Dapat di lihat pada contoh tersebut bahwa kita telah menggunakan angka desimal pada num. Lalu, ketika kita memeriksanya pada bahasa pemrograman Python akan menunjukkan bahwa tipe data tersebut adalah float.

String

String adalah kumpulan beberapa karakter atau integer. String tersebut direpresentasikan dengan menggunakan tanda quotes (double ataupun single).

test = "Hallo semua"
print(test )
Hallo semua
type(test )
<class 'str'>

Pada contoh di atas kita telah menetapkan string pada variable test. Jenis variable test ini adalah seperti yang terlihat pada output Python, yaitu string.

Boolean

Boolean adalah operator biner yang hanya memiliki dua nilai output yaitu True atau False.

anda_robot = False
print(anda_robot)
False
type(anda_robot)
<class 'bool'>

Di sini kita telah menetapkan nilai False kepada variable anda_robot. Jenis variabel ini adalah boolean. Kita hanya dapat menetapkan True atau False. Perlu di ingat bahwa T dan F harus berupa huruf kapital atau kita akan mendapatkan pesan error code ini:

anda_robot = false
print(anda_robot)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-147-4473960a0737> in <module>
----> 1 anda_robot = false
      2 print(anda_robot)

NameError: name 'false' is not defined

NoneType

NoneType digunakan ketika variable tidak memiliki nilai, seperti pada contoh di bawah ini:

num = None
print(num)
None
type(num)
<class 'NoneType'>

Operator

Operator adalah simbol aritmatika pada bahasa pemrograman Python atau bahasa lainnya, untuk melihat seluruh operator yang tersedia pada Python Anda dapat melihat table di bawah ini.

Bahasa pemrograman Python tabel operator
Tabel Python operator

Mari kita membahas satu per satu operator pada bahasa pemrograman python

Operator aritmatika

Operator yang akan kita bahas adalah penambahan, pengurangan, perkalian, eksponensial, modulus, dan pembagian. Mari kita lihat operasi aritmatika sederhana pada bahasa pemrograman Python.

Pertama-tama kita akan mendeklarasikan dua variabel a dan b.

a = 6 
b = 2

Untuk lebih jelasnya, dapat kita lihat pada contoh di bawah ini:

a + b # Penambahan
8
a - b # Pengurangan
4
a * b # Perkalian
12
a / b # Pembagian
3.0
a ** b # Eksponensial
36

Contoh untuk menguji operator aritmatika lainnya:

a = 7
b = 3
a % b # Modulus (sisa pembagian)
1
a // b # Floor division (di bulatkan ke bawah)
2

Operator pembanding

Contoh operator pembanding adalah sama dengan, lebih besar dari, serta kurang dari.

a = 5 
b = 2 
a > b # Lebih besar
True
a < b # kurang dari
False
a == b # sama dengan 
False
a >= 5 # lebih besar atau sama dengan
True
b <= 1 # lebih kecil atau sama dengan
False

Operator logika

Operator ini "tidak termasuk", "dan", "dan atau"

a = 10
b = 2
a == 2 and b == 10 # dan
False
a == 10 or b == 10 # atau
True
not(a == 10) # tidak
False
not(a == 2)
True

Conditional Statement

Conditional statement digunakan untuk memeriksa suatu kondisi yang ditentukan sebelumnya apakah nilai nya True atau False.

Sering kali ketika kita sedang mengembangkan suatu aplikasi, ada hal di mana kita perlu memeriksa suatu kondisi tertentu lalu melakukan perintah yang berbeda tergantung pada hasil sebelumnya. Dalam skenario seperti itu conditional statement akan sangat berguna. if, elif dan else adalah pernyataan kondisional yang digunakan dalam bahasa pemrograman Python.

Dengan conditional statement, kita dapat membandingkan suatu variable dan memeriksanya apakah variable tersebut memiliki nilai atau merupakan suatu boolean, dan selanjutnya memeriksa apakah True atau False. Oleh karena itu, mari kita praktekan penggunaannya.

Kondisi pertama. Kita memiliki suatu integer dan tiga kondisi. Yang pertama adalah kondisi if untuk mengecek apakah nomor tersebut sama dengan 10. Yang kedua adalah kondisi elif. Disini kita akan memeriksa apakah nomor tersebut kurang dari 10. Yang terakhir adalah kondisi else. Kondisi ini akan tereksekusi jika kedua kondisi sebelumnya tidak memenuhi syarat.

angka = 5
if angka == 10:
    print("angka adalah 10")
elif angka < 10:
    print("angka adalah kurang dari 10")
else:
    print("angka adalah lebih dari 10")

Output:

angka adalah kurang dari 10

Catatan: Tidak wajib untuk menggunakan dua kondisi sama-dengan di dalam kondisi if. Anda dapat melakukannya dengan elif.

Kondisi kedua. Pada kasus ini kita akan memiliki variabel boolean dan dua kondisi. Pada contoh sebelumnya ketika kita membahas mengenai boolean apakah benar atau salah? Saat ini kita akan menggunakannya kembali pada conditional statement.

Jika anda_robot, lalu print "Ya, saya robot", selain itu print "bukan, saya manusia".

anda_robot = False
if anda_robot:
    print ("Ya, saya robot")
else:
    print ("bukan, saya manusia")

Output:

bukan, saya manusia

Kondisi ketiga. Pada contoh ini kita akan membuat kondisi berkebalikan dari kondisi kedua dengan operator not.

anda_robot = False
if not anda_robot:
    print ("Ya, saya robot")
else:
    print ("bukan, saya manusia")

Output

Ya, saya robot

Kondisi ke empat. Disini kita akan mendeklarasikan data sebagai None, lalu memeriksanya jika data tersebut ada atau tidak.

data = None
if data:
    print ("data bukan none")
else:
    print ("data adalah none")

Kondisi kelima. Anda pun dapat menggunakan if dalam satu baris pada bahasa pemrograman Python. Syntax nya akan terlihat seperti pada:

a = 10
b = 5
if a > b: print("a lebih besar dari b")

Output:

a lebih besar dari b

Kondisi ke enam. Anda pun dapat menggunakan if else dalam satu baris, seperti pada contoh di bawah ini:

num = 5
print("Angka adalah lima ") if num == 5 else print("Angka bukan lima")

Output:

Nomor adalah lima 

Kondisi ketujuh. Anda pun dapat menggunakan nested if-else statement, yaitu:

num = 25
if num > 10:
    print("Angka lebih besar dari 10")
    if num > 20:
        print("Angka lebih besar dari 20")
    if num > 30:
        print("Angka lebih besar dari 30")
else:
    print("Angka lebih kecil dari 10")
Nomer lebih besar dari 10
Nomer lebih besar dari 20

Kondisi kedelapan. Anda dapat pula mengunakan operator and pada conditional statement. Operator ini menyatakan jika kondisi 1 dan 2 keduanya adalah benar.

num = 10
if num > 5 and num < 15:
     print(num)
else:
     print("Angka bisa lebih kecil dari 5 atau lebih besar dari 15")

Output:

10

Karena 10 adalah angka di antara 5 dan 15.

Kondisi kesembilan. Anda pun dapat menggunakan operator or dalam pernyataan bersyarat. Hal ini untuk menyatakan bahwa jika salah satu kondisi 1 atau kondisi 2 benar, sehingga program akan di eksekusi.

num = 10
if num > 5 or num < 7:
     print(num)

Output:

10

Apakah Anda bingung karena output num adalah 10, padahal pada statement kedua adalah kurang dari 7? Hal ini disebabkan oleh kondisi or. Sehingga, jika salah satu kondisi terpenuhi, maka program akan tetap berjalan.

For loops

Metode lain yang berguna dalam bahasa pemrograman Python adalah iterator. Hal ini sangat membantu jika Anda ingin melakukan sesuatu beberapa kali.

print("Hai")
print("Hai")
print("Hai")

Dapat dibayangkan jika kita ingin menulis kata "Hai" sebanyak seribu kali, tentu kode program kita akan sangat sulit untuk di baca, selain itu, kemungkinan terjadinya kesalahan sangat lah besar. Oleh karena itu, kita dapat menggunakan suatu cara yang disebut loop atau iterator. Ada dua cara untuk menjalankan perintah tersebut, yaitu dengan for atau while loop.

Pada contoh kali ini, kita akan menggunakan metode range. Metode ini yang menentukan rentang loop seberapa banyak perintah harus di ulang. Secara default, titik awalnya adalah 0.

for i in range(3):
   print("Hai")

Output:

Hai
Hai
Hai

Contoh lainnya jika kita ingin membuat rentang yang berbeda, maka kita dapat menggunakan range(1,3).

for i in range(1,3):
   print("Hai")

Output

Hai
Hai

"Hai" hanya tercetak dua kali karena kita telah menentukan rentang dari angka 1 hingga 3. Sederhananya kita dapat mengurangi angka sebelah kanan dengan sebelah kiri.

Kita pun dapat menambahkan perintah lain setelah loop selesai, seperti pada contoh di bawah ini:

for i in range(3):
  print("Hai")
else:
  print("Selesai")

Output

Hai
Hai
Hai
Selesai

Dapat kita lihat bahwa loop telah melakukan iterasi sebanyak 3 kali ( 3 - 0 ). Setelah iterasi selesai, tahap selanjutnya adalah mengeksekusi statement else.

Selain itu kita pun dapat melakukan nesting for loop di dalam for loop yang lain.

for i in range(3):
     for j in range(2):
        print("loop di dalam")
     print("loop di luar")

Output:

loop di dalam
loop di dalam
loop di luar
loop di dalam
loop di dalam
loop di luar
loop di dalam
loop di dalam
loop di luar

Dapat kita lihat bersama bahwa statement "loop di dalam" tereksekusi dua kali. Setelah itu "loop di luar" di eksekusi satu kali. Lalu, "loop di dalam" di eksekusi lagi sebanyak dua kali.

Jika Anda masih bingung, semoga pernyataan ini dapat membantu:

  • Python interpreter melihat ada perintah for loop pada bagian awal. Selanjutnya membaca ke bagian bawah dan menemukan keberadaan for loop yang lain.
  • Sehingga, Python akan mengesekusi "loop di dalam" sebanyak dua kali. Setelah selesai yang pertama, interpreter masih harus melakukannya dua kali lagi dari sisa "loop di luar" yang harus dilakukan.
  • Selanjutnya Interpreter melakukan tugas mulai lagi dari awal dan melihat for "loop di dalam" dan di ulangi terus hingga "loop di luar" selesai.

Kita pun dapat memilih untuk melewati for loop pada kondisi tertentu. Maksudnya adalah setiap kali proses looping dijalankan, hingga intrepreter melihat statement pass, sehingga membuatnya tidak mengesekusi baris tersebut dan akan melanjutkan pada baris setelahnya (jika ada).

for i in range(3):
   pass

Anda tidak akan melihat output di sini, karena setelah pass tidak ada lagi baris kode program.

While loops

Dalam bahasa pemrograman Python, terdapat metode loop atau iterator yang lain, yaitu while loop. Kita pun dapat memberikan hasil yang sama seperti yang telah kita lakukan pada for loop dengan menggunakan while loop, seperti contoh di bawah ini:

i = 0
while i < 3:
  print("Angka", i)
  i += 1

Output

Angka 0
Angka 1
Angka 2

Perlu diperhatikan bahwa, setiap kali kita menggunakan perintah while loop. Kita harus menambahkan statement increment atau statement yang dapat menghentikan loop pada titik tertentu. Jika kita tidak menggunakannya, maka proses loop akan berjalan selama nya.

Cara lain untuk menghentikan loop adalah dengan menambahkan statement break di dalam while loop. Perintah ini akan menghentikan loop seperti pada contoh di bawah ini.

i = 0
while i < 3:
    if i == 3:
           break
    print("Angka", i)
    i += 1

Output

Angka 0
Angka 1
Angka 2

Di sini kita menghentikan while loop ketika intrepreter membaca nilai dari i , yaitu 4 (lebih dari 3).

Contoh lainnya adalah dengan menambahkan statement else di dalam while loop. Statement ini akan di eksekusi setelah while loop selesai.

i = 0
while i < 3:
    print("Angka", i)
    i += 1
else:
    print("Angka lebih besar dari 2")

Output:

Angka 0
Angka 1
Angka 2
Angka lebih besar dari 2

Selanjutnya adalah statement continue. Statement ini dapat digunakan untuk melewati proses eksekusi yang sedang berjalan dan melanjutkan pada baris setelahnya.

i = 0
while i < 5:
  i += 1
  if i == 2:
       continue
  print("Angka", i)

Output:

Angka 1
Angka 3
Angka 4
Angka 5

User input

Bayangkanlah kita membuat suatu aplikasi seperti command-line. Dimana aplikasi ini harus dapat mengambil input dari pengguna dan melakukan sesuai apa yang di perintah. Untuk melakukan hal tersebut, kita dapat menggunakan metode input yang sudah terintegrasikan pada bahasa pemrograman Python.

Memasukkan input

Syntax agar user dapat melakukan input adalah:

variable = input(".....")

Contoh:

name = input("Masukan nama Anda: ")

Output:

Input nama

Ketika kita menggunakan metode input, lalu mengesekusinya, kita akan di minta untuk memasukkan text pada textbox, lalu tekan Enter. Setelah itu kita dapat memeriksa kembali apakah variable nama yang kita masukkan sudah sesuai atau belum.

Print nama

Berdasarkan hasil di atas, maka variable yang kita masukkan adalah benar. Jika Anda mengeceknya, Zacky ini adalah type data string.

type(name)
<class 'str'>

Mari kita coba satu contoh lagi, dimana kita akan meng-assign nilai integer sebagai input.

bahasa pemrograman python
input case
Tanggal

Apakah Anda sedikit bingung karena integer dikenali oleh bahasa pemrograman python sebagai string. Ini bukan kesalahan pada Python, melainkan memang seharusnya memberikan output seperti itu jiga menggunakan metode input. Untuk menangani kasus seperti ini, maka kita akan mengkonversi string kepada integer dengan metode typecasting.

Typecasting

Kita telah melihat bahwa, metode input akan menghasilkan output berupa string, termasuk integer. Sekarang, jika kita ingin mengubah output tersebut kepada integer, hal yang harus kita lakukan adalah:

string ke integer

Disini kita telah mendeklarasikan User input dan mengkonversikannya ke dalam bentuk integer menggunakan metode input pada bahasa pemrograman python . Inilah yang disebut dengan nama typecasting.

Sederhananya, kita dapat melakukan konversi dengan bantuan typecasting untuk semua jenis variable:

  • integer ke string: str()
  • string ke integer: int()
  • integer ke float: float()

catatan: Konversi dari integer ke string pun dapat dilakukan.

Dictionary

Bagian ini pada artikel bahasa pemrograman python, kita akan membahas Dictionary. Kita dapat membayangkannya untuk menyimpan user detail, seperti halnya kamus yang dapat menyimpan berbagai macam kata-kata. Python pun dapat melakukan hal serupa dengan cara seperti di bawah ini:

nama = "Zacky"
profesi = "Developer"

Untuk melihat hasilnya, kita dapat menggunakan perintah print.

print(nama)
Zacky

Sebagai seorang programmer, cara tersebut tidaklah elegan. Untuk membuatnya lebih baik, mari kita menyimpan data tersebut di dalam key-value dictionary.

Dictionary adalah kumpulan variable yang tidak berurutan dan dapat di ubah(dapat di perbaharui).

Format dictionary pada bahasa pemrograman python adalah sebagai berikut:

data = {
	"key" : "value"
}

Untuk memahaminya lebih jauh, maka kita dapat melihat contoh pada penggunaannya.

info_detail = {
 "nama": "Zacky",
 "profesi": "Developer",
 "hobi": "Ngoprek open source software dan hardware"
  }

Mengakses nilai pada dictionary

Untuk dapat mengakses nilai di dalam dictionary ada dua cara yang dapat kita lakukan. Kita akan melihat kedua cara tersebut, sehingga dapat menentukan mana yang lebih baik.

Untuk mengakses nilai pada key nama dari info_detail di dalam dictionary pada bahasa pemrograman python adalah seperti pada gambar di bawah ini:

Kita dapat melihat bahwa cara pertama lebih mudah untuk dipahami. Namun, masalah akan timbul ketika kita hendak mengakses data yang tidak ada di dalam dictionary, seperti pada contoh di bawah ini:

info_detail["umur"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-41-790676cbae31> in <module>
----> 1 info_detail["umur"]
KeyError: 'umur'

Dari pesan error di atas terindikasi bahwa tidak ada key yang bernama umur. Sekarang, mari kita coba skenario yang sama dengan menggunakan metode kedua.

info_detail.get("umur")

Kita tidak mendapatkan response apapun dari Python console setelah kita hit run. Mari kita mencoba debugging lebih jauh lagi untuk mengetahui mengapa hal ini dapat terjadi. Namun sebelumnya, kita akan menetapkan variable umur untuk memanggil metode get, lalu lakukan perintah print.

umur = info_detail.get("umur")
print(umur)

Output

None

Berdasarkan contoh di atas, ketika perintah get tidak menemukan nilai key ,maka akan menghasilkan variable bernilai None. Hal ini yang menyebabkan kita tidak mendapatkan pesan error. Anda mungkin bertanya-tanya, manakah metode yang lebih baik. 

Sebagian besar programmer biasanya menggunakan metode kedua karena lebih masuk akal. Namun, untuk beberapa kondisi di mana pengecekan kode program yang lebih ketat, maka kita perlu menggunakan metode pertama.

Memeriksa keberadaan key.

Kita mungkin bertanya-tanya, bagaimana cara kita ingin mengetahui apakah suatu dictionary memiliki key tertentu atau tidak. Pada bahasa pemrograman python, metode key() dapat menyelesaikan masalah ini.

if "umur" in info_detail.keys():
     print("Ya, ada di dalam key")
else:
     print("tidak ada di dalam key")

Output:

tidak ada di dalam key

Bagaimana jika kita ingin memeriksa apakah suatu dictionary itu memiliki suatu nilai atau tidak? Untuk mengetahuinya, mari kita mendeklarasikan dictionary kosong seperti di bawah ini:

info_detail = {}

Kita dapat menggunakan if-else pada dictionary secara langsung untuk melakukan pengecekan, jika memberikan hasil true maka terdapat data di dalam dictionary tersebut, sebaliknya false jika tidak memiliki data.

Pada bahasa pemrograman python, metode bool pun dapat di gunakan untuk pengecekan apakah suatu dictionary memiliki nilai atau tidak. Perlu di ingat bahwa boolean akan memberikan hasil False jika dictionary tidak memiliki nilai dan True jika memiliki nilai.

Update key yang memiliki nilai.

Pada bagian ini kita akan mencoba untuk mengubah nilai yang sudah ada di dalam dictionary. Misalkan kita sudah memiliki dictionary seperti di bawah ini:

info_detail = {
  "nama":"Zacky",
  "profesi": "Developer"
}

Misalkan kita ingin mengubah status profesi yang ada di dalam dictionary, maka syntax untuk melakukannya ialah:

info_detail["profesi"] = "tukang kayu"
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Mengubah nilai key pada dictionary adalah sama dengan cara memberikan nilai pada variabel.

Menambahkan pasangan key-value

info_detail["umur"] = "120"
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu', 'umur': '120'}

Dapat kita lihat bahwa key yang baru kita masukan ke dalam dictionary adalah umur yang memiliki value 120.

Menghapus pasangan key-value.

Untuk menghapus pasangan key-value pada bahasa pemrograman python adalah dengan metode pop.

info_detail.pop("umur")
'120'
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Dapat di lihat bahwa key-value umur telah hilang dari dictionary.

Meng-copy dictionary

Dictionary tidak dapat di copy dengan menggunakan cara konvensional. Kita tidak dapat meng-copy nilai dictA ke dictB seperti contoh di bawah ini:

dictA = dictB
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-48-62e270af49fb> in <module>
----> 1 dictA = dictB

NameError: name 'dictB' is not defined

Cara di atas akan memberikan pesan error. Cara yang tepat untuk copy value adalah dengan menggunakan metode copy.

dictB = info_detail.copy()
print(dictB)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Lists

List adalah struktur data pada bahasa pemrograman Python yang mutable (dapat di ubah) dan memiliki element berurutan secara sekuensial. Setiap elemen di dalam list disebut dengan item. Untuk mendefinisikan suatu list pada bahasa pemrograman Python adalah dengan menggunakan tanda kurung siku [ ]. Contohnya adalah:

data =[7, 6.789, "abc", False]

List sangat membantu ketika kita bekerja dengan banyak nilai yang saling berhubungan. List memungkinkan kita untuk menyimpan data secara bersamaan dan melakukan metode yang sama untuk melakukan suatu operasi pemrograman terhadap nilai yang banyak dengan sekali perintah.

Mengakses element di dalam list

Mengakses element di dalam list adalah dengan cara memperhatikan urutannya yang di mulai dari angka nol untuk anggota list pertama.
Contoh syntax untuk akses list urutan ketiga:

data[2]
'abc'

Selain mengakses list pada posisi tertentu, anda pun dapat menggunakan rentang anggota list, contoh nya:

data[0:2]
[7, 6.789]

Angka 0 di dalam kurung siku menandakan dari mana kita memulai (dalam hal ini di mulai dari urutan pertama), sedangkan angka kedua 2 adalah posisi nilai sebelum urutan tersebut (sebelum urutan ketiga).

Menambahkan item ke dalam list

Pada bahasa pemrograman python, untuk menambahkan anggota ke dalam list adalah dengan menggunakan metode append.

data.append("tambahan")
data
[7, 6.789, 'abc', False, tambahan']

Mengubah nilai item di dalam list

Pada contoh di bawah ini, kita akan mengubah item ke-empat yaitu False, menjadi True.

data[3] = True
data
[7, 6.789, 'abc', True, 'tambahan']

Menghapus item dari dalam list

Untuk menghapus item di dalam list pada bahasa pemrograman python adalah dengan menggunakan metode remove.

data.remove("abc")
data
[7, 6.789, True, 'tambahan']

Looping pada list

Kita pun dapat memerintahkan fungsi loop di dalam list dengan cara:

for i in data:
    print(i)
7
6.789
True
tambahan

Memeriksa keberadaan list

Untuk memeriksa keberadaan anggota di dalam list adalah dengan cara di bawah ini:

if 8 in data:
    print ("ada")
else:
    print("tidak")

tidak

Kita dapat melihat bahwa angka 8 tidak termasuk di dalam list, sehingga akan kembali pada kondisi else, yaitu tidak.

Meng-copy list

Untuk meng-copy list dari satu kepada yang lainnya adalah dengan menggunakan metode copy.

List2 = data.copy()
List2
[7, 6.789, True, 'tambahan']

Memeriksa panjang list

Pada bahasa pemrograman Python, untuk memeriksa panjang list adalah dengan menggunakan metode len.

len(data)
4

Menggabungkan dua list

Untuk menggabungkan dua list, kita dapat menggunakan operator +.

list1 = [4, 8,1, "hey"]
list2 = [2, 8, "apa kabar"]
list1 + list2

[4, 8, 1, 'hey', 2, 8, 'apa kabar']

Apa yang terjadi jika kita mencoba untuk mengakses elemen yang tidak terdapat di dalam list?

list1[4]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-853c8927f3be> in <module>
----> 1 list1[4]

TypeError: 'type' object is not subscriptable

Pada kode program di atas, kita hendak mencoba untuk mengakses element kelima [4]. Seperti yang telah kita ekspektasikan, bahwa kode tersebut akan memberikan pesan error, karena kita hanya memiliki empat elemen di dalam list tersebut.

Tuples

Pada bagian sebelumnya, list bekerja sangat baik untuk menyimpan koleksi data dan yang di ubah (mutable). Namun, terkadang kita ingin membuat list yang tidak dapat di ubah isinya. Tuple dapat melakukannya untuk kita, dengan kata lain tuple adalah list yang immutable (data tidak dapat di ubah).

data = ( 3, 6 , 9, "Hai")
data
(3, 6, 9, 'Hai')

Mengakses elemen tuple

Seperti hal nya untuk mengakses element pada list, tupple pun dapat di akses dengan menggunakan syntax yang sama.

data[2]
2

Mengakses rentang index pun memiliki cara yang sama dengan list:

data[1:4]
(6, 9, 'Hai')

Mengubah nilai element pada tuple

Mungkin Anda bertanya-tanya. Lho, bukannya tuple tidak dapat di ubah? Anda tidak perlu khawatir jika melakukan kesalahan input pada tuple. Ada trik yang dapat kita lakukan yaitu dengan cara mengkonversi tuple menjadi list, lalu dikonversikan kembali ke dalam bentuk tuple. Contohnya:

data = ( 3, 6, 9, 'Hai')
data2 = list(data) # Konversi data ke list
data2[3] = "hai juga" # update nilai pada list
data = tuple(data2) # konversi balik data ke tuple
data
(3, 6, 9, 'hai juga')

Catatan: Sekali tuple di buat, elemen baru tidak dapat ditambahkan.

Sets

Sets adalah salah satu tipe data yang lain pada bahasa pemrograman Python. Sets merupakan data tidak berurutan dan tidak memiliki indeks, dinyatakan seperti pada contoh berikut ini:

data = { "hai", "salam kenal", 14, 20 }
data
{14, 20, 'hai', 'salam kenal'}

Mengakses elemen di dalam sets

Oleh karena sets tidak memiliki indeks, maka, kita tidak dapat mengaksesnya secara langsung. Oleh karena itu, untuk mengakses elemen tersebut perlu menggunakan fungsi loop.

for i in data:
    print(i)
salam kenal
20
hai
14

Catatan: sekali sets di buat, nilanya tidak dapat di ubah.

Menambahkan item pada sets

Pada bahasa pemrograman python, untuk menambahkan elemen pada suatu sets adalah dengan cara menggunakan metode add.

data.add("tambah")
data
{14, 20, 'hai', 'salam kenal', 'tambah'}

Memeriksa panjang dan menghapus item pada

// Memeriksa panjang elemen
len(data)
5
// Menghapus item
data.remove("hai")
data
{14, 20, 'salam kenal', 'tambah'}

Functions

Ketika kita ingin melakukan tugas tertentu pada program yang kita kembangkan. Kita pun dapat menggunakanfunction pada kode suatu program. Terlebih lagi jika kita ingin melakukan suatu perintah berulang kali di dalam program dan tidak ingin untuk menggunakan kode yang sama berkali-kali. Dengan menggunakan function ini, hidup programmer menjadi lebih mudah.

Untuk mendeklarasikan function pada bahasa pemrograman python adalah dengan menggunakan kata kunci def, contoh nya adalah:

def hello_world():
   print("Hello world, kami dari Indonesia")

Pada contoh di atas, kita telah mendeklarasikan function hello_world, yang ketika di panggil akan mencetak tulisan "Hello world, kami dari Indonesia". Untuk memanggil function tersebut, kita harus menggunakan syntax seperti pada contoh di bawah ini:

hello_world()
//output:
Hello world, kami dari Indonesia

Perlu di ingat bahwa tanda kurung () harus disertakan untuk mengeksekusi function pada bahasa pemrograman python. Jika kita lupa menyertakannya, maka, akan terlihat seperti pada contoh bawah ini:

hello_world
//output:
<function __main__.hello_world()>

Mari kita melihat contoh sederhana kegunaan function ketika hendak melakukan operasi aritmatika penambahan. Cara konvensional untuk melakukan operasi tersebut yaitu:

a = 10 
b = 3
a + b
//output:
13

Sekarang, jika kita ingin mengganti nilai variabel a dan b untuk melakukan operasi penambahan yang sama, kita harus melakukannya lagi seperti pada cara diatas.

a = 10 
b = 3
a + b
//output:
13
a = 1
b = 9
a + b
//output:
10

Dapat dibayangkan jika hanya untuk menggunakan operasi penambahan tersebut dan dilakukan sebanyak puluhan kali, kita harus selalu menyesuaikan nilai a dan b. Cara tersebut sangatlah tidak efisien. Namun, kita tidak perlu khawatir, karena masalah tersebut dapat diselesaikan dengan menggunakan function seperti pada contoh selanjutnya.

def penambahan(a,b):
    print(a+b)

Function di atas adalah untuk operasi aritmatika penjumlahan variable a dan b. Untuk memanggil function tersebut, kita dapat menggunakan syntax di bawah ini:

penambahan(20,3)
//output
23

Dapat kita lihat bahwa dengan menggunakan function untuk mengeksekusi suatu perintah adalah sangat mudah. Sekarang, bagaimana jika kita tidak memasukkan argumen di dalam tanda kurung function penambahan tersebut?

penambahan()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-105-7668fff7f74a> in <module>
----> 1 penambahan()

TypeError: penambahan() missing 2 required positional arguments: 'a' and 'b'

Python akan memberikan pesan TypeError dan menginformasikan kepada kita untuk menggunakan dua argument. Lalu, bagaimana jika kita memasukkan argument ketiga?

penambahan(20,3, 1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-106-23ba42c141cb> in <module>
----> 1 penambahan(20,3, 1)

TypeError: penambahan() takes 2 positional arguments but 3 were given

Seperti yang terlihat pada pesan error di atas, kita telah memanggil 3 argument, namun pada function penambahan yang telah kita tulis seharusnya hanya memiliki 2 argumen.

Lalu, bagaimana jika kita tidak mengetahui berapa banyak argument yang terdapat pada suatu function? Untuk menjawab masalah tersebut kita dapat menggunakan args dan kwargs pada bahasa pemrograman python.

Args

Kita dapat menggunakan args dan kwargs (di bahas pada bab selanjutnya) jika tidak mengetahui ada berapa banyak argumen yang terdapat pada suatu function.

Untuk meneruskan sejumlah n argument kepada suatu function, kita dapat menggunakan args. Untuk mendefinisikan args, maka kita harus menambahkan tanda * di depan argumen.

Ingat!Ketika kita menambahkan tanda * di depan, kita akan menerima argument dalam bentuk tuple.

def penambahan(*num):
    print(num)

*num pada kasus di atas adalah contoh dari args. Sekarang kita dapat memanggil kembali fungsi add dan melewati beberapa argumen sehingga tidak akan mendapatkan pesan TypeError.

Sehingga, untuk melakukan operasi penjumlahan, kita dapat secara langsung menggunakan metode yang sudah build-in pada bahasa pemrograman Python, yaitu sum.

def penambahan(*num):
    print(sum(num))

Sekarang kita dapat memanggil function penambahan dan kita akan melihat output yang benar seperti pada dua contoh di bawah ini.

penambahan(1,2,3) # memanggil fungsi
6

penambahan(1,2,3,4) # memanggil fungsi
10

Keyword Arguments

Terkadang, kita tidak mengetahui urutan dari suatu argumen yang akan diteruskan ketika function di panggil. Pada kasus seperti ini, kita dapat menggunakan keyword arguments yang dapat diteruskan tanpa harus mengingat urutannya. Namun, function tersebut akan mengetahui nilai yang benar. Lihatlah contoh di bawah ini:

Hasil pemanggilan function dan argument di atas adalah tepat. Namun, bagaimana jika kita memanggil function tersebut seperti ini:

info_detail("tukang kayu", "Zacky")
# outputnya akan seperti:
Nama: tukang kayu
Profesi:  Zacky

Hasil di atas adalah tidak benar. Yang terjadi pada kasus ini adalah variable nama mengambil kata "tukang kayu" dan variable profesi memasukkan kata "Zacky". Untuk scenario yang kita tidak ketahui urutan argumentnya, maka cara untuk memanggil keyword argument pada bahasa pemrograman python adalah:

info_detail(profesi= "tukang kayu", nama= "Zacky")
# outputnya akan seperti:
Nama: Zacky
Profesi:  tukang kayu

Default Arguments

Pada kondisi di mana kita tidak yakin apakah suatu argumen memiliki suatu nilai atau tidak ketika function di panggil. Kita dapat menggunakan metode lain, yaitu default argument seperti pada contoh di bawah ini.

def info_detail(nama, profesi = None):
    print("Nama:", nama)
    print("Profesi: ", profesi)

Di sini kita menyisipkan variable bernilai None pada argument profesi. Sehingga, jika kita tidak memanggil argument kedua, ketika memanggil function tersebut. Maka, argument kedua akan mengambil nilai None sebagai default. Sebagai contoh, mari kita panggil function info_detail.

info_detail("zacky")
# output
Nama: zacky
Profesi:  None

Jika kita memasukkan nilai pada argument kedua, maka nilai None akan berubah dan menjadi nilai argument kedua.

info_detail("zacky", "tukang kayu")
#output
Nama: zacky
Profesi:  tukang kayu

Namun, jika kita menentukan suatu nilai pada argument pertama sebagai default. Lalu, menjadikan argumen kedua sebagai non-default. Maka, Python akan memberikan pesan error seperti di bawah ini:

def info_detail(nama = None, profesi):
    print("Nama:", nama)
    print("Profesi: ", profesi)

File "<ipython-input-130-6c704f968e19>", line 1
    def info_detail(nama = None, profesi):
                   ^
SyntaxError: non-default argument follows default argument

Ingat! Urutan untuk menentukan parameter suatu argumen di dalam function adalah:

  1. Posisi parameter atau non-default, contoh (a, b, profesi)
  2. keyword parameter atau default parameter, contoh (a="abc", nama=None)

Kwargs

Untuk kondisi di mana kita tidak mengetahui ada berapa banyak keyword argumen yang akan diteruskan kepada function. Maka, kita akan menggunakan kwargs. Penggunaan kwarg adalah dengan menempatkan tanda ** di depan argumen.

Ingat! Ketika kita menempatkan tanda ** di depan argumen. Maka, kita akan menerima argument dalam bentuk dictionary.

Mari kita mencoba untuk memahaminya dengan contoh yang konkrit. Kita akan mendekalarasikan function yang dapat menerima nama sebagai argument dengan menggunakan tanda ** di depannya.

def user(**nama):
    print(nama)

Ketika kita memanggil user function, maka kita akan menerima data dalam bentuk dictionary. Mari kita lihat contoh di bawah ini:

user(nama1="messi",name2="ronaldo")
#output
{'nama1': 'messi', 'name2': 'ronaldo'}

Sekilas seperti tidak memiliki perbedaan dengan args. Namun, ini bukan lah args. Pada args, kita tidak dapat mengakses nilai tertentu berdasarkan namanya karena args berbentuk tuple. Sedangkan pada kwargs, kita mendapatkan data dalam bentuk dictionary sehingga nilainya dapat di akses.

Mari kita lihat contoh di bawah ini:

def user(**info_detail):
    print(info_detail['nama'])

Lalu, panggil function tersebut:

user(nama="Zacky",profesi="tukang kayu")
#output
Zacky

Terlihat bahwa dengan menggunakan kwargs kita dapat menampilkan nilai dari nama, yaitu Zacky.

Kesimpulan

Kita telah menelurusi dasar-dasar bahasa pemrograman Python yang cukup intensif. Semoga dapat membantu Anda dalam memahami bahasa pemrograman Python dengan mudah. Saya menyediakan notebook materi ini dalam bentuk file jupyter notebook dengan klik tombol di bawah ini:

Download file Python Dasar

Jika Anda ingin menggunakan bahasa Python pada proyek yang sebenarnya, seperti pada implementasi Internet of Things, maka Anda dapat mengikuti tutorial ini. Atau pada implementasi pada Artificial Intellegent klik di sini

Terima kasih telah membaca artikel ini, semoga bermanfaat untuk anda.

Artikel Rekomendasi:

Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT D
engan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi

Referensi:

freebodecamp.org
Buku Python Crash Course

Read More
Sistem Pengelolaan Sampah Berbasis IoT

Pendahuluan

Kali ini kita akan membuat Minimum Viable Product (MVP) untuk sistem pengelolaan sampah berbasis IoT. Prototype ini sebelumnya merupakan calon produk pada Startup yang saya kembangkan dengan nama Resikin, namun saat ini sedang tidak berjalan karena banyak faktor.

Pada artikel ini kita akan mengupas proses pembuatannya sehingga diharapkan kepada pembaca yang tertarik untuk mengembangkan secara mandiri atau menambah fitur menarik lainnya, yang mungkin dapat bermanfaat di kemudian hari. Tutorial ini cukup intensif karena di dalamnya membahas tiga topik yang berbeda namun berhubungan satu sama lain sehingga dapat menjadi MVP, yaitu pengembangan hardware, web apps dan mobile apps (android).

Preview sistem pengelolaan sampah berbasis IoT pada tutorial kali ini dapat anda lihat pada link youtube di bawah ini:

https://www.youtube.com/watch?v=kB-tYUyIS3w&t=16s
Preview sistem pengelolaan sampah berbasis IoT

Jika anda tertarik dengan gambaran umum mengenai project ini seperti yang tergambarkan pada video di atas, maka anda dapat melanjutkan tutorial ini. Oleh karena itu, tanpa panjang lebar, mari kita memulai tutorial ini dengan seksama.

Skema sederhana untuk system yang akan kita kembangkan dapat di lihat seperti pada gambar di bawah ini.

[sistem pengelolaan sampah] Arsitektur sistem secara sederhana

NodeMCU sebagai microcontroller menerima data pengukuran tingkat kepenuhan tempat sampah dengan menggunakan sensor ultrasonic, lalu untuk mengetahui kondisi lingkungan, kita akan memakai DHT11 untuk mengukur temperature dan kelembaban.

Dengan konektifitas Wifi ke internet, data di kirim menuju Firebase Realtime database yang selanjutnya data ditampilkan melalui halaman aplikasi web (membutuhkan aktifasi Google Map Javascript API) dan aplikasi Android (membutuhkan aktifasi Google Map Android API).

Pre-requisite

Sebelum memulai tutorial sistem pengelolaan sampah berbasis IoT ini, pastikan Anda terlebih dahulu untuk setup Firebase dan Google Cloud Platform Map API. Namun, jika anda belum familiar melakukan setup keduanya, anda dapat mengikuti tutorial video Firebase pada link ini dan untuk GCP Maps API pada link ini.  

Artikel tutorial ini di bagi menjadi tiga bagian utama, yaitu: pembuatan hardware, webapps (static) dan android Apps.

Setup Hardware

Hal pertama yang kita lakukan adalah pemilihan hardware dan merangkainya menjadi sistem yang kita butuhkan untuk membuat Sistem Pengelolaan Sampah Berbasis IoT.

Skema rangkaian

Langkah awal adalah dengan membuat sketsa rangkaian yang akan digunakan dengan menggunakan Fritzing. Selanjutnya adalah menyediakan komponen - komponen yang dibutuhkan pada project ini, yaitu:

  1. NodeMCU
  2. Sensor temperature DHT11
  3. Ultrasonic Sensor SR04
  4. Voltage regulator LM7805
  5. 2x Lithium battery 18650
  6. Battery holder
  7. Cable jumper secukupnya
  8. On-off switch
  9. Casing (dapat menggunakan 3D printer) tokopedia (affiliate link)
[sistem pengelolaan sampah] Skema rangkaian

Selanjutnya adalah mencetak PCB sederhana untuk mempermudah pemasangan di dalam casing. Untuk mendesain PCB, saya tidak menggunakan Fritzing, melainkan EasyEDA, yaitu online platform salah satu perusahaan pencetak PCB terbesar dari China. Pada platform ini anda dapat langsung melihat perkiraan biaya yang dibutuhkan untuk mencetak PCB tersebut.

Namun, pada project sistem pengelolaan sampah berbasis IoT ini saya tidak menggunakan service EasyEDA, karena hanya membuat 5pcs PCB. Yang saya butuhkan adalah Gerber file dan pdf, lalu di kirim kepada percetakan PCB lokal. Selain itu desain PCB yang kita buat pun tidak terlalu kompleks.

Mohon diperhatikan bahwa pada desain PCB yang telah saya cetak, berbeda dengan desain yang telah saya buat menggunakan Fritzing. Hal ini disebabkan karena saya memutuskan untuk menambah pengukuran temperature dan kelembaban ketika PCB sudah terlanjur di cetak.

[sistem pengelolaan sampah] Blueprint PCB

Sehingga, trik yang saya lakukan adalah dengan menambahkan kabel jumper dan dikoneksikan secara langsung kepada pin nodemcu seperti pada gambar di bawah ini.

sistem pengelolaan sampah berbasis IoT MVP
[sistem pengelolaan sampah] Hardware di dalam casing.

Setelah memastikan semuanya terkoneksi dengan baik, maka selanjutnya adalah dengan upload Arduino sketch pada NodeMCU yang akan digunakan.

Arduino Sketch

// auftechnique.com //

#include <Firebase.h>
#include <FirebaseArduino.h>
#include <FirebaseCloudMessaging.h>
#include <FirebaseError.h>
#include <FirebaseHttpClient.h>
#include <FirebaseObject.h>
#include "DHT.h"
#include <Ultrasonic.h>
#include <ESP8266WiFi.h>  
#include <WiFiClient.h>  
#include <time.h>

#define FIREBASE_HOST "alamatFirebaseAnda.firebaseio.com"  //Firebase Project URL goes here without "http:" , "\" and "/"
#define FIREBASE_AUTH "kodeRahasiaFirebaseAnda" //Firebase Database Secret

// Pin
#define DHTPIN 14

// Use DHT11 sensor
#define DHTTYPE DHT11  

// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE); 

// defines pins numbers ultrasonic
Ultrasonic ultrasonic(5, 4);   //(trigger, echo) D1, D2

// defines variables
int distance;
int distance_percent;
float hum = 100;
float temp = 0;

int trashbin_size = 73; // in cm, harus di ukur, tiap tempat sampah akan berbeda ukuran
int trashbinSize;
int timezone = 7;
int dst = 0;
//Lokasi pemasangan sensor
float latitude = -6.208446;
float longitude = 106.821161;

String ClientName = "Testing";
int h = 6; // urutan folder di firebase (untuk menandakan ID tempat sampah)
String SN = "Sensor001";
String Addr = "MRT Setiabudi";

//Wifi setting!!!!!!!!!!!!!!!!!!!!! ini harus di ubah berdasarkan lokasi tempat sampah
const char* ssid = "namaSSIDAnda";  
const char* password = "passwordRouterAnda";  

void setup(){  
  Serial.begin(115200);  
  delay(1000);
  
  // Connect to WiFi network  
  Serial.println();  
  Serial.println();  
  Serial.print("Connecting to ");  
  Serial.println(ssid);  
  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED){  
   delay(500);  
   Serial.print(".");  
  }  
  Serial.println("");  
  Serial.println("WiFi connected");  
  
  // Print the IP address  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());  

  //Setup timestamp
  configTime(timezone * 3600, dst * 0, "pool.ntp.org", "time.nist.gov");
  Serial.println("\nWaiting for time");
  while (!time(nullptr)) {
    Serial.print(".");
    delay(500);
  }
  Serial.println(""); 

  //Connect to firebase
  Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);

  // Inisialisasi variable pada Firebase databse.
  // Harus di ubah tiap device akan beda
  Firebase.setString("locations/"+ String(h) + "/SerialNumber",SN);
  Firebase.setString("locations/"+ String(h) + "/ClientName",ClientName);
  Firebase.setString("locations/"+ String(h) + "/Address",Addr);
  Firebase.setFloat("locations/"+ String(h) + "/Latitude",latitude); 
  Firebase.setFloat("locations/"+ String(h) + "/Longitude", longitude); 
  Firebase.setInt("locations/"+ String(h) + "/TrashbinSize", trashbin_size);
  Firebase.setFloat("locations/"+ String(h) + "/Temperature", temp);
  Firebase.setFloat("locations/"+ String(h) + "/Humidity", hum);  
  
}
void firebasereconnect(){
  Serial.println("Trying to reconnect");
    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop(){  
  //time setup
  time_t now = time(nullptr);
  Serial.println(ctime(&now));
  delay(100);
 
  //firebase setup
   if (Firebase.failed()){
      Serial.print("setting number failed:");
      Serial.println(Firebase.error());
      firebasereconnect();
      return;
   }   
  //read measurement
  distance = ultrasonic.read();
  delay(1000);
  
  // Calculating the distance percentage
  trashbin_size = Firebase.getInt("locations/"+ String(h) + "/TrashbinSize");
  distance_percent = 100 - distance*100/trashbin_size;
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println("cm");
  Serial.print("Fill level: ");
  Serial.print(distance_percent);
  Serial.println("%");

    // Reading temperature and humidity
   hum = dht.readHumidity();
  // Read temperature as Celsius
   temp = dht.readTemperature();
  delay(1000);

    // Display data
  Serial.print("Temperature :");  
  Serial.print(temp);  
  Serial.println("C");  
  Serial.print("Humidity :");  
  Serial.print(hum);  
  Serial.println("%"); 
  delay(10);
  
  // Repeat every 1 seconds
  delay(1000);

  Firebase.setString("locations/"+ String(h) + "/Time",ctime(&now));
 
 //Konversi file menjadi bentuk JSON (struktur firebase database)

  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["Fill Level Raw"] = distance_percent;
  root["Distance Raw"] = distance;
  root["Temperature"] = temp;
  root["Humidity"] = hum;
  root["Time"] = ctime(&now);

  Firebase.push("locations/" + String(h),root);
  Firebase.setFloat("locations/"+ String(h) + "/Temperature",temp);
  Firebase.setFloat("locations/"+ String(h) + "/Humidity",hum);

  // Push data to serial and Firebase
 if (distance >= 0 && distance <= 100){
     Firebase.setInt("locations/"+ String(h) + "/FillLevel",distance_percent);   
 }  
 if (distance_percent >= 0 && distance_percent <= 100){
     Firebase.setInt("locations/"+ String(h) + "/TrashDistance",distance);       
  }  
   delay(5000);
} 

Struktur Database

Data yang di terima oleh Firebase dari NodeMCU akan memiliki struktur seperti pada gambar dibawah ini.

[sistem pengelolaan sampah] Struktur database

Perlu diperhatikan bahwa pada Arduino sketch bagian akhir ada 2 tipe metode data yang di kirim kepada Firebase yaitu "set" dan "push". Pada metode "set", database yang ada pada firebase akan berubah menjadi data terbaru. Sedangkan pada metode "push", data akan bertambah pada database, ditunjukan dengan random code yang tergenerasi secara otomatis oleh firebase sebagai parent folder nya.

Sebetulnya struktur database yang saya buat tidak effisient, karena ada duplikasi data yang di kirim. Alasan saya membuat seperti itu adalah ketika kita melakukan query untuk android apps dan webapps menjadi lebih mudah. Namun, jika Anda memiliki metode yang lebih efisien, itu akan lebih baik.

Web apps

Aplikasi web sistem pengelolaan sampah berbasis IoT sangat di perlukan untuk melihat secara visual data yang di ukur oleh sensor dan penempatan, terutama oleh petugas yang memonitor dari kantor.

Pada bagian ini kita tidak akan membahas detail code pembuatan web static, karena cukup panjang dan Anda dapat kloning github repository project ini pada bagian akhir. Namun, kita akan membahas struktur dari masing-masing script yang penting, beserta fungsinya. Selain itu, akan ditunjukkan line yang harus di ubah untuk project ini (private API key).

[sistem pengelolaan sampah] File index.html

Yang pertama adalah mengubah key berdasarkan Maps JavaScript API key Anda dari google cloud platform console pada file index.html.

Script utama untuk web static ini ada 4, seperti pada gambar di bawah ini:

[sistem pengelolaan sampah] Struktur file

mapFunction.js untuk menampilkan peta pada webapps dan marker. retriveFirebaseData.js adalah script untuk quering data dari Firebase. tableFunction.js untuk menampilkan list table pada tampilan web. Yang perlu anda perhatikan adalah firebaseInit.js, karena di dalam file ini Anda perlu memasukkan secret key dan database url berdasarkan akun Firebase anda sperti pada script di bawah ini:

// auftechnique.com //

// Inisialisasi Firebase
var config = {
    apiKey: "APIKeyFirebaseAndaUntukProjectIni",
    authDomain: "nama-project-anda.firebaseio.com",
    databaseURL: "https://nama-project-anda.firebaseio.com/",
    projectId: "nama-project-anda",
    storageBucket: "",
    messagingSenderId: "senderIDAnda"
};
firebase.initializeApp(config);

Jika semuanya berjalan tanpa masalah, Anda dapat membuka index.html pada folder tersebut, sehingga akan muncul tampilan seperti pada gambar di bawah ini.

Karena yang kita kembangkan adalah web static, maka anda harus me-refresh (F5) pada web browser jika ada data baru yang masuk ke database dan Anda ingin melihatnya pada web view.

[sistem pengelolaan sampah] Snapshot webapps static

Mungkin untuk pengembangan lanjutan, Anda dapat menggunakan local server NodeJS, sehingga data yang masuk bisa terupdate secara dinamik.

Android Apps

Mobile apps tidak dapat dipisahkan dari kebanyakan orang pada jaman sekarang, sehingga aplikasi mobile termasuk hal yang krusial untuk sistem pengelolaan sampah berbasis IoT. Terutama untuk petugas pengambil sampah yang dapat melihat lokasi dan kondisi tingkat kepenuhan sampah sebelum di angkut agar pengangkutan menjadi lebih efisien.

Pembuatan mobile apps ini menggunakan Android studio, dan cukup kompleks dan sangat panjang penjelasannya. Namun, jika Anda meminta untuk dijabarkan satu per satu, saya dapat pertimbangkan untuk membuatnya melalui artikel terpisah atau bila perlu bersamaan dengan video tutorial. Anda dapat meninggalkan komentar untuk permintaan tersebut pada artikel ini jika di rasa perlu.

Jika anda ingin mencoba apps yang sudah jadi, Anda dapat men-downloadnya melalui Google Playstore. Perlu di perhatikan bahwa versi yang ada di playstore berbeda dengan yang ada pada source code (bagian akhir) karena saya menambahkan beberapa fitur dan belum di update pada Playstore. Namun, secara umum flow user journey menggunakan apps tersebut adalah sama.

Oleh karena itu, sama seperti pada pembuatan webapps. Kita akan spot script yang penting (berhubungan dengan API Key).

Navigasikan kepada file google_amps_api.xml pada parent folder "values". Setelah itu masukkan API Key Anda pada bagian yang dilingkari warna merah.

[sistem pengelolaan sampah] Google Android maps API

Jika semuanya berjalan tanpa masalah, maka tampilan utama mobile apps ini akan terlihat seperti pada gambar di bawah. Marker pada peta berbeda warna, menunjukkan tingkat kepenuhan sampah secara visual. Jika merah berarti penuh, orange hampir penuh, kuning medium, hijau masih longgar.

[sistem pengelolaan sampah] Android apps snapshot

Source code

Source code untuk project dapat Anda download pada link di bawah:


Link source code IoT waste management

Kesimpulan

Untuk membuat MVP Sistem Pengelolaan Sampah Berbasis IoT sangatlah kompleks, terlebih jika dikerjakan secara sendirian mulai dari mengembangkan hardware, webapps dan android apps. Jika Anda ingin membuat produk yang benar-benar siap untuk launching ke pasar, sebaiknya bangun team yang memiliki keahlian yang berbeda-beda, sehingga pengerjaannya menjadi lebih cepat dan mungkin banyak fitur-fitur menarik lainnya.

Semoga tutorial ini membawa manfaat untuk Anda dan dapat mentrigger ide-ide briliant lainnya yang dapat Anda kembangkan.

Terima Kasih

Wassalamu alaikum wr.wb

AliExpress.com Product - Elecrow Automatic Smart Plant Watering Kit for Arduino Garden DIY Program Plant Watering Device Capacitive Soil Moisture Sensor

Read More
Copyright since @ 2020
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram