Tutorial Data Logger Arduino ESP8266 Ke Google Sheet

Pendahuluan – Latar Belakang Data Logger Dengan Google Sheet
Di era IoT (Internet of Things), penggunaan data logger menjadi semakin penting untuk memantau dan merekam data dari berbagai sensor secara real-time. Jenis Data Logger adalah beberapa jenis tergantung daripada media penyimpanan datanya, Ada yang menyimpan data ke memori internal mikrokontroler, Ada yang menyimpan ke memori eksternal seperti microSD, dan yang paling terbaru di era IoT ini teman-teman bisa mengirim dan menyimpan data ke Google sheet. Salah satu cara praktis untuk menyimpan data adalah dengan mengirimkannya langsung ke Google Sheets menggunakan Arduino dan ESP8266.
Dalam tutorial ini, kita akan mempelajari cara membuat data logger sederhana yang mengirim data sensor ke Google Sheets secara otomatis. Dengan metode ini, Anda dapat memantau suhu, kelembaban, atau parameter lainnya dari mana saja.
Apa saja Tools dan Bahan yang di butuhkan dalam Tutorial Arduino kali ini?
Berikut adalah komponen yang diperlukan untuk proyek ini:
- Arduino Uno/Nano (atau board Arduino lainnya)
- Modul Wi-Fi ESP8266 (NodeMCU atau ESP-01)
- Sensor (misalnya DHT11/DHT22 untuk suhu & kelembaban)
- Kabel jumper
- Breadboard (opsional)
- Akun Google (untuk mengakses Google Sheets)
Langkah 1: Menyiapkan Google Sheets dan Google Apps Script
Sebelum memprogram Arduino, kita perlu menyiapkan Google Sheets untuk menerima data.
1. Buat Spreadsheet Baru
Buka Google Sheets dan buat spreadsheet baru.
Beri nama kolom seperti “Tanggal”, “Waktu”, “Suhu”, “Kelembaban”, dll.
2. Buat Script dengan Google Apps Script
Klik Extensions > Apps Script.
Ganti kode default dengan script berikut:
// Enter Spreadsheet ID here
var SS = SpreadsheetApp.openById(‘1xH1VJZ7jo_N111FBcvEHN707iv-CknmQSmh_S4vGarY’);
var str = “”;
function doPost(e) {
var parsedData;
var result = {};
try {
parsedData = JSON.parse(e.postData.contents);
}
catch(f){
return ContentService.createTextOutput(“Error in parsing request body: ” + f.message);
}
if (parsedData !== undefined){
var flag = parsedData.format;
if (flag === undefined){
flag = 0;
}
var sheet = SS.getSheetByName(parsedData.sheet_name); // sheet name to publish data to is specified in Arduino code
var dataArr = parsedData.values.split(“,”); // creates an array of the values to publish
var date_now = Utilities.formatDate(new Date(), “CST”, “yyyy/MM/dd”); // gets the current date
var time_now = Utilities.formatDate(new Date(), “CST”, “hh:mm:ss a”); // gets the current time
var value0 = dataArr [0]; // h
var value1 = dataArr [1]; // t
var value2 = dataArr [2]; // mq135
var value3 = dataArr [3]; // ldr
var value4 = dataArr [4]; // pm25
// var value5 = dataArr [5]; // value2 from Arduino code
// var value6 = dataArr [6]; // value0 from Arduino code
// read and execute command from the “payload_base” string specified in Arduino code
switch (parsedData.command) {
case “insert_row”:
sheet.insertRows(3); // insert full row directly below header text
sheet.getRange(‘A3’).setValue(date_now); // Date
sheet.getRange(‘B3’).setValue(time_now); // Time
sheet.getRange(‘C3’).setValue(value0); // h
sheet.getRange(‘D3’).setValue(value1); // t
sheet.getRange(‘E3’).setValue(value2); // mq135
sheet.getRange(‘F3’).setValue(value3); // ldr
sheet.getRange(‘G3’).setValue(value4); // pm25
str = “Success”; // string to return back to Arduino serial console
SpreadsheetApp.flush();
break;
case “append_row”:
var publish_array = new Array(); // create a new array
//publish_array [0]= date_now;
//publish_array [1]= time_now;
publish_array [0]= value0;
publish_array [1]= value1;
publish_array [2]= value2;
publish_array [3]= value3;
publish_array [4]= value4;
publish_array [5]= value5;
var date_now = Utilities.formatDate(new Date(), “CST”, “yyyy/MM/dd”); // gets the current date
var time_now = Utilities.formatDate(new Date(), “CST”, “hh:mm:ss a”); // gets the current time
publish_array [6]= date_now;
sheet.appendRow(publish_array); // publish data in publish_array after the last row of data in the sheet
str = “Success”; // string to return back to Arduino serial console
SpreadsheetApp.flush();
break;
}
return ContentService.createTextOutput(str);
} // endif (parsedData !== undefined)
else {
return ContentService.createTextOutput(“Error! Request body empty or in incorrect format.”);
}
}





