Sélectionner une page

Comment envoyer des données de NodeMCU vers Google Sheets

L’envoi de données de capteur à l’aide du micrologiciel NodeMCU sur Internet à une feuille de calcul Google Sheets peut être très utile. Cela peut être fait via un script Google et a l’avantage de ne rien coûter, contrairement à de nombreuses alternatives de stockage dans le cloud.

Pour les besoins de cet article, nous allons vous montrer un projet simple pour envoyer les lectures de température à l’aide de l’ESP8266 et d’un capteur de température et d’humidité DHT11.

Configurez votre feuille Google

  1. Tout d’abord, vous devrez créer une nouvelle feuille de calcul. Connectez-vous à votre compte Google, accédez à Mon Drive et ouvrez une feuille de calcul vierge.
  2. Copiez la clé URL de votre feuille de calcul. Donnez à votre feuille de calcul un nom intuitif. Accédez à l’éditeur de script, dans le menu Outils.
    éditeur de script
  3. Donnez un nom à votre script (encore une fois, rendez-le intuitif, surtout si vous faites plus d’un projet). Utilisez le script donné et copiez-le et collez-le dans l’éditeur de script Google.
    code de l’éditeur de script
  4. Sous la ligne d’identification de la feuille de calcul, collez la clé URL de votre feuille de calcul enregistrée.
  5. Enregistrez le script et déployez-le en tant qu’application. Vous trouverez cette option dans le menu Publier. Définissez les paramètres d’affichage pour vous assurer que la feuille de calcul fonctionne correctement.
  6. Enregistrez «l’URL actuelle de l’application Web».
  7. Enregistrez la version du projet comme nouvelle pour toutes les révisions du script (cela permet à Google de mettre à jour toutes les révisions que vous pourriez apporter à l’avenir).
  8. Dans le champ « Exécutez l’application en tant que », ajoutez le lingot suivant « moi (votre adresse Gmail) ».
  9. Pour le champ Qui a accès à l’application, ajoutez la ligne suivante « n’importe qui, même anonyme ».

Code pour configurer les capteurs ESP8266 et DHT11

Voici ce que vous devez charger lorsque vous connectez votre ESP8266 au capteur DHT11:

#include “ESP8266WiFi.h”

#include “DHT.h”

#define DHTPIN 2 // a qué pin digital estás conectado

//pin2 a D4 en el tablero esp

// Elimina el comentario del código del tipo de sensor DHT que estás usando.

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT21 // DHT 21

//#define DHTTYPE DHT22 // DHT 22

DHT dht(DHTPIN,DHTTYPE);

const char WEBSITE[] = “api.pushingbox.com”; //the PushingBox API server

const String devid = “<YOUR_Devid_HERE>”; //device ID from Pushingbox

const char* MY_SSID = “<YOUR_WIFI_NAME_HERE”;

const char* MY_PWD = “<YOUR_WIFI_PASSWORD_HERE>”;

void setup()

{

Serial.begin(115200);

dht.begin();

Serial.print(“Connecting to “+*MY_SSID);

WiFi.begin(MY_SSID, MY_PWD);

Serial.println(“going into wl connect”);

while (WiFi.status() != WL_CONNECTED) //not connected,..waiting to connect

{

delay(1000);

Serial.print(“.”);

}

Serial.println(“wl connected”);

Serial.println(“”);

Serial.println(“Credentials accepted! Connected to wifin “);

Serial.println(“”);

}

void loop()

{

//Deje pasar más tiempo entre las lecturas

//google sheet populate, para evitar repasar el número de solicitudes gratuitas de PushingBox

delay(10000); //10 seconds, (sampling rate vs. service call quota)

float humidityData = dht.readHumidity();

// Leer la temperatura como Celsius (el valor predeterminado)

float celData = dht.readTemperature();

// Leer la temperatura como Fahrenheit (isFahrenheit = true)

float fehrData = dht.readTemperature(true);

// Revisa si las lecturas fallidas salen temprano (para intentarlo de nuevo).

if (isnan(humidityData) || isnan(celData) || isnan(fehrData))

{

Serial.println(“Failed to read from DHT sensor!”);

return;

}

// Calcular el índice de calor en Celsius (isFahreheit = false)

float hicData = dht.computeHeatIndex(celData, humidityData, false);

//Calcular el índice de calor en Fahrenheit (por defecto)

float hifData = dht.computeHeatIndex(fehrData, humidityData);

//Imprimir en el monitor de serie o en el terminal de tu elección a 115200 baudios.

Serial.print(“Humidity: “);

Serial.print(humidityData);

Serial.print(” %t”);

Serial.print(“Temperature in Cel: “);

Serial.print(celData);

Serial.print(” *C “);

Serial.print(“Temperature in Fehr: “);

Serial.print(fehrData);

Serial.print(” *Ft”);

Serial.print(“Heat index in Cel: “);

Serial.print(hicData);

Serial.print(” *C “);

Serial.print(“Heat index in Fehr: “);

Serial.print(hifData);

Serial.print(” *Fn”);

WiFiClient client; //Instantiate WiFi object

//Start or API service using our WiFi Client through PushingBox

if (client.connect(WEBSITE, 80))

{

client.print(“GET /pushingbox?devid=” + devid

+ “&humidityData=” + (String) humidityData

+ “&celData=” + (String) celData

+ “&fehrData=” + (String) fehrData

+ “&hicData=” + (String) hicData

+ “&hifData=” + (String) hifData

);

client.println(” HTTP/1.1″);

client.print(“Host: “);

client.println(WEBSITE);

client.println(“User-Agent: ESP8266/1.0”);

client.println(“Connection: close”);

client.println();

}

}

Exemple de code de script Google App

Voici le code dont vous avez besoin pour créer un script lisible pour le transfert de données de votre capteur.

GET Request query:

https://script.google.com/macros/s/<your gscriptID>/exec?celData=data_here

HumidityDat, celData,fehrData,hicData, hifData (GScript, PushingBox, and Arduino variables in the order you should write them)

Function doGet(e) {

Logger.log ( JSON.stringify(e) ); // this is for viewing the parameters

Var result = ‘Ok’;

If (e.parameter == undefined) {

Result = ‘No Parameters’;

}

Else {

Var id= ‘<your spreadsheet URL;

Var sheet = SpreadsheetApp.openById(id).getActivesheet();

Var newRow = sheet.getLastRow() + 1;

Var rowData = [];

//var waktu = new Date()’

rowData[0] = new Date(); //for Timestamp in column A

for (var param in e.parameter) {

logger.log(‘in for loop, param=’+param);

var value = stripQuotes(e.parameter[param]);

switch (param) {

case ‘humidityData’: //Parameter

rowData[1] = value; //Value in column B

break;

case ‘celData’;

rowData[2] = value;

break;

case ‘fehrData’:

rowData[3] = value ;

break;

case ‘hicData’:

rowData[4] = value;

break;

case ‘hifData’:

rowData[5] = value;

break;

default:

result = “unsupported parameter”;

}

Logger.log(JSON.stringify(rowData));

Var newRange = sheet.getRange(newRow, 1, 1, rowData.length);

newRange.setValues([rowData]);

}

Return ContentService.createTextOutput(result);

}

Function stripQuotes( value ){

Return value.replace(/^[“’]|[‘|]$/g, “”);

}

Configurer PushingBox

Ce service sert d’intermédiaire entre les données de votre capteur DHT et Google Sheets. À l’aide de l’API PushingBox, vous pouvez convertir les données transmises via HTTP en données HTTPS cryptées que Google reconnaît.

Gardez à l’esprit que PushingBox vous limite à 1000 requêtes par jour. Cependant, cela vous enlève une grande partie du travail et de l’expertise nécessaires pour créer votre propre algorithme de chiffrement auquel Google répondra.

  1. Créez un compte sur PushingBox, si vous n’en avez pas encore.
  2. Utilisez l’adresse Gmail que vous utilisez également pour le projet de données de capteur NodeMCU.
  3. Accédez à Mes services.
  4. Ajoutez un nouveau service à partir de l’option Ajouter un service.
  5. Faites défiler jusqu’à la dernière option intitulée CustomURL, Configurez votre propre service.
  6. Remplissez les champs qui nécessitent le nom, l’URL et la méthode.
  7. Pour la méthode, sélectionnez GET.
  8. Pour l’URL, utilisez l’URL commençant par « script.google.com … », à partir de l’URL générée lors de la création de l’adresse Google Scrip.
  9. Soumettez le service et accédez à Mes scénarios.
  10. Entrez un nom intuitif et cliquez sur le bouton Ajouter.
  11. Ajoutez une action lorsque vous y êtes invité à l’écran.
  12. Configurez la méthode GET en mettant en forme les noms de chaque variable. Cette étape sera différente selon le nombre de capteurs que vous enregistrez et ce qu’ils enregistrent.

Configuration matérielle

Si vous utilisez un capteur DHT avec votre ESP8266, mettez l’unité sous tension 5v au lieu de 3,3v. Une tension inférieure peut ne pas vous donner des lectures correctes. Connectez les broches 2 et D4 de votre ESP8266.

Configuration logicielle

Cette configuration fonctionne avec l’IDE Arduino, de préférence une version plus récente que 1.6.4. Cela signifie également que vous devez télécharger certaines bibliothèques sur votre système.

Les bibliothèques peuvent être trouvées aux liens suivants:

hhtps: //github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
https://learn.adafruit.com/dht

L’étape suivante consiste à télécharger le code Arduino et à le configurer pour votre projet et votre appareil. Il n’y a que trois champs pertinents que vous devez formater et personnaliser pour votre projet:

  • Réseau Wi-Fi.
  • Mot de passe WiFi.
  • ID PushingBox.

Comment le transfert de données de NodeMCU est-il traité?

Il existe d’autres façons de le faire et une tonne de types de capteurs que vous pouvez utiliser pour transférer des données à l’aide d’un ESP8266 avec le micrologiciel NodeMCU directement vers Google Sheets ou d’autres plates-formes cloud.