Cum să trimiteți date de la NodeMCU la Google Sheets
Publicat: 2020-08-26Trimiterea datelor senzorului folosind firmware-ul NodeMCU pe internet într-o foaie de calcul Google Sheets este foarte convenabilă. Acest lucru se poate face printr-un script Google și are avantajul de a nu costa nimic, spre deosebire de multe alternative de stocare în cloud.
În scopul acestui articol, vă vom arăta un proiect simplu pentru trimiterea citirilor de temperatură folosind ESP8266 și un senzor de temperatură și umiditate DHT11.
Configurați foaia dvs. Google
Mai întâi, veți dori să creați o nouă foaie de calcul. Conectați-vă la contul dvs. Google, accesați My Drive și deschideți o foaie de calcul goală.
Copiați cheia URL pentru foaia de calcul. Dați foii de calcul un nume intuitiv. Accesați Editorul de scripturi, sub meniul Instrumente.
Dați un nume scriptului dvs. (din nou, păstrați-l intuitiv, mai ales dacă faceți mai multe proiecte). Utilizați scriptul dat și copiați-l și inserați-l în editorul Google Script.
Sub linia ID-ului foii de calcul, inserați cheia URL din foaia de calcul salvată.
Salvați scriptul și implementați-l ca aplicație. Veți găsi această opțiune în meniul Publicare. Configurați parametrii de implementare pentru a vă asigura că foaia de calcul va funcționa corect.
- Salvați „Adresa URL curentă a aplicației web”.
- Salvați versiunea proiectului ca nouă pentru toate revizuirile de script (acest lucru permite Google să actualizeze orice revizuire pe care le puteți face în viitor).
- Pentru câmpul Executare aplicația ca, adăugați următorul limbaj „eu (adresa dvs. Gmail)”.
- Pentru câmpul Cine are acces la aplicație, adăugați următoarea linie „oricine, chiar și anonim”.
Cod pentru configurarea senzorului ESP8266 și DHT11
Iată ce ar trebui să încărcați atunci când vă conectați ESP8266 la senzorul DHT11:
#include „ESP8266WiFi.h”
#include „DHT.h”
#define DHTPIN 2 // la ce pin digital ești conectat
//pin2 la D4 pe placa esp
// Eliminați comentariul din codul pentru tipul de senzor DHT pe care îl utilizați.
#define DHTTYPE DHT11 // DHT 11
//#definiți DHTTYPE DHT21 // DHT 21
//#definiți DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN,DHTTYPE);
const char WEBSITE[] = „api.pusshingbox.com”; //serverul PushingBox API
const String devid = „<YOUR_Devid_HERE>”; //ID-ul dispozitivului de la Pushingbox
const char* MY_SSID = „<YOUR_WIFI_NAME_HERE”;
const char* MY_PWD = „<PAROLA_WIFI_AICI>”;
void setup()
{
Serial.begin(115200);
dht.begin();
Serial.print(„Se conectează la „+*MY_SSID);
WiFi.begin(MY_SSID, MY_PWD);
Serial.println(„intru în wl connect”);
în timp ce (WiFi.status() != WL_CONNECTED) //nu este conectat,..se așteaptă conectarea
{
întârziere (1000);
Serial.print(“.”);
}
Serial.println(„wl conectat”);
Serial.println(“”);
Serial.println(„Acreditări acceptate! Conectat la wifi\n „);
Serial.println(“”);
}
buclă goală ()
{
//Lasă mai mult timp să treacă între citiri
//foaia Google populate, pentru a evita depășirea numărului de solicitări gratuite de la PushingBox
întârziere (10000); //10 secunde, (rata de eșantionare față de cota apelurilor de service)
float humidityData = dht.readHumidity();
// Citiți temperatura ca Celsius (implicit)
float celData = dht.readTemperature();
// Citiți temperatura ca Fahrenheit (isFahrenheit = adevărat)
float fehrData = dht.readTemperature(true);
// Verificați dacă citirile eșuate ieși din timp (pentru a încerca din nou).
if (isnan(humidityData) || isnan(celData) || isnan(fehrData))
{
Serial.println(„Nu s-a putut citi de la senzorul DHT!”);
întoarcere;
}
// Calculați indicele de căldură în Celsius (isFahreheit = fals)
float hicData = dht.computeHeatIndex(celData, humidityData, false);
// Calculați indicele de căldură în Fahrenheit (prestabilit)
float hifData = dht.computeHeatIndex(fehrData, humidityData);
//Tipărește pe monitorul serial sau pe terminalul la alegere la 115200 Baud
Serial.print ("Umiditate: ");
Serial.print(humidityData);
Serial.print(” %\t”);
Serial.print(„Temperatura în Cel:”);
Serial.print(celData);
Serial.print(” *C “);
Serial.print(„Temperatura în Fehr: “);
Serial.print(fehrData);
Serial.print(” *F\t”);
Serial.print(„Indice de căldură în Cel:”);
Serial.print(hicData);
Serial.print(” *C “);
Serial.print(„Indice de căldură în Fehr:”);
Serial.print(hifData);
Serial.print(” *F\n”);
Client WiFiClient; //Instanțiază obiectul WiFi
//Porniți sau serviciul API folosind clientul nostru WiFi prin PushingBox
dacă (client.connect(WEBSITE, 80))
{
client.print(„GET /pusingbox?devid=" + devid
+ „&humidityData=" + (Șir) humidityData
+ „&celData=" + (Șir) celData
+ „&fehrData=" + (Șir) fehrData
+ „&hicData=" + (Șir) hicData
+ „&hifData=" + (Șir) hifData
);
client.println(” HTTP/1.1″);
client.print(„Gazdă: “);
client.println(WEBSITE);
client.println(„User-Agent: ESP8266/1.0”);
client.println(„Conexiune: închidere”);
client.println();
}
}
Exemplu de cod Google App Script
Iată codul de care aveți nevoie pentru a crea un script care poate fi citit pentru transferul datelor senzorului.
Interogare de solicitare GET:
https://script.google.com/macros/s/<your gscriptID>/exec?celData=data_here
HumidityDat, celData, fehrData, hicData, hifData (variabilele GScript, PushingBox și Arduino în ordinea în care ar trebui să le scrieți)
Funcția doGet(e) {
Logger.log ( JSON.stringify(e) ); // aceasta este pentru vizualizarea parametrilor
Var rezultat = 'Ok';
Dacă (e.parametru == nedefinit) {
Rezultat = „Fără parametri”;
}
Altfel {
Var id= '<adresa URL a foii dvs. de calcul\;
Var sheet = SpreadsheetApp.openById(id).getActivesheet();
Var newRow = sheet.getLastRow() + 1;
Var rowData = [];
//var waktu = data noua()'
rowData[0] = data noua(); //pentru Timpul în coloana A
pentru (var param în e.parameter) {
logger.log('in for loop, param='+param);
var value = stripQuotes(e.parameter[param]);
comutator (param) {
case 'humidityData': //Parametru
rowData[1] = valoare; //Valoare în coloana B
pauză;
caz „celData”;
rowData[2] = valoare;
pauză;
caz „fehrData”:
rowData[3] = valoare ;
pauză;
caz „hicData”:
rowData[4] = valoare;
pauză;
cazul „hifData”:
rowData[5] = valoare;
pauză;
Mod implicit:
rezultat = „parametru neacceptat”;
}
Logger.log(JSON.stringify(rowData));
Var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
Returnează ContentService.createTextOutput(rezultat);
}
Funcția stripQuotes( valoare ){
Valoare returnată.replace(/^[“']|['|]$/g, „”);
}
Configurați PushingBox
Acest serviciu acționează ca intermediar între datele senzorului DHT și Foi de calcul Google. Folosind API-ul PushingBox, puteți transforma datele transmise prin HTTP în date HTTPS criptate pe care Google le recunoaște.
Rețineți că PushingBox vă limitează la 1.000 de solicitări pe zi. Cu toate acestea, elimină o mare parte din munca groaznică și expertiza necesară în crearea propriului algoritm de criptare la care Google va răspunde.
- Creați un cont PushingBox, dacă nu aveți deja unul.
- Utilizați adresa Gmail pe care o utilizați și pentru proiectul de date senzorului NodeMCU.
- Accesați Serviciile mele.
- Adăugați un serviciu nou din opțiunea Adăugați un serviciu.
- Derulați la ultima opțiune intitulată CustomURL, setați-vă propriul serviciu!
- Completați câmpurile care necesită numele, adresa URL și metoda.
- Pentru metodă, selectați GET.
- Pentru adresa URL, utilizați adresa URL care începe cu „script.google.com…”, din adresa URL generată când ați creat adresa Google Script.
- Trimiteți serviciul și accesați Scenariile mele.
- Introduceți un nume intuitiv și apăsați butonul de adăugare.
- Adăugați o acțiune când vi se solicită pe ecran.
- Configurați metoda GET prin formatarea numelor pentru fiecare variabilă. Acest pas va diferi în funcție de câți senzori înregistrați și de ce înregistrează aceștia.
Configurarea hardware-ului
Dacă utilizați un senzor DHT cu ESP8266, alimentați unitatea cu 5 V în loc de 3,3 V. Este posibil ca o tensiune mai mică să nu vă ofere citiri corecte.
Conectați pinii 2 și D4 pe ESP8266.
Configurarea software-ului
Această configurare funcționează cu Arduino IDE, de preferință o versiune mai nouă decât 1.6.4. Acest lucru înseamnă, de asemenea, că trebuie să descărcați unele biblioteci pe sistemul dvs.
Bibliotecile pot fi găsite la următoarele link-uri:
- hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
- https://learn.adafruit.com/dht
Următorul pas implică încărcarea schiței Arduino și configurarea acesteia pentru proiectul și dispozitivul dvs. Există doar trei câmpuri relevante pe care trebuie să le formatați și să le personalizați pentru proiectul dvs.:
- Rețea Wi-Fi.
- Parola Wi-Fi.
- ID PushingBox.
Cum abordați transferul de date NodeMCU?
Există mai multe modalități de a face acest lucru și tone de tipuri de senzori pe care le puteți utiliza pentru a transfera date folosind un ESP8266 cu firmware NodeMCU direct pe Google Sheets sau alte platforme Cloud.
Preferiți să vă scrieți propriile scripturi și cod pentru a vă personaliza proiectele sau căutați online scripturi verificate pe github și alte platforme și vă adaptați de acolo? Spuneți-ne codul și sursele de script preferate, precum și combinațiile ESP8266 și senzori, în secțiunea de comentarii de mai jos.