MQTT Publisher dan ThingsBoard untuk Sistem Monitoring Kualitas Udara

MQTT adalah salah satu protokol di atas TCP/IP yang cukup favorit digunakan untuk mengirimkan data dari perangkat IoT ke sebuah server. Berkenaan dengan sistem monitoring kualitas udara di Jakarta yang ingin saya kembangkan, MQTT menjadi protokol pilihan dalam pengiriman dari sensor ke ThingsBoard server. ThingsBoard adalah platform IoT yang menyediakan infrastruktur di sisi server, terdiri dari database, MQTT broker dan web server yang juga terdapat dashboard. Kompleksitas di sisi server sudah tidak lagi menjadi permasalahan untuk sistem pemantauan ini, sehingga sisi kompleksitas berada pada pengembangan perangkat sensor dan jaringan penunjang koneksi MQTT nya.

Komunikasi MQTT

Menurut pendapat saya, terdapat dua solusi yang menjamur untuk komunikasi IoT dengan MQTT, yaitu dengan WiFi dan GPRS. ThingsBoard juga sepertinya setuju dengan memberikan SDK Arduino untuk MQTT dengan SIM900 dan ESP8266, yang dapat dibuka di link ini. Komunikasi MQTT dengan GPRS dapat menggunakan berbagai modul GSM 2G yang tersedia dengan harga yang relatif murah. Walaupun pemakaian 2G semakin berkurang dan provider telepon seluler akan mematikan jaringan 2G secepatnya, namun Telkomsel masih akan meneruskan jaringan 2G karena hampir 50% penggunanya masih menggunakan 2G. Untuk sensor dengan umur 1 tahun seperti SDS011, penggunaan modul GSM 2G masih masuk akal.

Penggunaan WiFi juga sudah menjamur, sehingga memasang sensor di sekitar jaringan WiFi juga sangat memungkinkan. WiFi dalam IoT menjadi sangat prevalen akibat pengembangan mikrokontroler ESP8266, dan selanjutnya ESP32. ESP8266 menjadi populer karena ESP8266 merupakan chip dengan WiFi dengan TCP/IP dan dapat digunakan sebagai mikrokontroler. ESP8266 dapat dipasang berbagai SDK, salah satunya adalah Arduino SDK sehingga dapat diprogram layaknya Arduino dengan menambahkan Arduino Core untuk ESP8266 melalui Boards Manager Arduino IDE.

ESP8266/ESP32 atau Arduino Pro Mini

Komunikasi di MQTT dengan Arduino IDE dapat diakses dengan menggunakan library PubSubClient. Keduanya dapat digunakan di ESP8266 maupun Arduino berbasis ATmega328P. Modul GSM800 dapat terkoneksikan dengan mudah dengan Atmega328P karena penggunaan TinyGSM library yang menggunakan Flash memory dan RAM yang rendah. TinyGSM juga dapat digunakan dengan PubSubClient dan ThingsBoard sudah mengembangkan wrapper untuk PubSubClient agar dapat dengan mudah dikoneksikan dengan MQTT broker ThingsBoard. Di sisi lain ESP8266 dapat langsung menggunakan PubSubClient.

Arduino berbasis ATmega328P ProMini maupun ESP8266 dapat dijalankan dengan sinyal digital 3.3V. Sensor BME280, SDS-011, maupun modul GSM yang dipakai menggunakan komunikasi dengan 3.3V. Pro Mini dan ESP8266 merupakan pilihan yang cocok untuk sensor-sensor ini. Perlu dilakukan perbandingan antara solusi Pro Mini + TinyGSM dan ESP8266 untuk mengetahui kelebihan dan kekurangan dari masing-masing pendekatan.

Uji coba selanjutnya yang akan saya bahas di artikel setelah ini adalah bagaimana menghubungkan Pro Mini dan SIM800L dengan ThingsBoard dan/atau ESP8266 dengan ThingsBoard melalui MQTT. Bagian ini merupakan bagian penting yang menentukan pengembangan perangkat keras selanjutnya berdasarkan uji coba konsep yang sudah dilakukan dengan Raspberry Pi dan Python.

Raspberry Pi Zero Headless Setup

Anda ingin mencoba memulai bermain dengan Raspberry Pi? Mungkin Anda memiliki permasalahan ini dalam melakukan penyetelan Raspberry Pi seperti: tidak ada monitor untuk mengonfigurasi Raspberry Pi, tidak ada keyboard untuk mengetik command, ataupun tidak ada kabel LAN. Mungkin permasalahan Anda sama seperti saya, mempunyai Raspberry Pi Zero W, yang hanya bisa diakses melalui Wireless, koneksi USB hanya dengan micro USB dan mini HDMI. Jika Anda memiliki Raspberry Pi Zero dan ingin mencoba untuk memulai bermain dengan Raspberry, silakan membaca guide ini untuk memulai instalasi Raspberry Pi Anda!

IMG_20180401_222102.jpg
Gambar 1. Raspberry Pi Zero Wireless

Instalasi Operating System Raspbian Stretch Lite

Hal yang Anda butuhkan untuk memulai adalah sebagai berikut:

  1. Raspberry Pi Zero Wireless (pastikan bukan yang Raspberry Pi tanpa WiFi)
  2. Micro SD Card (sebaiknya Class 10 agar operasi Read/Write Disk nya lebih cepat)
  3. Charger HP 2A
  4. Laptop dengan SD Card Reader (gunakan Micro-SD Adapter jika perlu)
  5. Wireless Router atau Mobile WiFi Hotspot

Hal pertama yang Anda perlu lakukan adalah masukkan SD Card ke komputer Anda, lalu format SD Card tersebut, jika Anda sudah pernah menginstalasi Raspbian sebelumnya pada SD Card tersebut dan ingin menghapusnya, Anda dapat menggunakan SD Card Formatter (sdcard.org). Sebagai perbandingan, Gambar 2 menunjukkan formatting menggunakan quick format Windows dan SD Card Formatter, Windows Formatter hanya bisa melakukan format untuk partisi F:\ di SD Card, sedangkan SD Card Formatter mampu melakukan format untuk seluruh SD Card.

Screenshot 2018-04-01 22.40.45
Gambar 2. Perbandingan format dengan Windows Formatter dan SD Card Formatter

Setelah Anda melakukan Quick Format menggunakan SD Card Formatter, Anda dapat menambahkan OS Raspbian pada SD Card. Pertama, hal yang perlu Anda lakukan adalah download ZIP file dari OS Raspbian Stretch Lite. Download dari website resmi Raspberry Pi untuk Raspbian Stretch Lite, dengan kernel Linux 4.9. Terdapat dua varian Raspbian Stretch, dengan Desktop dan Lite, Lite adalah versi tanpa GUI, sedangkan Desktop memiliki GUI sehingga dapat dihubungkan dengan monitor dan keyboard dan dipakai layaknya komputer biasa.

Setelah Anda sudah memiliki Raspbian Stretch Lite dan SD Card yang sudah di format, proses selanjutnya adalah untuk flashing Raspbian Stretch Lite pada SD Card Formatter. Cara yang paling saya suka untuk menginstalasi Raspberry Pi adalah dengan menggunakan program Etcher. Program ini dapat diunduh dari website Etcher.io, program ini mudah dipakai dan ringan.

Screenshot 2018-04-01 23.00.17
Gambar 3. Pemilihan image Raspbian Stretch Lite untuk flash pada SD Card dengan program Etcher

Setup SSH Server dan WiFi

Untuk dapat mengakses Raspberry Pi Anda tanpa membutuhkan monitor ataupun keyboard Anda membutuhkan SSH Server dan koneksi WiFi. Pada komputer yang Anda ingin pakai untuk mengonfigurasi Raspberry Pi, pastikan Anda memiliki client SSH, Anda dapat menggunakan PuTTY.

Untuk menyalakan SSH, Anda perlu membuat file “ssh” pada partition boot pada SD Card yang sudah Anda flash dengan OS Raspbian. Pastikan Anda membuat file ssh tanpa extension apapun (bukan .txt), file ini tidak perlu diisi, hanya pastikan bahwa terdapat file bernama “ssh”.

Screenshot 2018-04-01 23.16.44
Gambar 4. Instalasi SSH Server dengan menambahkan file SSH tanpa ekstensi pada SD Card dengan Raspbian

Setelah menambahkan server SSH, hal kedua yang perlu Anda lakukan adalah membuat sebuah file “wpa_supplicant.conf” pada partisi boot. Isi file tersebut sebagai berikut:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="NAMA_WIFI_ANDA"
    psk="PASSWORD_ANDA"
    priority=1
}

Gunakan Notepad untuk menulis file tersebut, pastikan Anda simpan ini sebagai wpa_supplicant.conf dan bukan .txt. Gambar 5 menunjukkan contoh hasil dari pembuatan file wpa_supplicant yang ditaruh pada partisi boot yakni di F:\. Ganti NAMA_WIFI_ANDA dengan nama SSID dari WiFi yang Anda pakai, dan PASSWORD_ANDA sesuai dengan password WiFi-nya.

ConfigureWPASupplicant
Gambar 5. Pengaturan file wpa_supplicant untuk koneksi WiFi

Setelah Anda telah melakukan instalasi OS Raspbian dan menambahkan file-file sesuai dengan petunjuk di atas, eject SD card tersebut dan pasang ke Raspberry Pi Zero.

Akses SSH Raspberry Pi dari PC

Setelah Anda memastikan file yang dibuat sudah sesuai dengan tutorial ini, nyalakan Raspberry Pi Zero untuk pertama kalinya dengan SD Card yang sudah diinstalasi dengan OS Raspbian yang sudah dikonfigurasi untuk dapat diakses dengan SSH melalui WiFi. Cek IP Address dari Raspberry Pi yang Anda miliki untuk dapat mengaksesnya melalui Raspberry Pi, Anda bisa menggunakan Tabel DHCP dari Router WiFi Anda untuk mengetahui IP Address Raspberry Pi. Contoh Tabel DHCP dari Router dapat dilihat pada Gambar 6.

Router
Gambar 6. IP Address dari Raspberry Pi Zero

Setelah itu Anda dapat membuka PuTTY untuk mengakses SSH dari Raspberry Pi dengan IP Address yang sudah Anda ketahui dari Tabel DHCP Router Anda. Setelah itu Anda dapat memasukkan login dengan menggunakan

login as: pi
pi@192.168.0.7's password: raspberry

Pastikan Anda mengikuti petunjuk di atas yakni memasukkan “pi” sebagai nama login dan password “raspberry”. Setelah itu Anda dapat mengakses Raspberry Pi Zero Anda menggunakan SSH, untuk mengubah password Anda agar tidak mudah dijebol orang maka Anda perlu memasukkan command:

$ passwd

Anda akan diminta mengisi password lama (raspberry) dan memasukkan password yang baru. Setelah Anda telah memasukkan password baru, pastikan SSH Server di Raspberry Pi sudah dalam posisi menyala secara permanen, hal ini dapat dilakukan dengan menggunakan command sebagai root (sudo):

# raspi-config

Dengan mengakses raspi-config, Anda akan melihat tampilan sesuai pada Gambar 7 pada window PuTTY Anda. Arahkan pointer ke “Interfacing Options” dan klik Enter.

RaspiConfig
Gambar 7. Tampilan Raspberry Configuration Tool (Raspi-Config)

Setelah Anda mengakses Interfacing Options, pilihlah P2 SSH untuk mengakses pengaturan SSH Server. Anda akan menemukan pilihan “Would you like the SSH server to be enabled?” pilih Yes dan tekan Enter. Anda akan melihat tulisan “The SSH server is enabled”. Setelah itu Anda akan dikembalikan ke tampilan utama, tekan Finish untuk keluar. Selanjutnya Anda akan dapat mengakses Raspberry Pi Anda via SSH tanpa perlu memikirkan adanya monitor/keyboard, pastikan ada WiFi dengan SSID dengan Password sesuai dengan penyetelan yang Anda lakukan.

Masih memiliki pertanyaan? Silakan bertanya pada blog post ini, selamat mencoba Raspberry Pi Anda.