When Google Sheet meets Micropython

, , Leave a comment

To read in english, choose any language from the translator first, then you will see English appears as first language


Halo selamat datang kembali di andidinata.com. Pada kesempatan dipenghujung tahun 2018 ini saya ingin membagikan sebuah project menarik yang mempertemukan Google Sheet dengan Micropython. Project ini bermula dari keinginan untuk menampilkan custom message di layar LCD 16×2 yang terhubung dengan ESP8266. Custom message ini nantinya digunakan untuk mendaftar nama kegiatan apa saja agar tidak lupa.

Pada awalnya saya menggunakan metode webserver. Jadi custom message ditulis dalam html page, saat tombol submit ditekan maka custom message akan muncul. Hal ini berhasil namun masih ada kelemahan, yaitu saya harus berada dekat dengan ESP8266 untuk terhubung melalui access pointnya, jadi apabila saya berada diluar rumah dan layar LCD dirumah, solusi untuk dapat menuliskan pesan dari luar akan menjadi lebih ribet karena mesti melalui IP forwarding.

Kemudian munculah ide untuk menggabungkan Google Sheet yang cukup saya sering pakai untuk keperluan pribadi. Dan karena parsing .JSON di micropython sangatlah mudah, maka saya mulai searching bagaimana mengkonversi Google Sheet menjadi .json yang kemudian melalui HTTP request, .json tersebut di tarik masuk ke Micropython. Dari situ ketemulah satu cara yaitu dengan mempublish google sheet menjadi web app. Hasilnya, .json memang bisa dicreate tetapi bisa dibaca di web browser komputer atau perintah curl, tidak bisa diambil dengan metode HTTP request oleh Micropython karena terlalu banyak redirection.

Saat itu saya ngobrol dengan Mas Hendra Kusumah dan dia menyarankan untuk menggunakan Firebase untuk membuat json end point. Dan ini pentingnya untuk menulis keyword yang tepat di Google sehingga search menjadi lebih efektif. Setelah browsing beberapa saat ternyata Firebase-lah jalan yang menjembatani antara Google Sheet dan Micropython yang jika saya gambarkan dalam garis lurus dapat diilustarasikan sebagai berikut:

Steps

Untuk selanjutnya saya akan share tahapan-tahapan untuk setiap langkah untuk mengantarkan data dari Google Sheet ke Micropython.

Membuat Google Sheet

Buatlah sebuah google sheet berisikan dua kolom, sebut saja field1 dan field2. Perhatikan bagian yang diberi highlight warna kuning yang merupakan file ID dari dokumen google sheet. Copy bagian tersebut untuk tahap selanjutnya. Save dokumen dengan sebuah nama file.

Get the unique file ID

Membuat Database di Firebase

Bukalah firebase di https://console.firebase.google.com/. Lalu buatlah sebuah project dengan sebuah nama. Setelah project selesai dibuat, masuklah ke dalam menu Database dan buatlah sebuah database. Saat membuat database, gunakan pilihan Realtime Database. Copy url firebase untuk tahap berikutnya. Klik tab  click tab Rule dan rubah write menjadi True agar kita dapat menambahkan data ke firebase. Klik publish untuk menyimpan rule yang telah dirubah.

Your Firebase Setup

 

Membuat Google App Script

Buatlah sebuah google app script melalui script.google.com dan copy paste script dibawah ini. Masukkan file ID dari Google Sheet pada baris ke-2 dan masukkan firebaseurl di baris ke-4 dari bawah.

function writeDataToFirebase() {
  var ss = SpreadsheetApp.openById("1KaRo5bNT4sIxKR_cXWV8rEN-FLOZ5woQwKJnTAIJ7gs");
  var sheet = ss.getSheets()[0];
  var data = sheet.getDataRange().getValues();
  var dataToImport = {};
  for(var i = 1; i < data.length; i++) {
    var field1 = data[i][0];
    var field2 = data[i][1];
    dataToImport[field2] = {
      field1:field1,
      field2:field2,

    };
  }
  var firebaseUrl = "https://micropython-e6aad.firebaseio.com/";
  var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
  base.setData("", dataToImport);
}

Sebelum menjalankan script ini, kita perlu menambahkan sebuah library FirebaseApp yang berfungsi untuk berinteraksi dengan database Firebase. Library ini berdasarkan Firebase REST API. Klik Resource dan pilih Libraries lalu copy-paste key berikut MYeP8ZEEt1ylVDxS7uyg9plDOcoke7-2l klik Add dan akhiri dengan Save.

import FirebaseAPP library

 

Saat menjalankan script untuk pertama kalinya, google membutuhkan authentication. Jika muncul warning, pilih link advanced. Lakukan proses tersebut hingga selesai. Seusai authentication oleh google account kita, script berjalan dan otomatis Firebase akan mulai terisi dengan data yang berasal dari Google Sheet.

Dan ini mudahnya untuk membuat end point json dengan Firebase, cukup tambahkan .json diakhir url firebaseapp, ya segampang itu. Dalam contoh dibawah ini urlnya adalah https://micropython-e6aad.firebaseio.com/.json. Apabila muncul pesan Permission Denied saat mengakses end point, rubahlah Rules “.read”:True.

 

Yeay!! sudah jadi JSON

 

Untuk menjalankan Google App Script, kita dapat memfungsikan fasilitas trigger baik dari dalam Google Sheet dalam bentuk fungsi onEdit() atau trigger berdasarkan waktu (misalnya every minute). Dengan mengaktifkan trigger, maka kita tidak perlu untuk menjalankan script ini setiap kali data pada Google Sheet berubah.

Sejauh ini kita sudah mengkonversi google sheet menjadi sebuah .json. Selanjutnya adalah giliran micropython untuk menarik .JSON dengan cara yang sangat gampang seperti contoh dibawah ini.

>>> import urequests
>>> respond=urequests.get("https://micropython-e6aad.firebaseio.com/.json").json()
{"value1":{"field1":1,"field2":"value1"},"value2":{"field1":2,"field2":"value2"},"value3":{"field1":3,"field2":"value3"}}

Selebihnya lakukan teknik parsing json yang juga mudah untuk dilakukan di micropython, setelah itu pesan siap untuk ditampilkan pada layar LCD 16×2. Klik link yang ada dibawah artikel ini untuk melihat script yang sudah di optimize untuk berjalan di ESP8266. Baca artikel sebelumnya dengan judul Dealing dengan RAM Microcontroller untuk tips menulis Micropython dengan penggunaan RAM yang rendah.

Menampilkan pesan pada LCD 16×2 adalah salah satu cara. Tapi pikirkanlah banyak kemungkinan pengembangan aplikasi IoT dengan pendekatan ini:

  • Misalnya, jika data pada Google Sheet berupa daftar informasi waktu, apa yang akan ditrigger oleh micropython?
  • Jika informasi berupa daftar angka, apa yang akan dilakukan oleh micropython?
  • Jika informasi berupa daftar koordinat GPS, apa yang bisa dilakukan oleh micropython?
  • Jika informasi berupa kode lokasi, apa yang bisa dilakukan oleh micropython?
  • Bagaimana jika Google Sheet diintegrasikan dengan Google Forms?
  • Bagaimana jika arahnya dibalik dari Micropython menuju Google Sheet?
  • dan masih banyak lagi…

Share ide-ide kamu dan project yang kamu sudah lakukan dengan menggunakan metode ini.

Cara ini memang panjang, sama seperti waktu saya mengumpulkan informasinya saat browsing untuk mencari jawaban dari tiap pertanyaan yang muncul di benak kepala. Semoga artikel kali ini merangkumkan dan menuliskan dengan gamblang untuk mempercepat proses implementasi dari teman-teman yang ingin mencoba aplikasi IoT dengan Google Sheet, Google App Script dan Firebase.

Sekalian artikel dari saya, terima kasih sudah membaca dan semoga memberi manfaat. Dukung blog ini dengan cara memberikan like, subscribe dan share artikel ini. Akhir kata, selamat Tahun Baru 2019, semoga kita semua menjadi baik dan berguna bagi masyarakat.

link:

www.github.com/mdinata/micropython/

Facebook Comments
 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.