Come inviare dati da NodeMCU a Fogli Google
Pubblicato: 2020-08-26L'invio dei dati del sensore utilizzando il firmware NodeMCU su Internet in un foglio di calcolo di Fogli Google è molto conveniente. Questo può essere fatto tramite uno script di Google e ha il vantaggio di non costare nulla, a differenza di molte alternative di archiviazione sul cloud.
Ai fini di questo articolo, ti mostreremo un semplice progetto per inviare letture di temperatura utilizzando ESP8266 e un sensore di temperatura e umidità DHT11.
Imposta il tuo foglio Google
Innanzitutto, ti consigliamo di creare un nuovo foglio di calcolo. Accedi al tuo account Google, vai su Il mio Drive e apri un foglio di calcolo vuoto.
Copia la chiave URL per il tuo foglio di lavoro. Dai al foglio di calcolo un nome intuitivo. Vai allo Script Editor, nel menu Strumenti.
Dai un nome al tuo script (di nuovo, mantienilo intuitivo, soprattutto se stai realizzando più di un progetto). Utilizza lo script fornito e copialo e incollalo nell'editor di Google Script.
Sotto la riga dell'ID del foglio di calcolo, incolla la chiave URL dal foglio di calcolo salvato.
Salva lo script e distribuiscilo come app. Troverai questa opzione nel menu Pubblica. Configura i parametri di distribuzione per garantire che il foglio di calcolo funzioni correttamente.
- Salvare l'"URL dell'app Web corrente".
- Salva la versione del progetto come nuova per tutte le revisioni dello script (questo consente a Google di aggiornare eventuali revisioni che potresti apportare in futuro).
- Per il campo Esegui l'app come, aggiungi il seguente ling "io (il tuo indirizzo Gmail)".
- Nel campo Chi ha accesso all'app aggiungere la seguente riga “chiunque, anche anonimo”.
Codice per l'impostazione del sensore ESP8266 e DHT11
Questo è ciò che dovresti caricare quando colleghi il tuo ESP8266 al sensore DHT11:
#include "ESP8266WiFi.h"
#include "DHT.h"
#define DHTPIN 2 // a quale pin digitale sei connesso
//pin2 su D4 sulla scheda ESP
// Rimuovi il commento nel codice per il tipo di sensore DHT che stai utilizzando.
#define DHTTYPE DHT11 // DHT 11
//#definisce DHTTYPE DHT21 // DHT 21
//#definisce DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN,DHTTYPE);
const char SITO WEB[] = “api.pushingbox.com”; //il server API PushingBox
const String devid = “<IL TUO_Devid_QUI>”; //ID dispositivo da Pushingbox
const char* MY_SSID = “<IL TUO_NOME_WIFI_QUI”;
const char* MY_PWD = “<YOUR_WIFI_PASSWORD_HERE>”;
configurazione nulla()
{
Serial.begin(115200);
dht.begin();
Serial.print("Connessione a "+*MY_SSID);
WiFi.begin(MY_SSID, MY_PWD);
Serial.println("entrando in wl connect");
while (WiFi.status() != WL_CONNECTED) //non connesso,..in attesa di connessione
{
ritardo(1000);
Stampa.seriale(“.”);
}
Serial.println("wl connesso");
Serial.println(“”);
Serial.println(“Credenziali accettate! Connesso al wifi\n “);
Serial.println(“”);
}
ciclo vuoto()
{
// Lasciare passare più tempo tra una lettura e l'altra
//popolazione del foglio di Google, per evitare di superare il numero di richieste gratuite provenienti da PushingBox
ritardo(10000); //10 secondi (frequenza di campionamento rispetto alla quota di chiamate di servizio)
float umiditàData = dht.readHumidity();
// Legge la temperatura in gradi Celsius (impostazione predefinita)
float celData = dht.readTemperature();
// Legge la temperatura come Fahrenheit (isFahrenheit = true)
float fehrData = dht.readTemperature(true);
// Verifica la presenza di letture non riuscite esci prima (per riprovare).
if (isnan(humidityData) || isnan(celData) || isnan(fehrData))
{
Serial.println("Impossibile leggere dal sensore DHT!");
ritorno;
}
// Calcola l'indice di calore in gradi Celsius (isFahreheit = false)
float hicData = dht.computeHeatIndex(celData, umiditàData, false);
// Calcola l'indice di calore in Fahrenheit (impostazione predefinita)
float hifData = dht.computeHeatIndex(fehrData, umiditàData);
//Stampa su monitor seriale o terminale di tua scelta a 115200 Baud
Serial.print(“Umidità: “);
Serial.print(datiumidità);
Serial.print(” %\t”);
Serial.print("Temperatura in Cel: ");
Serial.print(celData);
Serial.print(” *C “);
Serial.print(“Temperatura in Fehr: “);
Serial.print(fehrData);
Serial.print(” *F\t”);
Serial.print(“Indice di calore in Cel: “);
Serial.print(hicData);
Serial.print(” *C “);
Serial.print("Indice di calore in Fehr: ");
Serial.print(hifData);
Serial.print(” *F\n”);
Cliente WiFiClient; //Istanzia l'oggetto WiFi
//Avvia un servizio API utilizzando il nostro client WiFi tramite PushingBox
if (client.connect(SITO WEB, 80))
{
client.print(“OTTIENI /pushingbox?devid=" + devid
+ “&humidityData=" + (Stringa) umiditàData
+ “&celData=" + (Stringa) celData
+ “&fehrData=" + (Stringa) fehrData
+ “&hicData=" + (Stringa) hicData
+ “&hifData=" + (Stringa) hifData
);
client.println(” HTTP/1.1″);
client.print("Host: ");
client.println(SITO WEB);
client.println("Agente utente: ESP8266/1.0");
client.println(“Connessione: chiudi”);
cliente.println();
}
}
Esempio di codice script dell'app Google
Ecco il codice necessario per creare uno script leggibile per il trasferimento dei dati del sensore.
GET Richiesta query:
https://script.google.com/macros/s/<your gscriptID>/exec?celData=data_qui
HumidityDat, celData,fehrData,hicData, hifData (variabili GScript, PushingBox e Arduino nell'ordine in cui dovresti scriverle)
Funzione doGet(e) {
Logger.log ( JSON.stringify(e) ); // questo serve per visualizzare i parametri
Risultato var = 'Ok';
If (e.parametro == non definito) {
Risultato = 'Nessun parametro';
}
Altro {
Var id= '<URL del tuo foglio di calcolo\;
Var foglio = SpreadsheetApp.openById(id).getActivesheet();
Var newRow = foglio.getLastRow() + 1;
Var rigaDati = [];
//var waktu = nuova data()'
rowData[0] = nuova data(); //per Timestamp nella colonna A
for (var param in e.parametro) {
logger.log('in ciclo for, param='+param);
valore var = stripQuotes(e.parametro[param]);
interruttore (parametro) {
case 'humidityData': //Parametro
rigaDati[1] = valore; //Valore nella colonna B
rottura;
caso 'celData';
rigaDati[2] = valore;
rottura;
caso 'fehrData':
rigaDati[3] = valore;
rottura;
caso 'hicData':
rigaDati[4] = valore;
rottura;
caso 'hifData':
rigaDati[5] = valore;
rottura;
predefinito:
risultato = “parametro non supportato”;
}
Logger.log(JSON.stringify(rowData));
Var newRange = foglio.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
Restituisce ContentService.createTextOutput(risultato);
}
Funzione stripQuotes( valore ){
Restituisce valore.sostituisci(/^[“']|['|]$/g, “”);
}
Imposta PushingBox
Questo servizio funge da intermediario tra i dati del sensore DHT e Fogli Google. Utilizzando l'API PushingBox, puoi trasformare i dati trasmessi tramite HTTP in dati HTTPS crittografati riconosciuti da Google.
Tieni presente che PushingBox ti limita a 1.000 richieste al giorno. Tuttavia, elimina gran parte del lavoro duro e delle competenze necessarie per creare il proprio algoritmo di crittografia a cui Google risponderà.
- Crea un account PushingBox, se non ne hai già uno.
- Utilizza l'indirizzo Gmail che utilizzi anche per il progetto dei dati dei sensori NodeMCU.
- Vai a I miei servizi.
- Aggiungi un nuovo servizio dall'opzione Aggiungi un servizio.
- Scorri fino all'ultima opzione denominata CustomURL, imposta il tuo servizio!
- Compila i campi che richiedono nome, URL e Metodo.
- Per il metodo, seleziona GET.
- Per l'URL utilizza l'URL che inizia con "script.google.com…", dall'URL generato quando hai creato l'indirizzo Google Scrip.
- Invia il servizio e vai a I miei scenari.
- Inserisci un nome intuitivo e premi il pulsante Aggiungi.
- Aggiungi un'azione quando richiesto sullo schermo.
- Configura il metodo GET formattando i nomi per ciascuna variabile. Questo passaggio varierà a seconda del numero di sensori che stai registrando e di cosa stanno registrando.
Configurazione dell'hardware
Se utilizzi un sensore DHT con il tuo ESP8266, alimenta l'unità con 5 V anziché 3,3 V. Una tensione inferiore potrebbe non fornire letture corrette.
Collega i pin 2 e D4 sul tuo ESP8266.
Configurazione del software
Questa configurazione funziona con Arduino IDE, preferibilmente una versione più recente della 1.6.4. Ciò significa anche che devi scaricare alcune librerie sul tuo sistema.
Le biblioteche si trovano ai seguenti link:
- hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
- https://learn.adafruit.com/dht
Il passaggio successivo prevede il caricamento dello schizzo di Arduino e la sua configurazione per il tuo progetto e il tuo dispositivo. Ci sono solo tre campi rilevanti che devi formattare e personalizzare per il tuo progetto:
- Rete Wi-Fi.
- Password Wi-Fi.
- ID PushBox.
Come ti avvicini al trasferimento dati NodeMCU?
Esistono più modi per farlo e tantissimi tipi di sensori che puoi utilizzare per trasferire i dati utilizzando un ESP8266 con firmware NodeMCU direttamente su Fogli Google o altre piattaforme cloud.
Preferisci scrivere i tuoi script e il tuo codice per personalizzare i tuoi progetti o cerchi online script verificati su github e altre piattaforme e adattarti da lì? Fateci sapere il vostro codice preferito e le vostre fonti di script, nonché le combinazioni ESP8266 e sensori, nella sezione commenti qui sotto.