Cara Mengirim Data dari NodeMCU ke Google Sheets
Diterbitkan: 2020-08-26Mengirim data sensor menggunakan firmware NodeMCU melalui internet ke dalam spreadsheet Google Sheets sangatlah mudah. Hal ini dapat dilakukan melalui skrip Google dan keuntungannya tidak memerlukan biaya apa pun, dibandingkan dengan banyak alternatif penyimpanan Cloud.
Untuk tujuan artikel ini, kami akan menunjukkan kepada Anda proyek sederhana untuk mengirimkan pembacaan suhu menggunakan ESP8266 dan sensor suhu & kelembaban DHT11.
Siapkan Google Spreadsheet Anda
Pertama, Anda ingin membuat spreadsheet baru. Masuk ke akun Google Anda, buka Drive Saya, dan buka spreadsheet kosong.
Salin kunci URL untuk spreadsheet Anda. Beri spreadsheet nama yang intuitif. Buka Editor Skrip, di bawah menu Alat.
Beri nama pada skrip Anda (sekali lagi, jaga agar tetap intuitif, terutama jika Anda mengerjakan lebih dari satu proyek). Gunakan skrip yang diberikan dan salin tempel di editor Google Script.
Di bawah baris ID spreadsheet, tempelkan kunci URL dari spreadsheet yang Anda simpan.
Simpan skrip dan terapkan sebagai aplikasi. Anda akan menemukan opsi ini di bawah menu Publikasikan. Konfigurasikan parameter penerapan untuk memastikan bahwa spreadsheet akan berfungsi dengan benar.
- Simpan "URL aplikasi web saat ini".
- Simpan versi proyek sebagai yang baru untuk semua revisi skrip (ini memungkinkan Google memperbarui revisi apa pun yang mungkin Anda buat di masa mendatang).
- Untuk bidang Jalankan aplikasi sebagai, tambahkan ling berikut “saya (alamat Gmail Anda)”.
- Untuk bidang Siapa yang memiliki akses ke aplikasi, tambahkan baris berikut “siapa pun, bahkan anonim”.
Kode untuk Setting Sensor ESP8266 dan DHT11
Inilah yang harus Anda unggah saat menghubungkan ESP8266 Anda ke sensor DHT11:
#sertakan “ESP8266WiFi.h”
#sertakan “DHT.h”
#define DHTPIN 2 // pin digital apa yang Anda sambungkan
//pin2 ke D4 di papan esp
// Hapus komentar pada kode jenis sensor DHT yang Anda gunakan.
#definisikan DHTTYPE DHT11 // DHT 11
//#definisikan DHTTYPE DHT21 // DHT 21
//#definisikan DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN,DHTTYPE);
const char SITUS WEB[] = “api.pusingbox.com”; //server API PushingBox
const String devid = “<YOUR_Devid_HERE>”; //ID perangkat dari Pushingbox
const char* MY_SSID = “<NAMA_WIFI_ANDA_HERE”;
const char* MY_PWD = “<ANDA_WIFI_PASSWORD_HERE>”;
batalkan pengaturan()
{
Serial.begin(115200);
dht.begin();
Serial.print(“Menghubungkan ke “+*MY_SSID);
WiFi.mulai(MY_SSID, MY_PWD);
Serial.println("masuk ke wl connect");
while (WiFi.status() != WL_CONNECTED) //tidak terhubung,..menunggu untuk terhubung
{
penundaan(1000);
Serial.cetak(“.”);
}
Serial.println("Saya terhubung");
Serial.println(“”);
Serial.println(“Kredensial diterima! Terhubung ke wifi\n “);
Serial.println(“”);
}
lingkaran kosong()
{
// Berikan lebih banyak waktu untuk berlalu di antara pembacaan
//isi google sheet, untuk menghindari melebihi jumlah permintaan gratis dari PushingBox
penundaan (10.000); //10 detik, (tingkat pengambilan sampel vs. kuota panggilan layanan)
float kelembabanData = dht.readHumidity();
// Baca suhu dalam Celcius (default)
float celData = dht.readTemperature();
// Baca suhu sebagai Fahrenheit (isFahrenheit = true)
float fehrData = dht.readTemperature(benar);
// Periksa kegagalan pembacaan keluar lebih awal (untuk mencoba lagi).
if (isnan(data kelembaban) || isnan(celData) || isnan(fehrData))
{
Serial.println("Gagal membaca dari sensor DHT!");
kembali;
}
// Hitung indeks panas dalam Celcius (isFahreheit = false)
float hicData = dht.computeHeatIndex(celData, HumidityData, false);
// Hitung indeks panas dalam Fahrenheit (default)
float hifData = dht.computeHeatIndex(fehrData, HumidityData);
//Cetak ke Serial monitor atau Terminal pilihan Anda di 115200 Baud
Serial.print("Kelembaban: ");
Serial.print(data kelembaban);
Serial.cetak(” %\t”);
Serial.print(“Suhu dalam Cel: “);
Serial.cetak(celData);
Serial.cetak(” *C “);
Serial.print(“Suhu dalam Fehr: “);
Serial.print(fehrData);
Serial.print(” *F\t”);
Serial.print("Indeks panas dalam Cel: ");
Serial.print(hicData);
Serial.cetak(” *C “);
Serial.print("Indeks panas di Fehr: ");
Serial.print(hifData);
Serial.cetak(” *F\n”);
Klien WiFiClient; //Membuat instance objek WiFi
//Mulai atau layanan API menggunakan Klien WiFi kami melalui PushingBox
if (klien.koneksi(SITUS WEB, 80))
{
client.print(“DAPATKAN /pushingbox?devid=” + devid
+ “&humidityData=” + (String) kelembabanData
+ “&celData=” + (String) celData
+ “&fehrData=” + (String) fehrData
+ “&hicData=” + (String) hicData
+ “&hifData=” + (String) hifData
);
klien.println(”HTTP/1.1″);
klien.print(“Tuan Rumah: “);
klien.println(SITUS WEB);
client.println("Agen-Pengguna: ESP8266/1.0");
client.println("Koneksi: tutup");
klien.println();
}
}
Contoh Kode Skrip Aplikasi Google
Berikut kode yang Anda perlukan untuk membuat skrip yang dapat dibaca untuk transfer data sensor Anda.
DAPATKAN Permintaan permintaan:
https://script.google.com/macros/s/<gscriptID Anda>/exec?celData=data_here
HumidityDat, celData,fehrData,hicData, hifData (variabel GScript, PushingBox, dan Arduino sesuai urutan penulisannya)
Fungsi doGet(e) {
Logger.log ( JSON.stringify(e) ); // ini untuk melihat parameternya
Var hasil = 'Oke';
Jika (e.parameter == tidak terdefinisi) {
Hasil = 'Tidak Ada Parameter';
}
Kalau tidak {
Var id= '<URL spreadsheet Anda\;
Var lembar = SpreadsheetApp.openById(id).getActivesheet();
Var newRow = sheet.getLastRow() + 1;
Var data baris = [];
//var waktu = Tanggal baru()'
rowData[0] = Tanggal baru(); //untuk Stempel Waktu di kolom A
for (var param dalam e.parameter) {
logger.log('dalam perulangan, param='+param);
var nilai = stripQuotes(e.parameter[param]);
beralih (param) {
kasus 'data kelembaban': //Parameter
barisData[1] = nilai; //Nilai di kolom B
merusak;
kasus 'celData';
barisData[2] = nilai;
merusak;
kasus 'fehrData':
barisData[3] = nilai ;
merusak;
kasus 'hicData':
barisData[4] = nilai;
merusak;
kasus 'hifData':
barisData[5] = nilai;
merusak;
bawaan:
hasil = “parameter tidak didukung”;
}
Logger.log(JSON.stringify(rowData));
Var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([data baris]);
}
Kembalikan ContentService.createTextOutput(hasil);
}
Fungsi stripQuotes( nilai ){
Kembalikan nilai.replace(/^[“']|['|]$/g, “”);
}
Siapkan Kotak Dorong
Layanan ini bertindak sebagai perantara antara data sensor DHT Anda dan Google Spreadsheet. Dengan menggunakan API PushingBox, Anda dapat mengubah data yang dikirimkan HTTP menjadi data HTTPS terenkripsi yang dikenali Google.
Perhatikan bahwa PushingBox membatasi Anda hingga 1.000 permintaan per hari. Namun, hal ini menghilangkan banyak pekerjaan kasar dan keahlian yang diperlukan dalam membuat algoritma enkripsi Anda sendiri yang akan ditanggapi oleh Google.
- Buat akun PushingBox, jika Anda belum memilikinya.
- Gunakan alamat Gmail yang juga Anda gunakan untuk proyek data sensor NodeMCU.
- Buka Layanan Saya.
- Tambahkan layanan baru dari opsi Tambahkan Layanan.
- Gulir ke opsi terakhir berjudul CustomURL, Tetapkan layanan Anda sendiri!
- Isi kolom yang memerlukan nama, URL, dan Metode.
- Untuk caranya, pilih GET.
- Untuk URL gunakan URL yang diawali dengan “script.google.com…”, dari URL yang dihasilkan saat Anda membuat alamat Google Scrip.
- Kirimkan layanan dan buka Skenario Saya.
- Masukkan nama yang intuitif dan tekan tombol tambah.
- Tambahkan tindakan saat diminta di layar.
- Konfigurasikan metode GET dengan memformat nama untuk setiap variabel. Langkah ini akan berbeda tergantung pada berapa banyak sensor yang Anda rekam dan apa yang direkamnya.
Mengonfigurasi Perangkat Keras
Jika Anda menggunakan sensor DHT dengan ESP8266, nyalakan unit dengan 5v, bukan 3,3v. Tegangan yang lebih rendah mungkin tidak memberikan pembacaan yang benar.
Hubungkan pin 2 dan D4 pada ESP8266 Anda.
Mengonfigurasi Perangkat Lunak
Pengaturan ini berfungsi dengan Arduino IDE, sebaiknya versi yang lebih baru dari 1.6.4. Ini juga berarti Anda perlu mengunduh beberapa perpustakaan di sistem Anda.
Perpustakaan dapat ditemukan pada tautan berikut:
- hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
- https://learn.adafruit.com/dht
Langkah selanjutnya melibatkan mengunggah sketsa Arduino dan mengonfigurasinya untuk proyek dan perangkat Anda. Hanya ada tiga bidang relevan yang harus Anda format dan sesuaikan untuk proyek Anda:
- jaringan Wi-Fi.
- Pasword Wifi.
- ID Kotak Dorong.
Bagaimana Anda Mendekati Transfer Data NodeMCU?
Ada lebih banyak cara untuk melakukan ini dan banyak jenis sensor yang dapat Anda gunakan untuk mentransfer data menggunakan ESP8266 dengan firmware NodeMCU langsung ke Google Sheets atau platform Cloud lainnya.
Apakah Anda lebih suka menulis skrip dan kode Anda sendiri untuk mempersonalisasi proyek Anda atau apakah Anda mencari skrip terverifikasi secara online di github dan platform lain dan beradaptasi dari sana? Beri tahu kami sumber kode dan skrip favorit Anda serta kombinasi ESP8266 dan sensor, di bagian komentar di bawah.